| # Copyright 1999-2014 Gentoo Foundation |
| # Distributed under the terms of the GNU General Public License v2 |
| # $Id$ |
| |
| EAPI=4 |
| inherit base linux-mod toolchain-funcs |
| |
| DESCRIPTION="Wrapper for using Windows drivers for some wireless cards" |
| HOMEPAGE="http://ndiswrapper.sourceforge.net/" |
| SRC_URI="mirror://sourceforge/${PN}/stable/${P}.tar.gz" |
| |
| LICENSE="GPL-2" |
| KEYWORDS="amd64 x86" |
| IUSE="debug usb" |
| |
| DEPEND="sys-apps/pciutils" |
| RDEPEND="${DEPEND} |
| net-wireless/wireless-tools" |
| |
| PATCHES=( "${FILESDIR}"/${P}-cflags.patch |
| "${FILESDIR}"/${P}-3.14.patch |
| "${FILESDIR}"/${P}-4.0.patch |
| "${FILESDIR}"/${P}-4.2.patch ) |
| MODULE_NAMES="ndiswrapper(misc:${S}/driver)" |
| BUILD_TARGETS="all" |
| MODULESD_NDISWRAPPER_ALIASES=("wlan0 ndiswrapper") |
| |
| pkg_pretend() { |
| CONFIG_CHECK="~WEXT_PRIV" |
| use usb && CONFIG_CHECK="${CONFIG_CHECK} ~USB" |
| ERROR_USB="You need to enable USB support in your kernel to use usb support in ndiswrapper." |
| ERROR_WEXT_PRIV="Your kernel does not support WEXT_PRIV. To enable it you need to enable a wireless driver that enables it, for example PRISM54 or IPW2200" |
| linux-mod_pkg_setup |
| } |
| |
| src_compile() { |
| local params |
| |
| # Enable verbose debugging information |
| if use debug; then |
| params="DEBUG=3" |
| use usb && params="${params} USB_DEBUG=1" |
| fi |
| |
| cd utils |
| emake CC=$(tc-getCC) |
| |
| use usb || params="${params} DISABLE_USB=1" |
| |
| BUILD_PARAMS="KSRC=${KV_DIR} KVERS=${KV_FULL} KBUILD='${KV_OUT_DIR}' ${params}" |
| linux-mod_src_compile |
| } |
| |
| src_install() { |
| dodoc AUTHORS ChangeLog INSTALL README |
| doman ndiswrapper.8 |
| |
| keepdir /etc/ndiswrapper |
| |
| linux-mod_src_install |
| |
| cd utils |
| emake DESTDIR="${D}" install |
| } |
| |
| pkg_postinst() { |
| linux-mod_pkg_postinst |
| |
| echo |
| elog "NDISwrapper requires .inf and .sys files from a Windows(tm) driver" |
| elog "to function. Download these to /root for example, then" |
| elog "run 'ndiswrapper -i /root/foo.inf'. After that you can delete them." |
| elog "They will be copied to /etc/ndiswrapper/." |
| elog "Once done, please run 'update-modules'." |
| echo |
| |
| elog "Please look at ${HOMEPAGE}" |
| elog "for the FAQ, HowTos, tips, configuration, and installation" |
| elog "information." |
| echo |
| |
| for i in $(lspci -n | egrep '(0280|0200):' | cut -d' ' -f1) |
| do |
| i_desc=$(lspci -nn | grep "$i" | awk -F': ' '{print $2}' | awk -F'[' '{print $1}') |
| if [[ -n "${i_desc}" ]] ; then |
| elog "Possible hardware: ${i_desc}" |
| fi |
| done |
| |
| echo |
| elog "NDISwrapper devs need support (_hardware_, cash)." |
| elog "Don't hesitate if you can help." |
| elog "See ${HOMEPAGE} for details." |
| echo |
| |
| if [[ ${ROOT} == "/" ]]; then |
| |
| einfo "Attempting to automatically reinstall any Windows drivers" |
| einfo "you might already have." |
| echo |
| |
| local driver |
| for driver in $(ls /etc/ndiswrapper) ; do |
| einfo "Driver: ${driver}" |
| mv "/etc/ndiswrapper/${driver}" "${T}" |
| ndiswrapper -i "${T}/${driver}/${driver}.inf" |
| done |
| fi |
| } |