Subject: bug#24841: Cross-building bootstrap binaries fail in current master

From: Chris Marusich <[email-masked]>
Date: Mon, 27 Nov 2017 20:31:07 -0800

[email-masked] (Ludovic Courtès) writes:

>> For efraim and for myself,
>>
>> guix build --target=mips64el-linux-gnu bootrap-tarballs
>>
>> got broken with commit
>>
>> b9bc6e842066b066ebdf9eaf75d41753598d75b5
>>

This still fails.  The error I see today, using commit
5aa6e0d04a3f9dea06b9d35f04fa709b31e4b343, is the following:

--8<---------------cut here---------------start------------->8---
$ ./pre-inst-env guix build --substitute-urls='https://mirror.hydra.gnu.org https://hydra.gnu.org' --target=mips64el-linux-gnu bootstrap-tarballs
@ build-started /gnu/store/ybqid1nca0wjf0mvph82hl8f1dav4ann-make-boot0-4.2.1.drv - x86_64-linux /var/log/guix/drvs/yb//qid1nca0wjf0mvph82hl8f1dav4ann-make-boot0-4.2.1.drv.bz2
starting phase `set-SOURCE-DATE-EPOCH'
phase `set-SOURCE-DATE-EPOCH' succeeded after 0.0 seconds
starting phase `set-paths'
environment variable `PATH' set to `/gnu/store/bdbi6mlyci8d98szqhyzwxbb2pd6kw9w-gcc-cross-x86_64-linux-5.4.0/bin:/gnu/store/pdl320cy7axlq8ry87jqid7m0sgnm56n-binutils-cross-x86_64-linux-2.28/bin'
environment variable `CROSS_LIBRARY_PATH' set to `/gnu/store/jb6xbkm6jchhbp9l9nm05qnn3jzlnczl-glibc-bootstrap-0/lib:/gnu/store/inwi6s9x140rv8qhn7z3cpl2sj8in4vq-gcc-bootstrap-0/lib:/gnu/store/n47km143d64pbl8r55w741gpplg62jji-glibc-cross-x86_64-linux-2.25/lib'
environment variable `CROSS_C_INCLUDE_PATH' set to `/gnu/store/jb6xbkm6jchhbp9l9nm05qnn3jzlnczl-glibc-bootstrap-0/include:/gnu/store/inwi6s9
x140rv8qhn7z3cpl2sj8in4vq-gcc-bootstrap-0/include:/gnu/store/n47km143d64pbl8r55w741gpplg62jji-glibc-cross-x86_64-linux-2.25/include:/gnu/store/zm415fv9i70ablx8lpz2dmh4iyj7l5hy-linux-libre-headers-cross-x86_64-linux-4.4.47/include'
environment variable `CROSS_CPLUS_INCLUDE_PATH' set to `/gnu/store/jb6xbkm6jchhbp9l9nm05qnn3jzlnczl-glibc-bootstrap-0/include:/gnu/store/inwi6s9x140rv8qhn7z3cpl2sj8in4vq-gcc-bootstrap-0/include:/gnu/store/n47km143d64pbl8r55w741gpplg62jji-glibc-cross-x86_64-linux-2.25/include:/gnu/store/zm415fv9i70ablx8lpz2dmh4iyj7l5hy-linux-libre-headers-cross-x86_64-linux-4.4.47/include'
environment variable `CROSS_OBJC_INCLUDE_PATH' set to `/gnu/store/jb6xbkm6jchhbp9l9nm05qnn3jzlnczl-glibc-bootstrap-0/include:/gnu/store/inwi6s9x140rv8qhn7z3cpl2sj8in4vq-gcc-bootstrap-0/include:/gnu/store/n47km143d64pbl8r55w741gpplg62jji-glibc-cross-x86_64-linux-2.25/include:/gnu/store/zm415fv9i70ablx8lpz2dmh4iyj7l5hy-linux-libre-headers-cross-x86_64-linux-4.4.47/include'
environment variable `CROSS_OBJCPLUS_INCLUDE_PATH' set to `/gnu/store/jb6xbkm6jchhbp9l9nm05qnn3jzlnczl-glibc-bootstrap-0/include:/gnu/store/inwi6s9x140rv8qhn7z3cpl2sj8in4vq-gcc-bootstrap-0/include:/gnu/store/n47km143d64pbl8r55w741gpplg62jji-glibc-cross-x86_64-linux-2.25/include:/gnu/store/zm415fv9i70ablx8lpz2dmh4iyj7l5hy-linux-libre-headers-cross-x86_64-linux-4.4.47/include'
environment variable `GUIX_LOCPATH' unset
environment variable `CPATH' set to `/gnu/store/bdbi6mlyci8d98szqhyzwxbb2pd6kw9w-gcc-cross-x86_64-linux-5.4.0/include'
environment variable `LIBRARY_PATH' set to `/gnu/store/bdbi6mlyci8d98szqhyzwxbb2pd6kw9w-gcc-cross-x86_64-linux-5.4.0/lib'
phase `set-paths' succeeded after 0.0 seconds
starting phase `install-locale'
warning: failed to install 'en_US.utf8' locale: Invalid argument
phase `install-locale' succeeded after 0.0 seconds
starting phase `unpack'
In execvp of tar: No such file or directory
phase `unpack' failed after 0.0 seconds
builder for `/gnu/store/ybqid1nca0wjf0mvph82hl8f1dav4ann-make-boot0-4.2.1.drv' failed with exit code 1
@ build-failed /gnu/store/ybqid1nca0wjf0mvph82hl8f1dav4ann-make-boot0-4.2.1.drv - 1 builder for `/gnu/store/ybqid1nca0wjf0mvph82hl8f1dav4ann-make-boot0-4.2.1.drv' failed with exit code 1
cannot build derivation `/gnu/store/bb8hq0px9ij03nmls8a0j2ak248f9lyx-file-boot0-5.30.drv': 1 dependencies couldn't be built
guix build: error: build failed: build of `/gnu/store/bb8hq0px9ij03nmls8a0j2ak248f9lyx-file-boot0-5.30.drv' failed
--8<---------------cut here---------------end--------------->8---

>> Probably building with --no-grafts is a suitable work-around, or
>> cross-building expat beforehand (thus I won't need grafting) but I am
>> leaving my store untoched for a while to be able to produce a proper
>> fix.
>
> Yeah, I’d suggest using --no-grafts until this is fixed.

Are you sure this work-around works?  When I add --no-grafts, I get the
following error:

--8<---------------cut here---------------start------------->8---
$ ./pre-inst-env guix build --substitute-urls='https://mirror.hydra.gnu.org https://hydra.gnu.org' --no-grafts --target=mips64el-linux-gnu bootstrap-tarballs
substitute: updating list of substitutes from 'https://mirror.hydra.gnu.org'... 100.0%
substitute: updating list of substitutes from 'https://hydra.gnu.org'... 100.0%
The following derivations will be built:
   /gnu/store/x9wixafhlhrwaimp5dyf4g3m4b900h9y-bootstrap-tarballs-0.drv
   /gnu/store/hi7magp0zhkrd7fy25vwv2skl2x3j2lv-guile-static-2.2.2.drv
   /gnu/store/yil4gm5maipjf1yb5fw9gy8l2hy975mr-guile-static-stripped-2.2.2.drv
   /gnu/store/qb3s4zi7j22s8awrlck1872myivxr1rg-guile-static-stripped-tarball-2.2.2.drv
237.1 MB will be downloaded:
   /gnu/store/3fkfgpw2px7dshl2rfjbng6ddsyr6k4f-linux-libre-headers-cross-mips64el-linux-gnu-4.4.47
   /gnu/store/3ymkvl8nmk80w05vv77y45mf4nv4qa1j-gmp-6.1.2
   /gnu/store/pbrwkg2lzscphkyjxzdphr63bqcm20r8-glibc-cross-mips64el-linux-gnu-2.25
   /gnu/store/wxyf3y3bsrw77fi6r0505hwlzmanyj26-gcc-cross-mips64el-linux-gnu-5.4.0
   /gnu/store/9fnprlh8fwnfyjnmp3n6ybx58mwy8260-readline-7.0
   /gnu/store/4kjvw1mfg8300vgxx97x0vvarjb0yzss-ncurses-6.0
   /gnu/store/bx9qvznmzq39h8gb1zv4c28kdnkbd8ls-pkg-config-mips64el-linux-gnu-0.29.2
   /gnu/store/pp3w43w92a8kbnaj87zfc53bwsr7vsz4-binutils-cross-mips64el-linux-gnu-2.28
   /gnu/store/bymc1f0i3wkhhwwf20ffp6i1gmxq892a-libltdl-2.4.6
   /gnu/store/smfrwm4qfj77l6ynq9d7awyjjqwas648-guile-static-2.2.2
   /gnu/store/h3nyn8p99b9m9y353prn497zpvw4z2jr-gcc-cross-mips64el-linux-gnu-5.4.0
   /gnu/store/5mr2hikzw7bp7h1q4xabqbjqqx558hn5-glibc-cross-mips64el-linux-gnu-2.25
   /gnu/store/04kqafjrc2raiq7dzdkbpm31i5awrmqw-libffi-3.2.1
   /gnu/store/31pi2pm80mm2w03hy3cbg7xc6adqjsvm-libgc-7.6.0
   /gnu/store/mzcz5clxs7kiqrz7570wvj8gd6zj4wc9-bash-minimal-4.4.12
   /gnu/store/n2ha7xz4690mm7n5zjr8fg46va56ny9f-libunistring-0.9.7
   /gnu/store/l5wwzf579w7p2xgvymqxrwjcg6h9r4jr-linux-libre-headers-cross-mips64el-linux-gnu-4.4.47
   /gnu/store/jinmblfjidfxlgdljpnx9dgbb0pwc6gf-binutils-static-stripped-tarball-2.28
   /gnu/store/hrn7px45c3frag4djmqf3ykknybwcrjz-linux-libre-headers-4.4.47
   /gnu/store/35ik0amrcfjg3fql64v3ylr1yyqj9d63-gcc-stripped-tarball-5.4.0
   /gnu/store/wvyqv1jazydcglfnqq8v7nxjwn8cf1f1-glibc-stripped-tarball-2.25
   /gnu/store/ip0k6kiams7sj4l2q6zlv3ih6mjf539s-static-binaries-tarball-0
   /gnu/store/5sdf53qnqwdsvnvk6vg01yiz9wxjx082-glibc-cross-mips64el-linux-gnu-2.25
   /gnu/store/0qsh7cxkmpbdmmc48ks6ba4i3c28gncx-gcc-cross-sans-libc-mips64el-linux-gnu-5.4.0
   /gnu/store/xnj1538h60rh679v05847g0bkwlj8x9a-ld-wrapper-mips64el-linux-gnu-0
   /gnu/store/kqic8p5d41k2m9a2la5ljx8h7f8rgd4z-libffi-3.2.1
   /gnu/store/2ks7gskdfc3yk493kga79z0ik2kvw3n5-libatomic-ops-7.4.4
@ substituter-started /gnu/store/jinmblfjidfxlgdljpnx9dgbb0pwc6gf-binutils-static-stripped-tarball-2.28 /gnu/store/d0xkr3d3zyqrnsh31vp0qdavp3anh6ml-guix-0.13.0-10.0b4c385/libexec/guix/substitute
...
@ build-started /gnu/store/hi7magp0zhkrd7fy25vwv2skl2x3j2lv-guile-static-2.2.2.drv - x86_64-linux /var/log/guix/drvs/hi//7magp0zhkrd7fy25vwv2skl2x3j2lv-guile-static-2.2.2.drv.bz2
...
wrote `web/http.go'
  GUILEC web/uri.go
