summary refs log tree commit diff
path: root/pkgs/os-specific
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2008-01-07 22:54:30 +0000
committerEelco Dolstra <eelco.dolstra@logicblox.com>2008-01-07 22:54:30 +0000
commitfc345ae1305ec23d7d9c9a2162a85736df7fe4d5 (patch)
treecf3940cc29a742939dfe4b6cb93b559604a1ec24 /pkgs/os-specific
parent5d4fd5f529d11942eae8bfaf16dc6e93b7fdb3fe (diff)
downloadnixpkgs-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-xpkgs/os-specific/linux/nvidia/builder.sh169
-rw-r--r--pkgs/os-specific/linux/nvidia/default.nix42
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/";
 }