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.
This commit is contained in:
Pierre Bourdon 2020-04-20 05:48:04 +02:00
parent a2d9f58433
commit e857e72b7a
No known key found for this signature in database
GPG Key ID: 6FB80DCD84DA0F1C

View File

@ -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
''
) + ''