[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 01/10] gnu: cross: Use CROSS_*_INCLUDE_PATH for system header
From: |
Mark H Weaver |
Subject: |
Re: [PATCH 01/10] gnu: cross: Use CROSS_*_INCLUDE_PATH for system headers. |
Date: |
Sat, 14 May 2016 01:29:13 -0400 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/25.0.93 (gnu/linux) |
Hi Jan,
Jan Nieuwenhuizen <address@hidden> writes:
> * gnu/packages/patches/gcc-cross-environment-variables.patch: Also use CROSS_
> variants: CROSS_C_INCLUDE_PATH, CROSS_CPLUS_INCLUDE_PATH,
> CROSS_OBJC_INCLUDE_PATH, CROSS_OBJCPLUS_INCLUDE_PATH to be used for system
> libraries, see
> https://lists.gnu.org/archive/html/guix-devel/2016-04/msg00620.html.
> * gnu/packages/cross-base.scm (cross-gcc, cross-gcc-arguments, cross-libc):
> Use CROSS_*_INCLUDE_PATH (WAS: CPATH).
This patch, pushed to master about two weeks ago as commit
efc4eb147512fa7a2c6d74d9b296cfc22b1ef198, broke 79 cross-compiled builds
on hydra:
http://hydra.gnu.org/eval/108933#tabs-now-fail
The problem is that 'cross-libc' creates build-side code that uses 'cut'
from srfi-26, although (srfi srfi-26) is not loaded on the build side:
> @@ -316,9 +330,13 @@ XBINUTILS and the cross tool chain."
> `(alist-cons-before
> 'configure 'set-cross-linux-headers-path
> (lambda* (#:key inputs #:allow-other-keys)
> - (let ((linux (assoc-ref inputs "linux-headers")))
> - (setenv "CROSS_CPATH"
> - (string-append linux "/include"))
> + (let* ((linux (assoc-ref inputs "linux-headers"))
> + (cpath (string-append linux "/include")))
> + (for-each (cut setenv <> cpath)
> + '("CROSS_C_INCLUDE_PATH"
> + "CROSS_CPLUS_INCLUDE_PATH"
> + "CROSS_OBJC_INCLUDE_PATH"
> + "CROSS_OBJCPLUS_INCLUDE_PATH"))
> #t))
> ,phases))))
Leading to "ERROR: Unbound variable: cut".
http://hydra.gnu.org/build/1185432/nixlog/3/tail-reload
In contrast, 'cross-gcc', which also uses 'cut' in its build-side code,
arranges to have (srfi srfi-26) loaded via the '#:modules' argument
(lines 232-240 of cross-base.scm):
(arguments
`(#:implicit-inputs? #f
#:modules ((guix build gnu-build-system)
(guix build utils)
(ice-9 regex)
(srfi srfi-1)
(srfi srfi-26))
,@(cross-gcc-arguments target libc)))
In addition to this problem with 'cut', there was also a syntax error
corrected by Ludovic in commit 0a0884c9916d2d4632c6b86a917ce1fa038cf7a7:
commit 0a0884c9916d2d4632c6b86a917ce1fa038cf7a7
Author: Ludovic Courtès <address@hidden>
Date: Tue May 3 23:43:49 2016 +0200
gnu: cross: Fix typo.
* gnu/packages/cross-base.scm (cross-gcc-arguments): Remove erroneous
'else' introduced in efc4eb147512fa7a2c6d74d9b296cfc22b1ef198.
diff --git a/gnu/packages/cross-base.scm b/gnu/packages/cross-base.scm
index 7c76f60..73ac76a 100644
--- a/gnu/packages/cross-base.scm
+++ b/gnu/packages/cross-base.scm
@@ -199,8 +199,8 @@ may be either a libc package or #f.)"
"OBJCPLUS_INCLUDE_PATH"
"LIBRARY_PATH"))
#t))
- ,phases))
- (else phases)))))))
+ ,phases)
+ phases)))))))
(define (cross-gcc-patches target)
"Return GCC patches needed for TARGET."
Given the non-trivial nature of these changes, I assume that you tested
your patch set before submitting it, which leads me to conclude that you
accidentally sent us a different, untested version of this patch. Can
you try to find the version that you tested?
Anyway, thanks for your efforts on this important work!
Mark