# $Header: /magellan-cvs/smage/nvidia-drivers/nvidia-drivers-173.14.05-r1.smage2,v 1.1 2008/06/12 19:18:12 niro Exp $ PNAME="nvidia-drivers" PVER="173.14.05" PBUILD="r1" PCATEGORIE="x11-drivers" STATE="unstable" DESCRIPTION="NVidia OpenGL drivers for Xorg." HOMEPAGE="http://www.nvidia.com/" # only for >= xorg-7.1.0 sminclude xorg xorg71 mtools DEPEND=">= x11-base/xorg-server-1 >= x11-base/opengl-update-magellan-2.2" SDEPEND=">= x11-proto/xf86miscproto-1 >= x11-proto/xf86vidmodeproto-1" PROVIDE="virtual/opengl virtual/nvidia-drivers" # both files must be fetch or our md5-logic breaks SRCFILE_x86="NVIDIA-Linux-x86-${PVER/1.0./1.0-}-pkg0.run" SRCFILE_x86_64="NVIDIA-Linux-x86_64-${PVER/1.0./1.0-}-pkg0.run" # decide between x86 and x86_64 arch SRCFILE="$(eval echo \$SRCFILE_${ARCH/i*86/x86})" SRCDIR="${BUILDDIR}/NVIDIA-Linux-${ARCH/i*86/x86}-${PVER/1.0./1.0-}-pkg0" # nvidia-module-sh cvs revision MODULESH_REV=1.2 SRC_URI=( http://us.download.nvidia.com/XFree86/Linux-x86/${PVER}/${SRCFILE_x86} http://us.download.nvidia.com/XFree86/Linux-x86_64/${PVER}/${SRCFILE_x86_64} mirror://${PNAME}/${SRCFILE_x86} mirror://${PNAME}/${SRCFILE_x86_64} mirror://${PNAME}/libGL.la-r2 mirror://${PNAME}/NVIDIA_glx-1.0.6629-defines.patch mirror://${PNAME}/NVIDIA_glx-1.0.6629-glheader.patch mirror://${PNAME}/nvidia.modules.d mirror://${PNAME}/NVIDIA_kernel-1.0-7167-disable-preempt-on-smp_processor_id.patch mirror://${PNAME}/nvidia-module.sh-${MODULESH_REV} ) # this thingy don't like stripping export CFLAGS="${CFLAGS/-s/}" export CXXFLAGS="${CFLAGS}" export NOSTRIP=true export _POSIX2_VERSION="199209" src_prepare() { # unpacking the package cd ${BUILDDIR} sh ${SOURCEDIR}/${PNAME}/${SRCFILE} --extract-only || die cd ${SRCDIR} # use the correct defines to make gtkglext build work mpatch NVIDIA_glx-1.0.6629-defines.patch || die # use some more sensible gl headers and make way for new glext.h mpatch NVIDIA_glx-1.0.6629-glheader.patch || die cd ${SRCDIR}/usr/src/nv # fix calling of smp_processor_id() when preempt is enabled mpatch NVIDIA_kernel-1.0-7167-disable-preempt-on-smp_processor_id.patch || die # use M= instead of SUBDIRS= sed -i 's:SUBDIRS=:M=:g' Makefile.kbuild || die } # fake (needed with the include of xorg) src_compile() { return 0; } src_install() { cd ${SRCDIR} # use driver for xorg-6.9.0 with dll-loader libs local DLL_EXT="so" local NV_ROOT="/usr/$(mlibdir)/opengl/nvidia" || die # the glx libraries minstalldir ${NV_ROOT}/lib || die minstallexec usr/lib/libGL.so.${PVER} ${NV_ROOT}/lib || die minstallexec usr/lib/libGLcore.so.${PVER} ${NV_ROOT}/lib || die mlink libGL.so.${PVER} ${NV_ROOT}/lib/libGL.so || die mlink libGL.so.${PVER} ${NV_ROOT}/lib/libGL.so.1 || die mlink libGLcore.so.${PVER} ${NV_ROOT}/lib/libGLcore.so || die mlink libGLcore.so.${PVER} ${NV_ROOT}/lib/libGLcore.so.1 || die # no-tls libs local NO_TLS_ROOT="/usr/$(mlibdir)/opengl/nvidia/no-tls" minstalldir ${NO_TLS_ROOT} || die minstallexec usr/lib/libnvidia-tls.so.${PVER} ${NO_TLS_ROOT} || die mlink libnvidia-tls.so.${PVER} ${NO_TLS_ROOT}/libnvidia-tls.so || die mlink libnvidia-tls.so.${PVER} ${NO_TLS_ROOT}/libnvidia-tls.so.1 || die # tls libs local TLS_ROOT="/usr/$(mlibdir)/opengl/nvidia/tls" minstalldir ${TLS_ROOT} || die minstallexec usr/lib/tls/libnvidia-tls.so.${PVER} ${TLS_ROOT} || die mlink libnvidia-tls.so.${PVER} ${TLS_ROOT}/libnvidia-tls.so || die mlink libnvidia-tls.so.${PVER} ${TLS_ROOT}/libnvidia-tls.so.1 || die # we want tls support mlink ../tls/libnvidia-tls.so ${NV_ROOT}/lib || die mlink ../tls/libnvidia-tls.so.1 ${NV_ROOT}/lib || die mlink ../tls/libnvidia-tls.so.${PVER} ${NV_ROOT}/lib || die # not sure whether installing the .la file is neccessary; local ver1="$(echo ${PVER} |cut -d '.' -f 1)" local ver2="$(echo ${PVER} |cut -d '.' -f 2)" local ver3="$(echo ${PVER} |cut -d '.' -f 3)" sed -e "s:\${PVER}:${PVER}:" \ -e "s:\${ver1}:${ver1}:" \ -e "s:\${ver2}:${ver2}:" \ -e "s:\${ver3}:${ver3}:" \ ${SOURCEDIR}/${PNAME}/libGL.la-r2 > ${BINDIR}/${NV_ROOT}/lib/libGL.la || die # the x module # since we moved away from libs in /usr/X11R6 need to check this local X11_LIB_DIR="/usr/$(mlibdir)" minstalldir ${X11_LIB_DIR}/xorg/modules/drivers || die if [ -f usr/X11R6/lib/modules/drivers/nvidia_drv.${DLL_EXT} ] then minstallexec usr/X11R6/lib/modules/drivers/nvidia_drv.${DLL_EXT} \ ${X11_LIB_DIR}/xorg/modules/drivers || die fi if [ -f usr/X11R6/libs/libXvMCNVIDIA.a ] then minstallfile usr/X11R6/lib/libXvMCNVIDIA.a ${X11_LIB_DIR} || die fi if [ -f usr/X11R6/lib/libXvMCNVIDIA.so.${PVER} ] then minstallexec usr/X11R6/lib/libXvMCNVIDIA.so.${PVER} ${X11_LIB_DIR} || die fi minstalldir ${NV_ROOT}/extensions || die if [ -f usr/X11R6/lib/modules/extensions/libglx.so.${PVER} ] then minstallexec usr/X11R6/lib/modules/extensions/libglx.so.${PVER} \ ${NV_ROOT}/extensions/libglx.so || die fi # includes minstalldir ${NV_ROOT}/include || die minstallfile usr/include/GL/\*.h ${NV_ROOT}/include || die # install tls_test minstalldir /usr/libexec/misc || die minstallexec usr/bin/tls_test /usr/libexec/misc || die minstallexec usr/bin/tls_test_dso.so /usr/libexec/misc || die # docs, remove nvidia-settings as provided by media-video/nvidia-settings rm -f usr/share/doc/nvidia-settings* || die minstalldocs usr/share/doc/* || die # nvidia want bug reports using this script minstalldir /usr/bin || die minstallexec usr/bin/nvidia-bug-report.sh || die # create a driver tarball cd ${SRCDIR}/usr/src minstalldir /usr/src/nvidia-drivers || die mv ${SRCDIR}/usr/src/{nv,nvidia-drivers} || die tar cvjf ${BINDIR}/usr/src/nvidia-drivers/nvidia-drivers-${PVER}.tar.bz2 nvidia-drivers/ || die # install module-build script minstallexec -s nvidia-module.sh-${MODULESH_REV} /usr/src/nvidia-drivers/nvidia-module.sh || die # fix pver in nvidia-module.sh sed -i "s:@@PVER@@:${PVER}:" ${BINDIR}/usr/src/nvidia-drivers/nvidia-module.sh || die } preinstall() { if [[ ! -z $(magequery -n nvidia-glx-legacy) ]] then echo -e ${COLRED} echo -e "Error: media-video/nvidia-glx-legacy is installed!!" echo -e "These drivers and nvidia-glx-legacy cannot be installed at the same time." echo -e "Please uninstall media-video/nvidia-glx-legacy first!" echo -e ${COLDEFAULT} die "nvidia-glx-legacy found!" fi if [[ ! -z $(magequery -n nvidia-legacy-drivers) ]] then echo -e ${COLRED} echo -e "Error: x11-drivers/nvidia-legacy-drivers are installed!!" echo -e "These drivers and nvidia-legacy-drivers cannot be installed at the same time." echo -e "Please uninstall x11-drivers/nvidia-legacy-drivers first!" echo -e ${COLDEFAULT} die "nvidia-legacy-drivers found!" fi # clean the dynamic libGL stuff's home to ensure # we dont have stale libs floating around if [[ -d ${MROOT}/usr/$(mlibdir)/opengl/nvidia ]] then rm -rf ${MROOT}/usr/$(mlibdir)/opengl/nvidia/* fi # make sure we nuke the old nvidia-glx's env.d file if [[ -e ${MROOT}/etc/env.d/09nvidia ]] then rm -f ${MROOT}/etc/env.d/09nvidia fi } postinstall() { ${MROOT}/usr/sbin/opengl-update --use-old nvidia echo echo "To use these driver you need to compile the kernel module first." echo "Goto /usr/src/nvidia-drivers and run nvidia-module.sh:" echo " 'cd /usr/src/nvidia-drivers && ./nvidia-module.sh'" echo echo "Please switch your opengl extension with: " echo " 'opengl-update nvidia'" echo echo "Next step is to edit your xorg.conf:" echo " rename your VGA card driver to: 'nvidia'" echo " and enable the glx-module via 'Load \"glx\"." echo }