summaryrefslogtreecommitdiff
blob: 4e276be5233c29a7bf2a958252f968f5860d5474 (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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
# Copyright 1999-2005 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/net-wireless/ipw2100/ipw2100-1.0.2-r1.ebuild,v 1.2 2005/01/04 00:30:20 brix Exp $

inherit kernel-mod eutils

FW_VERSION="1.3"
PATCH_2_4_VERSION="1"

DESCRIPTION="Driver for the Intel PRO/Wireless 2100 3B miniPCI adapter"

HOMEPAGE="http://ipw2100.sourceforge.net/"
SRC_URI="mirror://sourceforge/${PN}/${P}.tgz
		mirror://gentoo/${PN}-fw-${FW_VERSION}.tgz
		mirror://gentoo/${P}-2.4-v${PATCH_2_4_VERSION}.patch.gz"

LICENSE="GPL-2 ipw2100-fw"
SLOT="0"
KEYWORDS="~x86"

IUSE=""
DEPEND="virtual/linux-sources
		!net-wireless/ipw2200
		!net-wireless/ipw2100-firmware
		sys-apps/sed"
RDEPEND=">=sys-apps/hotplug-20040923
		>=net-wireless/wireless-tools-27_pre23"

pkg_setup() {
	local DIE=0

	if ! kernel-mod_configoption_present NET_RADIO
	then
		eerror ""
		eerror "${P} requires support for Wireless LAN drivers (non-hamradio) &"
		eerror "Wireless Extensions (CONFIG_NET_RADIO) in the kernel."
		DIE=1
	fi

	if ! kernel-mod_configoption_present CRYPTO_ARC4
	then
		eerror ""
		eerror "${P} requires support for ARC4 cipher algorithm (CONFIG_CRYPTO_ARC4)"
		eerror "in the kernel."
		DIE=1
	fi

	if ! kernel-mod_configoption_present CRYPTO_MICHAEL_MIC
	then
		eerror ""
		eerror "${P} requires support for Michael MIC keyed digest algorithm"
		eerror "(CONFIG_CRYPTO_MICHAEL_MIC) in the kernel."
		DIE=1
	fi

	if ! kernel-mod_configoption_present CRYPTO_AES_586 && ! kernel-mod_configoption_present CRYPTO_AES
	then
		eerror ""
		eerror "${P} requires support for AES cipher algorithms (i586)"
		eerror "(CONFIG_CRYPTO_AES_586) in the kernel."
		eerror ""
		eerror "This is called CONFIG_CRYPTO_AES in kernels prior to 2.6.8."
		DIE=1
	fi

	if ! kernel-mod_configoption_present FW_LOADER
	then
		eerror ""
		eerror "${P} requires Hotplug firmware loading support (CONFIG_FW_LOADER)"
		eerror "in the kernel."
		DIE=1
	fi

	if ! kernel-mod_configoption_present CRC32
	then
		eerror ""
		eerror "${P} requires support for CRC32 functions (CONFIG_CRC32) in the"
		eerror "kernel."
		DIE=1
	fi

	kernel-mod_check_modules_supported

	if [ $DIE -eq 1 ]
	then
		eerror ""
		die "You kernel is missing the required option(s) listed above."
	fi
}

src_unpack() {
	unpack ${A}

	cd ${S}
	epatch ${FILESDIR}/${P}-2.6.10-susp.patch

	if kernel-mod_is_2_4_kernel
	then
		cd ${S}
		epatch ${WORKDIR}/${P}-2.4-v${PATCH_2_4_VERSION}.patch
	fi

	cd ${S}
	epatch ${FILESDIR}/${P}-set_security.patch

	einfo "Patching Makefile to enable WPA"
	sed -i "s:^# CONFIG_IEEE80211_WPA=:CONFIG_IEEE80211_WPA=:" \
		${S}/Makefile

	# let pkg_postinst() handle depmod
	sed -i "s:/sbin/depmod -a::" ${S}/Makefile

	kernel-mod_getversion

	if [ ${KV_MINOR} -gt 5 ] && [ ${KV_PATCH} -gt 5 ]
	then
		sed -i 's:SUBDIRS=:M=:g' ${S}/Makefile
	fi
}

src_compile() {
	set_arch_to_kernel

	emake KSRC=${ROOT}/usr/src/linux all || die
}

src_install() {
	set_arch_to_kernel

	emake KSRC=${ROOT}/usr/src/linux KMISC=${D}/lib/modules/${KV}/net install || die

	set_arch_to_portage

	dodoc ISSUES README.ipw2100 CHANGES LICENSE

	insinto /lib/firmware
	doins ${WORKDIR}/${PN}-${FW_VERSION}.fw
	doins ${WORKDIR}/${PN}-${FW_VERSION}-p.fw
	doins ${WORKDIR}/${PN}-${FW_VERSION}-i.fw
	newins ${WORKDIR}/LICENSE ${PN}-${FW_VERSION}-LICENSE
}

pkg_postinst() {
	einfo "Checking kernel module dependencies"
	test -r "${ROOT}/usr/src/linux/System.map" && \
		depmod -ae -F "${ROOT}/usr/src/linux/System.map" -b "${ROOT}" -r ${KV}
}