diff options
-rw-r--r-- | pkgs/build-support/setup-hooks/auto-patchelf.sh | 27 | ||||
-rw-r--r-- | pkgs/servers/search/elasticsearch/default.nix | 3 | ||||
-rw-r--r-- | pkgs/top-level/all-packages.nix | 3 |
3 files changed, 12 insertions, 21 deletions
diff --git a/pkgs/build-support/setup-hooks/auto-patchelf.sh b/pkgs/build-support/setup-hooks/auto-patchelf.sh index 32fdb1000e27..7c165627f72e 100644 --- a/pkgs/build-support/setup-hooks/auto-patchelf.sh +++ b/pkgs/build-support/setup-hooks/auto-patchelf.sh @@ -7,21 +7,7 @@ gatherLibraries() { addEnvHooks "$targetOffset" gatherLibraries isExecutable() { - [ "$(file -b -N --mime-type "$1")" = application/x-executable ] -} - -findElfs() { - find "$1" -type f -exec "$SHELL" -c ' - while [ -n "$1" ]; do - mimeType="$(file -b -N --mime-type "$1")" - if [ "$mimeType" = application/x-executable \ - -o "$mimeType" = application/x-pie-executable \ - -o "$mimeType" = application/x-sharedlib ]; then - echo "$1" - fi - shift - done - ' -- {} + + readelf -h "$1" 2> /dev/null | grep -q '^ *Type: *EXEC\>' } # We cache dependencies so that we don't need to search through all of them on @@ -167,9 +153,14 @@ autoPatchelf() { # findDependency outside of this, the dependency cache needs to be rebuilt # from scratch, so keep this in mind if you want to run findDependency # outside of this function. - findElfs "$prefix" | while read -r elffile; do - autoPatchelfFile "$elffile" - done + while IFS= read -r -d $'\0' file; do + isELF "$file" || continue + if isExecutable "$file"; then + # Skip if the executable is statically linked. + readelf -l "$file" | grep -q "^ *INTERP\\>" || continue + fi + autoPatchelfFile "$file" + done < <(find "$prefix" -type f -print0) } # XXX: This should ultimately use fixupOutputHooks but we currently don't have diff --git a/pkgs/servers/search/elasticsearch/default.nix b/pkgs/servers/search/elasticsearch/default.nix index 84872649c492..5a43a30257ed 100644 --- a/pkgs/servers/search/elasticsearch/default.nix +++ b/pkgs/servers/search/elasticsearch/default.nix @@ -29,7 +29,8 @@ stdenv.mkDerivation (rec { sed -i "s|ES_CLASSPATH=\"\$ES_HOME/lib/\*\"|ES_CLASSPATH=\"$out/lib/*\"|" ./bin/elasticsearch-env ''; - buildInputs = [ makeWrapper jre_headless utillinux ]; + buildInputs = [ makeWrapper jre_headless utillinux ] + ++ optional enableUnfree zlib; installPhase = '' mkdir -p $out diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index f3386b18ca87..ce86b1d3d7fe 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -81,8 +81,7 @@ with pkgs; { deps = [ autoconf264 automake111x gettext libtool ]; } ../build-support/setup-hooks/autoreconf.sh; - autoPatchelfHook = makeSetupHook - { name = "auto-patchelf-hook"; deps = [ file ]; } + autoPatchelfHook = makeSetupHook { name = "auto-patchelf-hook"; } ../build-support/setup-hooks/auto-patchelf.sh; ensureNewerSourcesHook = { year }: makeSetupHook {} |