diff options
Diffstat (limited to 'pkgs/development/compilers/dotnet/patch-nupkgs.nix')
-rw-r--r-- | pkgs/development/compilers/dotnet/patch-nupkgs.nix | 74 |
1 files changed, 0 insertions, 74 deletions
diff --git a/pkgs/development/compilers/dotnet/patch-nupkgs.nix b/pkgs/development/compilers/dotnet/patch-nupkgs.nix deleted file mode 100644 index 572211b1b378..000000000000 --- a/pkgs/development/compilers/dotnet/patch-nupkgs.nix +++ /dev/null @@ -1,74 +0,0 @@ -{ stdenv -, lib -, dotnetCorePackages -, zlib -, curl -, icu -, libunwind -, libuuid -, openssl -, lttng-ust_2_12 -, writeShellScriptBin -}: - -let - buildRid = dotnetCorePackages.systemToDotnetRid stdenv.buildPlatform.system; - - binaryRPath = lib.makeLibraryPath ([ - stdenv.cc.cc - zlib - curl - icu - libunwind - libuuid - openssl - ] ++ lib.optional stdenv.isLinux lttng-ust_2_12); - -in writeShellScriptBin "patch-nupkgs" '' - set -euo pipefail - shopt -s nullglob - isELF() { - local fn="$1" - local fd - local magic - exec {fd}< "$fn" - read -r -n 4 -u "$fd" magic - exec {fd}<&- - if [ "$magic" = $'\177ELF' ]; then return 0; else return 1; fi - } - cd "$1" - for x in *.${buildRid}/* *.${buildRid}.*/*; do - # .nupkg.metadata is written last, so we know the packages is complete - [[ -d "$x" ]] && [[ -f "$x"/.nupkg.metadata ]] \ - && [[ ! -f "$x"/.nix-patched ]] || continue - echo "Patching package $x" - pushd "$x" - for p in $(find -type f); do - if [[ "$p" != *.nix-patched ]] \ - && isELF "$p" \ - && patchelf --print-interpreter "$p" &>/dev/null; then - tmp="$p".$$.nix-patched - # if this fails to copy then another process must have patched it - cp --reflink=auto "$p" "$tmp" || continue - echo "Patchelfing $p as $tmp" - patchelf \ - --set-interpreter "${stdenv.cc.bintools.dynamicLinker}" \ - "$tmp" ||: - # This makes sure that if the binary requires some specific runtime dependencies, it can find it. - # This fixes dotnet-built binaries like crossgen2 - patchelf \ - --add-needed libicui18n.so \ - --add-needed libicuuc.so \ - --add-needed libz.so \ - --add-needed libssl.so \ - "$tmp" - patchelf \ - --add-rpath "${binaryRPath}" \ - "$tmp" ||: - mv "$tmp" "$p" - fi - done - touch .nix-patched - popd - done -'' |