M distro/base.scm => distro/base.scm +9 -0
@@ 605,6 605,15 @@ BFD (Binary File Descriptor) library, `gprof', `nm', `strip', etc.")
"-Wl," libc "/lib/ld-linux-x86-64.so.2")
,(string-append "BOOT_CFLAGS=-O2 "
,(if stripped? "-g0" "-g"))))
+
+ ;; Exclude libc from $LIBRARY_PATH since the compiler being used
+ ;; should know whether its libc is, and to avoid linking build tools
+ ;; like `genhooks' against the wrong libc (for instance, when
+ ;; building a gcc-for-glibc-2.16 with a gcc-for-glibc-2.13,
+ ;; `genhooks' could end up being linked with glibc-2.16 but using
+ ;; crt*.o from glibc-2.13.)
+ #:path-exclusions '(("LIBRARY_PATH" "libc"))
+
#:tests? #f
#:phases
(alist-cons-before
M guix/build-system/gnu.scm => guix/build-system/gnu.scm +2 -0
@@ 47,6 47,7 @@
(make-flags ''())
(patches ''()) (patch-flags ''("--batch" "-p1"))
(out-of-source? #f)
+ (path-exclusions ''())
(tests? #t)
(parallel-build? #t) (parallel-tests? #t)
(patch-shebangs? #t)
@@ 74,6 75,7 @@ input derivation INPUTS, using the usual procedure of the GNU Build System."
#:configure-flags ,configure-flags
#:make-flags ,make-flags
#:out-of-source? ,out-of-source?
+ #:path-exclusions ,path-exclusions
#:tests? ,tests?
#:parallel-build? ,parallel-build?
#:parallel-tests? ,parallel-tests?
M guix/build/gnu-build-system.scm => guix/build/gnu-build-system.scm +25 -5
@@ 47,17 47,37 @@
#f
dir))
-(define* (set-paths #:key inputs #:allow-other-keys)
+(define* (set-paths #:key inputs (path-exclusions '())
+ #:allow-other-keys)
(let ((inputs (map cdr inputs)))
- (set-path-environment-variable "PATH" '("bin") inputs)
- (set-path-environment-variable "CPATH" '("include") inputs)
- (set-path-environment-variable "LIBRARY_PATH" '("lib" "lib64") inputs)
+ (set-path-environment-variable "PATH" '("bin")
+ (remove (cute member <>
+ (or (assoc-ref path-exclusions
+ "PATH")
+ '()))
+ inputs))
+ (set-path-environment-variable "CPATH" '("include")
+ (remove (cute member <>
+ (or (assoc-ref path-exclusions
+ "CPATH")
+ '()))
+ inputs))
+ (set-path-environment-variable "LIBRARY_PATH" '("lib" "lib64")
+ (remove (cute member <>
+ (or (assoc-ref path-exclusions
+ "LIBRARY_PATH")
+ '()))
+ inputs))
;; FIXME: Eventually move this to the `search-paths' field of the
;; `pkg-config' package.
(set-path-environment-variable "PKG_CONFIG_PATH"
'("lib/pkgconfig" "lib64/pkgconfig")
- inputs)
+ (remove (cute member <>
+ (or (assoc-ref path-exclusions
+ "PKG_CONFIG_PATH")
+ '()))
+ inputs))
;; Dump the environment variables as a shell script, for handy debugging.
(system "export > environment-variables")))