# $Header: /magellan-cvs/smage/nvidia-legacy-drivers/nvidia-legacy-drivers-1.0.9639-r5.smage2,v 1.1 2008/02/16 11:59:09 niro Exp $ PNAME="nvidia-legacy-drivers" PVER="1.0.9639" PBUILD="r6" PCATEGORIE="x11-drivers" STATE="unstable" DESCRIPTION="NVidia OpenGL legacy 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-legacy-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://download.nvidia.com/XFree86/Linux-x86/${PVER/1.0./1.0-}/${SRCFILE_x86} http://download.nvidia.com/XFree86/Linux-x86_64/${PVER/1.0./1.0-}/${SRCFILE_x86_64} mirror://${PNAME}/${SRCFILE_x86} mirror://${PNAME}/${SRCFILE_x86_64} mirror://${PNAME/-legacy/}/libGL.la-r2 mirror://${PNAME/-legacy/}/NVIDIA_glx-1.0.6629-defines.patch mirror://${PNAME/-legacy/}/NVIDIA_glx-1.0.6629-glheader.patch mirror://${PNAME}/NVIDIA_kernel-1.0-7167-disable-preempt-on-smp_processor_id.patch mirror://${PNAME}/nvidia-legacy-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} bash ${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 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 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 install -m 0644 usr/include/GL/*.h ${BINDIR}${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-legacy-drivers || die mv ${SRCDIR}/usr/src/{nv,nvidia-legacy-drivers} || die tar cvjf ${BINDIR}/usr/src/nvidia-legacy-drivers/nvidia-legacy-drivers-${PVER}.tar.bz2 nvidia-legacy-drivers/ || die # install module-build script minstallexec -s nvidia-legacy-module.sh-${MODULESH_REV} /usr/src/nvidia-legacy-drivers/nvidia-legacy-module.sh || die # fix pver in nvidia-module.sh sed -i "s:@@PVER@@:${PVER}:" ${BINDIR}/usr/src/nvidia-legacy-drivers/nvidia-legacy-module.sh || die } preinstall() { if [[ ! -z $(magequery -n nvidia-glx) ]] then echo -e ${COLRED} echo -e "Error: media-video/nvidia-glx is installed!!" echo -e "These legacy drivers and nvidia-glx cannot be installed at the same time." echo -e "Please uninstall media-video/nvidia-glx first!" echo -e ${COLDEFAULT} die "nvidia-glx found!" fi if [[ ! -z $(magequery -n nvidia-drivers) ]] then echo -e ${COLRED} echo -e "Error: x11-drivers/nvidia-drivers is installed!!" echo -e "These legacy drivers and nvidia-drivers cannot be installed at the same time." echo -e "Please uninstall x11-drivers/nvidia-drivers first!" echo -e ${COLDEFAULT} die "nvidia-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() { # switch to the new installed nvidia implementation ${MROOT}/usr/sbin/opengl-update nvidia echo echo -e "1. Please switch your gl-extension with: " echo -e "\t'opengl-update nvidia'" echo echo -e "2. Edit yout /etc/X11/xorg.conf," echo -e " rename your VGA card driver to: 'nvidia'" echo -e " and enable the glx-module 'Load \"glx\"." echo }