diff --git a/builder-hex0 b/builder-hex0 index 8a6be6d3..8621e561 160000 --- a/builder-hex0 +++ b/builder-hex0 @@ -1 +1 @@ -Subproject commit 8a6be6d30fda0357fdeb4aa4bbbc6d475f9869b2 +Subproject commit 8621e56191c635c04fa68687e411016c2b1deab7 diff --git a/lib/generator.py b/lib/generator.py index 49b5f186..ba30c758 100755 --- a/lib/generator.py +++ b/lib/generator.py @@ -29,6 +29,7 @@ def __init__(self, arch, external_sources, early_preseed, repo_path): 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 @@ -59,26 +60,16 @@ def prepare(self, target, using_kernel=False, kernel_bootstrap=False, target_siz # 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 +94,16 @@ def prepare(self, target, using_kernel=False, kernel_bootstrap=False, target_siz 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.""" @@ -163,9 +160,10 @@ def create_fiwix_file_list(self): 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)) @@ -175,13 +173,13 @@ def copy_no_network_distfiles(out): 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): diff --git a/lib/target.py b/lib/target.py index db4b4746..3aa0d3d6 100644 --- a/lib/target.py +++ b/lib/target.py @@ -8,10 +8,9 @@ """ 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 @@ def __init__(self, path="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 @@ def add_disk(self, 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 d88ae4d4..1e4f2af6 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""" diff --git a/rootfs.py b/rootfs.py index a6e2419f..c31d5a18 100755 --- a/rootfs.py +++ b/rootfs.py @@ -159,6 +159,9 @@ def check_types(): else: args.swap = 0 + # Set constant umask + os.umask(0o022) + # bootstrap.cfg try: os.remove(os.path.join('steps', 'bootstrap.cfg')) diff --git a/seed/script-generator.c b/seed/script-generator.c index b9d69057..d4b1ad0a 100644 --- a/seed/script-generator.c +++ b/seed/script-generator.c @@ -7,10 +7,10 @@ #define MAX_TOKEN 64 #define MAX_STRING 2048 +#include #include #include #include -#include struct Token { char *val; @@ -22,7 +22,7 @@ typedef struct Token Token; #define TYPE_IMPROVE 2 #define TYPE_DEFINE 3 #define TYPE_JUMP 4 -#define TYPE_MAINT 5 +#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 | maint) 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); @@ -368,11 +368,23 @@ 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. */ + } 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) { @@ -620,8 +632,10 @@ 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); + } else if (directive->type == TYPE_UNINSTALL) { + fputs("uninstall ", out); + fputs(directive->arg, out); + fputs("\n", out); } } fclose(out); diff --git a/steps/SHA256SUMS.pkgs b/steps/SHA256SUMS.pkgs index e039e29b..8f1d40ff 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 @@ -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 diff --git a/steps/bash-2.05b/pass1.kaem b/steps/bash-2.05b/pass1.kaem index f62e913a..879b01e1 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 d8e69ef0..c7a9338e 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/coreutils-5.0/pass2.sh b/steps/coreutils-5.0/pass2.sh index 4252839d..df74675a 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 -} diff --git a/steps/coreutils-8.32/import-gnulib.sh b/steps/coreutils-8.32/import-gnulib.sh deleted file mode 100644 index 3895851e..00000000 --- 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 693a1c89..00000000 --- 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 689901eb..00000000 --- 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 00000000..39b10017 --- /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 6bf52160..f4690da1 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,13 +9,16 @@ 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 - . ../../import-gnulib.sh + # Remove pregenerated gnulib files + pushd ../gnulib-bb5bb43 + rm lib/uniwidth/width*.h + rm lib/unictype/ctype*.h + rm lib/unicase/tolower.h + popd - # Disable generation of man pages due to lack of needed perl 5.8 - # dependency. - cp man/dummy-man man/help2man + . ../../import-gnulib.sh 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 f7bdbbcd..7668af5d 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 00000000..00d7eca4 --- /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/flex-2.5.11/pass1.sh b/steps/flex-2.5.11/pass1.sh index 70b01596..a12d75fa 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 -} diff --git a/steps/flex-2.6.4/pass1.sh b/steps/flex-2.6.4/pass1.sh index 3ae76232..902aa313 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/helpers.sh b/steps/helpers.sh index 11e06328..8a89c299 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 "." @@ -79,9 +82,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 @@ -93,11 +98,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)) @@ -108,16 +108,76 @@ 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}" + rm -rf "/tmp/removing" + ;; + 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. # 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 @@ -168,6 +228,7 @@ build() { call $build_stage echo "${pkg}: install to fakeroot." + mkdir -p "${DESTDIR}" build_stage=src_install call $build_stage @@ -176,7 +237,6 @@ build() { call $build_stage echo "${pkg}: creating package." - get_revision "${pkg}" cd "${DESTDIR}" src_pkg @@ -185,7 +245,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}" @@ -236,6 +295,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 @@ -410,6 +470,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/improve/clean_sources.sh b/steps/improve/clean_sources.sh index c8a8f7ab..746472d7 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/improve/cleanup_filesystem.sh b/steps/improve/cleanup_filesystem.sh new file mode 100755 index 00000000..b0d24c86 --- /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/improve/finalize_fhs.sh b/steps/improve/finalize_fhs.sh index e2a238d8..e5c67e5b 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 00000000..14e79d87 --- /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/jump/move_disk.sh b/steps/jump/move_disk.sh index ec721f3b..2f9cb0c6 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}" diff --git a/steps/linux-4.9.10/pass1.sh b/steps/linux-4.9.10/pass1.sh index 0b9a1fe2..2c1b6191 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" } diff --git a/steps/manifest b/steps/manifest index 611bf40e..36ded1a5 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 @@ -50,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 @@ -61,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 @@ -74,6 +79,7 @@ build: perl-5.003 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 @@ -131,7 +137,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 @@ -144,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 @@ -178,10 +185,12 @@ 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 build: gcc-13.1.0 +improve: cleanup_filesystem improve: null_time ( FORCE_TIMESTAMPS == True ) improve: update_checksums ( UPDATE_CHECKSUMS == True ) improve: after diff --git a/steps/musl-1.1.24/pass3.sh b/steps/musl-1.1.24/pass3.sh index 6a2342db..6f7c1ae2 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 } diff --git a/steps/perl-5.10.1/pass1.sh b/steps/perl-5.10.1/pass1.sh index c527da0b..e5bad5ed 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 ba8bdb24..9fb9a9f5 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 cf68c6bb..e1914d7c 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 bdc82170..638a18e2 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 c5e14383..ae4289ff 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 -} diff --git a/steps/python-2.0.1/patches/destdir.patch b/steps/python-2.0.1/patches/destdir.patch index 147264bb..3d8d6a58 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 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 00000000..91ab3d22 --- /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 00000000..be5ce17a --- /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 00000000..1900eb7e --- /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 e8011a60..e112889a 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 869f3f17..93ad41ad 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 c754a752..b20b65cb 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 e6de82d3..5b6050f0 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 df4dd480..de197707 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() {