Manolis Ragkousis <manolis...@gmail.com> skribis: > The problem is that when trying to build %gcc-static from > make-bootstrap.scm I get: > > make[2]: Entering directory > '/tmp/nix-build-gcc-static-4.8.4.drv-0/build/i686-pc-gnu/libgcc' > # If this is the top-level multilib, build all the other > DEFINES='' HEADERS='' \ > ../../../gcc-4.8.4/libgcc/mkheader.sh > tmp-libgcc_tm.h > make[2]: *** No rule to make target > '../../../gcc-4.8.4/libgcc/../libdecnumber/no/decimal32.c', needed by > 'decimal32.o'. Stop. > make[2]: *** Waiting for unfinished jobs.... > # multilibs. > > This happens because glibc-for-bootstrap return the wrong glibc, which > gcc-static is trying to use.
The problem in ‘make-bootstrap.scm’ is that %glibc-stripped and all the %*-bootstrap-tarball variables are evaluated at the top level, thus based on the default values of %current-system and %current-target-system ("x86_64-linux" and #f here, whereas you would like "i686-gnu" for the latter.) One solution would be to turn all of these into procedures. That way, %current-target-system would have the value you expect, and so ‘glibc-for-bootstrap’ & co. would use ‘glibc/hurd’. Does that make sense? Let me know how that works. Thanks, Ludo’.