Introduce parallelism

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 commit is contained in:
fosslinux 2023-04-10 15:30:16 +10:00
parent f2a0d74bfb
commit d98f97e214
74 changed files with 146 additions and 95 deletions

View file

@ -31,7 +31,7 @@ src_configure() {
}
src_compile() {
make MAKEINFO=true DESTDIR="${DESTDIR}"
make "${MAKEJOBS}" MAKEINFO=true DESTDIR="${DESTDIR}"
}
src_install() {

View file

@ -33,7 +33,7 @@ src_compile() {
# Workaround for racy make dependencies
make -C bin autom4te
make -C lib
make MAKEINFO=true
make "${MAKEJOBS}" MAKEINFO=true
}
src_install() {

View file

@ -27,7 +27,7 @@ src_compile() {
make -C bin autom4te
make -C lib
make MAKEINFO=true
make "${MAKEJOBS}" MAKEINFO=true
}
src_install() {

View file

@ -25,7 +25,7 @@ src_compile() {
# Workaround for racy make dependencies
make -C bin autom4te
make -C lib
make MAKEINFO=true
make "${MAKEJOBS}" MAKEINFO=true
}
src_install() {

View file

@ -25,7 +25,7 @@ src_compile() {
# Workaround for racy make dependencies
make -C bin autom4te
make -C lib
make MAKEINFO=true
make "${MAKEJOBS}" MAKEINFO=true
}
src_install() {

View file

@ -19,7 +19,7 @@ src_configure() {
}
src_compile() {
make MAKEINFO=true
make -j1 MAKEINFO=true PREFIX="${PREFIX}"
}
src_install() {

View file

@ -18,7 +18,7 @@ src_configure() {
}
src_compile() {
make MAKEINFO=true
make "${MAKEJOBS}" MAKEINFO=true
}
src_install() {

View file

@ -18,7 +18,7 @@ src_configure() {
}
src_compile() {
make MAKEINFO=true
make "${MAKEJOBS}" MAKEINFO=true
}
src_install() {

View file

@ -19,7 +19,7 @@ src_configure() {
}
src_compile() {
AUTOM4TE=autom4te-2.61 make MAKEINFO=true CC=tcc
AUTOM4TE=autom4te-2.61 make "${MAKEJOBS}" MAKEINFO=true CC=tcc
}
src_install() {

View file

@ -20,7 +20,7 @@ src_configure() {
}
src_compile() {
AUTORECONF=autoreconf-2.64 AUTOM4TE=autom4te-2.64 AUTOHEADER=autoheader-2.64 AUTOCONF=autoconf-2.64 make MAKEINFO=true
AUTORECONF=autoreconf-2.64 AUTOM4TE=autom4te-2.64 AUTOHEADER=autoheader-2.64 AUTOCONF=autoconf-2.64 make "${MAKEJOBS}" MAKEINFO=true
}
src_install() {

View file

@ -22,7 +22,7 @@ src_configure() {
}
src_compile() {
AUTORECONF=autoreconf-2.69 AUTOM4TE=autom4te-2.69 AUTOHEADER=autoheader-2.69 AUTOCONF=autoconf-2.69 make MAKEINFO=true
AUTORECONF=autoreconf-2.69 AUTOM4TE=autom4te-2.69 AUTOHEADER=autoheader-2.69 AUTOCONF=autoconf-2.69 make -j1 MAKEINFO=true
}
src_install() {

View file

@ -13,7 +13,7 @@ src_configure() {
}
src_compile() {
make MAKEINFO=true
make "${MAKEJOBS}" MAKEINFO=true
}
src_install() {

View file

@ -15,7 +15,7 @@ src_configure() {
}
src_compile() {
make MAKEINFO=true
make "${MAKEJOBS}" MAKEINFO=true
}
src_install() {

View file

@ -13,7 +13,7 @@ src_configure() {
}
src_compile() {
make MAKEINFO=true
make "${MAKEJOBS}" MAKEINFO=true
}
src_install() {

View file

@ -14,7 +14,7 @@ src_configure() {
}
src_compile() {
make MAKEINFO=true
make "${MAKEJOBS}" MAKEINFO=true
}
src_install() {

View file

@ -39,6 +39,10 @@ src_configure() {
bash_cv_dev_fd=whacky
}
src_compile() {
make -j1
}
src_install() {
install -D bash "${DESTDIR}${PREFIX}/bin/bash"
# Work around weird symlink bug

View file

@ -18,4 +18,3 @@ src_configure() {
./configure --prefix="${PREFIX}" \
--build=i386-unknown-linux-musl
}

View file

@ -88,7 +88,7 @@ src_configure() {
src_compile() {
make -C bfd headers
for dir in libiberty zlib bfd opcodes binutils gas gprof ld; do
make -C $dir tooldir=${PREFIX} CPPFLAGS="-DPLUGIN_LITTLE_ENDIAN" MAKEINFO=true
make "${MAKEJOBS}" -C $dir tooldir=${PREFIX} CPPFLAGS="-DPLUGIN_LITTLE_ENDIAN" MAKEINFO=true
done
}

View file

@ -19,3 +19,7 @@ src_prepare() {
cp ../../mk/lib.mk lib/Makefile
cp ../../mk/src.mk src/Makefile
}
src_compile() {
make -j1 -f Makefile PREFIX="${PREFIX}"
}

View file

@ -19,3 +19,7 @@ src_prepare() {
cp ../../mk/lib.mk lib/Makefile
cp ../../mk/src.mk src/Makefile
}
src_compile() {
make -j1 -f Makefile PREFIX="${PREFIX}"
}

View file

@ -16,3 +16,7 @@ src_prepare() {
cp ../../mk/lib.mk lib/Makefile
cp ../../mk/src.mk src/Makefile
}
src_compile() {
make -j1 -f Makefile PREFIX="${PREFIX}"
}

View file

@ -9,7 +9,7 @@ src_prepare() {
}
src_compile() {
make CC=tcc AR="tcc -ar" bzip2
make "${MAKEJOBS}" CC=tcc AR="tcc -ar" bzip2
}
src_install() {

View file

@ -25,7 +25,7 @@ src_configure() {
}
src_compile() {
make MAKEINFO=true DESTDIR="${DESTDIR}"
make "${MAKEJOBS}" MAKEINFO=true DESTDIR="${DESTDIR}"
}
src_install() {

View file

@ -11,6 +11,10 @@ src_prepare() {
rm parse.c parse.h scan.c skel.c
}
src_compile() {
make -j1 PREFIX="${PREFIX}"
}
src_install() {
if test -d /lex; then
# Remove lex, later make install will symlink lex to flex

View file

@ -12,7 +12,7 @@ src_prepare() {
src_compile() {
cd src
default
make -j1 PREFIX="${PREFIX}"
cd ..
}

View file

@ -93,7 +93,7 @@ src_compile() {
mkdir build/gcc/include
ln -s ../../../gcc/gsyslimits.h build/gcc/include/syslimits.h
for dir in libiberty libcpp gcc; do
make -C build/$dir LIBGCC2_INCLUDES=-I"${PREFIX}/include" STMP_FIXINC=
make "${MAKEJOBS}" -C build/$dir LIBGCC2_INCLUDES=-I"${PREFIX}/include" STMP_FIXINC=
done
}

View file

@ -87,7 +87,7 @@ src_configure() {
src_compile() {
ln -s . build/build-i386-unknown-linux-musl
for dir in libiberty libcpp gcc; do
make -C build/$dir LIBGCC2_INCLUDES=-I"${PREFIX}/include" STMP_FIXINC=
make "${MAKEJOBS}" -C build/$dir LIBGCC2_INCLUDES=-I"${PREFIX}/include" STMP_FIXINC=
done
}

View file

@ -18,7 +18,7 @@ src_configure() {
}
src_compile() {
make MAKEINFO=true
make "${MAKEJOBS}" MAKEINFO=true
}
src_install() {

View file

@ -321,7 +321,7 @@ default_src_configure() {
# Default function for compiling source. It simply runs make without any parameters.
default_src_compile() {
make -f Makefile PREFIX="${PREFIX}"
make "${MAKEJOBS}" -f Makefile PREFIX="${PREFIX}"
}
# Default installing function. PREFIX should be set by run.sh script.

View file

@ -22,7 +22,7 @@ src_configure() {
src_compile() {
# Missing dependency in Makefile
flex -o src/analyze.c src/analyze.l
make MAKEINFO=true
make "${MAKEJOBS}" MAKEINFO=true
}
src_install() {

View file

@ -29,7 +29,7 @@ src_configure() {
}
src_compile() {
make AUTOM4TE=autom4te-2.61 MAKEINFO=true
make "${MAKEJOBS}" AUTOM4TE=autom4te-2.61 MAKEINFO=true
}
src_install() {

View file

@ -50,8 +50,8 @@ src_compile() {
generate_autoconf_h
# Allow use of patched initramfs_list.sh (which is required anyway)
make ARCH=i386 prepare
PATH="${PWD}/usr:${PATH}" make ARCH=i386
make "${MAKEJOBS}" ARCH=i386 prepare
PATH="${PWD}/usr:${PATH}" make "${MAKEJOBS}" ARCH=i386
# Clear up more space
find . -name '*.o' -delete

View file

@ -20,7 +20,7 @@ src_configure() {
}
src_compile() {
make MAKEINFO="true"
make "${MAKEJOBS}" MAKEINFO="true"
}
src_install() {

View file

@ -24,7 +24,7 @@ src_configure() {
}
src_compile() {
make PREFIX="${PREFIX}" CROSS_COMPILE= CFLAGS="-DSYSCALL_NO_TLS" AS_CMD='as -o $@ $<'
make "${MAKEJOBS}" PREFIX="${PREFIX}" CROSS_COMPILE= CFLAGS="-DSYSCALL_NO_TLS" AS_CMD='as -o $@ $<'
}
src_install() {

View file

@ -27,5 +27,5 @@ src_configure() {
}
src_compile() {
make CROSS_COMPILE= AR="tcc -ar" RANLIB=true CFLAGS="-DSYSCALL_NO_TLS"
make "${MAKEJOBS}" CROSS_COMPILE= AR="tcc -ar" RANLIB=true CFLAGS="-DSYSCALL_NO_TLS"
}

View file

@ -29,5 +29,5 @@ src_configure() {
}
src_compile() {
make CROSS_COMPILE=
make "${MAKEJOBS}" CROSS_COMPILE=
}

View file

@ -34,6 +34,10 @@ src_prepare() {
sed -i "s#/usr/include/errno.h#${PREFIX}/include/musl/bits/errno.h#" ext/Errno/Errno_pm.PL
}
src_compile() {
make -j1 PREFIX="${PREFIX}"
}
src_install() {
# Remove old perl
rm -rf "${PREFIX}"/lib/perl5/

View file

@ -21,6 +21,13 @@ SRCDIR="${srcdir}"
# shellcheck source=sysa/helpers.sh
. helpers.sh
if [ "${KERNEL_BOOTSTRAP}" ]; then
# Fiwix does not support SMP
MAKEJOBS="-j1"
else
MAKEJOBS="-j${JOBS}"
fi
# Ask some questions
echo
echo "Now that bash has been built, there are potentially some questions for you!"
@ -178,6 +185,7 @@ SOURCES=${SOURCES}
DESTDIR=${DESTDIR}
DISTFILES=${DISTFILES}
SRCDIR=${SRCDIR}
MAKEJOBS=${MAKEJOBS}
EOF
exec env -i bash run2.sh

View file

@ -8,6 +8,10 @@ src_prepare() {
touch config.h
}
src_compile() {
make -j1 PREFIX="${PREFIX}"
}
src_install() {
default
}