blob: 491665b4f9566c566422d852d082602d210a7ca8 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
|
# Copyright 1999-2008 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/net-wireless/ipw3945/ipw3945-1.2.2-r1.ebuild,v 1.4 2009/02/26 23:52:04 lack Exp $
inherit linux-mod eutils
S=${WORKDIR}/${P/_pre/-pre}
UCODE_VERSION="1.14.2"
DAEMON_VERSION="1.7.22"
DESCRIPTION="Driver for the Intel PRO/Wireless 3945ABG miniPCI express adapter"
HOMEPAGE="http://ipw3945.sourceforge.net/"
SRC_URI="mirror://sourceforge/${PN}/${P/_pre/-pre}.tgz"
LICENSE="BSD GPL-2"
SLOT="0"
KEYWORDS="amd64 x86"
IUSE="debug"
RDEPEND=">=net-wireless/ipw3945-ucode-${UCODE_VERSION}
>=net-wireless/ipw3945d-${DAEMON_VERSION}"
BUILD_TARGETS="all"
MODULE_NAMES="ipw3945(net/wireless:)"
MODULESD_IPW3945_DOCS="README.ipw3945"
KV_OBJ="ko"
CONFIG_CHECK="WIRELESS_EXT FW_LOADER IEEE80211 IEEE80211_CRYPT_CCMP IEEE80211_CRYPT_TKIP"
ERROR_FW_LOADER="${P} requires Hotplug firmware loading support (CONFIG_FW_LOADER)."
ERROR_IEEE80211="${P} requires support for Generic IEEE 802.11 Networking Stack (CONFIG_IEEE80211)."
pkg_setup() {
if kernel_is 2 4; then
die "${P} does not support building against kernel 2.4.x"
fi
if kernel_is lt 2 6 18; then
die "${P} needs a kernel >=2.6.18! Please set your KERNEL_DIR or /usr/src/linux suitably"
fi
linux-mod_pkg_setup
BUILD_PARAMS="KSRC=${KV_DIR} KSRC_OUTPUT=${KV_OUT_DIR} SHELL=/bin/bash"
BUILD_PARAMS="${BUILD_PARAMS} T=${T}"
BUILD_PARAMS="${BUILD_PARAMS} CONFIG_IPW3945_MONITOR=y CONFIG_IEEE80211_RADIOTAP=y CONFIG_IPW3945_PROMISCUOUS=y"
if use debug; then
BUILD_PARAMS="${BUILD_PARAMS} CONFIG_IPW3945_DEBUG=y"
else
BUILD_PARAMS="${BUILD_PARAMS} CONFIG_IPW3945_DEBUG=n"
fi
# users don't read the ChangeLog and wonder why the kernel check fails
# (1) check if the kernel dir (/usr/src/linux) is missing ieee80211
if [[ -f ${KV_DIR}/include/net/ieee80211.h ]] && \
[[ -f ${KV_OUT_DIR}/include/config/ieee80211.h ]] && \
egrep -q "^#(un)?def.*(CONFIG_IEEE80211.*)" ${KV_OUT_DIR}/include/linux/autoconf.h; then
return 0
else
echo
ewarn "${CATEGORY}/${PF} does NOT use net-wireless/ieee80211 any more."
ewarn "We are now relying on the in-kernel ieee80211 instead."
echo
eerror "Please remove net-wireless/ieee80211 using emerge, and remerge"
eerror "your current kernel (${KV_FULL}), as it has been altered"
eerror "by net-wireless/ieee80211."
die "Incompatible ieee80211 subsystem detected in ${KV_FULL}"
fi
}
src_unpack() {
unpack ${P/_pre/-pre}.tgz
cd "${S}"
epatch "${FILESDIR}/${P}-build.patch"
if kernel_is ge 2 6 24; then
epatch "${FILESDIR}/${P}-kernel-2.6.24.patch"
fi
if kernel_is ge 2 6 27; then
epatch "${FILESDIR}/${P}-kernel-2.6.27.patch"
fi
}
src_install() {
linux-mod_src_install
dodoc CHANGES ISSUES
}
pkg_postinst() {
ewarn "The ipw3945 driver is deprecated since the fully open iwl3945 driver"
ewarn "is present in the 2.6.24 linux kernel. Please try using the new"
ewarn "driver first, and help improve it by reporting any problems you may"
ewarn "have."
echo
elog "If you want your wireless device started up by udev, please make sure"
elog "you add something like this to your /etc/conf.d/net:"
elog "preup() {"
elog " if [[ \${IFACE} = \"wlan0\" ]]; then"
elog " sleep 3"
elog " fi"
elog " return 0"
elog "}"
elog "Otherwise, you're going to hit bug #177869 since the driver needs some"
elog "time to initialize and thus, baselayout is going to start it even if"
elog "the device isn't useable yet."
}
|