guix-devel
[Top][All Lists]
Advanced

[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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]