wrote `web/server/http.go'
  GUILEC language/elisp/boot.go
Backtrace:
In srfi/srfi-1.scm:
    640:9 19 (for-each #<procedure cc8a00 at scripts/compile.scm:24?> ?)
In scripts/compile.scm:
   251:26 18 (_ _)
In system/base/target.scm:
     57:6 17 (with-target _ _)
In system/base/compile.scm:
   139:28 16 (compile-file "language/elisp/boot.el" #:output-file _ # ?)
In system/base/language.scm:
   110:30 15 (default-environment _)
    62:11 14 (lookup-language elisp)
In ice-9/boot-9.scm:
  2718:10 13 (_ (language elisp spec) _ _ #:ensure _)
  2986:16 12 (try-module-autoload _ _)
   2316:4 11 (save-module-excursion _)
  3006:22 10 (_)
In unknown file:
           9 (primitive-load-path "language/elisp/spec" #<procedure ?>)
In system/base/compile.scm:
    165:4  8 (compile-and-load _ #:from _ #:to _ #:env _ #:opts _ # _)
   235:18  7 (read-and-compile #<input: language/elisp/boot.el 13> # ?)
   183:32  6 (compile-fold (#<procedure compile-tree-il (expr env ?>) ?)
In language/elisp/compile-tree-il.scm:
    805:5  5 (compile-tree-il (defmacro @ (module symbol) (#{`}# ?)) ?)
   705:11  4 (_ _ _)
