From 9632f6af011a9611394ee597b21b4a464b4013b1 Mon Sep 17 00:00:00 2001 From: fosslinux Date: Fri, 29 Dec 2023 11:53:31 +1100 Subject: [PATCH 01/24] Update coreutils to 9.4 --- steps/SHA256SUMS.pkgs | 2 +- steps/coreutils-8.32/import-gnulib.sh | 298 ---------------- .../patches/gperf_dependency.patch | 50 --- steps/coreutils-8.32/sources | 2 - steps/coreutils-9.4/import-gnulib.sh | 327 ++++++++++++++++++ .../pass1.sh | 20 +- .../patches/force_to_use_nanosleep.patch | 4 +- .../patches/remove_gettext.patch | 0 steps/coreutils-9.4/sources | 17 + steps/manifest | 2 +- 10 files changed, 361 insertions(+), 361 deletions(-) delete mode 100644 steps/coreutils-8.32/import-gnulib.sh delete mode 100644 steps/coreutils-8.32/patches/gperf_dependency.patch delete mode 100644 steps/coreutils-8.32/sources create mode 100644 steps/coreutils-9.4/import-gnulib.sh rename steps/{coreutils-8.32 => coreutils-9.4}/pass1.sh (75%) rename steps/{coreutils-8.32 => coreutils-9.4}/patches/force_to_use_nanosleep.patch (95%) rename steps/{coreutils-8.32 => coreutils-9.4}/patches/remove_gettext.patch (100%) create mode 100644 steps/coreutils-9.4/sources diff --git a/steps/SHA256SUMS.pkgs b/steps/SHA256SUMS.pkgs index e039e29..5ff2119 100644 --- a/steps/SHA256SUMS.pkgs +++ b/steps/SHA256SUMS.pkgs @@ -34,7 +34,7 @@ ca7403a7503e8f3bb55e6c5bd54571b8c061b11c96e50ee89e006df6011d1518 bzip2-1.0.8_0. 543214998317d764595d3dd247a1fb2e0803ad77978b8474bd24d64c161b9530 ca-certificates-3.95_0.tar.bz2 7450bb38caaa633f8c11269fed44eb680c6ba03bb0e19c18fce3b2450f80e358 coreutils-5.0_0.tar.bz2 c95fd8c51c3bfbd4d08a4a50d0033ee85394e6efe4ff82703c050e4dbc4347bf coreutils-6.10_0.tar.bz2 -f49900486ae7f0c8107d729b71ede155ee44544cdf8d562b50fbea4095bd05b2 coreutils-8.32_0.tar.bz2 +9fa31a4aeaa5132205efb796c8f546c94c1cfef6b5c27e64f6ebe06ca0360e67 coreutils-9.4_0.tar.bz2 6a10f5258650ae75e92eb7aa1a5e6107b72c8b6419a4f64272262a1545c43161 curl-8.5.0_0.tar.bz2 f9efd6600ceb91918078078ff44a33f2a4fb4a59edb804866aebd288c2cfb24e curl-8.5.0_1.tar.bz2 1d4dec2d1885a6b5499a0f0d55e9c2c65dab532c4c593d848b6a542f67789627 dhcpcd-10.0.1_0.tar.bz2 diff --git a/steps/coreutils-8.32/import-gnulib.sh b/steps/coreutils-8.32/import-gnulib.sh deleted file mode 100644 index 3895851..0000000 --- a/steps/coreutils-8.32/import-gnulib.sh +++ /dev/null @@ -1,298 +0,0 @@ -#!/bin/sh - -# SPDX-FileCopyrightText: 2021 Melg Eight -# -# SPDX-License-Identifier: GPL-3.0-or-later - -../gnulib-d279bc/gnulib-tool --import --local-dir=gl \ - --lib=libcoreutils \ - --source-base=lib \ - --m4-base=m4 \ - --doc-base=doc \ - --tests-base=gnulib-tests \ - --aux-dir=build-aux \ - --with-tests \ - --makefile-name=gnulib.mk \ - --no-conditional-dependencies \ - --no-libtool \ - --macro-prefix=gl \ - --avoid=canonicalize-lgpl \ - --avoid=dummy \ - acl \ - alignof \ - alloca \ - announce-gen \ - areadlink-with-size \ - argmatch \ - argv-iter \ - assert \ - autobuild \ - backup-rename \ - backupfile \ - base32 \ - base64 \ - btowc \ - buffer-lcm \ - c-strcase \ - calloc-gnu \ - canon-host \ - canonicalize \ - chmodat \ - chown \ - chownat \ - cl-strtod \ - cl-strtold \ - cloexec \ - closein \ - closeout \ - config-h \ - configmake \ - crypto/md5 \ - crypto/sha1 \ - crypto/sha256 \ - crypto/sha512 \ - cycle-check \ - d-ino \ - d-type \ - di-set \ - diacrit \ - dirfd \ - dirname \ - do-release-commit-and-tag \ - dtoastr \ - dup2 \ - environ \ - error \ - euidaccess \ - exclude \ - exitfail \ - explicit_bzero \ - faccessat \ - fadvise \ - fchdir \ - fclose \ - fcntl \ - fcntl-safer \ - fd-reopen \ - fdatasync \ - fdl \ - fdopen \ - fdutimensat \ - file-has-acl \ - file-type \ - fileblocks \ - filemode \ - filenamecat \ - filevercmp \ - flexmember \ - fnmatch-gnu \ - fopen-safer \ - fprintftime \ - freopen \ - freopen-safer \ - fseeko \ - fstatat \ - fsusage \ - fsync \ - ftoastr \ - ftruncate \ - fts \ - full-read \ - full-write \ - getgroups \ - gethrxtime \ - getline \ - getloadavg \ - getlogin \ - getndelim2 \ - getopt-gnu \ - getpagesize \ - getpass-gnu \ - gettext-h \ - gettime \ - gettimeofday \ - getugroups \ - getusershell \ - git-version-gen \ - gitlog-to-changelog \ - gnu-make \ - gnu-web-doc-update \ - gnumakefile \ - gnupload \ - group-member \ - hard-locale \ - hash \ - hash-pjw \ - heap \ - host-os \ - human \ - idcache \ - ignore-value \ - inttostr \ - inttypes \ - isapipe \ - isatty \ - isblank \ - largefile \ - lchmod \ - lchown \ - ldtoastr \ - lib-ignore \ - linebuffer \ - link \ - link-follow \ - linkat \ - long-options \ - lstat \ - maintainer-makefile \ - malloc-gnu \ - manywarnings \ - mbrlen \ - mbrtowc \ - mbsalign \ - mbschr \ - mbslen \ - mbswidth \ - memcasecmp \ - memchr \ - memcmp2 \ - mempcpy \ - memrchr \ - mgetgroups \ - minmax \ - mkancesdirs \ - mkdir \ - mkdir-p \ - mkfifo \ - mknod \ - mkostemp \ - mkstemp \ - mktime \ - modechange \ - mountlist \ - mpsort \ - netinet_in \ - non-recursive-gnulib-prefix-hack \ - nproc \ - nstrftime \ - obstack \ - open \ - openat-safer \ - parse-datetime \ - pathmax \ - perl \ - physmem \ - pipe-posix \ - pipe2 \ - posix-shell \ - posixtm \ - posixver \ - priv-set \ - progname \ - pthread-cond \ - pthread-mutex \ - pthread-thread \ - pthread_sigmask \ - putenv \ - quote \ - quotearg \ - randint \ - randperm \ - read-file \ - readlink \ - readtokens \ - readtokens0 \ - readutmp \ - realloc-gnu \ - regex \ - remove \ - rename \ - renameat \ - renameatu \ - rmdir \ - root-dev-ino \ - rpmatch \ - safe-read \ - same \ - save-cwd \ - savedir \ - savewd \ - select \ - selinux-at \ - setenv \ - settime \ - sig2str \ - sigaction \ - smack \ - ssize_t \ - stat-macros \ - stat-size \ - stat-time \ - statat \ - stdbool \ - stdlib-safer \ - stpcpy \ - stpncpy \ - strdup-posix \ - strncat \ - strnumcmp \ - strsignal \ - strtoimax \ - strtoumax \ - symlinkat \ - sys_ioctl \ - sys_resource \ - sys_stat \ - sys_wait \ - tempname \ - termios \ - time_rz \ - timer-time \ - timespec \ - tzset \ - uname \ - unistd-safer \ - unlink-busy \ - unlinkat \ - unlinkdir \ - unlocked-io \ - unsetenv \ - update-copyright \ - uptime \ - useless-if-before-free \ - userspec \ - utimecmp \ - utimens \ - vasprintf-posix \ - vc-list-files \ - verify \ - verror \ - version-etc-fsf \ - wchar-single \ - wcswidth \ - wcwidth \ - winsz-ioctl \ - winsz-termios \ - write-any-file \ - xalloc \ - xbinary-io \ - xdectoint \ - xfts \ - xgetcwd \ - xgetgroups \ - xgethostname \ - xmemcoll \ - xnanosleep \ - xprintf \ - xprintf-posix \ - xreadlink \ - xstrtod \ - xstrtoimax \ - xstrtol \ - xstrtol-error \ - xstrtold \ - xstrtoumax \ - year2038 \ - yesno - -../gnulib-d279bc/build-aux/prefix-gnulib-mk --lib-name=libcoreutils lib/gnulib.mk diff --git a/steps/coreutils-8.32/patches/gperf_dependency.patch b/steps/coreutils-8.32/patches/gperf_dependency.patch deleted file mode 100644 index 693a1c8..0000000 --- a/steps/coreutils-8.32/patches/gperf_dependency.patch +++ /dev/null @@ -1,50 +0,0 @@ -SPDX-FileCopyrightText: 2021 Melg Eight -SPDX-License-Identifier: GPL-3.0-or-later - -Remove dependency on gperf. This drops support for outputting unicode -characters. We do that, because inclusion of unicodeio.h and propername.h -from gnulib brings dependencies on gperf generated files. We don't have -gperf at this stage so we can't regenerate them. - ---- ./src/printf.c -+++ ./src/printf.c -@@ -59,7 +59,6 @@ - #include "die.h" - #include "error.h" - #include "quote.h" --#include "unicodeio.h" - #include "xprintf.h" - - /* The official name of this program (e.g., no 'g' prefix). */ -@@ -292,8 +291,12 @@ print_esc (const char *escstart, bool octal_0) - || (uni_value >= 0xd800 && uni_value <= 0xdfff)) - die (EXIT_FAILURE, 0, _("invalid universal character name \\%c%0*x"), - esc_char, (esc_char == 'u' ? 4 : 8), uni_value); -- -- print_unicode_char (stdout, uni_value, 0); -+ putchar ('\\'); -+ if (*p) -+ { -+ putchar (*p); -+ p++; -+ } - } - else - { ---- ./src/system.h -+++ ./src/system.h -@@ -361,13 +361,13 @@ enum - #include "version-etc.h" - #undef emit_bug_reporting_address - --#include "propername.h" - /* Define away proper_name (leaving proper_name_utf8, which affects far - fewer programs), since it's not worth the cost of adding ~17KB to - the x86_64 text size of every single program. This avoids a 40% - (almost ~2MB) increase in the on-disk space utilization for the set - of the 100 binaries. */ - #define proper_name(x) (x) -+#define proper_name_utf8(x, y) (x, y) - - #include "progname.h" - diff --git a/steps/coreutils-8.32/sources b/steps/coreutils-8.32/sources deleted file mode 100644 index 689901e..0000000 --- a/steps/coreutils-8.32/sources +++ /dev/null @@ -1,2 +0,0 @@ -http://git.savannah.gnu.org/cgit/coreutils.git/snapshot/coreutils-8.32.tar.gz 6f7cfc0ac6717afb6ba1f41b0da43a713ba0dd97dec1227e32effc12d79f08c1 -http://git.savannah.gnu.org/cgit/gnulib.git/snapshot/gnulib-d279bc.tar.gz 12cfa21abf618a274017d6b18e95fc6582519d7c08e2403e5c5772ccdd5b85f4 diff --git a/steps/coreutils-9.4/import-gnulib.sh b/steps/coreutils-9.4/import-gnulib.sh new file mode 100644 index 0000000..39b1001 --- /dev/null +++ b/steps/coreutils-9.4/import-gnulib.sh @@ -0,0 +1,327 @@ +#!/bin/sh + +# SPDX-FileCopyrightText: 2021 Melg Eight +# SPDX-FileCopyrightText: 2023 fosslinux +# +# SPDX-License-Identifier: GPL-3.0-or-later + +# Regenerate unicode files +pushd ../gnulib-bb5bb43/lib +gcc -Iunictype -o gen-uni-tables gen-uni-tables.c +mv ../../*.txt . +./gen-uni-tables UnicodeData-15.0.0.txt PropList-15.0.0.txt DerivedCoreProperties-15.0.0.txt emoji-data-15.0.0.txt ArabicShaping-15.0.0.txt Scripts-15.0.0.txt Blocks-15.0.0.txt PropList-3.0.1.txt EastAsianWidth-15.0.0.txt LineBreak-15.0.0.txt WordBreakProperty-15.0.0.txt GraphemeBreakProperty-15.0.0.txt CompositionExclusions-15.0.0.txt SpecialCasing-15.0.0.txt CaseFolding-15.0.0.txt 15.0 +popd + +../gnulib-bb5bb43/gnulib-tool --import --local-dir=gl \ + --lib=libcoreutils \ + --source-base=lib \ + --m4-base=m4 \ + --doc-base=doc \ + --tests-base=gnulib-tests \ + --aux-dir=build-aux \ + --with-tests \ + --makefile-name=gnulib.mk \ + --automake-subdir \ + --no-conditional-dependencies \ + --no-libtool \ + --macro-prefix=gl \ + --avoid=canonicalize-lgpl \ + --avoid=dummy \ + acl \ + alignalloc \ + alignasof \ + alloca \ + announce-gen \ + areadlink-with-size \ + areadlinkat-with-size \ + argmatch \ + argv-iter \ + assert \ + assert-h \ + assure \ + attribute \ + autobuild \ + backup-rename \ + backupfile \ + base32 \ + base64 \ + btowc \ + buffer-lcm \ + byteswap \ + c-strcase \ + calloc-gnu \ + canon-host \ + canonicalize \ + chmodat \ + chown \ + chownat \ + cl-strtod \ + cl-strtold \ + cloexec \ + closein \ + closeout \ + config-h \ + configmake \ + copy-file-range \ + count-leading-zeros \ + crypto/md5 \ + crypto/sha1 \ + crypto/sha256 \ + crypto/sha512 \ + crypto/sm3 \ + cycle-check \ + d-ino \ + d-type \ + di-set \ + dirfd \ + dirname \ + do-release-commit-and-tag \ + dtoastr \ + dup2 \ + environ \ + error \ + euidaccess \ + exclude \ + exitfail \ + explicit_bzero \ + faccessat \ + fadvise \ + fchdir \ + fchmodat \ + fchownat \ + fclose \ + fcntl \ + fcntl-safer \ + fd-reopen \ + fdatasync \ + fdopen \ + fdutimensat \ + file-has-acl \ + file-type \ + fileblocks \ + filemode \ + filenamecat \ + filevercmp \ + flexmember \ + fnmatch-gnu \ + fopen-safer \ + fprintftime \ + fpurge \ + free-posix \ + freopen \ + freopen-safer \ + fseeko \ + fstatat \ + fsusage \ + fsync \ + ftoastr \ + ftruncate \ + fts \ + full-read \ + full-write \ + getgroups \ + gethrxtime \ + getline \ + getloadavg \ + getlogin \ + getndelim2 \ + getopt-gnu \ + getpagesize \ + getpass-gnu \ + gettext-h \ + gettime \ + gettime-res \ + getugroups \ + getusershell \ + git-version-gen \ + gitlog-to-changelog \ + gnu-make \ + gnu-web-doc-update \ + gnumakefile \ + gnupload \ + group-member \ + hard-locale \ + hash \ + hash-triple \ + heap \ + host-os \ + human \ + idcache \ + idx \ + ignore-value \ + inttostr \ + inttypes \ + isapipe \ + isatty \ + isblank \ + largefile \ + lchmod \ + lchown \ + ldtoastr \ + lib-ignore \ + libgmp \ + linebuffer \ + link \ + link-follow \ + linkat \ + long-options \ + lstat \ + maintainer-makefile \ + malloc-gnu \ + manywarnings \ + mbrlen \ + mbrtowc \ + mbsalign \ + mbschr \ + mbslen \ + mbswidth \ + memcasecmp \ + memchr \ + memcmp2 \ + mempcpy \ + memrchr \ + mgetgroups \ + minmax \ + mkancesdirs \ + mkdir \ + mkdir-p \ + mkdirat \ + mkfifo \ + mkfifoat \ + mknod \ + mkostemp \ + mkstemp \ + mktime \ + modechange \ + mountlist \ + mpsort \ + netinet_in \ + nproc \ + nstrftime \ + nullptr \ + obstack \ + open \ + openat-safer \ + parse-datetime \ + parse-datetime2 \ + pathmax \ + perl \ + physmem \ + pipe-posix \ + pipe2 \ + posix-shell \ + posixtm \ + posixver \ + priv-set \ + progname \ + propername-lite \ + pthread-cond \ + pthread-mutex \ + pthread-thread \ + pthread_sigmask \ + putenv \ + quote \ + quotearg \ + randint \ + randperm \ + rawmemchr \ + read-file \ + readlink \ + readtokens \ + readtokens0 \ + readutmp \ + realloc-gnu \ + regex \ + remove \ + rename \ + renameat \ + renameatu \ + rmdir \ + root-dev-ino \ + rpmatch \ + safe-read \ + same \ + save-cwd \ + savedir \ + savewd \ + select \ + selinux-at \ + setenv \ + settime \ + sig2str \ + sigaction \ + smack \ + ssize_t \ + stat-macros \ + stat-size \ + stat-time \ + stdbool \ + stdckdint \ + stdlib-safer \ + stpcpy \ + stpncpy \ + strdup-posix \ + strncat \ + strnumcmp \ + strsignal \ + strtoimax \ + strtoumax \ + symlinkat \ + sys_ioctl \ + sys_resource \ + sys_stat \ + sys_wait \ + targetdir \ + tempname \ + termios \ + time_rz \ + timer-time \ + timespec \ + tmpdir \ + tzset \ + uname \ + unicodeio \ + unistd-safer \ + unlink-busy \ + unlinkat \ + unlinkdir \ + unlocked-io \ + unsetenv \ + update-copyright \ + useless-if-before-free \ + userspec \ + utimecmp \ + utimens \ + utimensat \ + vasprintf-posix \ + vc-list-files \ + verify \ + verror \ + version-etc-fsf \ + wchar-single \ + wcswidth \ + wcwidth \ + winsz-ioctl \ + winsz-termios \ + write-any-file \ + xalignalloc \ + xalloc \ + xbinary-io \ + xdectoint \ + xfts \ + xgetcwd \ + xgetgroups \ + xgethostname \ + xmemcoll \ + xnanosleep \ + xprintf \ + xprintf-posix \ + xreadlink \ + xstrtod \ + xstrtoimax \ + xstrtol \ + xstrtol-error \ + xstrtold \ + xstrtoumax \ + year2038-recommended \ + yesno diff --git a/steps/coreutils-8.32/pass1.sh b/steps/coreutils-9.4/pass1.sh similarity index 75% rename from steps/coreutils-8.32/pass1.sh rename to steps/coreutils-9.4/pass1.sh index 6bf5216..f4690da 100755 --- a/steps/coreutils-8.32/pass1.sh +++ b/steps/coreutils-9.4/pass1.sh @@ -1,5 +1,6 @@ # SPDX-FileCopyrightText: 2021 Melg Eight # SPDX-FileCopyrightText: 2022 Andrius Štikonas +# SPDX-FileCopyrightText: 2023 fosslinux # # SPDX-License-Identifier: GPL-3.0-or-later @@ -8,14 +9,17 @@ regenerate_files() { build-aux/gen-lists-of-programs.sh --automake > src/cu-progs.mk build-aux/gen-single-binary.sh src/local.mk > src/single-binary.mk touch ChangeLog - cp ../gnulib-d279bc/build-aux/po/Makefile.in.in po/Makefile.in.in + cp ../gnulib-bb5bb43/build-aux/po/Makefile.in.in po/Makefile.in.in + + # Remove pregenerated gnulib files + pushd ../gnulib-bb5bb43 + rm lib/uniwidth/width*.h + rm lib/unictype/ctype*.h + rm lib/unicase/tolower.h + popd . ../../import-gnulib.sh - # Disable generation of man pages due to lack of needed perl 5.8 - # dependency. - cp man/dummy-man man/help2man - VERSION=$(basename "${BASH_SOURCE[0]}" .sh | sed 's/coreutils-//') echo "$VERSION" > .tarball-version @@ -35,14 +39,16 @@ src_configure() { # In some environments, the configure script would set it to # "no, but it is partly working", and in others it would set it # to "yes", producing different build outputs. + # Also, tell coreutils we don't have perl, which disables help2man FORCE_UNSAFE_CONFIGURE=1 ./configure CFLAGS="-static" \ --prefix="${PREFIX}" \ --build=i386-unknown-linux-musl \ - gl_cv_func_getcwd_path_max="no, but it is partly working" + gl_cv_func_getcwd_path_max="no, but it is partly working" \ + gl_cv_prog_perl="no" } src_compile() { - make "${MAKEJOBS}" PREFIX="${PREFIX}" MAKEINFO="true" + make "${MAKEJOBS}" PREFIX="${PREFIX}" MAKEINFO="true" GPERF="true" } src_install() { diff --git a/steps/coreutils-8.32/patches/force_to_use_nanosleep.patch b/steps/coreutils-9.4/patches/force_to_use_nanosleep.patch similarity index 95% rename from steps/coreutils-8.32/patches/force_to_use_nanosleep.patch rename to steps/coreutils-9.4/patches/force_to_use_nanosleep.patch index f7bdbbc..7668af5 100644 --- a/steps/coreutils-8.32/patches/force_to_use_nanosleep.patch +++ b/steps/coreutils-9.4/patches/force_to_use_nanosleep.patch @@ -7,8 +7,8 @@ We always assume that kernel doesn't have correct implementation and instead use function from gnulib with fix. That fixes reproducibility problem across different kernels. ---- ../gnulib-d279bc/m4/nanosleep.m4 -+++ ../gnulib-d279bc/m4/nanosleep.m4 +--- ../gnulib-bb5bb43/m4/nanosleep.m4 ++++ ../gnulib-bb5bb43/m4/nanosleep.m4 @@ -85,23 +85,9 @@ AC_DEFUN([gl_FUNC_NANOSLEEP], ts_sleep.tv_nsec = 1; #if HAVE_DECL_ALARM diff --git a/steps/coreutils-8.32/patches/remove_gettext.patch b/steps/coreutils-9.4/patches/remove_gettext.patch similarity index 100% rename from steps/coreutils-8.32/patches/remove_gettext.patch rename to steps/coreutils-9.4/patches/remove_gettext.patch diff --git a/steps/coreutils-9.4/sources b/steps/coreutils-9.4/sources new file mode 100644 index 0000000..00d7eca --- /dev/null +++ b/steps/coreutils-9.4/sources @@ -0,0 +1,17 @@ +http://git.savannah.gnu.org/cgit/coreutils.git/snapshot/coreutils-9.4.tar.xz 8fb56810310253300b3d6f84e68dc97eb2d74e1f4f78e05776831d9d82e4f2d7 +http://git.savannah.gnu.org/cgit/gnulib.git/snapshot/gnulib-bb5bb43.tar.gz b8aa1ac1b18c67f081486069e6a7a5564f20431c2313a94c20a46dcfb904be2a +http://ftp.unicode.org/Public/15.0.0/ucd/UnicodeData.txt 806e9aed65037197f1ec85e12be6e8cd870fc5608b4de0fffd990f689f376a73 UnicodeData-15.0.0.txt +http://ftp.unicode.org/Public/15.0.0/ucd/PropList.txt e05c0a2811d113dae4abd832884199a3ea8d187ee1b872d8240a788a96540bfd PropList-15.0.0.txt +http://ftp.unicode.org/Public/15.0.0/ucd/DerivedCoreProperties.txt d367290bc0867e6b484c68370530bdd1a08b6b32404601b8c7accaf83e05628d DerivedCoreProperties-15.0.0.txt +http://ftp.unicode.org/Public/15.0.0/ucd/emoji/emoji-data.txt 29071dba22c72c27783a73016afb8ffaeb025866740791f9c2d0b55cc45a3470 emoji-data-15.0.0.txt +http://ftp.unicode.org/Public/15.0.0/ucd/ArabicShaping.txt eb840f36e0a7446293578c684a54c6d83d249abde7bdd4dfa89794af1d7fe9e9 ArabicShaping-15.0.0.txt +http://ftp.unicode.org/Public/15.0.0/ucd/Scripts.txt cca85d830f46aece2e7c1459ef1249993dca8f2e46d51e869255be140d7ea4b0 Scripts-15.0.0.txt +http://ftp.unicode.org/Public/15.0.0/ucd/Blocks.txt 529dc5d0f6386d52f2f56e004bbfab48ce2d587eea9d38ba546c4052491bd820 Blocks-15.0.0.txt +http://ftp.unicode.org/Public/3.0-Update1/PropList-3.0.1.txt 909eef4adbeddbdddcd9487c856fe8cdbb8912aa8eb315ed7885b6ef65f4dc4c +http://ftp.unicode.org/Public/15.0.0/ucd/EastAsianWidth.txt 743e7bc435c04ab1a8459710b1c3cad56eedced5b806b4659b6e69b85d0adf2a EastAsianWidth-15.0.0.txt +http://ftp.unicode.org/Public/15.0.0/ucd/LineBreak.txt 012bca868e2c4e59a5a10a7546baf0c6fb1b2ef458c277f054915c8a49d292bf LineBreak-15.0.0.txt +http://ftp.unicode.org/Public/15.0.0/ucd/auxiliary/WordBreakProperty.txt 5188a56e91593467c2e912601ebc78750e6adc9b04541b8c5becb5441e388ce2 WordBreakProperty-15.0.0.txt +http://ftp.unicode.org/Public/15.0.0/ucd/auxiliary/GraphemeBreakProperty.txt 5a0f8748575432f8ff95e1dd5bfaa27bda1a844809e17d6939ee912bba6568a1 GraphemeBreakProperty-15.0.0.txt +http://ftp.unicode.org/Public/15.0.0/ucd/CompositionExclusions.txt 3b019c0a33c3140cbc920c078f4f9af2680ba4f71869c8d4de5190667c70b6a3 CompositionExclusions-15.0.0.txt +http://ftp.unicode.org/Public/15.0.0/ucd/SpecialCasing.txt 78b29c64b5840d25c11a9f31b665ee551b8a499eca6c70d770fcad7dd710f494 SpecialCasing-15.0.0.txt +http://ftp.unicode.org/Public/15.0.0/ucd/CaseFolding.txt cdd49e55eae3bbf1f0a3f6580c974a0263cb86a6a08daa10fbf705b4808a56f7 CaseFolding-15.0.0.txt diff --git a/steps/manifest b/steps/manifest index 611bf40..2eff754 100644 --- a/steps/manifest +++ b/steps/manifest @@ -131,7 +131,7 @@ build: xz-5.4.1 build: file-5.44 build: libtool-2.4.7 build: tar-1.34 -build: coreutils-8.32 +build: coreutils-9.4 build: pkg-config-0.29.2 build: make-4.2.1 build: gmp-6.2.1 From 46268e2882197529f336989bceabad56f391adc5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Stefanik?= Date: Mon, 22 Jan 2024 22:57:42 +0100 Subject: [PATCH 02/24] Update builder-hex0 for USB boot support --- builder-hex0 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/builder-hex0 b/builder-hex0 index 8a6be6d..8621e56 160000 --- a/builder-hex0 +++ b/builder-hex0 @@ -1 +1 @@ -Subproject commit 8a6be6d30fda0357fdeb4aa4bbbc6d475f9869b2 +Subproject commit 8621e56191c635c04fa68687e411016c2b1deab7 From 67aa2a4826753e806c72f53bbb7433bbb6c4f979 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Stefanik?= Date: Mon, 22 Jan 2024 22:59:25 +0100 Subject: [PATCH 03/24] Fix the default build script used by "build " Before the simplify refactor, the convention was to name the first or default build script ".sh". The refactor changed this default to "pass1.sh", with "pass2.sh" and so on used for subsequent passes. This wasn't an issue when building usig scripts generated by script-generator (which explicitly declares the build script to use), but broke running "build " without an explicit script name from the post-bootstrap bash prompt. By deriving the script name from the current revision/pass number, this commit restores that functionality. An unfortunate blemish is that we number build scripts from 1, but repo tarballs from 0 - it would be nice to standardize on a single indexing convention. --- steps/helpers.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/steps/helpers.sh b/steps/helpers.sh index 11e0632..5035186 100755 --- a/steps/helpers.sh +++ b/steps/helpers.sh @@ -113,11 +113,12 @@ bin_preseed() { # that can be overridden on per package basis in the build script. # build takes two arguments: # 1) name-version of the package -# 2) optionally specify build script. Default is name-version.sh +# 2) optionally specify build script. Default is pass$((revision+1)).sh # 3) optionally specify directory to cd into build() { pkg=$1 - script_name=${2:-${pkg}.sh} + get_revision "${pkg}" + script_name=${2:-pass$((revision+1)).sh} dirname=${3:-${pkg}} # shellcheck disable=SC2015 @@ -176,7 +177,6 @@ build() { call $build_stage echo "${pkg}: creating package." - get_revision "${pkg}" cd "${DESTDIR}" src_pkg From 679f73bbf126eab1ea8e73c10fc900f47c0ad064 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eduardo=20S=C3=A1nchez=20Mu=C3=B1oz?= Date: Thu, 28 Dec 2023 14:04:41 +0100 Subject: [PATCH 04/24] Create disk images without root `mke2fs` has a `-d` option that allows to populate the newly created filesystem without needing to temporarily mount it. That allows to use `parted` and `mkfs.ext3` on regular files without needing root access. --- lib/generator.py | 30 +++++++++++++----------------- lib/target.py | 46 ++++++++-------------------------------------- lib/utils.py | 13 +++++-------- 3 files changed, 26 insertions(+), 63 deletions(-) diff --git a/lib/generator.py b/lib/generator.py index 49b5f18..d8840ef 100755 --- a/lib/generator.py +++ b/lib/generator.py @@ -59,26 +59,16 @@ class Generator(): # argument matrix ... or we could just use ext3 instead which # is effectively universally the same if kernel_bootstrap: - init_path = os.path.join(self.target_dir, 'init') + self.target_dir = os.path.join(self.target_dir, 'init') + os.mkdir(self.target_dir) - os.mkdir(init_path) - self.target_dir = init_path - - if self.repo_path or self.external_sources: - target.add_disk("external", filesystem="ext3") - target.mount_disk("external", "external") - else: + if not self.repo_path and not self.external_sources: self.external_dir = os.path.join(self.target_dir, 'external') elif using_kernel: self.target_dir = os.path.join(self.target_dir, 'disk') - target.add_disk("disk", - filesystem="ext3", - size=(str(target_size) + "M") if target_size else "16G", - bootable=True) - target.mount_disk("disk", "disk") self.external_dir = os.path.join(self.target_dir, 'external') - os.makedirs(self.external_dir, exist_ok=True) + os.makedirs(self.external_dir) if self.early_preseed: # Extract tar containing preseed @@ -103,10 +93,16 @@ class Generator(): if kernel_bootstrap: self.create_builder_hex0_disk_image(self.target_dir + '.img', target_size) - if kernel_bootstrap and (self.external_sources or self.repo_path): - target.umount_disk('external') + if self.repo_path or self.external_sources: + mkfs_args = ['-d', os.path.join(target.path, 'external')] + target.add_disk("external", filesystem="ext3", mkfs_args=mkfs_args) elif using_kernel: - target.umount_disk('disk') + mkfs_args = ['-d', os.path.join(target.path, 'disk')] + target.add_disk("disk", + filesystem="ext3", + size=(str(target_size) + "M") if target_size else "16G", + bootable=True, + mkfs_args=mkfs_args) def steps(self): """Copy in steps.""" diff --git a/lib/target.py b/lib/target.py index db4b474..3aa0d3d 100644 --- a/lib/target.py +++ b/lib/target.py @@ -8,10 +8,9 @@ Contains a class that represents a target directory """ import enum -import getpass import os -from lib.utils import mount, umount, create_disk, run_as_root +from lib.utils import mount, create_disk class TargetType(enum.Enum): """Different types of target dirs we can have""" @@ -24,7 +23,6 @@ class Target: """ _disks = {} - _disk_filesystems = {} _mountpoints = {} def __init__(self, path="target"): @@ -34,15 +32,6 @@ class Target: if not os.path.exists(self.path): os.mkdir(self.path) - def __del__(self): - for path in self._mountpoints: - print(f"Unmounting {path}") - umount(path) - - for disk in self._disks.values(): - print(f"Detaching {disk}") - run_as_root("losetup", "-d", disk) - def tmpfs(self, size="8G"): """Mount a tmpfs""" print(f"Mounting tmpfs on {self.path}") @@ -59,32 +48,13 @@ class Target: mkfs_args=None): """Add a disk""" disk_path = os.path.join(self.path, f"{name}.img") - self._disks[name] = create_disk(disk_path, - tabletype, - filesystem, - size, - bootable, - mkfs_args) - self._disk_filesystems[name] = filesystem - # Allow executing user to access it - run_as_root("chown", getpass.getuser(), self._disks[name]) - - def mount_disk(self, name, mountpoint=None): - """Mount the disk""" - if mountpoint is None: - mountpoint = f"{name}_mnt" - mountpoint = os.path.join(self.path, mountpoint) - os.mkdir(mountpoint) - mount(self._disks[name] + "p1", mountpoint, self._disk_filesystems[name]) - # Allow executing user to access it - run_as_root("chown", getpass.getuser(), mountpoint) - self._mountpoints[name] = mountpoint - return mountpoint - - def umount_disk(self, name): - """Unmount a disk""" - umount(self._mountpoints[name]) - del self._mountpoints[name] + create_disk(disk_path, + tabletype, + filesystem, + size, + bootable, + mkfs_args) + self._disks[name] = disk_path def get_disk(self, name): """Get the path to a device of a disk""" diff --git a/lib/utils.py b/lib/utils.py index d88ae4d..1e4f2af 100755 --- a/lib/utils.py +++ b/lib/utils.py @@ -37,16 +37,13 @@ def create_disk(image, disk_type, fs_type, size, bootable=False, mkfs_args=None) if mkfs_args is None: mkfs_args = [] run('truncate', '-s', size, image) - # First find the device we will use, then actually use it - loop_dev = run_as_root('losetup', '-f', capture_output=True).stdout.decode().strip() - run_as_root('losetup', '-P', loop_dev, image) # Create the partition if disk_type != "none": - run_as_root('parted', '--script', image, 'mklabel', disk_type, 'mkpart', - 'primary', fs_type, '1GiB' if bootable else '1MiB', '100%') - run_as_root('partprobe', loop_dev) - run_as_root('mkfs.' + fs_type, loop_dev + "p1", *mkfs_args) - return loop_dev + # 1 GiB if bootable, 1 MiB otherwise + offset = str(1024 * 1024 * (1024 if bootable else 1)) + run('parted', '--script', image, 'mklabel', disk_type, 'mkpart', + 'primary', fs_type, offset + 'B', '100%') + run('mkfs.' + fs_type, image, '-E', 'offset=' + offset, *mkfs_args) def mount(source, target, fs_type, options='', **kwargs): """Mount filesystem""" From 28832256295e6e617730aeede91ae42f120f13b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eduardo=20S=C3=A1nchez=20Mu=C3=B1oz?= Date: Thu, 28 Dec 2023 14:09:20 +0100 Subject: [PATCH 05/24] Only copy no-network distfiles to "init" when `--external-source` is passed (with kernel bootstrap) All distfiles are still copied to "external" --- lib/generator.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/lib/generator.py b/lib/generator.py index d8840ef..ba30c75 100755 --- a/lib/generator.py +++ b/lib/generator.py @@ -29,6 +29,7 @@ class Generator(): self.external_sources = external_sources self.repo_path = repo_path self.source_manifest = self.get_source_manifest(not self.external_sources) + self.early_source_manifest = self.get_source_manifest(True) self.target_dir = None self.external_dir = None @@ -159,9 +160,10 @@ class Generator(): def distfiles(self): """Copy in distfiles""" - def copy_no_network_distfiles(out): + def copy_no_network_distfiles(out, early): # Note that "no disk" implies "no network" for kernel bootstrap mode - for file in self.source_manifest: + manifest = self.early_source_manifest if early else self.source_manifest + for file in manifest: file = file[3].strip() shutil.copy2(os.path.join(self.distfiles_dir, file), os.path.join(out, file)) @@ -171,13 +173,13 @@ class Generator(): if early_distfile_dir != main_distfile_dir: os.makedirs(early_distfile_dir, exist_ok=True) - copy_no_network_distfiles(early_distfile_dir) + copy_no_network_distfiles(early_distfile_dir, True) if self.external_sources: shutil.copytree(self.distfiles_dir, main_distfile_dir, dirs_exist_ok=True) else: os.mkdir(main_distfile_dir) - copy_no_network_distfiles(main_distfile_dir) + copy_no_network_distfiles(main_distfile_dir, False) @staticmethod def output_dir(srcfs_file, dirpath): From f995a749de844964f83795e862e114876042686a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eduardo=20S=C3=A1nchez=20Mu=C3=B1oz?= Date: Thu, 28 Dec 2023 21:45:34 +0100 Subject: [PATCH 06/24] Fix detection of device type (partition/full disk) in move_disk.sh The version of stat available at that point does not support %Lr, so use instead its hexadecimal counterpar (%T) --- steps/jump/move_disk.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/steps/jump/move_disk.sh b/steps/jump/move_disk.sh index ec721f3..2f9cb0c 100755 --- a/steps/jump/move_disk.sh +++ b/steps/jump/move_disk.sh @@ -22,7 +22,9 @@ while ! dd if=/dev/${DISK} of=/dev/null bs=512 count=1; do done # Create partition if it doesn't exist -if [ $(($(stat -c "%Lr" "/dev/${DISK}") % 8)) -eq 0 ]; then +# 'stat -c "%T"' prints the minor device type in hexadecimal. +# The decimal version (with "%Lr") is not available in this version of stat. +if [ $((0x$(stat -c "%T" "/dev/${DISK}") % 8)) -eq 0 ]; then echo "Creating partition table..." # Start at 1GiB, use -S32 -H64 to align to MiB rather than cylinder boundary echo "2097152;" | sfdisk -uS -S32 -H64 --force "/dev/${DISK}" From 8cc26fa60ad34493a33f379728796983ab15630d Mon Sep 17 00:00:00 2001 From: fosslinux Date: Fri, 12 Jan 2024 18:29:24 +1100 Subject: [PATCH 07/24] Remove old relic of "maint" Never actually used in the manifest, and shouldn't have been there --- seed/script-generator.c | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/seed/script-generator.c b/seed/script-generator.c index b9d6905..4b2a01b 100644 --- a/seed/script-generator.c +++ b/seed/script-generator.c @@ -7,6 +7,7 @@ #define MAX_TOKEN 64 #define MAX_STRING 2048 +#include #include #include #include @@ -22,7 +23,6 @@ typedef struct Token Token; #define TYPE_IMPROVE 2 #define TYPE_DEFINE 3 #define TYPE_JUMP 4 -#define TYPE_MAINT 5 struct Directive { Token *tok; @@ -214,7 +214,7 @@ Token *logic(Token *tok, char **val) { /* logic = "(" * (name | * (name "==" value) | - * (name "!=" value) | + * (name "!=" value) | * (logic "||" logic) | * (logic "&&" logic)) * ")" @@ -360,7 +360,7 @@ Token *define(Token *tok, Directive *directive) { } int interpret(Directive *directive) { - /* directive = (build | improve | define | jump | maint) predicate? */ + /* directive = (build | improve | define | jump) predicate? */ Token *tok = directive->tok; if (strcmp(tok->val, "build:") == 0) { tok = fill(tok->next, directive, TYPE_BUILD); @@ -368,8 +368,6 @@ int interpret(Directive *directive) { tok = fill(tok->next, directive, TYPE_IMPROVE); } else if (strcmp(tok->val, "jump:") == 0) { tok = fill(tok->next, directive, TYPE_JUMP); - } else if (strcmp(tok->val, "maint:") == 0) { - tok = fill(tok->next, directive, TYPE_MAINT); } else if (strcmp(tok->val, "define:") == 0) { tok = define(tok->next, directive); return 1; /* There is no codegen for a define. */ @@ -620,8 +618,6 @@ void generate(Directive *directives) { fclose(out); out = start_script(counter, bash_build); counter += 1; - } else if (directive->type == TYPE_MAINT) { - output_call_script(out, "maint", directive->arg, bash_build, 1); } } fclose(out); From bbe121f382365bf2582f9a4925cb564c497ae612 Mon Sep 17 00:00:00 2001 From: fosslinux Date: Fri, 12 Jan 2024 22:06:23 +1100 Subject: [PATCH 08/24] Add uninstall directive to manifest Allows for removal of old files or packages --- seed/script-generator.c | 52 +++++++++++++++++++++++------------ steps/helpers.sh | 61 +++++++++++++++++++++++++++++++++++++++++ steps/manifest | 3 ++ 3 files changed, 99 insertions(+), 17 deletions(-) diff --git a/seed/script-generator.c b/seed/script-generator.c index 4b2a01b..d4b1ad0 100644 --- a/seed/script-generator.c +++ b/seed/script-generator.c @@ -11,7 +11,6 @@ #include #include #include -#include struct Token { char *val; @@ -23,6 +22,7 @@ typedef struct Token Token; #define TYPE_IMPROVE 2 #define TYPE_DEFINE 3 #define TYPE_JUMP 4 +#define TYPE_UNINSTALL 5 struct Directive { Token *tok; @@ -212,12 +212,12 @@ Token *fill(Token *tok, Directive *directive, int type) { Token *logic(Token *tok, char **val) { /* logic = "(" - * (name | - * (name "==" value) | - * (name "!=" value) | - * (logic "||" logic) | - * (logic "&&" logic)) - * ")" + * (name | + * (name "==" value) | + * (name "!=" value) | + * (logic "||" logic) | + * (logic "&&" logic)) + * ")" */ char *lhs = tok->val; @@ -237,15 +237,15 @@ Token *logic(Token *tok, char **val) { lhs = "False"; } } else if (strcmp(tok->val, "!=") == 0) { - /* Case for inequality. */ - rhs = tok->next->val; - tok = tok->next->next; - if (strcmp(get_var(lhs), rhs) == 0) { - lhs = "False"; - } else { - lhs = "True"; - } - } else { + /* Case for inequality. */ + rhs = tok->next->val; + tok = tok->next->next; + if (strcmp(get_var(lhs), rhs) == 0) { + lhs = "False"; + } else { + lhs = "True"; + } + } else { fputs("Expected == or != after ", stderr); fputs(lhs, stderr); fputs(" in logic\n", stderr); @@ -360,7 +360,7 @@ Token *define(Token *tok, Directive *directive) { } int interpret(Directive *directive) { - /* directive = (build | improve | define | jump) predicate? */ + /* directive = (build | improve | define | jump | uninstall) predicate? */ Token *tok = directive->tok; if (strcmp(tok->val, "build:") == 0) { tok = fill(tok->next, directive, TYPE_BUILD); @@ -371,6 +371,20 @@ int interpret(Directive *directive) { } else if (strcmp(tok->val, "define:") == 0) { tok = define(tok->next, directive); return 1; /* There is no codegen for a define. */ + } else if (strcmp(tok->val, "uninstall:") == 0) { + tok = fill(tok->next, directive, TYPE_UNINSTALL); + while (tok != NULL) { + if (strcmp(tok->val, "(") == 0) { + break; + } + if (strlen(directive->arg) + strlen(tok->val) + 1 > MAX_STRING) { + fputs("somehow you have managed to have too many uninstall arguments.\n", stderr); + exit(1); + } + directive->arg = strcat(directive->arg, " "); + directive->arg = strcat(directive->arg, tok->val); + tok = tok->next; + } } if (tok != NULL) { @@ -618,6 +632,10 @@ void generate(Directive *directives) { fclose(out); out = start_script(counter, bash_build); counter += 1; + } else if (directive->type == TYPE_UNINSTALL) { + fputs("uninstall ", out); + fputs(directive->arg, out); + fputs("\n", out); } } fclose(out); diff --git a/steps/helpers.sh b/steps/helpers.sh index 5035186..1f539bc 100755 --- a/steps/helpers.sh +++ b/steps/helpers.sh @@ -79,9 +79,11 @@ _grep() { get_revision() { local pkg=$1 + local oldpwd="${PWD}" cd "/external/repo" # Get revision (n time this package has been built) revision=$( (ls -1 "${pkg}"* 2>/dev/null || true) | wc -l | sed 's/ *//g') + cd "${oldpwd}" } # Installs binary packages from an earlier run @@ -108,6 +110,64 @@ bin_preseed() { return 1 } +# Removes either an existing package or file +uninstall() { + local in_fs in_pkg symlinks + while [ $# -gt 0 ]; do + removing="$1" + case "${removing}" in + /*) + # Removing a file + echo "removing file: ${removing}." + rm -f "${removing}" + ;; + *) + echo "${removing}: uninstalling." + local oldpwd="${PWD}" + mkdir -p "/tmp/removing" + cd "/tmp/removing" + get_revision "${removing}" + local filename="/external/repo/${removing}_$((revision-1)).tar.bz2" + # Initial bzip2 built against meslibc has broken pipes + bzip2 -dc "${filename}" | tar -xf - + # reverse to have files before directories + if command -v find >/dev/null 2>&1; then + find . | sort -r > ../filelist + else + get_files . | tac > ../filelist + fi + # shellcheck disable=SC2162 + while read file; do + if [ -d "${file}" ]; then + if [ -z "$(ls -A "/${file}")" ]; then + rmdir "/${file}" + fi + else + # in some cases we might be uninstalling a file that has already been overwritten + # in this case we don't want to remove it + in_fs="$(sha256sum "${file}" 2>/dev/null | cut -d' ' -f1)" + in_pkg="$(sha256sum "/${file}" 2>/dev/null | cut -d' ' -f1)" + if [ "${in_fs}" = "${in_pkg}" ]; then + rm -f "/${file}" + fi + if [ -h "${file}" ]; then + symlinks="${symlinks} ${file}" + fi + fi + done < ../filelist + rm -f ../filelist + for link in ${symlinks}; do + if [ ! -e "/${link}" ]; then + rm -f "/${link}" + fi + done + cd "${oldpwd}" + ;; + esac + shift + done +} + # Common build steps # Build function provides a few common stages with default implementation # that can be overridden on per package basis in the build script. @@ -236,6 +296,7 @@ extract_file() { *) case "${f}" in *.tar* | *.tgz) + # shellcheck disable=SC2153 if test -e "${PREFIX}/libexec/rmt"; then # Again, we want to split out into words. # shellcheck disable=SC2086 diff --git a/steps/manifest b/steps/manifest index 2eff754..f8d171b 100644 --- a/steps/manifest +++ b/steps/manifest @@ -15,6 +15,9 @@ # eg, define: BUILD_FIWIX = KERNEL_BOOTSTRAP == True || BUILD_KERNELS == True # - jump: jump (usually) to a new kernel, executes a script with that name # eg, jump: fiwix +# - uninstall; removes a package or filenames +# eg, uninstall: perl-5.6.2 +# eg, uninstall: /usr/bin/lex /usr/bin/flex # # The following directives have special significance: # - build directives beginning with "bash" (as well as jumps) trigger the generation of From 5b84cdd1787ba627b66f05d426a2da1c1e7fe80a Mon Sep 17 00:00:00 2001 From: fosslinux Date: Fri, 12 Jan 2024 22:09:22 +1100 Subject: [PATCH 09/24] Don't touch live filesystem in bash-5.2.15 Rather, uninstall existing bash before bash is built --- steps/bash-2.05b/pass1.kaem | 5 +---- steps/bash-5.2.15/pass1.sh | 4 ---- steps/helpers.sh | 10 +++++----- steps/manifest | 1 + 4 files changed, 7 insertions(+), 13 deletions(-) diff --git a/steps/bash-2.05b/pass1.kaem b/steps/bash-2.05b/pass1.kaem index f62e913..879b01e 100755 --- a/steps/bash-2.05b/pass1.kaem +++ b/steps/bash-2.05b/pass1.kaem @@ -47,10 +47,7 @@ make # Install install bash ${PREFIX}/bin/ -mkdir /bin/ -ln -s ${PREFIX}/bin/bash /bin/bash -ln -s ${PREFIX}/bin/bash /bin/sh -ln -s ${PREFIX}/bin/bash ${PREFIX}/bin/sh +install bash ${PREFIX}/bin/sh cd ../.. diff --git a/steps/bash-5.2.15/pass1.sh b/steps/bash-5.2.15/pass1.sh index d8e69ef..c7a9338 100755 --- a/steps/bash-5.2.15/pass1.sh +++ b/steps/bash-5.2.15/pass1.sh @@ -53,9 +53,5 @@ src_compile() { src_install() { install -D bash "${DESTDIR}${PREFIX}/bin/bash" - # Work around weird symlink bug install bash "${DESTDIR}${PREFIX}/bin/sh" - - # Needs special handling b/c is currently running - tar doesn't like this - rm -f "${PREFIX}/bin/bash" "${PREFIX}/bin/sh" } diff --git a/steps/helpers.sh b/steps/helpers.sh index 1f539bc..9d15de6 100755 --- a/steps/helpers.sh +++ b/steps/helpers.sh @@ -95,11 +95,6 @@ bin_preseed() { if [ "${UPDATE_CHECKSUMS}" = "True" ] || src_checksum "${pkg}" $((revision)); then echo "${pkg}: installing prebuilt package." mv "${pkg}_${revision}"* /external/repo || return 1 - if [[ "${pkg}" == bash-* ]]; then - # tar does not like overwriting running bash - # shellcheck disable=SC2153 - rm -f "${PREFIX}/bin/bash" "${PREFIX}/bin/sh" - fi cd "/external/repo" rm -f /tmp/filelist.txt src_apply "${pkg}" $((revision)) @@ -471,6 +466,11 @@ src_apply() { TAR_PREFIX="/tmp/" fi + # Bash does not like to be overwritten + if [[ "${pkg}" == bash-* ]]; then + rm "${PREFIX}/bin/bash" + fi + # Overwriting files is mega busted, so do it manually # shellcheck disable=SC2162 if [ -e /tmp/filelist.txt ]; then diff --git a/steps/manifest b/steps/manifest index f8d171b..e05f36c 100644 --- a/steps/manifest +++ b/steps/manifest @@ -74,6 +74,7 @@ build: coreutils-6.10 build: gawk-3.0.4 build: perl-5.000 build: perl-5.003 +uninstall: perl-5.000 build: perl5.004-05 build: perl5.005-03 build: perl-5.6.2 From 3669db9125b7141b234a1bb48dd04a6cc419caeb Mon Sep 17 00:00:00 2001 From: fosslinux Date: Fri, 12 Jan 2024 22:12:47 +1100 Subject: [PATCH 10/24] Use merged usr throughout the entire bootstrap --- steps/improve/finalize_fhs.sh | 7 ------- steps/improve/merged_usr.sh | 10 ++++++++++ steps/manifest | 1 + 3 files changed, 11 insertions(+), 7 deletions(-) create mode 100755 steps/improve/merged_usr.sh diff --git a/steps/improve/finalize_fhs.sh b/steps/improve/finalize_fhs.sh index e2a238d..e5c67e5 100755 --- a/steps/improve/finalize_fhs.sh +++ b/steps/improve/finalize_fhs.sh @@ -3,13 +3,6 @@ # SPDX-FileCopyrightText: 2023 fosslinux # # SPDX-License-Identifier: GPL-3.0-or-later -# -# Add the rest of the FHS that we will use and is not created pre-boot -rm -rf /sbin /usr/sbin -ln -s /usr/bin /usr/sbin -for d in bin lib sbin; do - ln -s "/usr/${d}" "/${d}" || true # these might exist if rerunning -done mkdir -p /etc /run /var/log /var/lock /var/spool /var/tmp /var/cache diff --git a/steps/improve/merged_usr.sh b/steps/improve/merged_usr.sh new file mode 100755 index 0000000..14e79d8 --- /dev/null +++ b/steps/improve/merged_usr.sh @@ -0,0 +1,10 @@ +#!/bin/sh +# SPDX-FileCopyrightText: 2023 fosslinux +# +# SPDX-License-Identifier: GPL-3.0-or-later +# +# Add the rest of the FHS that we will use and is not created pre-boot +ln -s bin /usr/sbin +for d in bin lib sbin; do + ln -s "usr/${d}" "/${d}" || true # these might exist if rerunning +done diff --git a/steps/manifest b/steps/manifest index e05f36c..6d5ad94 100644 --- a/steps/manifest +++ b/steps/manifest @@ -53,6 +53,7 @@ build: heirloom-devtools-070527 build: bash-2.05b improve: setup_repo improve: update_env +improve: merged_usr build: flex-2.5.11 build: tcc-0.9.27 improve: musl_libdir From c0485bce2f4b2f868fbf6b1e1d2826313db5ddad Mon Sep 17 00:00:00 2001 From: fosslinux Date: Fri, 12 Jan 2024 22:13:04 +1100 Subject: [PATCH 11/24] Remove unneccessary touching of live filesystem in coreutils-5.0 pass2 --- steps/coreutils-5.0/pass2.sh | 7 ------- 1 file changed, 7 deletions(-) diff --git a/steps/coreutils-5.0/pass2.sh b/steps/coreutils-5.0/pass2.sh index 4252839..df74675 100755 --- a/steps/coreutils-5.0/pass2.sh +++ b/steps/coreutils-5.0/pass2.sh @@ -22,10 +22,3 @@ src_prepare() { cp "${mk_dir}/pass2.mk" Makefile } - -src_install() { - default - - # perl later requires /bin/pwd - ln -s "${PREFIX}/bin/pwd" /bin/pwd -} From 6901877837ebc4f9a2b25141fb63467ad1744326 Mon Sep 17 00:00:00 2001 From: fosslinux Date: Fri, 12 Jan 2024 22:15:09 +1100 Subject: [PATCH 12/24] Remove unnecessary touching of live filesystem in flex-2.5.11 --- steps/flex-2.5.11/pass1.sh | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/steps/flex-2.5.11/pass1.sh b/steps/flex-2.5.11/pass1.sh index 70b0159..a12d75f 100755 --- a/steps/flex-2.5.11/pass1.sh +++ b/steps/flex-2.5.11/pass1.sh @@ -14,14 +14,3 @@ src_prepare() { src_compile() { make -j1 PREFIX="${PREFIX}" } - -src_install() { - if test -d /lex; then - # Remove lex, later make install will symlink lex to flex - rm -rf /lex - rm -f "${PREFIX}/bin/lex" - rm -f "${PREFIX}/lib/mes/libl.a" - fi - - default -} From 718bccc7b20b08635b7de65a13eabaccc1a2f850 Mon Sep 17 00:00:00 2001 From: fosslinux Date: Fri, 12 Jan 2024 22:15:43 +1100 Subject: [PATCH 13/24] Remove yacc using uninstall rather than in src_install of flex-2.6.4 --- steps/flex-2.6.4/pass1.sh | 3 --- steps/manifest | 1 + 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/steps/flex-2.6.4/pass1.sh b/steps/flex-2.6.4/pass1.sh index 3ae7623..902aa31 100755 --- a/steps/flex-2.6.4/pass1.sh +++ b/steps/flex-2.6.4/pass1.sh @@ -20,7 +20,4 @@ src_install() { cd src default cd .. - - # Remove yacc, we won't need it any longer - rm "${PREFIX}/bin/yacc" } diff --git a/steps/manifest b/steps/manifest index 6d5ad94..1a311a0 100644 --- a/steps/manifest +++ b/steps/manifest @@ -65,6 +65,7 @@ build: sed-4.0.9 build: bzip2-1.0.8 build: m4-1.4.7 build: flex-2.6.4 +uninstall: /usr/bin/yacc build: bison-3.4.1 build: bison-3.4.1 build: bison-3.4.1 From 0a98747dab8bf10024228a53dd6deeb55c070907 Mon Sep 17 00:00:00 2001 From: fosslinux Date: Sat, 13 Jan 2024 07:46:47 +1100 Subject: [PATCH 14/24] Remove files unnecessarily kept around --- steps/helpers.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/steps/helpers.sh b/steps/helpers.sh index 9d15de6..cf4785e 100755 --- a/steps/helpers.sh +++ b/steps/helpers.sh @@ -157,6 +157,7 @@ uninstall() { fi done cd "${oldpwd}" + rm -rf "/tmp/removing" ;; esac shift From fb35fcac4cc0ef276d747624e9257a86c0bce329 Mon Sep 17 00:00:00 2001 From: fosslinux Date: Sat, 13 Jan 2024 07:47:17 +1100 Subject: [PATCH 15/24] Uninstall previous perl files using uninstall rather than src_install --- steps/manifest | 3 ++- steps/perl-5.10.1/pass1.sh | 7 ------- steps/perl-5.32.1/pass1.sh | 3 --- steps/perl-5.6.2/pass1.sh | 7 ------- steps/perl5.004-05/pass1.sh | 7 ------- steps/perl5.005-03/pass1.sh | 7 ------- 6 files changed, 2 insertions(+), 32 deletions(-) diff --git a/steps/manifest b/steps/manifest index 1a311a0..c9dec76 100644 --- a/steps/manifest +++ b/steps/manifest @@ -76,10 +76,10 @@ build: coreutils-6.10 build: gawk-3.0.4 build: perl-5.000 build: perl-5.003 -uninstall: perl-5.000 build: perl5.004-05 build: perl5.005-03 build: perl-5.6.2 +uninstall: perl-5.000 perl-5.003 perl5.004-05 perl5.005-03 improve: populate_device_nodes build: autoconf-2.52 build: automake-1.6.3 @@ -150,6 +150,7 @@ build: bison-3.4.2 build: perl-5.10.1 build: dist-3.5-236 build: perl-5.32.1 +uninstall: perl-5.6.2 perl-5.10.1 build: libarchive-3.5.2 build: openssl-1.1.1l build: ca-certificates-3.95 diff --git a/steps/perl-5.10.1/pass1.sh b/steps/perl-5.10.1/pass1.sh index c527da0..e5bad5e 100755 --- a/steps/perl-5.10.1/pass1.sh +++ b/steps/perl-5.10.1/pass1.sh @@ -28,10 +28,3 @@ src_prepare() { mv ext/Digest-SHA ext/Digest/SHA mv ext/Data-Dumper ext/Data/Dumper } - -src_install() { - # Remove old perl - rm -rf "${PREFIX}"/lib/perl5/ - - default -} diff --git a/steps/perl-5.32.1/pass1.sh b/steps/perl-5.32.1/pass1.sh index ba8bdb2..9fb9a9f 100755 --- a/steps/perl-5.32.1/pass1.sh +++ b/steps/perl-5.32.1/pass1.sh @@ -42,9 +42,6 @@ src_configure() { } src_install() { - # Remove old perl - rm -rf "${PREFIX}"/lib/perl5/ - default # Remove messed up manpages diff --git a/steps/perl-5.6.2/pass1.sh b/steps/perl-5.6.2/pass1.sh index cf68c6b..e1914d7 100755 --- a/steps/perl-5.6.2/pass1.sh +++ b/steps/perl-5.6.2/pass1.sh @@ -37,10 +37,3 @@ src_prepare() { src_compile() { make -j1 PREFIX="${PREFIX}" } - -src_install() { - # Remove old perl - rm -rf "${PREFIX}"/lib/perl5/ - - default -} diff --git a/steps/perl5.004-05/pass1.sh b/steps/perl5.004-05/pass1.sh index bdc8217..638a18e 100755 --- a/steps/perl5.004-05/pass1.sh +++ b/steps/perl5.004-05/pass1.sh @@ -18,10 +18,3 @@ src_prepare() { perl ${file}.pl done } - -src_install() { - # Remove old perl - rm -rf "${PREFIX}"/lib/perl5/ - - default -} diff --git a/steps/perl5.005-03/pass1.sh b/steps/perl5.005-03/pass1.sh index c5e1438..ae4289f 100755 --- a/steps/perl5.005-03/pass1.sh +++ b/steps/perl5.005-03/pass1.sh @@ -22,10 +22,3 @@ src_prepare() { rm -f fbyterun.h byterun.c perl bytecode.pl } - -src_install() { - # Remove old perl - rm -rf "${PREFIX}"/lib/perl5/ - - default -} From 62ce1b0c1e76bde491006ab00e1d15013af92a0b Mon Sep 17 00:00:00 2001 From: fosslinux Date: Sat, 13 Jan 2024 07:48:21 +1100 Subject: [PATCH 16/24] Remove old python versions --- steps/manifest | 1 + 1 file changed, 1 insertion(+) diff --git a/steps/manifest b/steps/manifest index c9dec76..963dde7 100644 --- a/steps/manifest +++ b/steps/manifest @@ -185,6 +185,7 @@ build: python-3.3.7 build: python-3.4.10 build: python-3.8.16 build: python-3.11.1 +uninstall: python-2.0.1 python-2.3.7 python-3.1.5 python-3.3.7 python-3.4.10 python-3.8.16 jump: break ( INTERNAL_CI == pass1 ) # scripts are generated in pass1 build: gcc-10.4.0 build: binutils-2.41 From 8d9981772a8db1e9a982a71be7a22709a339767f Mon Sep 17 00:00:00 2001 From: fosslinux Date: Sat, 13 Jan 2024 07:49:33 +1100 Subject: [PATCH 17/24] Dont remove /usr/include (lol, no idea how this ever worked) --- steps/musl-1.1.24/pass3.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/steps/musl-1.1.24/pass3.sh b/steps/musl-1.1.24/pass3.sh index 6a2342d..6f7c1ae 100755 --- a/steps/musl-1.1.24/pass3.sh +++ b/steps/musl-1.1.24/pass3.sh @@ -28,6 +28,5 @@ src_compile() { } src_install() { - rm -rf "${PREFIX}/include" make PREFIX="${PREFIX}" DESTDIR="${DESTDIR}" install } From 7f967fe2dcd3adc5367759becbb363f0497e09d3 Mon Sep 17 00:00:00 2001 From: fosslinux Date: Wed, 24 Jan 2024 14:45:07 +1100 Subject: [PATCH 18/24] Cleanup the filesystem at end of bootstrap --- steps/improve/cleanup_filesystem.sh | 7 +++++++ steps/manifest | 1 + 2 files changed, 8 insertions(+) create mode 100755 steps/improve/cleanup_filesystem.sh diff --git a/steps/improve/cleanup_filesystem.sh b/steps/improve/cleanup_filesystem.sh new file mode 100755 index 0000000..b0d24c8 --- /dev/null +++ b/steps/improve/cleanup_filesystem.sh @@ -0,0 +1,7 @@ +#!/bin/sh +# SPDX-FileCopyrightText: 2024 fosslinux +# +# SPDX-License-Identifier: GPL-3.0-or-later +rm -rf /external/repo-preseeded +rm -rf /steps/*/build +rm -rf /steps/*/src diff --git a/steps/manifest b/steps/manifest index 963dde7..36ded1a 100644 --- a/steps/manifest +++ b/steps/manifest @@ -190,6 +190,7 @@ jump: break ( INTERNAL_CI == pass1 ) # scripts are generated in pass1 build: gcc-10.4.0 build: binutils-2.41 build: gcc-13.1.0 +improve: cleanup_filesystem improve: null_time ( FORCE_TIMESTAMPS == True ) improve: update_checksums ( UPDATE_CHECKSUMS == True ) improve: after From b1e3da4e46647da41a18ea30b44dcdd41fc183cc Mon Sep 17 00:00:00 2001 From: fosslinux Date: Wed, 24 Jan 2024 14:35:34 +1100 Subject: [PATCH 19/24] Move where DESTDIR is made --- steps/helpers.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/steps/helpers.sh b/steps/helpers.sh index cf4785e..bcff41d 100755 --- a/steps/helpers.sh +++ b/steps/helpers.sh @@ -225,6 +225,7 @@ build() { call $build_stage echo "${pkg}: install to fakeroot." + mkdir -p "${DESTDIR}" build_stage=src_install call $build_stage @@ -241,7 +242,6 @@ build() { echo "${pkg}: cleaning up." rm -rf "${SRCDIR}/${pkg}/build" rm -rf "${DESTDIR}" - mkdir -p "${DESTDIR}" echo "${pkg}: installing package." src_apply "${pkg}" "${revision}" From 76217c6b0d719820290e88dd0ef9b810b4c31194 Mon Sep 17 00:00:00 2001 From: fosslinux Date: Wed, 24 Jan 2024 14:35:55 +1100 Subject: [PATCH 20/24] Ensure sources are always cleaned the same Otherwise, in --repo mode, sources are not cleaned identically to how they are in non --repo mode --- steps/improve/clean_sources.sh | 6 ++++++ steps/linux-4.9.10/pass1.sh | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/steps/improve/clean_sources.sh b/steps/improve/clean_sources.sh index c8a8f7a..746472d 100755 --- a/steps/improve/clean_sources.sh +++ b/steps/improve/clean_sources.sh @@ -1,4 +1,5 @@ # SPDX-FileCopyrightText: 2023 Eduardo Sánchez Muñoz +# SPDX-FileCopyrightText: 2024 fosslinux # # SPDX-License-Identifier: GPL-3.0-or-later @@ -37,6 +38,11 @@ for source in "${DISTFILES}/"*; do rm "${source}" done +if [ -e "/external/repo-preseeded/linux-4.9.10_0.tar.bz2" ]; then + # This is done in src_extract out of necessity usually -- I can't think of a better solution :( + rm -f "${DISTFILES}/linux-4.9.10.tar.gz" +fi + unset get_source_filename unset pkgs pkg line unset keep_sources keep_source diff --git a/steps/linux-4.9.10/pass1.sh b/steps/linux-4.9.10/pass1.sh index 0b9a1fe..2c1b619 100644 --- a/steps/linux-4.9.10/pass1.sh +++ b/steps/linux-4.9.10/pass1.sh @@ -7,7 +7,7 @@ src_unpack() { mkdir "${pkg}" - mv "${DISTFILES}/deblob-4.9" "${pkg}/" + cp "${DISTFILES}/deblob-4.9" "${pkg}/" default || true # Predictable link errors - not a problem rm "${DISTFILES}/${pkg}.tar.gz" } From 1665723b70dd12a113489d39e9f00d5932a35cea Mon Sep 17 00:00:00 2001 From: fosslinux Date: Wed, 24 Jan 2024 14:36:54 +1100 Subject: [PATCH 21/24] Respect DESTDIR for lib-dynload directory in py 2.0.1 --- steps/python-2.0.1/patches/destdir.patch | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/steps/python-2.0.1/patches/destdir.patch b/steps/python-2.0.1/patches/destdir.patch index 147264b..3d8d6a5 100644 --- a/steps/python-2.0.1/patches/destdir.patch +++ b/steps/python-2.0.1/patches/destdir.patch @@ -204,3 +204,18 @@ Python 2.0 does not support DESTDIR, so add it in. fi; \ done +@@ -249,10 +249,10 @@ + $(DESTSHARED): + @for i in $(DESTDIRS); \ + do \ +- if test ! -d $$i; then \ +- echo "Creating directory $$i"; \ +- mkdir $$i; \ +- chmod 755 $$i; \ ++ if test ! -d $(DESTDIR)$$i; then \ ++ echo "Creating directory $(DESTDIR)$$i"; \ ++ mkdir $(DESTDIR)$$i; \ ++ chmod 755 $(DESTDIR)$$i; \ + else true; \ + fi; \ + done From 67acb607f6539a69b64d7e111cbbcb5c1f3849b2 Mon Sep 17 00:00:00 2001 From: fosslinux Date: Wed, 24 Jan 2024 14:42:29 +1100 Subject: [PATCH 22/24] Never create pyc files on filesystem --- steps/python-2.0.1/patches/pyc.patch | 26 ++++++++++++++++++++++++++ steps/python-2.3.7/patches/pyc.patch | 25 +++++++++++++++++++++++++ steps/python-2.5.6/patches/pyc.patch | 26 ++++++++++++++++++++++++++ steps/python-3.1.5/pass2.sh | 16 ++++++++-------- steps/python-3.11.1/pass1.sh | 26 ++++++++++++++------------ steps/python-3.3.7/pass1.sh | 20 ++++++++++---------- steps/python-3.4.10/pass1.sh | 20 ++++++++++---------- steps/python-3.8.16/pass1.sh | 13 +++++++------ 8 files changed, 126 insertions(+), 46 deletions(-) create mode 100644 steps/python-2.0.1/patches/pyc.patch create mode 100644 steps/python-2.3.7/patches/pyc.patch create mode 100644 steps/python-2.5.6/patches/pyc.patch diff --git a/steps/python-2.0.1/patches/pyc.patch b/steps/python-2.0.1/patches/pyc.patch new file mode 100644 index 0000000..91ab3d2 --- /dev/null +++ b/steps/python-2.0.1/patches/pyc.patch @@ -0,0 +1,26 @@ +SPDX-FileCopyrightText: 2024 fosslinux + +SPDX-License-Identifier: Python-2.0.1 + +Disable creation of pyc files. + +--- Lib/py_compile.py 2024-01-22 11:28:00.291261389 +1100 ++++ Lib/py_compile.py 2024-01-22 11:28:13.462600939 +1100 +@@ -41,6 +41,7 @@ + directories). + + """ ++ return + import os, marshal, __builtin__ + f = open(file) + try: +--- Python/import.c 2024-01-22 12:23:34.349395727 +1100 ++++ Python/import.c 2024-01-22 12:23:30.299285640 +1100 +@@ -672,6 +672,7 @@ + static void + write_compiled_module(PyCodeObject *co, char *cpathname, long mtime) + { ++ return; + FILE *fp; + + fp = open_exclusive(cpathname); diff --git a/steps/python-2.3.7/patches/pyc.patch b/steps/python-2.3.7/patches/pyc.patch new file mode 100644 index 0000000..be5ce17 --- /dev/null +++ b/steps/python-2.3.7/patches/pyc.patch @@ -0,0 +1,25 @@ +SPDX-FileCopyrightText: 2024 fosslinux + +SPDX-License-Identifier: PSF-2.0 + +Disable creation of pyc files. +--- Lib/py_compile.py 2024-01-22 11:28:44.333395804 +1100 ++++ Lib/py_compile.py 2024-01-22 11:28:53.703636809 +1100 +@@ -112,6 +112,7 @@ + directories). + + """ ++ return + f = open(file, 'U') + try: + timestamp = long(os.fstat(f.fileno()).st_mtime) +--- Python/import.c 2024-01-22 12:24:05.300236204 +1100 ++++ Python/import.c 2024-01-22 12:24:36.513082356 +1100 +@@ -807,6 +807,7 @@ + static void + write_compiled_module(PyCodeObject *co, char *cpathname, long mtime) + { ++ return; + FILE *fp; + + fp = open_exclusive(cpathname); diff --git a/steps/python-2.5.6/patches/pyc.patch b/steps/python-2.5.6/patches/pyc.patch new file mode 100644 index 0000000..1900eb7 --- /dev/null +++ b/steps/python-2.5.6/patches/pyc.patch @@ -0,0 +1,26 @@ +SPDX-FileCopyrightText: 2024 fosslinux + +SPDX-License-Identifier: PSF-2.0 + +Disable creation of pyc files. + +--- Lib/py_compile.py 2024-01-22 11:28:44.333395804 +1100 ++++ Lib/py_compile.py 2024-01-22 11:28:53.703636809 +1100 +@@ -112,6 +112,7 @@ + directories). + + """ ++ return + f = open(file, 'U') + try: + timestamp = long(os.fstat(f.fileno()).st_mtime) +--- Python/import.c 2024-01-22 12:24:59.390701654 +1100 ++++ Python/import.c 2024-01-22 12:25:18.643222249 +1100 +@@ -869,6 +869,7 @@ + static void + write_compiled_module(PyCodeObject *co, char *cpathname, time_t mtime) + { ++ return; + FILE *fp; + + fp = open_exclusive(cpathname); diff --git a/steps/python-3.1.5/pass2.sh b/steps/python-3.1.5/pass2.sh index e8011a6..e112889 100755 --- a/steps/python-3.1.5/pass2.sh +++ b/steps/python-3.1.5/pass2.sh @@ -20,7 +20,7 @@ src_prepare() { mkdir Tools/unicode/in Tools/unicode/out mv ../CP437.TXT Tools/unicode/in/ pushd Tools/unicode - python gencodec.py in/ ../../Lib/encodings/ + python -B gencodec.py in/ ../../Lib/encodings/ popd # Regenerate unicode @@ -29,7 +29,7 @@ src_prepare() { mv "../${f}-3.2.0.txt" . mv "../${f}-5.1.0.txt" "${f}.txt" done - python Tools/unicode/makeunicodedata.py + python -B Tools/unicode/makeunicodedata.py # Regenerate sre_constants.h rm Modules/sre_constants.h @@ -57,22 +57,22 @@ src_compile() { # Temporarily break include cycle patch -Np0 -i graminit-regen.patch # Build pgen - make "${MAKEJOBS}" Parser/pgen + PYTHONDONTWRITEBYTECODE=1 make "${MAKEJOBS}" Parser/pgen # Regen graminit.c and graminit.h - make "${MAKEJOBS}" Include/graminit.h + PYTHONDONTWRITEBYTECODE=1 make "${MAKEJOBS}" Include/graminit.h # Regenerate some Python scripts using the other regenerated files # Must move them out to avoid using Lib/ module files which are # incompatible with running version of Python cp Lib/{symbol,keyword,token}.py . - python symbol.py - python keyword.py - python token.py + python -B symbol.py + python -B keyword.py + python -B token.py # Undo change patch -Np0 -R -i graminit-regen.patch # Now build the main program - make "${MAKEJOBS}" CFLAGS="-U__DATE__ -U__TIME__" + PYTHONDONTWRITEBYTECODE=1 make "${MAKEJOBS}" CFLAGS="-U__DATE__ -U__TIME__" } src_install() { diff --git a/steps/python-3.11.1/pass1.sh b/steps/python-3.11.1/pass1.sh index 869f3f1..93ad41a 100755 --- a/steps/python-3.11.1/pass1.sh +++ b/steps/python-3.11.1/pass1.sh @@ -11,7 +11,7 @@ src_prepare() { # Regenerate ssl_data for ssl module rm Modules/_ssl_data_300.h Modules/_ssl_data.h - python Tools/ssl/make_ssl_data.py ../openssl-1.1.1l Modules/_ssl_data_111.h + python -B Tools/ssl/make_ssl_data.py ../openssl-1.1.1l Modules/_ssl_data_111.h sed -i 's#$(srcdir)/Modules/_ssl_data.h ##' Makefile.pre.in sed -i 's#$(srcdir)/Modules/_ssl_data_300.h ##' Makefile.pre.in @@ -20,27 +20,27 @@ src_prepare() { mkdir Tools/unicode/in Tools/unicode/out mv ../CP437.TXT Tools/unicode/in/ pushd Tools/unicode - python gencodec.py in/ ../../Lib/encodings/ + python -B gencodec.py in/ ../../Lib/encodings/ popd # Regenerate stringprep rm Lib/stringprep.py mv ../rfc3454.txt . - python Tools/unicode/mkstringprep.py > Lib/stringprep.py + python -B Tools/unicode/mkstringprep.py > Lib/stringprep.py # Regenerate unicode rm Modules/unicodedata_db.h Modules/unicodename_db.h Objects/unicodetype_db.h mkdir -p Tools/unicode/data mv ../*.txt ../*.zip Tools/unicode/data/ - python Tools/unicode/makeunicodedata.py + python -B Tools/unicode/makeunicodedata.py # Regenerate Lib/re/_casefix.py rm Lib/re/_casefix.py - python Tools/scripts/generate_re_casefix.py Lib/re/_casefix.py + python -B Tools/scripts/generate_re_casefix.py Lib/re/_casefix.py # Regenerate Programs/test_frozenmain.h rm Programs/test_frozenmain.h - python Programs/freeze_test_frozenmain.py Programs/test_frozenmain.h + python -B Programs/freeze_test_frozenmain.py Programs/test_frozenmain.h # Create dummy Python/stdlib_module_names.h echo 'static const char* _Py_stdlib_module_names[] = {};' > Python/stdlib_module_names.h @@ -69,7 +69,9 @@ src_compile() { # We have to choose the order ourselves because the Makefile is extremely lax about the order # First of all, do everything that doesn't use any C rm Modules/_blake2/blake2s_impl.c - make "${MAKEJOBS}" regen-opcode \ + PYTHONDONTWRITEBYTECODE=1 \ + make "${MAKEJOBS}" \ + regen-opcode \ regen-opcode-targets \ regen-typeslots \ regen-token \ @@ -82,17 +84,17 @@ src_compile() { regen-global-objects # Do the freeze regen process - make "${MAKEJOBS}" regen-frozen - make "${MAKEJOBS}" regen-deepfreeze - make "${MAKEJOBS}" regen-global-objects + PYTHONDONTWRITEBYTECODE=1 make "${MAKEJOBS}" regen-frozen + PYTHONDONTWRITEBYTECODE=1 make "${MAKEJOBS}" regen-deepfreeze + PYTHONDONTWRITEBYTECODE=1 make "${MAKEJOBS}" regen-global-objects make "${MAKEJOBS}" CPPFLAGS="-U__DATE__ -U__TIME__" # Regen Python/stdlib_module_names.h (you must have an existing build first) - make "${MAKEJOBS}" regen-stdlib-module-names + PYTHONDONTWRITEBYTECODE=1 make "${MAKEJOBS}" regen-stdlib-module-names # Now rebuild with proper stdlib_module_names.h - make "${MAKEJOBS}" CPPFLAGS="-U__DATE__ -U__TIME__" + PYTHONDONTWRITEBYTECODE=1 make "${MAKEJOBS}" CPPFLAGS="-U__DATE__ -U__TIME__" } src_install() { diff --git a/steps/python-3.3.7/pass1.sh b/steps/python-3.3.7/pass1.sh index c754a75..b20b65c 100755 --- a/steps/python-3.3.7/pass1.sh +++ b/steps/python-3.3.7/pass1.sh @@ -21,21 +21,21 @@ src_prepare() { mkdir Tools/unicode/in Tools/unicode/out mv ../CP437.TXT Tools/unicode/in/ pushd Tools/unicode - python gencodec.py in/ ../../Lib/encodings/ + python -B gencodec.py in/ ../../Lib/encodings/ popd # Regenerate unicode rm Modules/unicodedata_db.h Modules/unicodename_db.h Objects/unicodetype_db.h mv ../*.txt ../*.zip . - python Tools/unicode/makeunicodedata.py + python -B Tools/unicode/makeunicodedata.py # Regenerate sre_constants.h rm Modules/sre_constants.h cp Lib/sre_constants.py . - python sre_constants.py + python -B sre_constants.py # Regenerate _ssl_data.h - python Tools/ssl/make_ssl_data.py /usr/include/openssl Modules/_ssl_data.h + python -B Tools/ssl/make_ssl_data.py /usr/include/openssl Modules/_ssl_data.h # Regenerate autoconf autoreconf-2.71 -fi @@ -55,21 +55,21 @@ src_configure() { src_compile() { # Build pgen - make "${MAKEJOBS}" Parser/pgen + PYTHONDONTWRITEBYTECODE=1 make "${MAKEJOBS}" Parser/pgen # Regen graminit.c and graminit.h - make "${MAKEJOBS}" Include/graminit.h + PYTHONDONTWRITEBYTECODE=1 make "${MAKEJOBS}" Include/graminit.h # Regenerate some Python scripts using the other regenerated files # Must move them out to avoid using Lib/ module files which are # incompatible with running version of Python cp Lib/{symbol,keyword,token}.py . cp token.py _token.py - python symbol.py - python keyword.py - python token.py + python -B symbol.py + python -B keyword.py + python -B token.py # Now build the main program - make -j1 CFLAGS="-U__DATE__ -U__TIME__" + PYTHONDONTWRITEBYTECODE=1 make -j1 CFLAGS="-U__DATE__ -U__TIME__" } src_install() { diff --git a/steps/python-3.4.10/pass1.sh b/steps/python-3.4.10/pass1.sh index e6de82d..5b6050f 100755 --- a/steps/python-3.4.10/pass1.sh +++ b/steps/python-3.4.10/pass1.sh @@ -21,23 +21,23 @@ src_prepare() { mkdir Tools/unicode/in Tools/unicode/out mv ../CP437.TXT Tools/unicode/in/ pushd Tools/unicode - python gencodec.py in/ ../../Lib/encodings/ + python -B gencodec.py in/ ../../Lib/encodings/ popd # Regenerate clinic find . -name "*.c" -or -name "*.h" | \ xargs grep 'clinic input' -l | \ - xargs -L 1 python Tools/clinic/clinic.py + xargs -L 1 python -B Tools/clinic/clinic.py # Regenerate unicode rm Modules/unicodedata_db.h Modules/unicodename_db.h Objects/unicodetype_db.h mv ../*.txt ../*.zip . - python Tools/unicode/makeunicodedata.py + python -B Tools/unicode/makeunicodedata.py # Regenerate sre_constants.h rm Modules/sre_constants.h cp Lib/sre_constants.py . - python sre_constants.py + python -B sre_constants.py mv sre_constants.h Modules/ # Regenerate autoconf @@ -58,21 +58,21 @@ src_configure() { src_compile() { # Build pgen - make -j1 Parser/pgen + PYTHONDONTWRITEBYTECODE=1 make -j1 Parser/pgen # Regen graminit.c and graminit.h - make -j1 Include/graminit.h + PYTHONDONTWRITEBYTECODE=1 make -j1 Include/graminit.h # Regenerate some Python scripts using the other regenerated files # Must move them out to avoid using Lib/ module files which are # incompatible with running version of Python cp Lib/{symbol,keyword,token}.py . cp token.py _token.py - python symbol.py - python keyword.py - python token.py + python -B symbol.py + python -B keyword.py + python -B token.py # Now build the main program - make -j1 CFLAGS="-U__DATE__ -U__TIME__" + PYTHONDONTWRITEBYTECODE=1 make -j1 CFLAGS="-U__DATE__ -U__TIME__" } src_install() { diff --git a/steps/python-3.8.16/pass1.sh b/steps/python-3.8.16/pass1.sh index df4dd48..de19770 100755 --- a/steps/python-3.8.16/pass1.sh +++ b/steps/python-3.8.16/pass1.sh @@ -15,24 +15,24 @@ src_prepare() { mkdir Tools/unicode/in Tools/unicode/out mv ../CP437.TXT Tools/unicode/in/ pushd Tools/unicode - python gencodec.py in/ ../../Lib/encodings/ + python -B gencodec.py in/ ../../Lib/encodings/ popd # Regenerate unicode rm Modules/unicodedata_db.h Modules/unicodename_db.h Objects/unicodetype_db.h mv ../*.txt ../*.zip . - python Tools/unicode/makeunicodedata.py + python -B Tools/unicode/makeunicodedata.py # Regenerate sre_constants.h rm Modules/sre_constants.h cp Lib/sre_constants.py . - python sre_constants.py + python -B sre_constants.py rm sre_constants.py mv sre_constants.h Modules/ # Regenerate stringprep rm Lib/stringprep.py - python Tools/unicode/mkstringprep.py > Lib/stringprep.py + python -B Tools/unicode/mkstringprep.py > Lib/stringprep.py # Regenerate autoconf autoreconf-2.71 -fi @@ -42,6 +42,7 @@ src_configure() { MACHDEP=linux ac_sys_system=Linux \ CPPFLAGS="-U__DATE__ -U__TIME__" \ LDFLAGS="-L${LIBDIR}" \ + PYTHON_FOR_BUILD="python -B" \ ./configure \ --build=i386-unknown-linux-musl \ --host=i386-unknown-linux-musl \ @@ -53,9 +54,9 @@ src_configure() { src_compile() { # Regenerations rm Modules/_blake2/blake2s_impl.c - make "${MAKEJOBS}" regen-all + PYTHONDONTWRITEBYTECODE=1 make "${MAKEJOBS}" regen-all - make "${MAKEJOBS}" CPPFLAGS="-U__DATE__ -U__TIME__" + PYTHONDONTWRITEBYTECODE=1 make "${MAKEJOBS}" CPPFLAGS="-U__DATE__ -U__TIME__" } src_install() { From 21820767732724416b990684f5058e19c0c1e7a1 Mon Sep 17 00:00:00 2001 From: fosslinux Date: Wed, 24 Jan 2024 17:30:12 +1100 Subject: [PATCH 23/24] Use a constant umask --- rootfs.py | 3 +++ steps/helpers.sh | 3 +++ 2 files changed, 6 insertions(+) diff --git a/rootfs.py b/rootfs.py index a6e2419..c31d5a1 100755 --- a/rootfs.py +++ b/rootfs.py @@ -159,6 +159,9 @@ def main(): else: args.swap = 0 + # Set constant umask + os.umask(0o022) + # bootstrap.cfg try: os.remove(os.path.join('steps', 'bootstrap.cfg')) diff --git a/steps/helpers.sh b/steps/helpers.sh index bcff41d..8a89c29 100755 --- a/steps/helpers.sh +++ b/steps/helpers.sh @@ -7,6 +7,9 @@ # # SPDX-License-Identifier: GPL-3.0-or-later +# Set constant umask +umask 022 + # Get a list of files get_files() { echo "." From 438e01800cf86b7a6646b7e231996d79217bb484 Mon Sep 17 00:00:00 2001 From: fosslinux Date: Thu, 25 Jan 2024 18:50:03 +1100 Subject: [PATCH 24/24] Update checksums --- steps/SHA256SUMS.pkgs | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/steps/SHA256SUMS.pkgs b/steps/SHA256SUMS.pkgs index 5ff2119..8f1d40f 100644 --- a/steps/SHA256SUMS.pkgs +++ b/steps/SHA256SUMS.pkgs @@ -87,20 +87,20 @@ c490016e49bbf77e7f63071f7aa60e8290a0c67f017846def1c3f65bd10d5712 openssl-1.1.1l 71864d042cdc564b65eab21360902c714e9b43f80a19689c5600589529b267e7 patch-2.7.6_0.tar.bz2 5ae7fe43d62d1064c123d9813017015e5e8d5107d0e70f0199576141416ff81d perl-5.000_0.tar.bz2 4994c55e3832649600f190079bd4779c463478a092b167098b1d00eff3358fbe perl-5.003_0.tar.bz2 -74d64a8af080022432fa94dba449090419d25b103d247710dc0b6102a4ad86a6 perl-5.10.1_0.tar.bz2 -fdccd3ba27a44d2149f159040414a04b39bfc72673ba36f50051b61199cc425c perl-5.32.1_0.tar.bz2 -101a791b6843b997ec10d5ce6dc32af2637f687772674eb6f1cdc1c8ff836a03 perl-5.6.2_0.tar.bz2 ae6c84e55c2d9bcd7b80bf780ae6921fe890608123c9ba904e1b7d90759ade3d perl5.004-05_0.tar.bz2 8cedd2240bbbd5bca65a1362998ed73884756aa7ff5208226d3fa22c68868052 perl5.005-03_0.tar.bz2 +74d64a8af080022432fa94dba449090419d25b103d247710dc0b6102a4ad86a6 perl-5.10.1_0.tar.bz2 +71ad3cadba5801cb19d4520825d4b3606713807b1eaa5eb3c49b3149bc2675ad perl-5.32.1_0.tar.bz2 +101a791b6843b997ec10d5ce6dc32af2637f687772674eb6f1cdc1c8ff836a03 perl-5.6.2_0.tar.bz2 1b9d4260edf7b2241d10e4c4ad17d0f90047bd4bf42f2487a7133902529e9dfe pkg-config-0.29.2_0.tar.bz2 -1e882c3206f9d1de2a9be8b5c6ae4cc65e80a4de607bd521058577bf4169c0e9 python-2.0.1_0.tar.bz2 -aba9710341db75b78c7bc1eb4ef45b9496e23f7a356128af6c2b116ee0f3f31a python-2.0.1_1.tar.bz2 -d497c9b614194b941620bb5c5111fc72eca8cafd7d4f476eacb24fb7f909b614 python-2.3.7_0.tar.bz2 -8a977205933431c2a4207f647cb683b570dfdb0146e21abf5fab3f8426e1356b python-2.3.7_1.tar.bz2 -34e5083ed3e72da5aa5950acebf9e95464089d693e3d6a047a2b69b6103f5ca9 python-2.5.6_0.tar.bz2 +2f7198009e4d021d52ee4ce86241b4936fb88349c20cc8b6c286261368878c3c python-2.0.1_0.tar.bz2 +b5d86ddc98cfbc684b03f1c84c786caaad810d5e4c7be38089f324eb3c276ad9 python-2.0.1_1.tar.bz2 +396577cdd0cc61d76420a1771c64156e49e8f9d00430c82feb88ad933b341632 python-2.3.7_0.tar.bz2 +2499cb7f10f292c3506fbf1b6a876195179ec98edfe7b8c357140137a1449492 python-2.3.7_1.tar.bz2 +2dd06364e281da421a16251fa2258df201efd180461718f5a000012c4b2bdfe5 python-2.5.6_0.tar.bz2 +52ffb1ea6f2b893a6fd26f930c8ff63f78ddcc31ac3ec9c2ddade555205aa1ef python-3.11.1_0.tar.bz2 3508248f299b73c50e3607c4c294d40face05170476a5026b0821aed69025863 python-3.1.5_0.tar.bz2 12b1ffc7ec98ba8f807160b93ba69a694d5395567c3bcac1e49e8f8d1d50de43 python-3.1.5_1.tar.bz2 -52ffb1ea6f2b893a6fd26f930c8ff63f78ddcc31ac3ec9c2ddade555205aa1ef python-3.11.1_0.tar.bz2 60b93253a2078f849f81e7e1ed6233e30702f03b1893640eee95671d814f5514 python-3.3.7_0.tar.bz2 da7c8ec579dd225c0d8bee63d95aeeb27ac2d5a60d4eefe298508cbf86bf506c python-3.4.10_0.tar.bz2 0be505f63205b4bc1b1421896c610468ad1a2194bbc4c9abf58f61685c2023d1 python-3.8.16_0.tar.bz2