# Copyright 1999-2004 Gentoo Technologies, Inc. # Distributed under the terms of the GNU General Public License v2 # $Header: /home/cvsroot/gentoo-x86/media-video/nvidia-kernel/nvidia-kernel-1.0.5336-r1.ebuild,v 1.3 2004/02/06 19:27:52 azarah Exp $ inherit eutils kmod PKG_V="pkg1" NV_V="${PV/1.0./1.0-}" NV_PACKAGE="NVIDIA-Linux-x86-${NV_V}" S="${WORKDIR}/${NV_PACKAGE}-${PKG_V}/usr/src/nv" DESCRIPTION="Linux kernel module for the NVIDIA's X driver" HOMEPAGE="http://www.nvidia.com/" SRC_URI="ftp://download.nvidia.com/XFree86/Linux-x86/${NV_V}/${NV_PACKAGE}-${PKG_V}.run http://dev.gentoo.org/~latexer/files/patches/${PN}-koutput.diff.gz" # The slot needs to be set to $KV to prevent unmerges of modules for other kernels. LICENSE="NVIDIA" SLOT="${KV}" KEYWORDS="-* ~x86" RESTRICT="nostrip" DEPEND="virtual/linux-sources" export _POSIX2_VERSION="199209" KMOD_SOURCES="none" KMOD_KOUTPUT_PATCH="${DISTDIR}/${PN}-koutput.diff.gz" check_mtrr() { if [ "`kmod_get_config_var MTRR`" = "n" ] then eerror "This version needs MTRR support for most chipsets!" eerror "Please enable MTRR support in your kernel config, found at:" eerror eerror " Processor type and features -> [*] MTRR (Memory Type Range Register) support" eerror eerror "and recompile your kernel ..." die "MTRR support not detected!" fi } pkg_setup() { # Make sure MTRR support is enabled check_mtrr } src_unpack() { # Let kmod.eclass handle setting things up for us kmod_src_unpack cd ${WORKDIR} bash ${DISTDIR}/${NV_PACKAGE}-${PKG_V}.run --extract-only || echo "extract failed" # Need to call this after we unpack the annoying bash script kmod_do_buildpatches # Next section applies patches for linux-2.5 kernel, and/or # bugfixes for linux-2.4. All these are from: # # http://www.minion.de/nvidia/ # # Many thanks to Christian Zander for bringing # these to us, and being so helpful to select which to use. cd ${S} einfo "Linux kernel ${KV_VERSION_FULL}" if is_kernel 2 5 || is_kernel 2 6 then EPATCH_SINGLE_MSG="Applying basic sysfs patch ..." \ epatch ${FILESDIR}/${PV}/NVIDIA_kernel-${NV_V}-basic-sysfs-support.patch if is_koutput then ln -snf Makefile.kbuild Makefile rm ${S}/makefile else sed -e "s:5328:${NV_V/1.0-/}:g" \ ${FILESDIR}/${PV}/Makefile > ${S}/makefile fi fi # if you set this then it's your own fault when stuff breaks :) [ ! -z "${USE_CRAZY_OPTS}" ] && sed -i "s:-O:${CFLAGS}:" Makefile } src_compile() { einfo "starting compile" # IGNORE_CC_MISMATCH disables a sanity check that's needed when gcc has been # updated but the running kernel is still compiled with an older gcc. This is # needed for chrooted building, where the sanity check detects the gcc of the # kernel outside the chroot rather than within. # SYSSRC is used because otherwise it looks in /lib/modules/`uname -r`/build # for things, which is not the gentoo way! if is_kernel 2 5 || is_kernel 2 6 then unset ARCH if is_koutput then make IGNORE_CC_MISMATCH="yes" KERNDIR="${ROOT}/usr/src/linux" \ SYSSRC="${ROOT}/usr/src/linux" SYSSRC_OUTPUT="${KV_OUTPUT}" \ clean module || die else make IGNORE_CC_MISMATCH="yes" KERNDIR="/usr/src/linux" \ clean nvidia.o || die fi else make IGNORE_CC_MISMATCH="yes" KERNDIR="${ROOT}/usr/src/linux" \ SYSSRC="${ROOT}/usr/src/linux" \ clean module || die fi } src_install() { # The driver goes into the standard modules location insinto /lib/modules/${KV}/video # Install it to either .o or .ko depending on kernel version newins nvidia.o nvidia.${KV_OBJ} # Add the aliases insinto /etc/modules.d newins ${FILESDIR}/nvidia-1.1 nvidia # Docs dodoc ${S}/README # The device creation script into / newsbin ${S}/makedevices.sh NVmakedevices.sh } pkg_postinst() { kmod_pkg_postinst if [ "${ROOT}" = "/" ] then if [ ! -e /dev/.devfsd ] && [ -x /sbin/NVmakedevices.sh ] then /sbin/NVmakedevices.sh >/dev/null 2>&1 fi fi echo einfo "If you are not using devfs, loading the module automatically at" einfo "boot up, you need to add \"nvidia\" to your /etc/modules.autoload." echo ewarn "Please note that the driver name changed from \"NVdriver\"" ewarn "to \"nvidia.o\"." echo }