[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Cross-compilation from armhf to mips64el
From: |
Ludovic Courtès |
Subject: |
Re: Cross-compilation from armhf to mips64el |
Date: |
Tue, 06 Oct 2015 21:45:35 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux) |
Andreas Enge <address@hidden> skribis:
> currently, we get lots of failed jobs for armhf coming from cross-compilation,
> such as
>
> http://hydra.gnu.org/job/gnu/master/mips64el-linux-gnu.grep-2.21.armhf-linux
The problem in question is this:
--8<---------------cut here---------------start------------->8---
gcc -D_RPC_THREAD_SAFE_ -D_GNU_SOURCE -DIS_IN_build -include
/tmp/nix-build-glibc-cross-mips64el-linux-gnu-2.22.drv-0/build/config.h
rpc_main.c \
-o
/tmp/nix-build-glibc-cross-mips64el-linux-gnu-2.22.drv-0/build/sunrpc/cross-rpc_main.o
-MMD -MP -MF
/tmp/nix-build-glibc-cross-mips64el-linux-gnu-2.22.drv-0/build/sunrpc/cross-rpc_main.o.dt
-MT
/tmp/nix-build-glibc-cross-mips64el-linux-gnu-2.22.drv-0/build/sunrpc/cross-rpc_main.o
-c
In file included from
/gnu/store/j3rpssxbamdarpqxsljxi9r28hl3zhzm-glibc-2.22/include/signal.h:326:0,
from
/gnu/store/j3rpssxbamdarpqxsljxi9r28hl3zhzm-glibc-2.22/include/sys/param.h:28,
from rpc_main.c:45:
/gnu/store/j3rpssxbamdarpqxsljxi9r28hl3zhzm-glibc-2.22/include/sys/ucontext.h:107:16:
error: field ?uc_mcontext? has incomplete type
mcontext_t uc_mcontext;
^
Makefile:165: recipe for target
'/tmp/nix-build-glibc-cross-mips64el-linux-gnu-2.22.drv-0/build/sunrpc/cross-rpc_main.o'
failed
--8<---------------cut here---------------end--------------->8---
Before disabling cross-builds from armhf to mips64el like you suggest,
we should check whether the problem is on our side or note.
Here this is a cross-build of libc where we’re building a cross-rpcgen.
The cross-rpcgen is natively compiled, so GCC must have the native (arm)
kernel and libc headers in CPATH, not the mips headers.
I checked
/gnu/store/j3rpssxbamdarpqxsljxi9r28hl3zhzm-glibc-2.22/include/sys/ucontext.h
and I confirm that it’s an ARM header.
Long story short: everything is alright. :-)
> I would think that the problem comes from build-aux/hydra/guix.scm, in this
> function:
> (define (from-32-to-64? target)
> ;; Return true if SYSTEM is 32-bit and TARGET is 64-bit. This hack
> ;; prevents known-to-fail cross-builds from i686-linux or armhf-linux to
> ;; mips64el-linux-gnuabi64.
> (and (or (string-prefix? "i686-" system)
> (string-prefix? "armhf-" system))
> (string-suffix? "64" target)))
> since target seems to be mips64el-linux-gnu and not mips64el-linux-gnuabi64.
> Then I would replace "string-suffix?" by "string-contains".
Or should we define a black list of pairs?
Ludo’.