gnu: Don't use --strip-all in cases where this is problematic.
This is a followup to 856ae5e
. See <http://hydra.gnu.org/build/180506>
for an example of build failure.
* guix/build/gnu-build-system.scm (strip): Add #:archive-strip-flags
parameter. Use it when (ar-file? path).
* guix/build-system/gnu.scm (gnu-build): Add #:archive-strip-flags
parameter and pass it down.
* gnu/packages/commencement.scm (gcc-boot0)[arguments]: Add
#:strip-flags.
* gnu/packages/base.scm (glibc)[arguments]: Likewise.
This commit is contained in:
parent
2a8d44015f
commit
f05bdc9412
|
@ -421,6 +421,9 @@ included.")
|
||||||
;; XXX: Work around "undefined reference to `__stack_chk_guard'".
|
;; XXX: Work around "undefined reference to `__stack_chk_guard'".
|
||||||
"libc_cv_ssp=no")
|
"libc_cv_ssp=no")
|
||||||
|
|
||||||
|
;; Using '--strip-all' on crt*.o breaks them.
|
||||||
|
#:strip-flags '("--strip-debug")
|
||||||
|
|
||||||
#:tests? #f ; XXX
|
#:tests? #f ; XXX
|
||||||
#:phases (alist-cons-before
|
#:phases (alist-cons-before
|
||||||
'configure 'pre-configure
|
'configure 'pre-configure
|
||||||
|
|
|
@ -170,6 +170,10 @@ identifier SYSTEM."
|
||||||
(ice-9 regex)
|
(ice-9 regex)
|
||||||
(srfi srfi-1)
|
(srfi srfi-1)
|
||||||
(srfi srfi-26))
|
(srfi srfi-26))
|
||||||
|
|
||||||
|
;; Using '--strip-all' leads to a link failure while building libc.
|
||||||
|
#:strip-flags '("--strip-debug")
|
||||||
|
|
||||||
,@(substitute-keyword-arguments (package-arguments gcc-4.8)
|
,@(substitute-keyword-arguments (package-arguments gcc-4.8)
|
||||||
((#:configure-flags flags)
|
((#:configure-flags flags)
|
||||||
`(append (list ,(string-append "--target=" (boot-triplet))
|
`(append (list ,(string-append "--target=" (boot-triplet))
|
||||||
|
|
|
@ -275,6 +275,7 @@ standard packages used as implicit inputs of the GNU build system."
|
||||||
(patch-shebangs? #t)
|
(patch-shebangs? #t)
|
||||||
(strip-binaries? #t)
|
(strip-binaries? #t)
|
||||||
(strip-flags ''("--strip-all"))
|
(strip-flags ''("--strip-all"))
|
||||||
|
(archive-strip-flags ''("--strip-debug"))
|
||||||
(strip-directories ''("lib" "lib64" "libexec"
|
(strip-directories ''("lib" "lib64" "libexec"
|
||||||
"bin" "sbin"))
|
"bin" "sbin"))
|
||||||
(phases '%standard-phases)
|
(phases '%standard-phases)
|
||||||
|
@ -338,6 +339,7 @@ are allowed to refer to."
|
||||||
#:patch-shebangs? ,patch-shebangs?
|
#:patch-shebangs? ,patch-shebangs?
|
||||||
#:strip-binaries? ,strip-binaries?
|
#:strip-binaries? ,strip-binaries?
|
||||||
#:strip-flags ,strip-flags
|
#:strip-flags ,strip-flags
|
||||||
|
#:archive-strip-flags ,archive-strip-flags
|
||||||
#:strip-directories ,strip-directories)))
|
#:strip-directories ,strip-directories)))
|
||||||
|
|
||||||
(define guile-for-build
|
(define guile-for-build
|
||||||
|
|
|
@ -298,6 +298,12 @@ makefiles."
|
||||||
(string-append target "-objcopy")
|
(string-append target "-objcopy")
|
||||||
"objcopy"))
|
"objcopy"))
|
||||||
(strip-flags '("--strip-all"))
|
(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"
|
(strip-directories '("lib" "lib64" "libexec"
|
||||||
"bin" "sbin"))
|
"bin" "sbin"))
|
||||||
#:allow-other-keys)
|
#:allow-other-keys)
|
||||||
|
@ -353,7 +359,10 @@ makefiles."
|
||||||
(or (not debug-output)
|
(or (not debug-output)
|
||||||
(make-debug-file path))
|
(make-debug-file path))
|
||||||
(zero? (apply system* strip-command
|
(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)
|
(or (not debug-output)
|
||||||
(add-debug-link path))))
|
(add-debug-link path))))
|
||||||
(const #t) ; down
|
(const #t) ; down
|
||||||
|
|
Loading…
Reference in New Issue