diff options
author | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2008-06-04 09:59:33 +0000 |
---|---|---|
committer | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2008-06-04 09:59:33 +0000 |
commit | 9029c3b61f32fa61145689cf537ca9a552e1ba50 (patch) | |
tree | b25b7819d9da6c0b1a1ef071640ac41c3b24a468 /pkgs | |
parent | dcf01e5925d82c8bf19b04f2afb99bc6d822d8ef (diff) | |
download | nixlib-9029c3b61f32fa61145689cf537ca9a552e1ba50.tar nixlib-9029c3b61f32fa61145689cf537ca9a552e1ba50.tar.gz nixlib-9029c3b61f32fa61145689cf537ca9a552e1ba50.tar.bz2 nixlib-9029c3b61f32fa61145689cf537ca9a552e1ba50.tar.lz nixlib-9029c3b61f32fa61145689cf537ca9a552e1ba50.tar.xz nixlib-9029c3b61f32fa61145689cf537ca9a552e1ba50.tar.zst nixlib-9029c3b61f32fa61145689cf537ca9a552e1ba50.zip |
* NVIDIA driver: set a RUNPATH on libGL.so and friends. This ensures
that applications that link against it don't need to have its dependencies (like libXext) in *their* RUNPATHs. * glxinfo: don't add /var/run/opengl-driver/lib to the RUNPATH. Instead LD_LIBRARY_PATH should be set to /var/run/opengl-driver/lib at runtime. This is much more pure, and it obviates the need for patchelfing all OpenGL applications. (TODO: remove patchelf hacks for other OpenGL programs as well.) svn path=/nixpkgs/branches/stdenv-updates/; revision=11972
Diffstat (limited to 'pkgs')
-rwxr-xr-x | pkgs/os-specific/linux/nvidia/builder.sh | 16 | ||||
-rw-r--r-- | pkgs/os-specific/linux/nvidia/default.nix | 18 | ||||
-rw-r--r-- | pkgs/tools/graphics/glxinfo/default.nix | 8 | ||||
-rw-r--r-- | pkgs/top-level/all-packages.nix | 3 |
4 files changed, 20 insertions, 25 deletions
diff --git a/pkgs/os-specific/linux/nvidia/builder.sh b/pkgs/os-specific/linux/nvidia/builder.sh index 00d70d6198f2..cb4e67614bb5 100755 --- a/pkgs/os-specific/linux/nvidia/builder.sh +++ b/pkgs/os-specific/linux/nvidia/builder.sh @@ -8,8 +8,7 @@ unpackFile() { } -buildPhase=myBuildPhase -myBuildPhase() { +buildPhase() { echo "Building linux driver against kernel: " $kernel; cd usr/src/nv/ @@ -28,8 +27,7 @@ myBuildPhase() { } -installPhase=myInstallPhase -myInstallPhase() { +installPhase() { # Install the kernel module. ensureDir $out/lib/modules/$kernelVersion/misc @@ -58,15 +56,15 @@ myInstallPhase() { # Install the programs. ensureDir $out/bin - fullPath=$out/lib - for i in $libPath; do - fullPath=$fullPath:$i/lib - done + patchelf --set-rpath $out/lib:$glPath $out/lib/libGL.so.*.*.* + patchelf --set-rpath $out/lib:$glPath $out/lib/libXvMCNVIDIA.so.*.*.* + patchelf --set-rpath $cudaPath $out/lib/libcuda.so.*.*.* + patchelf --set-rpath $out/lib $out/lib/xorg/modules/extensions/libglx.so.*.*.* 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 + --set-rpath $out/lib:$programPath:$glPath $out/bin/$i done # Header files etc. diff --git a/pkgs/os-specific/linux/nvidia/default.nix b/pkgs/os-specific/linux/nvidia/default.nix index 54f45d6ab749..8f76343b74e9 100644 --- a/pkgs/os-specific/linux/nvidia/default.nix +++ b/pkgs/os-specific/linux/nvidia/default.nix @@ -1,18 +1,19 @@ -{stdenv, fetchurl, kernel, xlibs, gtkLibs}: +{stdenv, fetchurl, kernel, xlibs, gtkLibs, zlib}: let - versionNumber = "169.09"; + versionNumber = "173.14.05"; in stdenv.mkDerivation { - name = "nvidiaDrivers-" + versionNumber; + name = "nvidia-x11-${versionNumber}"; + builder = ./builder.sh; src = fetchurl { url = "http://us.download.nvidia.com/XFree86/Linux-x86/${versionNumber}/NVIDIA-Linux-x86-${versionNumber}-pkg1.run"; - sha256 = "1m3k2jyxi3xxpm6890y0d97jisnxiyyay59ss2r9abyvpkv3by8i"; + sha256 = "14r3zddrppd0zxq76dd08dlj4qqncr7fj9cnrny4f0b5d0qgrd3f"; }; #xenPatch = ./nvidia-2.6.24-xen.patch; @@ -21,8 +22,11 @@ stdenv.mkDerivation { dontStrip = true; - libPath = [ - gtkLibs.gtk gtkLibs.atk gtkLibs.pango gtkLibs.glib - xlibs.libXext xlibs.libX11 xlibs.libXv + glPath = stdenv.lib.makeLibraryPath [xlibs.libXext xlibs.libX11]; + + cudaPath = stdenv.lib.makeLibraryPath [zlib stdenv.gcc.gcc]; + + programPath = stdenv.lib.makeLibraryPath [ + gtkLibs.gtk gtkLibs.atk gtkLibs.pango gtkLibs.glib xlibs.libXv ]; } diff --git a/pkgs/tools/graphics/glxinfo/default.nix b/pkgs/tools/graphics/glxinfo/default.nix index 5bff7815eba3..0e2fa198a862 100644 --- a/pkgs/tools/graphics/glxinfo/default.nix +++ b/pkgs/tools/graphics/glxinfo/default.nix @@ -1,4 +1,4 @@ -{stdenv, fetchurl, x11, mesa, libXext}: +{stdenv, fetchurl, x11, mesa}: stdenv.mkDerivation { name = "glxinfo-6.5.2"; @@ -20,10 +20,4 @@ stdenv.mkDerivation { ensureDir $out/bin cp glxinfo glxgears $out/bin "; - - postFixup = " - for i in $out/bin/*; do - patchelf --set-rpath /var/run/opengl-driver/lib:${libXext}/lib:$(patchelf --print-rpath $i) $i - done - "; } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index ae7ce1ed071f..9e2145fa4985 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -558,7 +558,6 @@ rec { glxinfo = assert mesaSupported; import ../tools/graphics/glxinfo { inherit fetchurl stdenv x11 mesa; - inherit (xlibs) libXext; }; gnugrep = useFromStdenv "gnugrep" @@ -4288,7 +4287,7 @@ rec { }; nvidiaDrivers = import ../os-specific/linux/nvidia { - inherit stdenv fetchurl kernel xlibs gtkLibs; + inherit stdenv fetchurl kernel xlibs gtkLibs zlib; }; gw6c = import ../os-specific/linux/gw6c { |