Discussion:
Cross-compiling bootstrap tarballs fails on core-updates
Marius Bakke
2018-04-16 17:15:16 UTC
Permalink
Hello!

Building 'bootstrap-tarballs' for other architectures fails on
core-updates. Here is the comparison to the previous core-updates
evaluation in December:

https://hydra.gnu.org/eval/109945?compare=109875#tabs-now-fail

There seems to be a couple of different problems here.

'patch' fails to build due to a conflicting declaration of
'__mktime_internal':

--8<---------------cut here---------------start------------->8---
CCLD patch
/gnu/store/9v09kidvqykyk2kh26q297di3lkjc8vy-glibc-cross-arm-linux-gnueabihf-2.27-static/lib/libc.a(mktime.o): In function `__mktime_internal':
/tmp/guix-build-glibc-cross-arm-linux-gnueabihf-2.27.drv-0/glibc-2.27/time/mktime.c:353: multiple definition of `__mktime_internal'
../lib/libpatch.a(mktime.o):/tmp/guix-build-patch-2.7.6.drv-0/patch-2.7.6/lib/mktime.c:317: first defined here
collect2: error: ld returned 1 exit status
make[2]: *** [Makefile:1230: patch] Error 1
--8<---------------cut here---------------end--------------->8---

Note that there is a warning about __mktime_internal earlier:

--8<---------------cut here---------------start------------->8---
In file included from timegm.c:20:0:
timegm.c: In function 'rpl_timegm':
../config.h:1974:25: warning: implicit declaration of function '__mktime_internal' [-Wimplicit-function-declaration]
#define mktime_internal __mktime_internal

timegm.c:30:28: note: in expansion of macro 'mktime_internal'
# define __mktime_internal mktime_internal

timegm.c:39:10: note: in expansion of macro '__mktime_internal'
return __mktime_internal (tmp, __gmtime_r, &gmtime_offset);
--8<---------------cut here---------------end--------------->8---

Then we have 'ncurses' failing in the install phase with:

--8<---------------cut here---------------start------------->8---
make[1]: Entering directory '/tmp/guix-build-ncurses-6.1.drv-0/ncurses-6.1/progs'
mkdir -p /gnu/store/553j76738bh6bcr31vsyri0wpxir2wkw-ncurses-6.1/bin
/gnu/store/63gkgnixg6xj3m9cgl25ib2zxl51ngw0-coreutils-8.29/bin/install -c -s tic /gnu/store/553j76738bh6bcr31vsyri0wpxir2wkw-ncurses-6.1/bin/`echo tic| sed 's/$//'|sed 's,x,x,'|sed 's/$//'`
strip: Unable to recognise the format of the input file `/gnu/store/553j76738bh6bcr31vsyri0wpxir2wkw-ncurses-6.1/bin/tic'
/gnu/store/63gkgnixg6xj3m9cgl25ib2zxl51ngw0-coreutils-8.29/bin/install: strip process terminated abnormally
make[1]: *** [Makefile:201: install.progs] Error 1
--8<---------------cut here---------------end--------------->8---

The error message here is odd: /gnu/store/.../bin/tic is not installed
yet at this point. The built binary looks fine however. Quoth `file`:

/dev/shm/guix-build-ncurses-6.1.drv-0/ncurses-6.1/progs/tic: ELF 32-bit LSB executable, ARM, EABI5
version 1 (SYSV), dynamically linked, interpreter /gnu/store/jiw5wrjvcipfxnpl56572x4bf6gdvypf-glibc-cross-arm-linux-gnueabihf-2.27/lib/ld-linux-armhf.so.3, for GNU/Linux 2.6.32, with debug_info, not stripped

I'm not sure why these failures happen only when cross-compiling. The
respective native builds are okay. Thoughts?

For those following along at home, you can reproduce these failures by
checking out the core-updates branch, and then run:

./pre-inst-env guix build --target=arm-linux-gnueabihf bootstrap-tarballs

(or any other target triplet, they fail in the same way)
Chris Marusich
2018-04-18 03:40:55 UTC
Permalink
Post by Marius Bakke
Building 'bootstrap-tarballs' for other architectures fails on
core-updates.
Could this be related to the following bug report?

https://debbugs.gnu.org/cgi/bugreport.cgi?bug=24841
--
Chris
Ludovic Courtès
2018-04-22 20:42:28 UTC
Permalink
Hello Marius,
Post by Marius Bakke
There seems to be a couple of different problems here.
'patch' fails to build due to a conflicting declaration of
CCLD patch
/tmp/guix-build-glibc-cross-arm-linux-gnueabihf-2.27.drv-0/glibc-2.27/time/mktime.c:353: multiple definition of `__mktime_internal'
../lib/libpatch.a(mktime.o):/tmp/guix-build-patch-2.7.6.drv-0/patch-2.7.6/lib/mktime.c:317: first defined here
collect2: error: ld returned 1 exit status
make[2]: *** [Makefile:1230: patch] Error 1
../config.h:1974:25: warning: implicit declaration of function '__mktime_internal' [-Wimplicit-function-declaration]
#define mktime_internal __mktime_internal
timegm.c:30:28: note: in expansion of macro 'mktime_internal'
# define __mktime_internal mktime_internal
timegm.c:39:10: note: in expansion of macro '__mktime_internal'
return __mktime_internal (tmp, __gmtime_r, &gmtime_offset);
make[1]: Entering directory '/tmp/guix-build-ncurses-6.1.drv-0/ncurses-6.1/progs'
mkdir -p /gnu/store/553j76738bh6bcr31vsyri0wpxir2wkw-ncurses-6.1/bin
/gnu/store/63gkgnixg6xj3m9cgl25ib2zxl51ngw0-coreutils-8.29/bin/install -c -s tic /gnu/store/553j76738bh6bcr31vsyri0wpxir2wkw-ncurses-6.1/bin/`echo tic| sed 's/$//'|sed 's,x,x,'|sed 's/$//'`
strip: Unable to recognise the format of the input file `/gnu/store/553j76738bh6bcr31vsyri0wpxir2wkw-ncurses-6.1/bin/tic'
/gnu/store/63gkgnixg6xj3m9cgl25ib2zxl51ngw0-coreutils-8.29/bin/install: strip process terminated abnormally
make[1]: *** [Makefile:201: install.progs] Error 1
This is fixed by these commits:

c77835db0 * gnu: tar: Work around a cross-compilation issue.
b0ff3606b * gnu: ncurses: Do not use "install -s" when cross-compiling.
d3878d3d5 * gnu: patch: Work around a cross-compilation issue.

Thanks for the heads-up!

Ludo’.

Loading...