From 3009cc116e07c5e397ad00e3fd16fac9f193e157 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Tue, 24 Feb 2015 13:08:08 +0100 Subject: [PATCH] nvidia_x11: fix missing xorg lib symlinks; refactor The builder structure should be now easier to understand and easier to avoid such problems in future. Fixes #6546. --- pkgs/os-specific/linux/nvidia-x11/builder.sh | 56 ++++++++++---------- 1 file changed, 29 insertions(+), 27 deletions(-) diff --git a/pkgs/os-specific/linux/nvidia-x11/builder.sh b/pkgs/os-specific/linux/nvidia-x11/builder.sh index 41523b93167..2b651841c48 100755 --- a/pkgs/os-specific/linux/nvidia-x11/builder.sh +++ b/pkgs/os-specific/linux/nvidia-x11/builder.sh @@ -36,6 +36,22 @@ installPhase() { cp -prd *.so.* tls "$out/lib/" rm "$out"/lib/lib{glx,nvidia-wfb}.so.* # handled separately + 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 + 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 + + # 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 + + # 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. @@ -54,33 +70,7 @@ installPhase() { 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 - - # 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 - - #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-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 - - patchelf --set-rpath $glPath:$gtk3Path $out/lib/libnvidia-gtk3.so.*.* - - # Header files etc. + # Install headers and /share files etc. mkdir -p $out/include/nvidia cp -p *.h $out/include/nvidia @@ -99,6 +89,18 @@ installPhase() { --replace '__UTILS_PATH__' $out/bin \ --replace '__PIXMAP_PATH__' $out/share/pixmaps + + # Install the programs. + mkdir -p $out/bin + + 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 + + patchelf --set-rpath $glPath:$gtk3Path $out/lib/libnvidia-gtk3.so.*.* + # Test a bit. $out/bin/nvidia-settings --version else