build-system/gnu: strip with --strip-unneeded

Apart from debug information, one can also strip some symbols. This can
be a significant difference, qtbase:out consists of about 5 MB of those
symbols. As per [1], --strip-debug is included in --strip-unneeded, and
the debug files created also contain a copy of the information removed
by --strip-unneeded.

Linux From Scratch suggests that this option shouldn't be used on static
libraries [2], however other sources [3] indicate otherwise. Building a
toolchain with this patch succeeds, and the result works fine for
'gcc -static hello-world.c'.

[1]: https://stackoverflow.com/a/52555093
[2]: http://www.linuxfromscratch.org/lfs/view/9.1/chapter05/stripping.html
[3]: https://www.technovelty.org/linux/stripping-shared-libraries.html

* guix/build/gnu-build-system.scm (strip): Use --strip-unneeded.
This commit is contained in:
Jakub Kądziołka 2020-07-27 01:38:50 +02:00
parent d7f776888b
commit f32a6055a5
No known key found for this signature in database
GPG key ID: E315A75846131564

View file

@ -425,7 +425,7 @@ (define* (strip #:key target outputs (strip-binaries? #t)
(objcopy-command (if target (objcopy-command (if target
(string-append target "-objcopy") (string-append target "-objcopy")
"objcopy")) "objcopy"))
(strip-flags '("--strip-debug" (strip-flags '("--strip-unneeded"
"--enable-deterministic-archives")) "--enable-deterministic-archives"))
(strip-directories '("lib" "lib64" "libexec" (strip-directories '("lib" "lib64" "libexec"
"bin" "sbin")) "bin" "sbin"))