215 lines
5.9 KiB
Bash
215 lines
5.9 KiB
Bash
# Copyright 1999-2008 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.ebuild,v 1.4 2008/03/27 17:36:28 genstef Exp $
|
|
|
|
inherit eutils linux-mod
|
|
|
|
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="~x86 ~amd64 ~ppc"
|
|
|
|
DEPEND=""
|
|
RDEPEND="net-dialup/capi4k-utils
|
|
dev-libs/libxslt
|
|
sys-devel/bc"
|
|
|
|
# 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
|
|
|
|
dodir /etc/udev/rules.d
|
|
echo 'KERNEL=="obj-*", NAME="mISDN", GROUP="uucp", MODE="0660"' \
|
|
> "${D}etc/udev/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"
|
|
}
|