From 28dc10a455689c807abc9241ed1094d902a9d9fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Sun, 29 May 2016 23:15:14 +0200 Subject: [PATCH] gnu: glibc: Refer to the target kernel headers when cross-compiling. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This fixes a regression introduced in efc4eb147512fa7a2c6d74d9b296cfc22b1ef198 whereby the build process corresponding to 'guix build glibc --target=mips64el-linux-gnu' would refer to the native headers instead of the target headers, leading to a build failure: ../sysdeps/unix/sysv/linux/statfs64.c: In function ‘__statfs64’: ../sysdeps/unix/sysv/linux/statfs64.c:73:1: error: control reaches end of non-void function [-Werror=return-type] } ^ When we were using CROSS_CPATH instead of CROSS_C_INCLUDE_PATH, the problem was hidden by the fact that CPATH corresponds to '-I' whereas C_INCLUDE_PATH corresponds to '-isystem', and '-isystem' directories are searched after '-I' directories. * gnu/packages/base.scm (glibc)[arguments]: Refer to the kernel headers from '%build-target-inputs' when cross-building. --- gnu/packages/base.scm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm index beb689ea95..b5e229e06c 100644 --- a/gnu/packages/base.scm +++ b/gnu/packages/base.scm @@ -532,7 +532,10 @@ (define-public glibc ,version) (string-append "--with-headers=" - (assoc-ref %build-inputs "linux-headers") + (assoc-ref ,(if (%current-target-system) + '%build-target-inputs + '%build-inputs) + "linux-headers") "/include") ;; This is the default for most architectures as of GNU libc 2.21,