summaryrefslogtreecommitdiff
path: root/guix/build
diff options
context:
space:
mode:
authorMaxim Cournoyer <maxim.cournoyer@gmail.com>2022-12-06 20:44:54 -0500
committerMaxim Cournoyer <maxim.cournoyer@gmail.com>2022-12-07 09:47:08 -0500
commit6454208222d6e7760daa964b590f35ea75ffe0e5 (patch)
tree78f7bdbbf72da87cfa89e0395e062d821d240fb1 /guix/build
parentf27d4c9a78b64a5290cca905a5ad56d7b82ddbf4 (diff)
build: gnu-build-system: Remove source from native inputs.
Fixes <https://issues.guix.gnu.org/44924>, in a cross-compilation context. Having the source in inputs when computing search paths can break builds. One example is a git checkout of the Linux source tree, where the source (a directory) 'include' subdirectory gets picked up in C_INCLUDE_PATH and causes conflicts with the includes provided by glibc. * guix/build/gnu-build-system.scm (set-paths): Remove any "source" native input. Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
Diffstat (limited to 'guix/build')
-rw-r--r--guix/build/gnu-build-system.scm6
1 files changed, 4 insertions, 2 deletions
diff --git a/guix/build/gnu-build-system.scm b/guix/build/gnu-build-system.scm
index b5b4468a45..ef5873d793 100644
--- a/guix/build/gnu-build-system.scm
+++ b/guix/build/gnu-build-system.scm
@@ -83,10 +83,12 @@ there are none."
dir)))
(define native-input-directories
- (match native-inputs
+ ;; When cross-compiling, the source appears in native-inputs rather than
+ ;; inputs.
+ (match (and=> native-inputs (cut alist-delete "source" <>))
(((_ . dir) ...)
dir)
- (#f ; not cross compiling
+ (#f ;not cross-compiling
'())))
;; Tell 'ld-wrapper' to disallow non-store libraries.