blob: 9478720d4fa256e37e650bd88e60dcae8c05c5fe (
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
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
|
# Copyright 1999-2012 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/net-dialup/misdn/misdn-1.1.7.2-r1.ebuild,v 1.2 2012/12/11 16:48:03 axs Exp $
inherit eutils linux-mod udev toolchain-funcs
MY_P=mISDN-${PV//./_}
DESCRIPTION="mISDN is the new ISDN stack of the linux kernel 2.6"
HOMEPAGE="http://www.misdn.org/"
SRC_URI="http://www.misdn.org/downloads/releases/${MY_P}.tar.gz"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~amd64 ~ppc ~x86"
RDEPEND="net-dialup/capi4k-utils
dev-libs/libxslt
sys-devel/bc"
DEPEND="${RDEPEND}
virtual/pkgconfig"
# list of echo canceller use flags,
# first active in this list is selected (=order does matter)
MISDN_EC_FLAGS=("ecmg2" "eckb1" "ecmark2")
# list of card modules
MISDN_MODULES=("avmfritz" "hfcpci" "hfcmulti" "hfcsusb" "hfcsmini" "xhfc" "sedlfax" "w6692pci" "netjetpci")
MISDN_KCONFIG=("AVM_FRITZ" "HFCPCI" "HFCMULTI" "HFCUSB" "HFCMINI" "XHFC" "SPEEDFAX" "W6692" "NETJET")
IUSE="ecaggressive ${MISDN_EC_FLAGS[*]}"
for i in ${MISDN_MODULES[@]}; do IUSE="${IUSE} misdn_cards_${i}"; done
MY_S=${WORKDIR}/${MY_P}
S=${MY_S}/drivers/isdn/hardware/mISDN
### Begin: Helper functions
select_echo_cancel() {
local i myEC=${MISDN_EC_FLAGS[0]}
for i in ${MISDN_EC_FLAGS[*]}; do
if use ${i}; then
myEC=$(echo "${i}" | sed -e "s:^ec\(.*\):\U\1\E:")
break;
fi
done
echo "${myEC}" | sed -e "s:^ec\(.*\):\U\1\E:"
}
dsp_enable() {
local i
for i in "${@}"; do
sed -i -e "s:.*\(#include.*dsp_${i}\):\1:m" dsp.h
done
}
dsp_disable() {
local i
for i in "${@}"; do
sed -i -e "s:.*\(#include.*dsp_${i}\)://\1:m" dsp.h
done
}
### End: Helper functions
#CONFIG_I4L_CAPI_LAYER -> I4LmISDN
#CONFIG_MISDN_MEMDEBUG -> memdbg
#CONFIG_MISDN_NETDEV -> netdev
# def SYSFS_SUPPORT
pkg_setup() {
local USERCARD CARD EC NUM=0
CONFIG_CHECK="ISDN_CAPI ISDN_CAPI_CAPI20 ISDN_CAPI_CAPIFS_BOOL"
kernel_is ge 2 6 24 && CONFIG_CHECK="${CONFIG_CHECK} PCI_LEGACY"
linux-mod_pkg_setup
# base modules
BUILD_TARGETS="modules"
BUILD_PARAMS="-C ${KV_DIR} SUBDIRS=${S} MINCLUDES=${MY_S}/include CONFIG_MISDN_DRV=m"
MODULE_NAMES="mISDN_core(net:) mISDN_isac(net:) mISDN_l1(net:) mISDN_l2(net:)
mISDN_x25dte(net:) l3udss1(net:) mISDN_capi(net:) mISDN_dtmf(net:)"
# extra modules
BUILD_PARAMS="${BUILD_PARAMS} CONFIG_MISDN_DSP=m CONFIG_MISDN_LOOP=m CONFIG_MISDN_DEBUGTOOL=m"
MODULE_NAMES="${MODULE_NAMES} mISDN_dsp(net:) mISDN_loop(net:) mISDN_debugtool(net:)"
# check if multiple echo cancellers have been selected
EC_SELECTED=$(select_echo_cancel)
for EC in ${MISDN_EC_FLAGS}; do
use ${EC} && : $((NUM++))
done
if [ ${NUM} -gt 1 ]; then
# multiple flags are active, only the first in the MISDN_EC_FLAGS
# list will be used, make sure the user knows about this
ewarn "Multiple echo canceller flags are active but only one will be used!"
ewarn "Selected: ${EC_SELECTED}"
else
elog "Selected echo canceller: ${EC_SELECTED}"
fi
# Check existence of user selected cards
if [ -n "${MISDN_CARDS}" ]; then
for USERCARD in ${MISDN_CARDS}; do
for ((CARD=0; CARD < ${#MISDN_MODULES[*]}; CARD++)); do
if [ "${USERCARD}" = "${MISDN_MODULES[CARD]}" ]; then
MODULE_NAMES="${MODULE_NAMES} ${MISDN_MODULES[CARD]}(net:)"
BUILD_PARAMS="${BUILD_PARAMS} CONFIG_MISDN_${MISDN_KCONFIG[CARD]}=m"
continue 2
fi
done
die "Module ${USERCARD} not present in ${P}"
done
else
elog "You can control the modules which are built with the variable"
elog "MISDN_CARDS which should contain a blank separated list"
elog "of a selection from the following cards:"
elog " ${MISDN_MODULES[*]}"
# enable everything
for ((CARD=0; CARD < ${#MISDN_MODULES[*]}; CARD++)); do
MODULE_NAMES="${MODULE_NAMES} ${MISDN_MODULES[CARD]}(net:)"
BUILD_PARAMS="${BUILD_PARAMS} CONFIG_MISDN_${MISDN_KCONFIG[CARD]}=m"
done
fi
}
src_unpack() {
unpack ${A}
# mostly backported from mISDN-git, so it should
# not be needed anymore next version ;-)
epatch "${FILESDIR}/misdn-2.6.24.diff"
cd "${S}"
sed -i -e "s:^\(CFLAGS\):EXTRA_\1:g" "Makefile"
sed -i -e "s:^\(USER=\).*:\1root:" \
-e "s:^\(GROUP=\).*:\1uucp:" \
"${MY_S}/misdn-init"
sed -i -e "s:^\(DEVNODE_user=\).*:\1'root':" \
-e "s:^\(DEVNODE_group=\).*:\1'uucp':" \
-e "s:^\(DEVNODE_mode=\).*:\1'0660':" \
"${MY_S}/config/mISDN"
if use ecaggressive; then
sed -i -e "s:.*\(#define.*AGGRESSIVE_SUPPRESSOR\):\1:m" dsp.h
fi
case "${EC_SELECTED}" in
MG2)
dsp_enable mg2ec
dsp_disable kb1ec mec2
;;
KB1)
dsp_enable kb1ec
dsp_disable mg2ec mec2
;;
MARK2)
dsp_enable mec2
dsp_disable mg2ec kb1ec
;;
esac
}
src_install() {
linux-mod_src_install
insinto /usr/include/linux
doins "${MY_S}/include/linux/"*.h
local udevdir="$(udev_get_udevdir)"
dodir "${udevdir}"/rules.d
echo 'KERNEL=="obj-*", NAME="mISDN", GROUP="uucp", MODE="0660"' \
> "${D}/${udevdir}"/rules.d/53-${PN}.rules
insinto /etc/modprobe.d
newins "${MY_S}/mISDN.modprobe.d" ${PN}
dosbin "${MY_S}/misdn-init"
dodoc "${MY_S}/README.misdn-init"
# insinto /etc
# doins "${MY_S}/config/mISDN.conf"
insinto /usr/lib/mISDN
doins "${MY_S}/config/"*.xsl
dosbin "${MY_S}/config/mISDN"
dodoc "${MY_S}/config/README.mISDN"
dodoc Kconfig.v2.6 "${FILESDIR}/README.hfcmulti"
}
pkg_preinst() {
# save old config, in case portage will remove it
if [ -e "${ROOT}etc/misdn-init.conf" ]; then
cp -pf "${ROOT}etc/misdn-init.conf" "${ROOT}etc/misdn-init.conf.pkginst"
fi
}
pkg_postinst() {
linux-mod_pkg_postinst
# restore old config, in case portage removed it
if [ -e "${ROOT}etc/misdn-init.conf.pkginst" ]; then
if [ -e "${ROOT}etc/misdn-init.conf" ]; then
rm -f "${ROOT}etc/misdn-init.conf.pkginst"
else
mv -f "${ROOT}etc/misdn-init.conf.pkginst" "${ROOT}etc/misdn-init.conf"
fi
fi
ewarn
ewarn "This driver is still under heavy development"
ewarn "Please report ebuild related bugs / wishes to http://bugs.gentoo.org"
ewarn "Please report driver bugs to the mISDN mailing-list:"
ewarn " https://www.isdn4linux.de/mailman/listinfo/isdn4linux"
}
|