diff options
author | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2008-01-07 22:54:30 +0000 |
---|---|---|
committer | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2008-01-07 22:54:30 +0000 |
commit | fc345ae1305ec23d7d9c9a2162a85736df7fe4d5 (patch) | |
tree | cf3940cc29a742939dfe4b6cb93b559604a1ec24 /pkgs/os-specific | |
parent | 5d4fd5f529d11942eae8bfaf16dc6e93b7fdb3fe (diff) | |
download | nixpkgs-fc345ae1305ec23d7d9c9a2162a85736df7fe4d5.tar nixpkgs-fc345ae1305ec23d7d9c9a2162a85736df7fe4d5.tar.gz nixpkgs-fc345ae1305ec23d7d9c9a2162a85736df7fe4d5.tar.bz2 nixpkgs-fc345ae1305ec23d7d9c9a2162a85736df7fe4d5.tar.lz nixpkgs-fc345ae1305ec23d7d9c9a2162a85736df7fe4d5.tar.xz nixpkgs-fc345ae1305ec23d7d9c9a2162a85736df7fe4d5.tar.zst nixpkgs-fc345ae1305ec23d7d9c9a2162a85736df7fe4d5.zip |
* NVIDIA driver: updated to 169.07. Cleaned up and purified: it
doesn't need symlinks in /usr anymore. nvidia-settings works properly now. svn path=/nixpkgs/trunk/; revision=10094
Diffstat (limited to 'pkgs/os-specific')
-rwxr-xr-x | pkgs/os-specific/linux/nvidia/builder.sh | 169 | ||||
-rw-r--r-- | pkgs/os-specific/linux/nvidia/default.nix | 42 |
2 files changed, 83 insertions, 128 deletions
diff --git a/pkgs/os-specific/linux/nvidia/builder.sh b/pkgs/os-specific/linux/nvidia/builder.sh index 9ec3428e878..4ef8c551d1c 100755 --- a/pkgs/os-specific/linux/nvidia/builder.sh +++ b/pkgs/os-specific/linux/nvidia/builder.sh @@ -1,101 +1,76 @@ source $stdenv/setup -echo "Building linux driver against kernel: " $kernelOutPath; -echo "LD_LIBRARY_PATH: $LD_LIBRARY_PATH" - -echo $nvidiasrc -cp $nvidiasrc . -chmod 755 ./*-NVIDIA* -./*-NVIDIA* -x -cd NVIDIA*/ - -cd usr/src/nv/ -pwd -P - -#Clean up -#make clean - -#Create the module -echo $out -mkdir $out -make SYSSRC=$kernelOutPath/lib/modules/2.*/build/ module - -#go to the usr dir of the nvidia package -cd ../../ - -echo "Copying all files to " $out/lib"" - -cp -R * $out - -#add extra symlinks in $out -ln -snf $out/lib/libGLcore.so.$versionNumber $out/lib/libGLcore.so -ln -snf $out/lib/libGLcore.so.$versionNumber $out/lib/libGLcore.so.1 -ln -snf $out/lib/libGL.so.$versionNumber $out/lib/libGL.so -ln -snf $out/lib/libGL.so.$versionNumber $out/lib/libGL.so.1 -ln -snf $out/lib/libnvidia-cfg.so.$versionNumber $out/lib/libnvidia-cfg.so.1 -ln -snf $out/lib/libnvidia-tls.so.$versionNumber $out/lib/libnvidia-tls.so.1 -ln -snf $out/X11R6/lib/libXvMCNVIDIA.so.$versionNumber $out/X11R6/lib/libXvMCNVIDIA.so.1 -ln -snf $out/X11R6/lib/libXvMCNVIDIA.so.$versionNumber $out/lib/libXvMCNVIDIA.so.1 -ln -snf $out/X11R6/lib/modules/libnvidia-wfb.so.$versionNumber $out/X11R6/lib/modules/libnvidia-wfb.so.1 -ln -snf $out/X11R6/lib/modules/libnvidia-wfb.so.$versionNumber $out/lib/libnvidia-wfb.so.1 -ln -snf $out/X11R6/lib/modules/extensions/libglx.so.$versionNumber $out/X11R6/lib/modules/extensions/libglx.so.1 -ln -snf $out/X11R6/lib/modules/extensions/libglx.so.$versionNumber $out/lib/libglx.so.1 - -#TODO: patchelf binaries ! -#patchelf --set-interpreter ${path glibc TODO /lib/ld-linux.so.2 $out/bin/.... - -#from dep on xorg-sys-opengl: add symlinks in /usr/lib/ (especially libGL.so.1) to the real location... - -ensureDir /usr/lib/ -cd /usr/lib -ln -snf $out/lib/libGLcore.so.$versionNumber libGLcore.so.1 -ln -snf $out/lib/libGL.la libGL.la -ln -snf $out/lib/libGL.so.$versionNumber libGL.so.1 -ln -snf $out/lib/libnvidia-cfg.so.$versionNumber libnvidia-cfg.so.1 -ln -snf $out/lib/libnvidia-tls.so.$versionNumber libnvidia-tls.so.1 -ensureDir /usr/lib/tls/ -ln -snf $out/lib/tls/libnvidia-tls.so.$versionNumber /usr/lib/tls/libnvidia-tls.so.1 -ln -snf $out/X11R6/lib/modules/extensions/libglx.so.$versionNumber libglx.so.1 -ln -snf $out/X11R6/lib/modules/libnvidia-wfb.so.$versionNumber libnvidia-wfb.so.1 -ln -snf $out/X11R6/lib/modules/drivers/nvidia_drv.so nvidia_drv.so -ln -snf $out/X11R6/lib/libXvMCNVIDIA.so.$versionNumber libXvMCNVIDIA.so.1 -ln -snf $out/bin/tls_test_dso.so tls_test_dso.so -ln -snf $out/src/nv/nvidia.ko nvidia.ko - -echo "YOU! need to add symlinks as root to the libs in the current $xorgOutPath/lib/xorg/modules/extensions/ (especially libglx.so)" -rwlibs=" -cd $xorgOutPath/lib/xorg/modules/extensions/; -mv libglx.so libglx.so.org; -mv libglx.la libglx.la.org; -mv libGLcore.so libGLcore.so.org; -ln -snf /usr/lib/libglx.so.1 libglx.so; -ln -snf /usr/lib/libglx.so.1 libglx.so.1; -ln -snf /usr/lib/libGLcore.so.1 libGLcore.so; -ln -snf /usr/lib/libGLcore.so.1 libGLcore.so.1; -ln -snf /usr/lib/libGL.so.1 libGL.so; -ln -snf /usr/lib/libGL.so.1 libGL.so.1; -ln -snf /usr/lib/libglx.la libglx.la; -ln -snf /usr/lib/libglx.so.1 libglx.so; -ln -snf /usr/lib/libglx.so.1 libglx.so.1; -ln -snf /usr/lib/nvidia_drv.so nvidia_drv.so; - -# rm /var/run/opengl-driver; -ln -snf /var/run/opengl-driver $out; - -kerneldrvnvpath=$kernelOutPath/lib/modules/*-default/kernel/drivers/video/nvidia; -#echo TODO kerneldrvnvpath: \$kerneldrvnvpath -ln -snf $out/src/nv/nvidia.ko \$kerneldrvnvpath/nvidia.ko; -" -#TODO ADD ln -sf is sometimes not strong enough ... - -rwlibsfile="$out/bin/nvidia-rewriteLibs.sh" - -echo "--------------------------------------------------------" -echo "YOU MUST RUN $rwlibsfile as ROOT after this installation" -echo "--------------------------------------------------------" -echo $rwlibs > $rwlibsfile -chmod 755 $rwlibsfile - -sleep 5 +dontPatchELF=1 # must keep libXv, $out in RPATH +unpackFile() { + sh $src -x +} + + +buildPhase=myBuildPhase +myBuildPhase() { + echo "Building linux driver against kernel: " $kernel; + + cd usr/src/nv/ + + # Workaround: get it to build on kernels that have CONFIG_XEN set. + # Disable the test, apply a patch to disable the Xen functionality. + #substituteInPlace Makefile.kbuild --replace xen_sanity_check fnord + #patch -p1 < $xenPatch + + # Create the module. + sysSrc=$(echo $kernel/lib/modules/2.*/build/) + unset src # used by the nv makefile + make SYSSRC=$sysSrc module + cd ../../.. +} + + +installPhase=myInstallPhase +myInstallPhase() { + + # Install the kernel module. + ensureDir $out/lib + cp usr/src/nv/nvidia.ko $out/lib/ + + # Install libGL and friends. + cp -prd usr/lib/* usr/X11R6/lib/libXv* $out/lib/ + + ln -snf libGLcore.so.$versionNumber $out/lib/libGLcore.so + ln -snf libGLcore.so.$versionNumber $out/lib/libGLcore.so.1 + ln -snf libGL.so.$versionNumber $out/lib/libGL.so + ln -snf libGL.so.$versionNumber $out/lib/libGL.so.1 + ln -snf libnvidia-cfg.so.$versionNumber $out/lib/libnvidia-cfg.so.1 + ln -snf libnvidia-tls.so.$versionNumber $out/lib/libnvidia-tls.so.1 + ln -snf libnvidia-tls.so.$versionNumber $out/lib/tls/libnvidia-tls.so.1 + ln -snf libXvMCNVIDIA.so.$versionNumber $out/lib/libXvMCNVIDIA_dynamic.so.1 + ln -snf libcuda.so.$versionNumber $out/lib/libcuda.so.1 + + # Install the X driver. + ensureDir $out/lib/xorg/modules + cp -prd usr/X11R6/lib/modules/* $out/lib/xorg/modules/ + + ln -snf libnvidia-wfb.so.$versionNumber $out/lib/xorg/modules/libnvidia-wfb.so.1 + ln -snf libglx.so.$versionNumber $out/lib/xorg/modules/extensions/libglx.so + + # Install the programs. + ensureDir $out/bin + + fullPath=$out/lib + for i in $libPath; do + fullPath=$fullPath:$i/lib + done + + for i in nvidia-settings nvidia-xconfig; do + cp usr/bin/$i $out/bin/$i + patchelf --interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" \ + --set-rpath $fullPath $out/bin/$i + done + + # Header files etc. + cp -prd usr/include usr/share $out +} + + +genericBuild diff --git a/pkgs/os-specific/linux/nvidia/default.nix b/pkgs/os-specific/linux/nvidia/default.nix index d4f1c8ac9bc..11906b60658 100644 --- a/pkgs/os-specific/linux/nvidia/default.nix +++ b/pkgs/os-specific/linux/nvidia/default.nix @@ -1,46 +1,26 @@ -{ stdenv -, fetchurl - -, kernel -, coreutils -, xorg_server - -#deps -,libXext, libX11 - -}: +{stdenv, fetchurl, kernel, xlibs, gtkLibs}: let - versionNumber = "100.14.19"; #important ! to also update this if the sources are updated, this is used as follows: extensions/libglx.so.$versionNumber + versionNumber = "169.07"; in + stdenv.mkDerivation { name = "nvidiaDrivers-" + versionNumber; builder = ./builder.sh; - - nvidiasrc = fetchurl { #we cannot use $src since this variable is also used in the nvidia sources - #url = http://www.denbreejen.net/public/nixos/NVIDIA-Linux-x86-1.0-9755-pkg1.run; - #sha256 = "1985373866b1dcae80f3da66dbbbd3c28ad76e75a620865be321ee870ad9d1ea"; - #url = http://us.download.nvidia.com/XFree86/Linux-x86/100.14.11/NVIDIA-Linux-x86-100.14.11-pkg1.run; - #sha256 = "8665370e590328cc5bf3d13737739a80dacbfb6844436cab03c992e84bf16b0c"; - url = http://us.download.nvidia.com/XFree86/Linux-x86/100.14.19/NVIDIA-Linux-x86-100.14.19-pkg1.run; - sha256 = "4dc97d8ff5340954f3cd446093636261c54b147e9721eb295574207d79e9a7e7"; + src = fetchurl { + url = "http://us.download.nvidia.com/XFree86/Linux-x86/${versionNumber}/NVIDIA-Linux-x86-${versionNumber}-pkg1.run"; + sha256 = "1q4sbwcf24rvx72sj19pvhsmg5n8v2rfzsxf56mfxjbiy2jhjbaa"; }; - inherit versionNumber; - kernelOutPath = kernel.outPath; - xorgOutPath = xorg_server.outPath; + #xenPatch = ./nvidia-2.6.24-xen.patch; - buildInputs = [ - libXext libX11 - ]; + inherit versionNumber kernel; - propagatedBuildInputs = [ - libX11 libXext + libPath = [ + gtkLibs.gtk gtkLibs.atk gtkLibs.pango gtkLibs.glib + xlibs.libXext xlibs.libX11 xlibs.libXv ]; - - NIX_LDFLAGS = "-rpath ${libX11}/lib -rpath ${libXext}/lib"; - LD_LIBRARY_PATH = "${libX11}/lib:${libXext}/lib/"; } |