summaryrefslogtreecommitdiff
path: root/guix/build/gnu-build-system.scm
diff options
context:
space:
mode:
Diffstat (limited to 'guix/build/gnu-build-system.scm')
-rw-r--r--guix/build/gnu-build-system.scm11
1 files changed, 10 insertions, 1 deletions
diff --git a/guix/build/gnu-build-system.scm b/guix/build/gnu-build-system.scm
index 11b43c521f..a985b1c715 100644
--- a/guix/build/gnu-build-system.scm
+++ b/guix/build/gnu-build-system.scm
@@ -298,6 +298,12 @@ makefiles."
(string-append target "-objcopy")
"objcopy"))
(strip-flags '("--strip-all"))
+
+ ;; Using '--strip-all' on .a file would remove the archive
+ ;; index, leading to "Archive has no index" errors when
+ ;; linking against them.
+ (archive-strip-flags '("--strip-debug"))
+
(strip-directories '("lib" "lib64" "libexec"
"bin" "sbin"))
#:allow-other-keys)
@@ -353,7 +359,10 @@ makefiles."
(or (not debug-output)
(make-debug-file path))
(zero? (apply system* strip-command
- (append strip-flags (list path))))
+ (append (if (ar-file? path)
+ archive-strip-flags
+ strip-flags)
+ (list path))))
(or (not debug-output)
(add-debug-link path))))
(const #t) ; down