From 37b5b7bf4c68cd2b711c282d84188bcec7b6abdc Mon Sep 17 00:00:00 2001 From: Dor Askayo Date: Fri, 31 Dec 2021 20:17:17 +0200 Subject: [PATCH 1/7] Use mkdir -p in after.kaem Avoids an error when the directories already exist. --- sysa/after.kaem | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sysa/after.kaem b/sysa/after.kaem index a2e06da6..dc71412e 100755 --- a/sysa/after.kaem +++ b/sysa/after.kaem @@ -23,7 +23,7 @@ NYACC_PKG=nyacc-1.00.2 MES_PKG=mes MES_PREFIX=${sources}/${MES_PKG}/src/mes-m2-dad1744fa80f52b3b428803c06b09d39c285f500 GUILE_LOAD_PATH=${MES_PREFIX}/mes/module:${MES_PREFIX}/module:${sources}/${MES_PKG}/src/${NYACC_PKG}/module -mkdir ${prefix} ${bindir} ${libdir} ${incdir} ${tmpdir} +mkdir -p ${prefix} ${bindir} ${libdir} ${incdir} ${tmpdir} cd ${prefix} # Remove remaining dependencies on /bin (stage0-posix directory) From 206a31fa4c75552272c7c62c8e52fea92e445881 Mon Sep 17 00:00:00 2001 From: Dor Askayo Date: Fri, 31 Dec 2021 21:30:44 +0200 Subject: [PATCH 2/7] Use the -f flag in gunzip and bunzip2 It allows unpacking hardlinked archives. --- sysa/bash-2.05b/bash-2.05b.kaem | 2 +- sysa/bzip2-1.0.8/bzip2-1.0.8.kaem | 2 +- sysa/coreutils-5.0/coreutils-5.0.kaem | 2 +- sysa/heirloom-devtools-070527/heirloom-devtools-070527.kaem | 2 +- sysa/make-3.80/make-3.80.kaem | 2 +- sysa/patch-2.5.9/patch-2.5.9.kaem | 2 +- sysa/sed-4.0.9/sed-4.0.9.kaem | 2 +- sysa/tar-1.12/tar-1.12.kaem | 2 +- sysa/tcc-0.9.27/tcc-0.9.27.kaem | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/sysa/bash-2.05b/bash-2.05b.kaem b/sysa/bash-2.05b/bash-2.05b.kaem index 6bbc44ca..47774b16 100755 --- a/sysa/bash-2.05b/bash-2.05b.kaem +++ b/sysa/bash-2.05b/bash-2.05b.kaem @@ -12,7 +12,7 @@ mkdir build cd build # Extract -gunzip ../src/${pkg}.tar.gz +gunzip -f ../src/${pkg}.tar.gz tar xf ../src/${pkg}.tar cd ${pkg} cp ../../mk/main.mk Makefile diff --git a/sysa/bzip2-1.0.8/bzip2-1.0.8.kaem b/sysa/bzip2-1.0.8/bzip2-1.0.8.kaem index 7a7cf8c1..6952110f 100755 --- a/sysa/bzip2-1.0.8/bzip2-1.0.8.kaem +++ b/sysa/bzip2-1.0.8/bzip2-1.0.8.kaem @@ -11,7 +11,7 @@ mkdir build cd build # Extract -gunzip ../src/${pkg}.tar.gz +gunzip -f ../src/${pkg}.tar.gz tar xf ../src/${pkg}.tar cd ${pkg} diff --git a/sysa/coreutils-5.0/coreutils-5.0.kaem b/sysa/coreutils-5.0/coreutils-5.0.kaem index f4d92d10..6ce75641 100755 --- a/sysa/coreutils-5.0/coreutils-5.0.kaem +++ b/sysa/coreutils-5.0/coreutils-5.0.kaem @@ -12,7 +12,7 @@ mkdir build cd build # Extract -bunzip2 ../src/${pkg}.tar.bz2 +bunzip2 -f ../src/${pkg}.tar.bz2 tar xf ../src/${pkg}.tar cd ${pkg} cp ../../mk/main.mk Makefile diff --git a/sysa/heirloom-devtools-070527/heirloom-devtools-070527.kaem b/sysa/heirloom-devtools-070527/heirloom-devtools-070527.kaem index f33c5587..24c97f0d 100755 --- a/sysa/heirloom-devtools-070527/heirloom-devtools-070527.kaem +++ b/sysa/heirloom-devtools-070527/heirloom-devtools-070527.kaem @@ -13,7 +13,7 @@ cd build lexdir=/lex # Extract -bunzip2 ../src/${pkg}.tar.bz2 +bunzip2 -f ../src/${pkg}.tar.bz2 tar xf ../src/${pkg}.tar ${pkg}/yacc ${pkg}/lex cd ${pkg} diff --git a/sysa/make-3.80/make-3.80.kaem b/sysa/make-3.80/make-3.80.kaem index af739cfe..4c981a0e 100755 --- a/sysa/make-3.80/make-3.80.kaem +++ b/sysa/make-3.80/make-3.80.kaem @@ -10,7 +10,7 @@ mkdir build cd build # Extract -gunzip ../src/${pkg}.tar.gz +gunzip -f ../src/${pkg}.tar.gz tar xf ../src/${pkg}.tar cd ${pkg} diff --git a/sysa/patch-2.5.9/patch-2.5.9.kaem b/sysa/patch-2.5.9/patch-2.5.9.kaem index d0849925..fa5b3d9c 100755 --- a/sysa/patch-2.5.9/patch-2.5.9.kaem +++ b/sysa/patch-2.5.9/patch-2.5.9.kaem @@ -10,7 +10,7 @@ mkdir build cd build # Extract -gunzip ../src/${pkg}.tar.gz +gunzip -f ../src/${pkg}.tar.gz tar xf ../src/${pkg}.tar cd ${pkg} diff --git a/sysa/sed-4.0.9/sed-4.0.9.kaem b/sysa/sed-4.0.9/sed-4.0.9.kaem index 3d195a31..d5574fe0 100755 --- a/sysa/sed-4.0.9/sed-4.0.9.kaem +++ b/sysa/sed-4.0.9/sed-4.0.9.kaem @@ -12,7 +12,7 @@ mkdir build cd build # Extract -gunzip ../src/${pkg}.tar.gz +gunzip -f ../src/${pkg}.tar.gz tar xf ../src/${pkg}.tar cd ${pkg} diff --git a/sysa/tar-1.12/tar-1.12.kaem b/sysa/tar-1.12/tar-1.12.kaem index 979a66c0..ebea1446 100755 --- a/sysa/tar-1.12/tar-1.12.kaem +++ b/sysa/tar-1.12/tar-1.12.kaem @@ -12,7 +12,7 @@ mkdir build cd build # Extract -gunzip ../src/${pkg}.tar.gz +gunzip -f ../src/${pkg}.tar.gz untar ../src/${pkg}.tar cd ${pkg} diff --git a/sysa/tcc-0.9.27/tcc-0.9.27.kaem b/sysa/tcc-0.9.27/tcc-0.9.27.kaem index 3a36e2c7..d63b2f93 100755 --- a/sysa/tcc-0.9.27/tcc-0.9.27.kaem +++ b/sysa/tcc-0.9.27/tcc-0.9.27.kaem @@ -11,7 +11,7 @@ mkdir build cd build # Extract -bunzip2 ../src/${pkg}.tar.bz2 +bunzip2 -f ../src/${pkg}.tar.bz2 tar xf ../src/${pkg}.tar cd ${pkg} From d2b3feca5f475a3b0c5c9783b4802db71d740a0c Mon Sep 17 00:00:00 2001 From: Dor Askayo Date: Sun, 2 Jan 2022 10:38:01 +0200 Subject: [PATCH 3/7] Remove the previous coreutils-5.0 source directory coreutils-5.0 is built twice in the same source directory during the bootstrap. This can create some unexpected issues. --- sysa/coreutils-5.0/coreutils-5.0.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/sysa/coreutils-5.0/coreutils-5.0.sh b/sysa/coreutils-5.0/coreutils-5.0.sh index 4c6e2199..13fc0dd6 100755 --- a/sysa/coreutils-5.0/coreutils-5.0.sh +++ b/sysa/coreutils-5.0/coreutils-5.0.sh @@ -4,6 +4,10 @@ src_unpack() { src_dir="${base_dir}/src" + + # Remove previous source diretory + rm -rf "${pkg}" + tar -xf "${src_dir}/${pkg}.tar" } From c3843e196017ee3dc3a94f432f834ec4e3c3a032 Mon Sep 17 00:00:00 2001 From: Dor Askayo Date: Tue, 4 Jan 2022 01:06:59 +0200 Subject: [PATCH 4/7] Ensure help2man is writable When not running as root, the shebang workaround requires write permissions to modify help2man. Since the original file is read-only, permission must be granted explicitly. Also fix the double '/' in the /usr prefix while at it. --- sysa/help2man-1.36.4/help2man-1.36.4.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sysa/help2man-1.36.4/help2man-1.36.4.sh b/sysa/help2man-1.36.4/help2man-1.36.4.sh index 547f2652..37ad7fb0 100755 --- a/sysa/help2man-1.36.4/help2man-1.36.4.sh +++ b/sysa/help2man-1.36.4/help2man-1.36.4.sh @@ -17,8 +17,9 @@ src_compile() { make MAKEINFO=true # fix a broken shebang + chmod +w help2man tail -n +6 help2man > help2man.tmp - echo "#!/${PREFIX}/bin/perl" > help2man + echo "#!${PREFIX}/bin/perl" > help2man cat help2man.tmp >> help2man rm help2man.tmp } From b03f3e11c093ed3586ff4109067cae0de63bfb62 Mon Sep 17 00:00:00 2001 From: Dor Askayo Date: Wed, 5 Jan 2022 00:16:58 +0200 Subject: [PATCH 5/7] Use rm -f to avoid interactive prompts This is required when not running as root to avoid prompts when removing read-only files. --- sysa/perl-5.000/perl-5.000.sh | 8 ++++---- sysa/perl-5.003/perl-5.003.sh | 4 ++-- sysa/perl-5.6.2/perl-5.6.2.sh | 10 +++++----- sysa/perl5.004_05/perl5.004_05.sh | 4 ++-- sysa/perl5.005_03/perl5.005_03.sh | 8 ++++---- sysc/perl-5.10.1/perl-5.10.1.sh | 10 +++++----- sysc/perl-5.32.1/perl-5.32.1.sh | 12 ++++++------ 7 files changed, 28 insertions(+), 28 deletions(-) diff --git a/sysa/perl-5.000/perl-5.000.sh b/sysa/perl-5.000/perl-5.000.sh index 4342a1d0..abd7c9ee 100755 --- a/sysa/perl-5.000/perl-5.000.sh +++ b/sysa/perl-5.000/perl-5.000.sh @@ -12,22 +12,22 @@ src_prepare() { default # Remove and regenerate bison files - rm perly.c perly.h + rm -f perly.c perly.h bison -d perly.y mv perly.tab.c perly.c mv perly.tab.h perly.h # Regenerate embed.h - rm embed.h + rm -f embed.h ./embed_h.SH # Regenerate keywords.h - rm keywords.h + rm -f keywords.h chmod +x keywords.sh ./keywords.sh # Regenerate opcode.h - rm opcode.h + rm -f opcode.h chmod +x opcode.sh ./opcode.sh } diff --git a/sysa/perl-5.003/perl-5.003.sh b/sysa/perl-5.003/perl-5.003.sh index 594fe679..cb3dc814 100755 --- a/sysa/perl-5.003/perl-5.003.sh +++ b/sysa/perl-5.003/perl-5.003.sh @@ -12,14 +12,14 @@ src_prepare() { default # Regenerate bison files - rm perly.c perly.h + rm -f perly.c perly.h bison -d perly.y mv perly.tab.c perly.c mv perly.tab.h perly.h # Regenerate other prebuilt header files for file in embed keywords opcode; do - rm ${file}.h + rm -f ${file}.h perl ${file}.pl done } diff --git a/sysa/perl-5.6.2/perl-5.6.2.sh b/sysa/perl-5.6.2/perl-5.6.2.sh index 510839ff..91677065 100755 --- a/sysa/perl-5.6.2/perl-5.6.2.sh +++ b/sysa/perl-5.6.2/perl-5.6.2.sh @@ -7,21 +7,21 @@ src_prepare() { # Regenerate bison files sed -i '/yydestruct/d' perly.y - rm perly.c perly.h + rm -f perly.c perly.h bison -d perly.y mv perly.tab.c perly.c mv perly.tab.h perly.h # Regenerate other prebuilt header files for file in embed keywords opcode; do - rm ${file}.h + rm -f ${file}.h perl ${file}.pl done - rm regnodes.h + rm -f regnodes.h perl regcomp.pl - rm ext/ByteLoader/byterun.h ext/ByteLoader/byterun.c + rm -f ext/ByteLoader/byterun.h ext/ByteLoader/byterun.c perl bytecode.pl - rm warnings.h lib/warnings.pm + rm -f warnings.h lib/warnings.pm perl warnings.pl # Workaround for some linking problems, remove if possible diff --git a/sysa/perl5.004_05/perl5.004_05.sh b/sysa/perl5.004_05/perl5.004_05.sh index 665a8f71..db2217a0 100755 --- a/sysa/perl5.004_05/perl5.004_05.sh +++ b/sysa/perl5.004_05/perl5.004_05.sh @@ -6,14 +6,14 @@ src_prepare() { default # Regenerate bison files - rm perly.c perly.h + rm -f perly.c perly.h bison -d perly.y mv perly.tab.c perly.c mv perly.tab.h perly.h # Regenerate other prebuilt header files for file in embed keywords opcode; do - rm ${file}.h + rm -f ${file}.h perl ${file}.pl done } diff --git a/sysa/perl5.005_03/perl5.005_03.sh b/sysa/perl5.005_03/perl5.005_03.sh index ecaa789e..2cb00caf 100755 --- a/sysa/perl5.005_03/perl5.005_03.sh +++ b/sysa/perl5.005_03/perl5.005_03.sh @@ -6,19 +6,19 @@ src_prepare() { default # Regenerate bison files - rm perly.c perly.h + rm -f perly.c perly.h bison -d perly.y mv perly.tab.c perly.c mv perly.tab.h perly.h # Regenerate other prebuilt header files for file in embed keywords opcode; do - rm ${file}.h + rm -f ${file}.h perl ${file}.pl done - rm regnodes.h + rm -f regnodes.h perl regcomp.pl - rm byterun.h byterun.c + rm -f fbyterun.h byterun.c perl bytecode.pl } diff --git a/sysc/perl-5.10.1/perl-5.10.1.sh b/sysc/perl-5.10.1/perl-5.10.1.sh index d18fbd82..3b99b1ea 100755 --- a/sysc/perl-5.10.1/perl-5.10.1.sh +++ b/sysc/perl-5.10.1/perl-5.10.1.sh @@ -12,14 +12,14 @@ src_prepare() { # is not dependent on perly.y any more. perl regen_perly.pl -b bison-2.3 # Remove the source file so make works. - rm perly.y + rm -f perly.y # Regenerate other prebuilt header files # Taken from headers of regen scripts - rm lib/warnings.pm warnings.h regnodes.h reentr.h reentr.c overload.h \ - overload.c lib/overload/numbers.pm opcode.h opnames.h pp_proto.h \ - pp.sym keywords.h embed.h embedvar.h global.sym perlapi.c perlapi.h \ - proto.h + rm -f lib/warnings.pm warnings.h regnodes.h reentr.h reentr.c overload.h \ + overload.c lib/overload/numbers.pm opcode.h opnames.h pp_proto.h \ + pp.sym keywords.h embed.h embedvar.h global.sym perlapi.c perlapi.h \ + proto.h perl regen.pl mkdir -p ext/File ext/Digest ext/Data diff --git a/sysc/perl-5.32.1/perl-5.32.1.sh b/sysc/perl-5.32.1/perl-5.32.1.sh index 0f6b4d74..6db3fea4 100755 --- a/sysc/perl-5.32.1/perl-5.32.1.sh +++ b/sysc/perl-5.32.1/perl-5.32.1.sh @@ -14,15 +14,15 @@ src_prepare() { # Regenerate other prebuilt header files # Taken from headers of regen scripts - rm embed.h embedvar.h perlapi.c perlapi.h proto.h mg_names.inc mg_raw.h \ - mg_vtable.h opcode.h opnames.h pp_proto.h \ - lib/B/Op_private.pm overload.h overload.inc lib/overload/numbers.pm \ - reentr.h reentr.c regnodes.h lib/warnings.pm \ - warnings.h lib/feature.pm feature.h + rm -f embed.h embedvar.h perlapi.c perlapi.h proto.h mg_names.inc mg_raw.h \ + mg_vtable.h opcode.h opnames.h pp_proto.h \ + lib/B/Op_private.pm overload.h overload.inc lib/overload/numbers.pm \ + reentr.h reentr.c regnodes.h lib/warnings.pm \ + warnings.h lib/feature.pm feature.h perl regen.pl # Regenerate configure + config_h.SH - rm Configure config_h.SH + rm -f Configure config_h.SH ln -s ../perl-5f2dc80/regen-configure/.package . ln -s ../perl-5f2dc80/regen-configure/U . metaconfig -m From 2a0fef17e2ea238924b345d3bcfe5c1d8c3a14be Mon Sep 17 00:00:00 2001 From: Dor Askayo Date: Fri, 14 Jan 2022 13:20:35 +0200 Subject: [PATCH 6/7] Add a patch to improve the reproducibility of findutils See the comment in the patch for more details. --- sysa/findutils-4.2.33/findutils-4.2.33.sh | 2 ++ .../patches/force-getcwd-fallback.patch | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 sysa/findutils-4.2.33/patches/force-getcwd-fallback.patch diff --git a/sysa/findutils-4.2.33/findutils-4.2.33.sh b/sysa/findutils-4.2.33/findutils-4.2.33.sh index 27a82ee6..8c244de9 100755 --- a/sysa/findutils-4.2.33/findutils-4.2.33.sh +++ b/sysa/findutils-4.2.33/findutils-4.2.33.sh @@ -5,6 +5,8 @@ src_prepare() { . ../../import-gnulib.sh + default_src_prepare + autoreconf-2.61 -f # Pre-built texinfo files diff --git a/sysa/findutils-4.2.33/patches/force-getcwd-fallback.patch b/sysa/findutils-4.2.33/patches/force-getcwd-fallback.patch new file mode 100644 index 00000000..018b28f1 --- /dev/null +++ b/sysa/findutils-4.2.33/patches/force-getcwd-fallback.patch @@ -0,0 +1,18 @@ +SPDX-FileCopyrightText: 2022 Dor Askayo + +SPDX-License-Identifier: GPL-3.0-or-later + +Use the fallback implementations of getcwd to get the same /usr/bin/find +checksum when building across FUSE and non-FUSE filesystems. + +--- gnulib/m4/getcwd-path-max.m4 2022-01-08 13:16:54.412709192 +0200 ++++ gnulib/m4/getcwd-path-max.m4 2022-01-16 11:38:02.658606802 +0200 +@@ -81,7 +81,7 @@ + char *cwd = getcwd (buf, PATH_MAX); + size_t initial_cwd_len; + size_t cwd_len; +- int fail = 0; ++ int fail = 1; + size_t n_chdirs = 0; + + if (cwd == NULL) From 7ecad37d8747ebb24232ad911433de555124d523 Mon Sep 17 00:00:00 2001 From: Dor Askayo Date: Wed, 29 Dec 2021 00:39:01 +0200 Subject: [PATCH 7/7] Avoid the creation of some dev nodes in chroot mode In rootless boostrap, dev nodes must be mounted before starting the bootstrap process. However, some of these aren't necessarily mounted, such as when relying upon BuildStream's sandbox. Since these are not actually required for either a rootless or chroot-based bootstrap, simply avoid them. --- sysc/run.sh | 2 ++ sysglobal/helpers.sh | 9 ++++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/sysc/run.sh b/sysc/run.sh index 074d6482..dedf40b9 100755 --- a/sysc/run.sh +++ b/sysc/run.sh @@ -10,6 +10,8 @@ set -e # shellcheck source=sysglobal/helpers.sh . helpers.sh +# shellcheck source=/dev/null +. bootstrap.cfg export PATH=/usr/bin:/usr/sbin export PREFIX=/usr diff --git a/sysglobal/helpers.sh b/sysglobal/helpers.sh index e4f2e325..de72a9eb 100755 --- a/sysglobal/helpers.sh +++ b/sysglobal/helpers.sh @@ -172,9 +172,12 @@ populate_device_nodes() { mkdir -p "${1}/dev" test -c "${1}/dev/null" || mknod -m 666 "${1}/dev/null" c 1 3 test -c "${1}/dev/zero" || mknod -m 666 "${1}/dev/zero" c 1 5 - test -c "${1}/dev/ptmx" || mknod -m 666 "${1}/dev/ptmx" c 5 2 - test -c "${1}/dev/tty" || mknod -m 666 "${1}/dev/tty" c 5 0 test -c "${1}/dev/random" || mknod -m 444 "${1}/dev/random" c 1 8 test -c "${1}/dev/urandom" || mknod -m 444 "${1}/dev/urandom" c 1 9 - test -c "${1}/dev/console" || mknod -m 666 "${1}/dev/console" c 5 1 + + if [ "${CHROOT}" = False ]; then + test -c "${1}/dev/ptmx" || mknod -m 666 "${1}/dev/ptmx" c 5 2 + test -c "${1}/dev/tty" || mknod -m 666 "${1}/dev/tty" c 5 0 + test -c "${1}/dev/console" || mknod -m 666 "${1}/dev/console" c 5 1 + fi }