diff options
author | Alyssa Ross <hi@alyssa.is> | 2022-05-31 09:59:33 +0000 |
---|---|---|
committer | Alyssa Ross <hi@alyssa.is> | 2022-05-31 09:59:57 +0000 |
commit | 9ff36293d1e428cd7bf03e8d4b03611b6d361c28 (patch) | |
tree | 1ab51a42b868c55b83f6ccdb80371b9888739dd9 /maintainers/scripts/patchelf-hints.sh | |
parent | 1c4fcd0d4b0541e674ee56ace1053e23e562cc80 (diff) | |
parent | ddc3c396a51918043bb0faa6f676abd9562be62c (diff) | |
download | nixpkgs-9ff36293d1e428cd7bf03e8d4b03611b6d361c28.tar nixpkgs-9ff36293d1e428cd7bf03e8d4b03611b6d361c28.tar.gz nixpkgs-9ff36293d1e428cd7bf03e8d4b03611b6d361c28.tar.bz2 nixpkgs-9ff36293d1e428cd7bf03e8d4b03611b6d361c28.tar.lz nixpkgs-9ff36293d1e428cd7bf03e8d4b03611b6d361c28.tar.xz nixpkgs-9ff36293d1e428cd7bf03e8d4b03611b6d361c28.tar.zst nixpkgs-9ff36293d1e428cd7bf03e8d4b03611b6d361c28.zip |
Last good Nixpkgs for Weston+nouveau? archive
I came this commit hash to terwiz[m] on IRC, who is trying to figure out what the last version of Spectrum that worked on their NUC with Nvidia graphics is.
Diffstat (limited to 'maintainers/scripts/patchelf-hints.sh')
-rwxr-xr-x | maintainers/scripts/patchelf-hints.sh | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/maintainers/scripts/patchelf-hints.sh b/maintainers/scripts/patchelf-hints.sh new file mode 100755 index 00000000000..5fdfc15dc23 --- /dev/null +++ b/maintainers/scripts/patchelf-hints.sh @@ -0,0 +1,84 @@ + +usage() { + echo " +$0 <path to unpacked binary distribution directory> + +This program return the list of libraries and where to find them based on +your currently installed programs. +"; + exit 1 +} + +if test $# -ne 1; then + usage +fi + +binaryDist=$1 + +hasBinaries=false +for bin in $(find $binaryDist -executable -type f) :; do + if test $bin = ":"; then + $hasBinaries || \ + echo "No patchable found in this directory." + break + fi + hasBinaries=true + + echo "" + echo "$bin:" + hasLibraries=false + unset interpreter + unset addRPath + for lib in $(strings $bin | grep '^\(/\|\)lib.*\.so' | sort | uniq) :; do + if test $lib = ":"; then + $hasLibraries || \ + echo " This program is a script or it is statically linked." + break + fi + hasLibraries=true + + echo " $lib:"; + + libPath=$lib + lib=$(basename $lib) + + #versionLessLib=$(echo $lib | sed 's,[.][.0-9]*$,,') + + libs="$( + find /nix/store/*/lib* \( -type f -or -type l \) -name $lib | + grep -v '\(bootstrap-tools\|system-path\|user-environment\|extra-utils\)' + )" + + echo "$libs" | + sed 's,^/nix/store/[a-z0-9]*-\([^/]*\)/.*/\([^/]*\)$, \1 -> \2,' | + sort | + uniq; + + names=$( + echo "$libs" | + sed 's,^/nix/store/[a-z0-9]*-\([^/]*\)-[.0-9]*/.*$,\1,' | + sort | + uniq; + ) + + if test "$names" = "glibc"; then names="stdenv.glibc"; fi + if echo $names | grep -c "gcc" &> /dev/null; then names="stdenv.cc.cc"; fi + + if test $lib != $libPath; then + interpreter="--interpreter \${$names}/lib/$lib" + elif echo $addRPath | grep -c "$names" &> /dev/null; then + : + else + addRPath=${addRPath+$addRPath:}"\${$names}/lib" + fi + done; + $hasLibraries && \ + echo " + Patchelf command: + + patchelf $interpreter \\ + ${addRPath+--set-rpath $addRPath \\ +} \$out/$bin + +" +done; |