--- linux-wlan-ng-0.2.1_pre16.ebuild 2004-01-24 17:59:20.000000000 -0500 +++ linux-wlan-ng-0.2.1_pre16-r1.ebuild 2004-01-30 13:06:38.857337456 -0500 @@ -1,15 +1,16 @@ -# Copyright 1999-2004 Gentoo Technologies, Inc. +# Copyright 1999-2003 Gentoo Technologies, Inc. # Distributed under the terms of the GNU General Public License v2 -# $Header: /home/cvsroot/gentoo-x86/net-wireless/linux-wlan-ng/linux-wlan-ng-0.2.1_pre16.ebuild,v 1.1 2004/01/24 22:59:20 nerdboy Exp $ +# $Header: /home/cvsroot/gentoo-x86/net-wireless/linux-wlan-ng/linux-wlan-ng-0.2.1_pre11.ebuild,v 1.3 2003/09/10 04:47:55 msterret Exp $ -inherit eutils + +inherit eutils kernel-mod IUSE="apm build nocardbus pcmcia pnp trusted usb" -PCMCIA_CS="pcmcia-cs-3.2.1" -PATCH_3_2_2="pcmcia-cs-3.2.1-3.2.2.diff.gz" -PATCH_3_2_3="pcmcia-cs-3.2.1-3.2.3.diff.gz" -PATCH_3_2_4="pcmcia-cs-3.2.1-3.2.4.diff.gz" +PCMCIA_CS="pcmcia-cs-3.2.4" +PATCH_3_2_5="pcmcia-cs-3.2.4-3.2.5.diff" +PATCH_3_2_6="pcmcia-cs-3.2.4-3.2.6.diff" +PATCH_3_2_7="pcmcia-cs-3.2.4-3.2.7.diff" PCMCIA_DIR="${WORKDIR}/${PCMCIA_CS}" MY_P=${PN}-${PV/_/-} S=${WORKDIR}/${MY_P} @@ -17,48 +18,50 @@ DESCRIPTION="The linux-wlan Project" SRC_URI="ftp://ftp.linux-wlan.org/pub/linux-wlan-ng/${MY_P}.tar.gz mirror://gentoo/${PN}-gentoo-init.gz + http://dev.gentoo.org/~latexer/files/patches/${PN}-koutput.diff pcmcia? ( mirror://sourceforge/pcmcia-cs/${PCMCIA_CS}.tar.gz ) - pcmcia? ( mirror://gentoo/${PATCH_3_2_2} ) - pcmcia? ( mirror://gentoo/${PATCH_3_2_3} ) - pcmcia? ( mirror://gentoo/${PATCH_3_2_4} )" + pcmcia? ( mirror://gentoo/${PATCH_3_2_5}.gz ) + pcmcia? ( mirror://gentoo/${PATCH_3_2_6}.gz ) + pcmcia? ( mirror://gentoo/${PATCH_3_2_7}.gz )" HOMEPAGE="http://linux-wlan.org" DEPEND="sys-kernel/linux-headers dev-libs/openssl sys-apps/baselayout + >=sys-apps/sed-4.0* pcmcia? ( sys-apps/pcmcia-cs )" SLOT="0" LICENSE="MPL-1.1" -KEYWORDS="~x86 ~ppc" +KEYWORDS="~x86" -# check arch for configure -if [ ${ARCH} = "x86" ] ; then - MY_ARCH="i386" -else - MY_ARCH="ppc" -fi - -# Note: To use this ebuild, you should have the usr/src/linux symlink to -# the kernel directory that linux-wlan-ng should use for configuration. -# -# linux-wlan-ng requires a configured pcmcia-cs source tree. -# unpack/configure it in WORKDIR. No need to compile it though. +KERNEL_MOD_SOURCES="${MY_P}.tar.gz ${PN}-gentoo-init.gz" src_unpack() { + kernel-mod_src_unpack - unpack ${MY_P}.tar.gz - unpack ${PN}-gentoo-init.gz cp ${WORKDIR}/${PN}-gentoo-init ${S}/etc/rc.wlan + cd ${S} + mkdir -p src/tmp + + epatch ${DISTDIR}/${PN}-koutput.diff + if [ -n "`use pcmcia`" ]; then - unpack ${PCMCIA_CS}.tar.gz - cd ${PCMCIA_DIR} - if [ -z "`has_version =sys-apps/pcmcia-cs-3.2.4*`" ]; then - epatch ${DISTDIR}/${PATCH_3_2_4} - elif [ -z "`has_version =sys-apps/pcmcia-cs-3.2.3*`" ]; then - epatch ${DISTDIR}/${PATCH_3_2_3} - elif [ -z "`has_version =sys-apps/pcmcia-cs-3.2.2*`" ]; then - epatch ${DISTDIR}/${PATCH_3_2_2} + if egrep '^CONFIG_PCMCIA=[ym]' ${KV_OUTPUT}/.config >&/dev/null + then + # Sadly, we still need to download these sources in SRC_URI + # til portage can handle more dynamic SRC_URIs + einfo "Kernel PCMCIA detected. Skipping external pcmcia-cs sources." + else + unpack ${PCMCIA_CS}.tar.gz + cd ${PCMCIA_DIR} + if [ -z "`has_version =sys-apps/pcmcia-cs-3.2.4*`" ]; then + epatch ${WORKDIR}/${PATCH_3_2_4} + elif [ -z "`has_version =sys-apps/pcmcia-cs-3.2.3*`" ]; then + epatch ${WORKDIR}/${PATCH_3_2_3} + elif [ -z "`has_version =sys-apps/pcmcia-cs-3.2.2*`" ]; then + epatch ${WORKDIR}/${PATCH_3_2_2} + fi fi fi @@ -67,29 +70,25 @@ # things to end up in the right place. cd ${S} - mv man/Makefile man/Makefile.orig - sed -e "s:mkdir:#mkdir:" \ + sed -i -e "s:mkdir:#mkdir:" \ -e "s:cp nwepgen.man:#cp nwepgen.man:" \ -e "s:\t\$(TARGET_:\t#\$(TARGET_:" \ - man/Makefile.orig > man/Makefile + man/Makefile + + sed -i -e "s:/etc/wlan:/etc/conf.d:g" \ + etc/wlan/Makefile - mv etc/wlan/Makefile etc/wlan/Makefile.orig - sed -e "s:/etc/wlan:/etc/conf.d:g" \ - etc/wlan/Makefile.orig > etc/wlan/Makefile - - mv etc/wlan/wlancfg-DEFAULT etc/wlan/wlancfg-DEFAULT.orig - sed -e "s:/sbin/nwepgen:/sbin/keygen:" \ - etc/wlan/wlancfg-DEFAULT.orig > etc/wlan/wlancfg-DEFAULT + sed -i -e "s:/sbin/nwepgen:/sbin/keygen:" \ + etc/wlan/wlancfg-DEFAULT - mv etc/wlan/shared etc/wlan/shared.orig - sed -e "s:/etc/wlan/wlan.conf:/etc/conf.d/wlan.conf:g" \ + sed -i -e "s:/etc/wlan/wlan.conf:/etc/conf.d/wlan.conf:g" \ -e "s:/etc/wlan/wlancfg:/etc/conf.d/wlancfg:g" \ - etc/wlan/shared.orig > etc/wlan/shared + etc/wlan/shared } src_compile() { - + local kernelpcmcia # # configure pcmcia-cs - we need this for wlan to compile # use same USE flags that the pcmcia-cs ebuild does. @@ -98,9 +97,22 @@ # the kernel tree. # - if [ -n "`use pcmcia`" ]; then + if egrep '^CONFIG_PCMCIA=[ym]' ${KV_OUTPUT}/.config >&/dev/null; then + kernelpcmcia="YES" + else + kernelpcmcia="NO" + fi + + if [ -n "`use pcmcia`" -a "${kernelpcmcia}" != "YES" ]; then + local myarch myconf + + # pcmcia-cs expects "i386" not "x86" + case "${ARCH}" in + x86) myarch="i386" ;; + *) myarch="${ARCH}" ;; + esac + cd ${WORKDIR}/${PCMCIA_CS} - local myconf if [ -n "`use trusted`" ] ; then myconf="--trust" else @@ -131,37 +143,50 @@ --target=${D} \ --srctree \ --kernel=/usr/src/linux \ - --arch="${MY_ARCH}" \ + --arch="${myarch}" \ --uflags="${CFLAGS}" \ --kflags="-Wall -Wstrict-prototypes -O2 -fomit-frame-pointer" \ $myconf || die "failed configuring pcmcia-cs" fi + + # 2.5/2.6 kernels need ARCH unset + if [ "${KV_MINOR}" -gt 4 ] + then + unset ARCH + fi + # now lets build wlan-ng cd ${S} - sed -e 's:TARGET_ROOT_ON_HOST=:TARGET_ROOT_ON_HOST=${D}:' \ + sed -i -e 's:TARGET_ROOT_ON_HOST=:TARGET_ROOT_ON_HOST=${D}:' \ -e 's:PRISM2_PCI=n:PRISM2_PCI=y:' \ - config.in > default.config - mv default.config config.in + config.in if [ -n "`use pcmcia`" ]; then - export PCMCIA_CS=${PCMCIA_CS} - sed -e 's:PCMCIA_SRC=:PCMCIA_SRC=${WORKDIR}/${PCMCIA_CS}:' \ - -e 's:PRISM2_PLX=n:PRISM2_PLX=y:' \ - config.in > default.config + if [ "${kernelpcmcia}" != "YES" ]; + then + export PCMCIA_CS=${PCMCIA_CS} + sed -i -e 's:PCMCIA_SRC=:PCMCIA_SRC=${WORKDIR}/${PCMCIA_CS}:' \ + config.in + fi + sed -i -e 's:PRISM2_PLX=n:PRISM2_PLX=y:' \ + config.in else - sed -e 's:PRISM2_PCMCIA=y:PRISM2_PCMCIA=n:' \ - config.in > default.config + sed -i -e 's:PRISM2_PCMCIA=y:PRISM2_PCMCIA=n:' \ + config.in fi - mv default.config config.in if [ -n "`use usb`" ]; then - sed -e 's:PRISM2_USB=n:PRISM2_USB=y:' \ - config.in > default.config - mv default.config config.in + sed -i -e 's:PRISM2_USB=n:PRISM2_USB=y:' \ + config.in + fi + + if [ "${KV_MINOR}" -gt "4" ]; then + export KV_OUTPUT=${KV_OUTPUT} + sed -i -e 's:^LINUX_OUTPUT=.*:LINUX_OUTPUT=${KV_OUTPUT}:' \ + config.in fi - mv default.config config.in cp config.in default.config emake default_config || die "failed configuring WLAN" @@ -202,14 +227,10 @@ pkg_postinst() { depmod -a - einfo "Configuration of the WLAN package has changed since 0.1.16-pre4." - einfo "" einfo "/etc/init.d/wlan is used to control startup and shutdown of non-PCMCIA devices." einfo "/etc/init.d/pcmcia from pcmcia-cs is used to control startup and shutdown of" einfo "PCMCIA devices." einfo "" - einfo "The wlan-ng.opts file in /etc/pcmcia/ is now depricated." - einfo "" einfo "Modify /etc/conf.d/wlan.conf to set global parameters." einfo "Modify /etc/conf.d/wlancfg-* to set individual card parameters." einfo "There are detailed instructions in these config files." @@ -223,11 +244,6 @@ ewarn "need to have the appropriate line removed from /etc/pcmcia/wlan-ng.conf" ewarn "Do 'cardctl info' to see the manufacturer ID and remove the corresponding" ewarn "line from that file." - ewarn "" - ewarn "This ebuild will work with a 2.6.1(0) kernel, if you add the symlinks:" - ewarn "ln -sf /usr/src/linux-2.6.1 /usr/src/linux" - ewarn "ln -sf /usr/src/linux-2.6.1/arch/i386 /usr/src/linux-2.6.1/arch/x86" - ewarn "and disable any userpriv or sandbox settings in make.conf." - ewarn "Work is underway to upgrade portage for kernel 2.6 drivers." } +