From e857e72b7adc067294b6215df87ad319c15861c7 Mon Sep 17 00:00:00 2001 From: Pierre Bourdon Date: Mon, 20 Apr 2020 05:48:04 +0200 Subject: [PATCH] alacritty: manually strip before running patchelf patchelf seems to generate an ELF that "strip" cannot process: strip: /tmp/stNGAZvd: not enough room for program headers, try linking with -N strip:/tmp/stNGAZvd[.interp]: bad value (This unfortunately does not cause any errors or even error output in the build log, since the default strip hook redirects them to /dev/null and ignores failures.) The lack of stripping ends up leaking paths to the compiler in the debug symbols. This more than doubles the transitive closure size of alacritty. Impact on closure size: 314.5M -> 131.8M. --- pkgs/applications/misc/alacritty/default.nix | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pkgs/applications/misc/alacritty/default.nix b/pkgs/applications/misc/alacritty/default.nix index b6248b8f6f13..c5d7b19618fd 100644 --- a/pkgs/applications/misc/alacritty/default.nix +++ b/pkgs/applications/misc/alacritty/default.nix @@ -104,6 +104,12 @@ rustPlatform.buildRustPackage rec { '' else '' install -D extra/linux/Alacritty.desktop -t $out/share/applications/ install -D extra/logo/alacritty-term.svg $out/share/icons/hicolor/scalable/apps/Alacritty.svg + + # patchelf generates an ELF that binutils' "strip" doesn't like: + # strip: not enough room for program headers, try linking with -N + # As a workaround, strip manually before running patchelf. + strip -S $out/bin/alacritty + patchelf --set-rpath "${lib.makeLibraryPath rpathLibs}" $out/bin/alacritty '' ) + ''