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 a2e06da..dc71412 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 6bbc44c..47774b1 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 7a7cf8c..6952110 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 f4d92d1..6ce7564 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 f33c558..24c97f0 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 af739cf..4c981a0 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 d084992..fa5b3d9 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 3d195a3..d5574fe 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 979a66c..ebea144 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 3a36e2c..d63b2f9 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 4c6e219..13fc0dd 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 547f265..37ad7fb 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 4342a1d..abd7c9e 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 594fe67..cb3dc81 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 510839f..9167706 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 665a8f7..db2217a 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 ecaa789..2cb00ca 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 d18fbd8..3b99b1e 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 0f6b4d7..6db3fea 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 27a82ee..8c244de 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 0000000..018b28f --- /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 074d648..dedf40b 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 e4f2e32..de72a9e 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 }