diff options
Diffstat (limited to 'pkgs/os-specific/linux/nvidia-x11/builder.sh')
-rwxr-xr-x | pkgs/os-specific/linux/nvidia-x11/builder.sh | 81 |
1 files changed, 44 insertions, 37 deletions
diff --git a/pkgs/os-specific/linux/nvidia-x11/builder.sh b/pkgs/os-specific/linux/nvidia-x11/builder.sh index 4291116f4ef..5edadeda81b 100755 --- a/pkgs/os-specific/linux/nvidia-x11/builder.sh +++ b/pkgs/os-specific/linux/nvidia-x11/builder.sh @@ -29,14 +29,15 @@ buildPhase() { installPhase() { + # Install libGL and friends. + mkdir -p "$out/lib/vendors" + cp -p nvidia.icd $out/lib/vendors/ - 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 - cp kernel/uvm/nvidia-uvm.ko $out/lib/modules/$kernelVersion/misc + cp -prd *.so.* tls "$out/lib/" + rm "$out"/lib/lib{glx,nvidia-wfb}.so.* # handled separately - # Install the X driver. + if test -z "$libsOnly"; then + # Install the X drivers. mkdir -p $out/lib/xorg/modules cp -p libnvidia-wfb.* $out/lib/xorg/modules/ mkdir -p $out/lib/xorg/modules/drivers @@ -44,18 +45,31 @@ installPhase() { mkdir -p $out/lib/xorg/modules/extensions cp -p libglx.so.* $out/lib/xorg/modules/extensions - #patchelf --set-rpath $out/lib $out/lib/xorg/modules/extensions/libglx.so.*.* + # Install the kernel module. + mkdir -p $out/lib/modules/$kernelVersion/misc + cp kernel/nvidia.ko $out/lib/modules/$kernelVersion/misc + cp kernel/uvm/nvidia-uvm.ko $out/lib/modules/$kernelVersion/misc + fi - # Install the programs. - mkdir -p $out/bin + # All libs except GUI-only are in $out now, so fixup them. + for libname in `find "$out/lib/" -name '*.so.*'` + do + # I'm lazy to differentiate needed libs per-library, as the closure is the same. + # Unfortunately --shrink-rpath would strip too much. + patchelf --set-rpath "$out/lib:$allLibPath" "$libname" - for i in nvidia-settings nvidia-smi; 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 + libname_short=`echo -n "$libname" | sed 's/so\..*/so/'` + ln -srnf "$libname" "$libname_short" + ln -srnf "$libname" "$libname_short.1" + done + + #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.*.* + #patchelf --set-rpath $openclPath $out/lib/libnvidia-opencl.so.*.* - # Header files etc. + if test -z "$libsOnly"; then + # Install headers and /share files etc. mkdir -p $out/include/nvidia cp -p *.h $out/include/nvidia @@ -74,33 +88,26 @@ installPhase() { --replace '__UTILS_PATH__' $out/bin \ --replace '__PIXMAP_PATH__' $out/share/pixmaps - # Test a bit. - $out/bin/nvidia-settings --version - fi - - # Install libGL and friends. - mkdir -p "$out/lib/vendors" - cp -p nvidia.icd $out/lib/vendors/ + # Install the programs. + mkdir -p $out/bin - cp -prd *.so.* tls "$out/lib/" - rm "$out"/lib/lib{glx,nvidia-wfb}.so.* # handled separately + for i in nvidia-settings nvidia-smi; do + cp $i $out/bin/$i + patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ + --set-rpath $out/lib:$programPath:$glPath $out/bin/$i + done - for libname in `find "$out/lib/" -name '*.so.*'` - do - # I'm lazy to differentiate needed libs per-library, as the closure is the same. - # Unfortunately --shrink-rpath would strip too much. - patchelf --set-rpath "$out/lib:$allLibPath" "$libname" + patchelf --set-rpath $glPath:$gtkPath $out/lib/libnvidia-gtk2.so.*.* - libname_short=`echo -n "$libname" | sed 's/so\..*/so/'` - ln -srnf "$libname" "$libname_short" - ln -srnf "$libname" "$libname_short.1" - done + # Test a bit. + $out/bin/nvidia-settings --version + else + rm $out/lib/libnvidia-gtk2.* + fi - #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.*.* - #patchelf --set-rpath $openclPath $out/lib/libnvidia-opencl.so.*.* + # For simplicity and dependency reduction, don't support the gtk3 interface. + rm $out/lib/libnvidia-gtk3.* } |