forked from mirrors/nixpkgs
nvidia_x11: fix nvidia-settings after the major update
The GUI would no longer find libs it needed. Now it's gtk3 by default, so we don't support gtk2 version for simplicity. ldd finds no missing libs after this commit.
This commit is contained in:
parent
18ec13d9d2
commit
77986803a6
|
@ -29,6 +29,29 @@ buildPhase() {
|
||||||
|
|
||||||
|
|
||||||
installPhase() {
|
installPhase() {
|
||||||
|
# Install libGL and friends.
|
||||||
|
mkdir -p "$out/lib/vendors"
|
||||||
|
cp -p nvidia.icd $out/lib/vendors/
|
||||||
|
|
||||||
|
cp -prd *.so.* tls "$out/lib/"
|
||||||
|
rm "$out"/lib/lib{glx,nvidia-wfb}.so.* # handled separately
|
||||||
|
|
||||||
|
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"
|
||||||
|
|
||||||
|
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.*.*
|
||||||
|
|
||||||
|
|
||||||
if test -z "$libsOnly"; then
|
if test -z "$libsOnly"; then
|
||||||
# Install the kernel module.
|
# Install the kernel module.
|
||||||
|
@ -52,9 +75,11 @@ installPhase() {
|
||||||
for i in nvidia-settings nvidia-smi; do
|
for i in nvidia-settings nvidia-smi; do
|
||||||
cp $i $out/bin/$i
|
cp $i $out/bin/$i
|
||||||
patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
|
patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
|
||||||
--set-rpath $out/lib:$programPath:$glPath $out/bin/$i
|
--set-rpath $out/lib:$glPath $out/bin/$i
|
||||||
done
|
done
|
||||||
|
|
||||||
|
patchelf --set-rpath $glPath:$gtk3Path $out/lib/libnvidia-gtk3.so.*.*
|
||||||
|
|
||||||
# Header files etc.
|
# Header files etc.
|
||||||
mkdir -p $out/include/nvidia
|
mkdir -p $out/include/nvidia
|
||||||
cp -p *.h $out/include/nvidia
|
cp -p *.h $out/include/nvidia
|
||||||
|
@ -76,31 +101,11 @@ installPhase() {
|
||||||
|
|
||||||
# Test a bit.
|
# Test a bit.
|
||||||
$out/bin/nvidia-settings --version
|
$out/bin/nvidia-settings --version
|
||||||
|
else
|
||||||
|
rm $out/lib/libnvidia-gtk3.*
|
||||||
fi
|
fi
|
||||||
|
# for simplicity and dependency reduction, don't support the gtk2 interface
|
||||||
|
rm $out/lib/libnvidia-gtk2.*
|
||||||
# Install libGL and friends.
|
|
||||||
mkdir -p "$out/lib/vendors"
|
|
||||||
cp -p nvidia.icd $out/lib/vendors/
|
|
||||||
|
|
||||||
cp -prd *.so.* tls "$out/lib/"
|
|
||||||
rm "$out"/lib/lib{glx,nvidia-wfb}.so.* # handled separately
|
|
||||||
|
|
||||||
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"
|
|
||||||
|
|
||||||
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.*.*
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{ stdenv, fetchurl, kernel ? null, xlibs, zlib, perl
|
{ stdenv, fetchurl, kernel ? null, xlibs, zlib, perl
|
||||||
, gtk, atk, pango, glib, gdk_pixbuf
|
, gtk3, atk, pango, glib, gdk_pixbuf, cairo
|
||||||
, # Whether to build the libraries only (i.e. not the kernel module or
|
, # Whether to build the libraries only (i.e. not the kernel module or
|
||||||
# nvidia-settings). Used to support 32-bit binaries on 64-bit
|
# nvidia-settings). Used to support 32-bit binaries on 64-bit
|
||||||
# Linux.
|
# Linux.
|
||||||
|
@ -46,8 +46,9 @@ stdenv.mkDerivation {
|
||||||
openclPath = makeLibraryPath [zlib];
|
openclPath = makeLibraryPath [zlib];
|
||||||
allLibPath = makeLibraryPath [xlibs.libXext xlibs.libX11 xlibs.libXrandr zlib stdenv.cc.cc];
|
allLibPath = makeLibraryPath [xlibs.libXext xlibs.libX11 xlibs.libXrandr zlib stdenv.cc.cc];
|
||||||
|
|
||||||
programPath = optionalString (!libsOnly) (makeLibraryPath
|
# we don't support the gtk2 version
|
||||||
[ gtk atk pango glib gdk_pixbuf xlibs.libXv ] );
|
gtk3Path = optionalString (!libsOnly) (makeLibraryPath
|
||||||
|
[ gtk3 atk pango glib gdk_pixbuf cairo ] );
|
||||||
|
|
||||||
buildInputs = [ perl ];
|
buildInputs = [ perl ];
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue