summary refs log tree commit diff
path: root/pkgs/os-specific/linux/nvidia-x11/builder-legacy304.sh
diff options
context:
space:
mode:
authorEvgeny Egorochkin <phreedom.stdin@gmail.com>2013-01-13 16:17:43 +0200
committerEvgeny Egorochkin <phreedom.stdin@gmail.com>2013-01-13 16:18:27 +0200
commit4dc4d1012352a97b440ce68681c9cb9643010a60 (patch)
treeb61da83d474c13ac26ffa73ff06e84841258e64b /pkgs/os-specific/linux/nvidia-x11/builder-legacy304.sh
parent2738f6d5cc692addee26d374b8ef61e293855a7a (diff)
downloadnixlib-4dc4d1012352a97b440ce68681c9cb9643010a60.tar
nixlib-4dc4d1012352a97b440ce68681c9cb9643010a60.tar.gz
nixlib-4dc4d1012352a97b440ce68681c9cb9643010a60.tar.bz2
nixlib-4dc4d1012352a97b440ce68681c9cb9643010a60.tar.lz
nixlib-4dc4d1012352a97b440ce68681c9cb9643010a60.tar.xz
nixlib-4dc4d1012352a97b440ce68681c9cb9643010a60.tar.zst
nixlib-4dc4d1012352a97b440ce68681c9cb9643010a60.zip
nvidia-legacy304: fix build
Diffstat (limited to 'pkgs/os-specific/linux/nvidia-x11/builder-legacy304.sh')
-rwxr-xr-xpkgs/os-specific/linux/nvidia-x11/builder-legacy304.sh101
1 files changed, 101 insertions, 0 deletions
diff --git a/pkgs/os-specific/linux/nvidia-x11/builder-legacy304.sh b/pkgs/os-specific/linux/nvidia-x11/builder-legacy304.sh
new file mode 100755
index 000000000000..bb8beab29c58
--- /dev/null
+++ b/pkgs/os-specific/linux/nvidia-x11/builder-legacy304.sh
@@ -0,0 +1,101 @@
+source $stdenv/setup
+
+dontPatchELF=1 # must keep libXv, $out in RPATH
+
+
+unpackFile() {
+    sh $src -x
+}
+
+
+buildPhase() {
+    if test -z "$libsOnly"; then
+        # Create the module.
+        echo "Building linux driver against kernel: $kernel";
+        cd kernel
+        kernelVersion=$(cd $kernel/lib/modules && ls)
+        sysSrc=$(echo $kernel/lib/modules/$kernelVersion/build/)
+        unset src # used by the nv makefile
+        # Hack necessary to compile on 2.6.28.
+        export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -I$sysSrc/include/asm/mach-default -I$sysSrc/include/generated"
+        make SYSSRC=$sysSrc module
+        cd ..
+    fi
+}
+
+
+installPhase() {
+
+    # Install libGL and friends.
+    mkdir -p $out/lib/vendors
+
+    for f in \
+      libcuda libGL libnvcuvid libnvidia-cfg libnvidia-compiler \
+      libnvidia-glcore libnvidia-ml libnvidia-opencl \
+      libnvidia-tls libOpenCL libnvidia-tls libvdpau_nvidia
+    do
+      cp -prd $f.* $out/lib/
+      ln -snf $f.so.$versionNumber $out/lib/$f.so
+      ln -snf $f.so.$versionNumber $out/lib/$f.so.1
+    done
+
+    cp -p nvidia.icd $out/lib/vendors/
+    cp -prd tls $out/lib/
+    cp -prd libOpenCL.so.1.0.0 $out/lib/
+    ln -snf libOpenCL.so.1.0.0 $out/lib/libOpenCL.so
+    ln -snf libOpenCL.so.1.0.0 $out/lib/libOpenCL.so.1
+
+    patchelf --set-rpath $out/lib:$glPath $out/lib/libGL.so.*.*
+    patchelf --set-rpath $out/lib:$glPath $out/lib/libvdpau_nvidia.so.*.*
+    patchelf --set-rpath $cudaPath $out/lib/libcuda.so.*.*
+
+    if test -z "$libsOnly"; then
+
+        # Install the kernel module.
+        mkdir -p $out/lib/modules/$kernelVersion/misc
+        cp kernel/nvidia.ko $out/lib/modules/$kernelVersion/misc
+
+        # Install the X driver.
+        mkdir -p $out/lib/xorg/modules
+        cp -p libnvidia-wfb.* $out/lib/xorg/modules/
+        mkdir -p $out/lib/xorg/modules/drivers
+        cp -p nvidia_drv.so $out/lib/xorg/modules/drivers
+        mkdir -p $out/lib/xorg/modules/extensions
+        cp -p libglx.so.* $out/lib/xorg/modules/extensions
+
+        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
+
+        patchelf --set-rpath $out/lib $out/lib/xorg/modules/extensions/libglx.so.*.*
+
+        # Install the programs.
+        mkdir -p $out/bin
+
+        for i in nvidia-settings nvidia-xconfig; do
+	    cp $i $out/bin/$i
+	    patchelf --interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" \
+	        --set-rpath $out/lib:$programPath:$glPath $out/bin/$i
+        done
+
+        # Header files etc.
+        mkdir -p $out/include/nvidia
+        cp -p *.h $out/include/nvidia
+
+        mkdir -p $out/share/man/man1
+        cp -p *.1.gz $out/share/man/man1
+
+        mkdir -p $out/share/applications
+        cp -p *.desktop $out/share/applications
+
+        mkdir -p $out/share/pixmaps
+        cp -p nvidia-settings.png $out/share/pixmaps
+
+        # Patch the `nvidia-settings.desktop' file.
+        substituteInPlace $out/share/applications/nvidia-settings.desktop \
+            --replace '__UTILS_PATH__' $out/bin \
+            --replace '__PIXMAP_PATH__' $out/share/pixmaps
+    fi
+}
+
+
+genericBuild