Using the "declare -x" build-in instead of "export" allows variables
to be exported only to child processes that are executed in the scope
of the function in which the variables are declared, including nested
function calls.
This avoid polluting the environment of every package build that
follows.
- Rather than using part-by-part build of Binutils, use autogen and full
./configure, make build.
- Enable some other modern features, including the gold linker, threaded
linking and 64-bit linking.
- This allows GCC 12 to build unhindered by binutils.
The motivations for this are complicated, but on musl systems, musl
will use its own libssp implementation, so GCC's libssp is not required.
Not to mention that GCC's libssp implementation is questionable at best.
This is the approach taken by the two major musl distributions - Alpine
Linux and Void Linux.
By using --cores argument to rootfs.py, JOBS= is set in the
live-bootstrap environment, and -j${JOBS} is used on builds. This speeds
larger packages up significantly.
A fair number of packages do not build properly with parallelism. Most
of these, at least for now, are disabled with -j1.
This is achieved by transplanting 3.0.7's psyntax-pp.scm into 3.0.9
which works flawlessly.
This is required for parallelism, since <3.0.8 is irreproducible when
-jN is used.
The source tarball is provided as part of sysa distfiles and copied to sysc, which resolves the issue of finding a reliable plain HTTP mirror for curl.
Splitted from https://github.com/fosslinux/live-bootstrap/pull/253.
--with-sysroot removal is insufficient.
There is bad behaviour somewhere that causes --with-sysroot=no as the
default, and then sysroot to be set to 'no'. In reality, we should have
literally no sysroot; so set --with-sysroot=
This option is erroneous and only worked by chance.
sysroot is prepended to all library search paths when working correctly,
eg, /usr/lib turns into /usr/usr/lib when --with-sysroot=/usr.