In system/base/compile.scm:
    255:6  3 (compile _ #:from _ #:to _ #:env _ #:opts _)
   183:32  2 (compile-fold _ #<tree-il (seq (call (@ (language elis?> ?)
In language/bytecode/spec.scm:
    28:15  1 (bytecode->value #vu8(127 69 76 70 1 1 1 255 0 0 0 0 ?) ?)
In unknown file:
           0 (load-thunk-from-memory #vu8(127 69 76 70 1 1 1 255 0 ?))

ERROR: In procedure load-thunk-from-memory:
ERROR: In procedure load-thunk-from-memory: No such file or directory
make[2]: *** [Makefile:2266: language/elisp/boot.go] Error 1
make[2]: *** Waiting for unfinished jobs....
wrote `web/uri.go'
make[2]: Leaving directory '/tmp/guix-build-guile-static-2.2.2.drv-0/guile-2.2.2/module'
make[1]: *** [Makefile:1857: all-recursive] Error 1
make[1]: Leaving directory '/tmp/guix-build-guile-static-2.2.2.drv-0/guile-2.2.2'
make: *** [Makefile:1743: all] Error 2
phase `build' failed after 732.1 seconds
builder for `/gnu/store/hi7magp0zhkrd7fy25vwv2skl2x3j2lv-guile-static-2.2.2.drv' failed with exit code 1
@ build-failed /gnu/store/hi7magp0zhkrd7fy25vwv2skl2x3j2lv-guile-static-2.2.2.drv - 1 builder for `/gnu/store/hi7magp0zhkrd7fy25vwv2skl2x3j2lv-guile-static-2.2.2.drv' failed with exit code 1
cannot build derivation `/gnu/store/yil4gm5maipjf1yb5fw9gy8l2hy975mr-guile-static-stripped-2.2.2.drv': 1 dependencies couldn't be built
cannot build derivation `/gnu/store/qb3s4zi7j22s8awrlck1872myivxr1rg-guile-static-stripped-tarball-2.2.2.drv': 1 dependencies couldn't be built
cannot build derivation `/gnu/store/x9wixafhlhrwaimp5dyf4g3m4b900h9y-bootstrap-tarballs-0.drv': 1 dependencies couldn't be built
guix build: error: build failed: build of `/gnu/store/x9wixafhlhrwaimp5dyf4g3m4b900h9y-bootstrap-tarballs-0.drv' failed

--8<---------------cut here---------------end--------------->8---

Does the --no-grafts workaround actually work?

Or, is it that the work-around works, but for some other reason
guile-static-2.2.2 fails to cross-build on an x86_64-linux Guix system
for the mips64el-linux-gnu target?

-- 
Chris