diff options
Diffstat (limited to 'pkgs/os-specific/linux/nvidia-x11/builder-legacy173.sh')
-rwxr-xr-x | pkgs/os-specific/linux/nvidia-x11/builder-legacy173.sh | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/pkgs/os-specific/linux/nvidia-x11/builder-legacy173.sh b/pkgs/os-specific/linux/nvidia-x11/builder-legacy173.sh new file mode 100755 index 00000000000..5d47df9a87a --- /dev/null +++ b/pkgs/os-specific/linux/nvidia-x11/builder-legacy173.sh @@ -0,0 +1,99 @@ +source $stdenv/setup + +dontPatchELF=1 # must keep libXv, $out in RPATH + + +unpackFile() { + sh $src -x +} + + +buildPhase() { + if test -z "$libsOnly"; then + echo "Building linux driver against kernel: " $kernel; + + cd usr/src/nv/ + + shopt -s nullglob + + for a in $kpatches; do + patch -p1 < $a + done + + # 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. + kernelVersion=$(cd $kernel/lib/modules && ls) + sysSource=$(echo $kernel/lib/modules/$kernelVersion/source) + sysOut=$(echo $kernel/lib/modules/$kernelVersion/build) + unset src # used by the nv makefile + make SYSSRC=$sysSource SYSOUT=$sysOut module + cd ../../.. + fi +} + + +installPhase() { + + # Install libGL and friends. + mkdir -p $out/lib + 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 + + patchelf --set-rpath $out/lib:$glPath $out/lib/libGL.so.*.* + patchelf --set-rpath $out/lib:$glPath $out/lib/libXvMCNVIDIA.so.*.* + set +e + # Legacy nvidia doesn't have cuda + patchelf --set-rpath $cudaPath $out/lib/libcuda.so.*.* + set -e + + if test -z "$libsOnly"; then + + # Install the kernel module. + mkdir -p $out/lib/modules/$kernelVersion/misc + cp usr/src/nv/nvidia.ko $out/lib/modules/$kernelVersion/misc + + # Install the X driver. + mkdir -p $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 + + 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 usr/bin/$i $out/bin/$i + patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ + --set-rpath $out/lib:$programPath:$glPath $out/bin/$i + done + + # Header files etc. + cp -prd usr/include usr/share $out + + # 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 |