diff --git a/builder-hex0 b/builder-hex0 index 8621e561..d49733d3 160000 --- a/builder-hex0 +++ b/builder-hex0 @@ -1 +1 @@ -Subproject commit 8621e56191c635c04fa68687e411016c2b1deab7 +Subproject commit d49733d3e89538b2845f2be90ca6839deabf0042 diff --git a/lib/generator.py b/lib/generator.py index ba30c758..272f89fe 100755 --- a/lib/generator.py +++ b/lib/generator.py @@ -98,7 +98,7 @@ class Generator(): mkfs_args = ['-d', os.path.join(target.path, 'external')] target.add_disk("external", filesystem="ext3", mkfs_args=mkfs_args) elif using_kernel: - mkfs_args = ['-d', os.path.join(target.path, 'disk')] + mkfs_args = ['-F', '-d', os.path.join(target.path, 'disk')] target.add_disk("disk", filesystem="ext3", size=(str(target_size) + "M") if target_size else "16G", diff --git a/parts.rst b/parts.rst index f211a9ac..9b0146ba 100644 --- a/parts.rst +++ b/parts.rst @@ -417,8 +417,8 @@ bzip2 1.0.8 ``bzip2`` is rebuilt unpatched with the new tcc and musl fixing issues with reading files from stdin that existed in the previous build. -m4 1.4.7 -======== +m4 1.4.10 +========= ``m4`` is the first piece of software we need in the autotools suite, flex 2.6.4 and bison. It allows macros to be defined and files to be @@ -1224,3 +1224,46 @@ to ensure the compiler is suitable for downstream consumption; really be handled by the libc, which is what most distributions do. * LTO now fully functions correctly, despite both the linker and the compiler being static binaries. + +libmd 1.1.0 +=========== + +libmd provides message digest functions. In GNU/Linux, this is typically +provided by glibc, but we need libmd to provide it since we are using musl. + +libbsd 0.11.8 +============= + +libbsd provides BSD-centric functions. We need this in order to build shadow, +which expects either glibc or libbsd. + +shadow 4.14.3 +============= + +shadow provides a variety of command line utilites to work with users and +groups, avoiding the need for manual modification of ``/etc/passwd`` and +``/etc/group``. This allows unprivileged users to be created by, or for, +post-bootstrap build systems. + +opendoas 6.8.2 +============== + +opendoas is a port of 'doas' from OpenBSD to Linux. It has all functions of sudo +that could be conceivably needed in live-bootstrap, and is much simpler to +build. This allows build systems that expect sudo after live-bootstrap to use +it. + +gzip 1.13 +========= + +The version of gzip we have been using up until now is really old, all the way +back from mes libc era! Somehow we've managed not to have any problems with it, +though. This builds a gzip that is properly packaged and can be handled by all +modern build systems. + +diffutils 3.10 +============== + +We already have a perfectly functional diffutils, but some core modern software +does require newer diffutils (understandably, given our diffutils is from 1994). +This also gives the additional diffutils commands ``diff3`` and ``sdiff``. diff --git a/rootfs.py b/rootfs.py index fc910835..1a0ad99c 100755 --- a/rootfs.py +++ b/rootfs.py @@ -168,6 +168,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/seed/script-generator.c b/seed/script-generator.c index b9d69057..9c9f8191 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) { @@ -557,7 +569,7 @@ void generate(Directive *directives) { */ generate_preseed_jump(counter); } - bash_build = 1; + bash_build += 1; /* Create call to new script. */ output_call_script(out, "", int2str(counter, 10, 0), bash_build, 0); fclose(out); @@ -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 5ff21197..f62c8b91 100644 --- a/steps/SHA256SUMS.pkgs +++ b/steps/SHA256SUMS.pkgs @@ -1,13 +1,13 @@ -2dac610769286171ca81e736d729f5227938596cf44a0a8a764009715c55d23b autoconf-2.52_0.tar.bz2 -7345a49227ed69774e01097c514f1ebd3abaeed0b2b9136b7f5ee1b0fe573390 autoconf-2.53_0.tar.bz2 -22418f18b0dbf0476efb1823dcebdf70d7619113ca10076ba9b078ab3597a578 autoconf-2.54_0.tar.bz2 -8e74f93f12599f883ba62fe2bf4f69c70270ce368f71aa782f8f42a36a752d19 autoconf-2.55_0.tar.bz2 -1bd66ca8cc6300e192afe06cd90b1250f02ca64539a4f3e98a872333ec04f44b autoconf-2.57_0.tar.bz2 -83235c739887f0d801e410e922553a6fd7723cbd0c9b2e96106e20538abb3a3b autoconf-2.59_0.tar.bz2 -8912ae2a24ea40a7cd3ccab5e97dd109db7be4a86f40458ac836568aa7437b6a autoconf-2.61_0.tar.bz2 -d5fcce4baea5e11f983a7e4b7148545ab6720bb4e010898c73387f6711be67f4 autoconf-2.64_0.tar.bz2 -298dcf17a439adb306237b308e3c4ed3d376cb863ae0f0f08bfdf1f3199a548b autoconf-2.69_0.tar.bz2 -8c2401edf1c68910005bbcb8b8e84727a46f7d9643d2ad1267bd0259078dadc4 autoconf-2.71_0.tar.bz2 +b74448efbd2174ac7e9be469710a5a69e5218392ee6d81bd0837dc7a956626db autoconf-2.52_0.tar.bz2 +97854afe32b6f79df6344d6e9cb8ebf1b011d87bda2a5b03716d602df6123e65 autoconf-2.53_0.tar.bz2 +22eb03cf83aed5234bb4242d412c7459ef83d3a490b0edf700eb04c66584c755 autoconf-2.54_0.tar.bz2 +639cf40f168ae7ca581e31ce956d6e640926fb8f7ccccc91ad7c84ce14bafff0 autoconf-2.55_0.tar.bz2 +229ac87bab8d6efaaeef6c2d7966c0326b048caef58f349add1b1ea759a75978 autoconf-2.57_0.tar.bz2 +cadbb48282d6ab4ad8e208e4714576a673221794afe4cf79df22c49abe08b867 autoconf-2.59_0.tar.bz2 +bc7628f88f4972bb6f5977ecdafe361b923eb1a7b3eaf98c3f21b49bf788d68a autoconf-2.61_0.tar.bz2 +6f43e3a5b9ecaa7944b980da443450b71cc08dc382856ec1172c5be82486b8d3 autoconf-2.64_0.tar.bz2 +25eab7b767c44ba43373ed3f6015c3499ed168e21d2156538d0986b2b14cb7bb autoconf-2.69_0.tar.bz2 +bc992209e05fdd9bf271a2705d5e4892f0212289f8edf4123813ec96e8bdc3e5 autoconf-2.71_0.tar.bz2 6ff691e3ddd4f3d1796d28b07a2a96691dbd9801844c99ccbe660da59dabd74b autoconf-archive-2021.02.19_0.tar.bz2 439fc68ab7d0a9a46caca2c7cbefbdb6ffe906f927e07d150e102bb76b393c37 autogen-5.18.16_0.tar.bz2 02a426e82a52d4a2cd7e73fe3dc5a2c58b3ed100f24a92c57e42511fd86e247c automake-1.10.3_0.tar.bz2 @@ -39,6 +39,7 @@ c95fd8c51c3bfbd4d08a4a50d0033ee85394e6efe4ff82703c050e4dbc4347bf coreutils-6.10 f9efd6600ceb91918078078ff44a33f2a4fb4a59edb804866aebd288c2cfb24e curl-8.5.0_1.tar.bz2 1d4dec2d1885a6b5499a0f0d55e9c2c65dab532c4c593d848b6a542f67789627 dhcpcd-10.0.1_0.tar.bz2 abb9f6fe46c57ea809100b71497e04905deaad345d64485532bf6ef7f2a07f2c diffutils-2.7_0.tar.bz2 +cd135d51b7ecab31c510344b176b358c444e919d13554c4b18f657e71c5aff3e diffutils-3.10_0.tar.bz2 bda6afcd3a390a34a57443269a4857ccc470129f7a557981778c145fd841cbd1 dist-3.5-236_0.tar.bz2 3a4c5143a241364019afd39af067f1e8433bab78b04096870d9bf2c70ec6ded8 e2fsprogs-1.45.7_0.tar.bz2 9c6f7e156f299f1d0948537e28f00d40e727a3debae3cce158e9bce827136214 ed-1.4_0.tar.bz2 @@ -59,20 +60,24 @@ dc67fc1b132fa3945349efe74c5b2197bd0b6babf4d29d2deddd04f09d9af680 gettext-0.21_0 62edfa633f64202b2d29199d11d56a897654a441c7ae39a4d59ca5fe75199f61 gperf-3.1_0.tar.bz2 276e073496931ff7d4caaabb53079412b88de953def88aec966c1f8506293e88 grep-2.4_0.tar.bz2 8e612afb9a439aa8bf5db0fc2589eec890a6017690412d5c8e88a5838730b42c grep-3.7_0.tar.bz2 +8035da0f42b40509a1f68c91164f20fec624cf8b61017aa4e135473e547dddf4 grub-2.06_0.tar.bz2 e2a85aad6d51e52c9a30afeed058f95172fde1215f77243549274672990f6237 guile-3.0.9_0.tar.bz2 +6585ae3bc8149ec0e3fba766278fa30e2d7f0e7d1b9a9a4a457e0afa15b109c9 gzip-1.13_0.tar.bz2 8d2015b87337abbf287f7a39ee4cf53514120b5d3e90a93fe7d533dcc43f14fa help2man-1.36.4_0.tar.bz2 f650c3b24de6edd49cd662c9e9ce11f7b0b5ea6df66d561b46a032b08fc34faa kbd-1.15_0.tar.bz2 50a0f881161c68fe7c9ec6836b11a905b0d54e08e99b2476e8d1f5ac3212769e kexec-linux-1.0.0_0.tar.bz2 1be7bf0319635b8bd22fd3c1a5a88ea267730a9a2e3cfff37473a5fea0779efb kexec-tools-2.0.22_0.tar.bz2 453c10220178f097e1ab26fac6dffbee63b61890cdb8d7d24dcd6acad6ad08a3 libarchive-3.5.2_0.tar.bz2 36550df491767bb24d2ccab304ce70a3b4956e7c0c0e0c343d922fd57cdafbdd libatomic_ops-7.6.10_0.tar.bz2 +fea96776b929569b98bc1740a9977cf8c0eff1d999a08d766bcc0f40c7b1380c libbsd-0.11.8_0.tar.bz2 b39826742e236890f3562cdf19492e7ef4224b271f3e75ddeab1f07982b03ebe libffi-3.3_0.tar.bz2 +0f6aefeb587b3d14d8ea73d7750f946a23d3e59a76a0ee5cdcdcc8132bccf73d libmd-1.1.0_0.tar.bz2 daae709e98d2df2190d1d13b4e86f7f3fe90fa7a975282fe0bb03289b6539f29 libtool-2.2.4_0.tar.bz2 6cefa575362149620f8008a32c8af54f0198a18bc6ab910bd3cead196c1507d7 libtool-2.4.7_0.tar.bz2 503007bbcddcf4e49d26514c59b4c9501f8b42f0c994a59dfdc388b1ae6b7900 libunistring-0.9.10_0.tar.bz2 576c04a4b2ccbfe6b48f5f16e8bd59469e359bdc77458ed82a4025da98ad6dcb linux-4.9.10_0.tar.bz2 d15c922973c15a8206e09020e8cfe6a78f7e93614de212f2b37ff80163799c6c linux-headers-4.9.10_0.tar.bz2 -bd3885a389d3e058081e099850f95aa7938ce1d9b88a187aea6b7196124fbcfe m4-1.4.7_0.tar.bz2 +a1fb0cb2744e7442dbc106df69b84180b8544060a286006649a73b81613cdd24 m4-1.4.10_0.tar.bz2 e69554b0a77b419ddd5d0a0e418ba4005ecd0f6784c92a6928a0270bd929a098 make-3.82_0.tar.bz2 6d24960d6a987f68a7e0e3abf6edb52d2e0fe4c86f6ba45327e9634dbf7d40b4 make-4.2.1_0.tar.bz2 17cd976bc0f6e897c6fffe43dd7c55d93ce0adadf1b4dc72925b80e2d266519f mpc-1.2.1_0.tar.bz2 @@ -83,36 +88,38 @@ d58d85c4be26d90f111f273929a4998d05294fe5aa37c4842d5aecaa593e6079 musl-1.1.24_2. 81f79a0faf58e105c5f12d9f538d3ea7578a3b361e633ab8f47324ec23ec9de6 musl-1.2.4_0.tar.bz2 6dc5e763b747b66f72692c6820d7f46b7f4cf2e2fe05229a1d01c03919c1c936 musl-1.2.4_1.tar.bz2 820203286127e7c22cee9f1b3cff664431f10d14c3f22f00b3e771fd849fd449 musl-1.2.4_2.tar.bz2 +a18c4b2e5de2bfe5bb3ee9d360484fcfebad3df042f1859d4aa333dd60f55e56 opendoas-6.8.2_0.tar.bz2 c490016e49bbf77e7f63071f7aa60e8290a0c67f017846def1c3f65bd10d5712 openssl-1.1.1l_0.tar.bz2 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 +bbbfde31441fab7fe8b825409fae8b2cd1032950d8f5a32fb8b9cf1555e11a70 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 34c51d3df85585a8aee7691b3500a5c3c7442b06a6f57231b76970bdd6e99bf9 sed-4.0.9_0.tar.bz2 e8daec00b2c2de7b18efbec057dc9290eed06668806c6f5a48914d4a5cd95eb4 sed-4.8_0.tar.bz2 +96bd9f051aa665f6836efe3642127df6987b529ed53f1c539293fc049f0f4c28 shadow-4.14.3_0.tar.bz2 912d8f344104f1322255d6210c7c7e1371413ab530b2c6796e6aa565c74bf647 tar-1.34_0.tar.bz2 1667937d5d646f2bb7ec7ab54a23ddd65a0ae3ca7d5e597f3fbcd5163031d2ef tcc-0.9.27_0.tar.bz2 b20cea098c8ff635a0ce9f99430d7c9a75d081194941ab54dc92dbc8af3776a4 tcc-0.9.27_1.tar.bz2 8e8cc802fccdb907cd74501dccce1ee85ffb0150b33b4719f86d6720f5b09a7a tcc-0.9.27_2.tar.bz2 d4fe9460ca561fc2f546f9730f19f541b17dac0bcc42eb190abba856588c3593 tcc-0.9.27_3.tar.bz2 50ebaa1d8fcc4a03a43d431eb71e2f435cc8712ae47d400564df3716037d553a texinfo-6.7_0.tar.bz2 -229d9189adac10ad2a2c76fc147a4c317fc5b34026cef1c47edc9159aee480da util-linux-2.19.1_0.tar.bz2 +858f3c9b3e824d6cdff8009de171fb1ac6932adc227efd854aebf29aba0bbf7c util-linux-2.19.1_0.tar.bz2 ecdb7ffeb9256f6a9760be70969fe5dea9cde6a538cc88595281fe44340e98a1 which-2.21_0.tar.bz2 3fade2079cc91f2c5624ff7247220059caee82e7de493332103d7a78155400b2 xz-5.4.1_0.tar.bz2 ca8ec9876a7334f5f87e1159e0efe343b8b497ffb0dea8b548223035ecd67f9e zlib-1.2.13_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/diffutils-3.10/import-gnulib.sh b/steps/diffutils-3.10/import-gnulib.sh new file mode 100644 index 00000000..9ab78150 --- /dev/null +++ b/steps/diffutils-3.10/import-gnulib.sh @@ -0,0 +1,99 @@ +#!/bin/sh +# SPDX-FileCopyrightText: 2024 fosslinux +# +# SPDX-License-Identifier: GPL-3.0-or-later + +../gnulib-5d2fe24/gnulib-tool --import --local-dir=gl \ + --lib=libdiffutils \ + --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=localename \ + --avoid=lock-tests \ + --avoid=setlocale \ + announce-gen \ + argmatch \ + attribute \ + binary-io \ + c-stack \ + config-h \ + diffseq \ + dirname \ + do-release-commit-and-tag \ + dup2 \ + error \ + exclude \ + exitfail \ + extensions \ + extern-inline \ + fcntl \ + file-type \ + filenamecat \ + flexmember \ + fnmatch-gnu \ + getopt-gnu \ + gettext-h \ + gettime \ + git-version-gen \ + gitlog-to-changelog \ + gnu-make \ + gnu-web-doc-update \ + gnumakefile \ + gnupload \ + hard-locale \ + inttostr \ + inttypes \ + isblank \ + largefile \ + lstat \ + maintainer-makefile \ + manywarnings \ + mbrtowc \ + mempcpy \ + mkstemp \ + mktime \ + nstrftime \ + nullptr \ + perl \ + progname \ + propername \ + raise \ + rawmemchr \ + readme-release \ + regex \ + sh-quote \ + signal \ + sigprocmask \ + stat \ + stat-macros \ + stat-time \ + stdbool \ + stdint \ + stpcpy \ + strcase \ + strptime \ + strtoimax \ + sys_wait \ + system-quote \ + time_rz \ + unistd \ + unlocked-io \ + update-copyright \ + verify \ + version-etc \ + version-etc-fsf \ + wcwidth \ + xalloc \ + xfreopen \ + xmalloca \ + xreadlink \ + xstdopen \ + xstrtoimax \ + year2038 diff --git a/steps/diffutils-3.10/pass1.sh b/steps/diffutils-3.10/pass1.sh new file mode 100755 index 00000000..4ed095dc --- /dev/null +++ b/steps/diffutils-3.10/pass1.sh @@ -0,0 +1,19 @@ +# SPDX-FileCopyrightText: 2024 fosslinux +# +# SPDX-License-Identifier: GPL-3.0-or-later + +src_prepare() { + default + + autoreconf-2.71 -fi + rm man/*.1 + + # gperf + rm lib/iconv_open*.h + + . ../../import-gnulib.sh +} + +src_configure() { + ./configure --prefix="${PREFIX}" +} diff --git a/steps/diffutils-3.10/sources b/steps/diffutils-3.10/sources new file mode 100644 index 00000000..699f2a2c --- /dev/null +++ b/steps/diffutils-3.10/sources @@ -0,0 +1,2 @@ +https://mirrors.kernel.org/gnu/diffutils/diffutils-3.10.tar.xz 90e5e93cc724e4ebe12ede80df1634063c7a855692685919bfe60b556c9bd09e +http://git.savannah.gnu.org/cgit/gnulib.git/snapshot/gnulib-5d2fe24.tar.gz 72e7bb2d1d75e63d1c46d33b8dd22e8eb60afdba4af3e7251151b5c2a6f00bfb 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/grub-2.06/import-gnulib.sh b/steps/grub-2.06/import-gnulib.sh new file mode 100644 index 00000000..90a7aa23 --- /dev/null +++ b/steps/grub-2.06/import-gnulib.sh @@ -0,0 +1,39 @@ +#!/bin/sh + +# SPDX-FileCopyrightText: 2021 Melg Eight +# SPDX-FileCopyrightText: 2023 fosslinux +# SPDX-FileCopyrightText: 2024 Gábor Stefanik +# +# SPDX-License-Identifier: GPL-3.0-or-later + +# Regenerate unicode files +pushd ../gnulib-d271f86/lib +gcc -Iunictype -o gen-uni-tables gen-uni-tables.c +mv ../../*.txt . +./gen-uni-tables UnicodeData-9.0.0.txt PropList-9.0.0.txt DerivedCoreProperties-9.0.0.txt ArabicShaping-9.0.0.txt Scripts-9.0.0.txt Blocks-9.0.0.txt PropList-3.0.1.txt EastAsianWidth-9.0.0.txt LineBreak-9.0.0.txt WordBreakProperty-9.0.0.txt GraphemeBreakProperty-9.0.0.txt CompositionExclusions-9.0.0.txt SpecialCasing-9.0.0.txt CaseFolding-9.0.0.txt 9.0 +popd + +../gnulib-d271f86/gnulib-tool --import --local-dir=gl \ + --lib=libgnu \ + --source-base=grub-core/lib/gnulib \ + --m4-base=m4 \ + --doc-base=doc \ + --tests-base=tests \ + --aux-dir=build-aux \ + --no-conditional-dependencies \ + --no-libtool \ + --macro-prefix=gl \ + --no-vc-files \ + argp \ + base64 \ + error \ + fnmatch \ + getdelim \ + getline \ + gettext-h \ + gitlog-to-changelog \ + mbswidth \ + progname \ + realloc-gnu \ + regex \ + save-cwd diff --git a/steps/grub-2.06/pass1.sh b/steps/grub-2.06/pass1.sh new file mode 100644 index 00000000..9f5bbc17 --- /dev/null +++ b/steps/grub-2.06/pass1.sh @@ -0,0 +1,35 @@ +# SPDX-FileCopyrightText: 2024 Gábor Stefanik +# +# SPDX-License-Identifier: GPL-3.0-or-later + +src_prepare() { + default + + # Remove pregenerated gnulib files + pushd ../gnulib-d271f86 + rm lib/unictype/ctype*.h + rm lib/unicase/tolower.h + popd + + . ../../import-gnulib.sh + + for patchname in fix-base64 fix-null-deref fix-null-state-deref fix-regcomp-uninit-token \ + fix-regexec-null-deref fix-uninit-structure fix-unused-value fix-width no-abort; do + patch -d grub-core/lib/gnulib -p2 < "grub-core/lib/gnulib-patches/$patchname.patch" + done + + ./autogen.sh + + cp -a INSTALL INSTALL.grub + autoreconf-2.69 -vif + mv INSTALL.grub INSTALL +} + +src_configure() { + CFLAGS="-Wno-error" ./configure --prefix="${PREFIX}" --sbindir="${PREFIX}/bin" --build=i686-pc-linux-musl +} + +src_install() { + default + rm "${DESTDIR}${PREFIX}/share/info/dir" +} diff --git a/steps/grub-2.06/sources b/steps/grub-2.06/sources new file mode 100644 index 00000000..ba359d93 --- /dev/null +++ b/steps/grub-2.06/sources @@ -0,0 +1,16 @@ +https://mirrors.kernel.org/gnu/grub/grub-2.06.tar.xz b79ea44af91b93d17cd3fe80bdae6ed43770678a9a5ae192ccea803ebb657ee1 +https://git.savannah.gnu.org/cgit/gnulib.git/snapshot/gnulib-d271f86.tar.gz 31d69d3d251e39135b5194ddc6f897910d344059f7494d96a739aecbf7ac2b66 +http://ftp.unicode.org/Public/9.0.0/ucd/UnicodeData.txt 68dfc414d28257b9b5d6ddbb8b466c768c00ebdf6cbf7784364a9b6cad55ee8f UnicodeData-9.0.0.txt +http://ftp.unicode.org/Public/9.0.0/ucd/PropList.txt f413ea8dbd3858de72f3148b47dd0586019761357d1481e3b65f3a025bc27f82 PropList-9.0.0.txt +http://ftp.unicode.org/Public/9.0.0/ucd/DerivedCoreProperties.txt 6662c7e30b572df5d948c092692f52bcc79ab36d49a063a73d6435042db6fb3b DerivedCoreProperties-9.0.0.txt +http://ftp.unicode.org/Public/9.0.0/ucd/ArabicShaping.txt 47cb62a53beea6d0263e2147331c7e751853c9327225d95bbe2d9e1dc3e1aa44 ArabicShaping-9.0.0.txt +http://ftp.unicode.org/Public/9.0.0/ucd/Scripts.txt fba415952f5654145acad220dc2b878f815c673474d2bb4928934e3ba6ccca1d Scripts-9.0.0.txt +http://ftp.unicode.org/Public/9.0.0/ucd/Blocks.txt 612127d4889032e55d82522e4a0c19793bda8aa8da14ecb3c696d17c83e6be13 Blocks-9.0.0.txt +http://ftp.unicode.org/Public/3.0-Update1/PropList-3.0.1.txt 909eef4adbeddbdddcd9487c856fe8cdbb8912aa8eb315ed7885b6ef65f4dc4c +http://ftp.unicode.org/Public/9.0.0/ucd/EastAsianWidth.txt 3382cb4980e0021e9d4312f2d099315cfab6100ce0ff63a22d6937bfa720bcb7 EastAsianWidth-9.0.0.txt +http://ftp.unicode.org/Public/9.0.0/ucd/LineBreak.txt e2698584982ccd96e0c688bbcd4d2c48a23805baa0a0084388ef2e50ebd30aad LineBreak-9.0.0.txt +http://ftp.unicode.org/Public/9.0.0/ucd/auxiliary/WordBreakProperty.txt cb2db065c77287e0f1d35b8c9b473d848b7566a1670439f67c357ca393084043 WordBreakProperty-9.0.0.txt +http://ftp.unicode.org/Public/9.0.0/ucd/auxiliary/GraphemeBreakProperty.txt 4bb8931857e0a698fd2ec4a51a84c6de33e48a50d8b4bf0b57d960c41d77a191 GraphemeBreakProperty-9.0.0.txt +http://ftp.unicode.org/Public/9.0.0/ucd/CompositionExclusions.txt 5623df16856ad4007c60bdfff6f054e087521becd24cb4006be69c3a1d851aee CompositionExclusions-9.0.0.txt +http://ftp.unicode.org/Public/9.0.0/ucd/SpecialCasing.txt dfc4f159c5c68328114ff17cd520451714a72ff48657287e5fe2f64344980695 SpecialCasing-9.0.0.txt +http://ftp.unicode.org/Public/9.0.0/ucd/CaseFolding.txt 37d40cf8c2c35637f4a04e746814e1fc4eb764c272bed9238a87ee96a4866857 CaseFolding-9.0.0.txt diff --git a/steps/gzip-1.13/import-gnulib.sh b/steps/gzip-1.13/import-gnulib.sh new file mode 100644 index 00000000..f7a71641 --- /dev/null +++ b/steps/gzip-1.13/import-gnulib.sh @@ -0,0 +1,64 @@ +#!/bin/sh +# +# SPDX-FileCopyrightText: 2024 fosslinux +# +# SPDX-License-Identifier: GPL-3.0-or-later + +../gnulib-5651802/gnulib-tool --import --local-dir=gl \ + --lib=libgzip \ + --source-base=lib \ + --m4-base=m4 \ + --doc-base=doc \ + --tests-base=tests \ + --aux-dir=build-aux \ + --makefile-name=gnulib.mk \ + --no-conditional-dependencies \ + --no-libtool \ + --macro-prefix=gl \ + --avoid=getline \ + --avoid=rpmatch \ + announce-gen \ + calloc-gnu \ + close \ + dirname-lgpl \ + fclose \ + fcntl \ + fcntl-safer \ + fdatasync \ + fdopendir \ + filename \ + fprintf-posix \ + fsync \ + getopt-gnu \ + git-version-gen \ + gitlog-to-changelog \ + gnu-make \ + gnu-web-doc-update \ + gnumakefile \ + gnupload \ + ignore-value \ + intprops \ + largefile \ + lib-ignore \ + lstat \ + maintainer-makefile \ + malloc-gnu \ + manywarnings \ + openat-safer \ + printf-posix \ + readme-release \ + realloc-gnu \ + savedir \ + sigaction \ + stat-time \ + strerror \ + sys_stat \ + time \ + unistd-safer \ + unlinkat \ + update-copyright \ + utimens \ + verify \ + xalloc \ + year2038 \ + yesno diff --git a/steps/gzip-1.13/pass1.sh b/steps/gzip-1.13/pass1.sh new file mode 100755 index 00000000..b1553e7e --- /dev/null +++ b/steps/gzip-1.13/pass1.sh @@ -0,0 +1,14 @@ +# SPDX-FileCopyrightText: 2024 fosslinux +# +# SPDX-License-Identifier: GPL-3.0-or-later + +src_prepare() { + default + autoreconf-2.71 -fi + + . ../../import-gnulib.sh +} + +src_configure() { + ./configure --prefix="${PREFIX}" +} diff --git a/steps/gzip-1.13/sources b/steps/gzip-1.13/sources new file mode 100644 index 00000000..e249af47 --- /dev/null +++ b/steps/gzip-1.13/sources @@ -0,0 +1,2 @@ +https://mirrors.kernel.org/gnu/gzip/gzip-1.13.tar.xz 7454eb6935db17c6655576c2e1b0fabefd38b4d0936e0f87f48cd062ce91a057 +http://git.savannah.gnu.org/cgit/gnulib.git/snapshot/gnulib-5651802.tar.gz 56f1221eb682c3502ee097f583f44673570753cb452346ad4806d94560c3fac9 diff --git a/steps/helpers.sh b/steps/helpers.sh index 50351868..87e3e194 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,6 +108,65 @@ 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. @@ -169,6 +228,7 @@ build() { call $build_stage echo "${pkg}: install to fakeroot." + mkdir -p "${DESTDIR}" build_stage=src_install call $build_stage @@ -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 @@ -357,7 +417,7 @@ src_pkg() { # So this does not need a command -v grep. if tar --help | grep ' \-\-sort' >/dev/null 2>&1; then tar -C "${DESTDIR}" --sort=name --hard-dereference \ - --numeric-owner --owner=0 --group=0 --mode=go=rX,u+rw,a-s -cf "${dest_tar}" . + --numeric-owner --owner=0 --group=0 --mode=go=rX,u+rw -cf "${dest_tar}" . else local olddir olddir=$PWD @@ -372,7 +432,7 @@ src_pkg() { get_files . > ${filelist} fi tar --no-recursion ${null} --files-from "${filelist}" \ - --numeric-owner --owner=0 --group=0 --mode=go=rX,u+rw,a-s -cf "${dest_tar}" + --numeric-owner --owner=0 --group=0 --mode=go=rX,u+rw -cf "${dest_tar}" rm -f "$filelist" cd "$olddir" fi @@ -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/after.sh b/steps/improve/after.sh index 32d445c9..9160743f 100644 --- a/steps/improve/after.sh +++ b/steps/improve/after.sh @@ -10,7 +10,7 @@ . /steps/env if [ "${INTERACTIVE}" = True ]; then - env - PATH=${PREFIX}/bin PS1="\w # " bash -i + env - PATH=${PREFIX}/bin PS1="\w # " setsid openvt -fec1 -- bash -i fi if [ "${CHROOT}" = False ]; 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 517cddab..a2db6e35 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 @@ -23,8 +16,58 @@ mount | grep '/sys' &> /dev/null || (mkdir -p /sys; mount -t sysfs sysfs /sys) mount | grep '/tmp' &> /dev/null || (mkdir -p /tmp; mount -t tmpfs tmpfs /tmp) mount | grep '/dev/shm' &> /dev/null || (mkdir -p /dev/shm; mount -t tmpfs tmpfs /dev/shm) -if [ "${EXTERNAL_SOURCES}" = "False" ]; then - # Add /etc/resolv.conf +if [ "${CHROOT}" = False ]; then + rm /etc/mtab + ln -s /proc/mounts /etc/mtab +fi + +# Add /etc/resolv.conf +if [ ! -e "/etc/resolv.conf" ]; then echo 'nameserver 1.1.1.1' > /etc/resolv.conf +fi +if [ ! -e "/etc/resolv.conf/head" ]; then echo 'nameserver 1.1.1.1' > /etc/resolv.conf.head fi + +# /etc/passwd -- taken from LFS +if [ ! -e "/etc/passwd" ]; then + cat > /etc/passwd << "EOF" +root:x:0:0:root:/root:/bin/bash +bin:x:1:1:bin:/dev/null:/usr/bin/false +daemon:x:6:6:Daemon User:/dev/null:/usr/bin/false +messagebus:x:18:18:D-Bus Message Daemon User:/run/dbus:/usr/bin/false +uuidd:x:80:80:UUID Generation Daemon User:/dev/null:/usr/bin/false +nobody:x:65534:65534:Unprivileged User:/dev/null:/usr/bin/false +EOF +fi + +# /etc/group -- taken from LFS +if [ ! -e "/etc/group" ]; then + cat > /etc/group << "EOF" +root:x:0: +bin:x:1:daemon +sys:x:2: +kmem:x:3: +tape:x:4: +tty:x:5: +daemon:x:6: +floppy:x:7: +disk:x:8: +lp:x:9: +dialout:x:10: +audio:x:11: +video:x:12: +utmp:x:13: +usb:x:14: +cdrom:x:15: +adm:x:16: +messagebus:x:18: +input:x:24: +mail:x:34: +kvm:x:61: +uuidd:x:80: +wheel:x:97: +users:x:999: +nogroup:x:65534: +EOF +fi diff --git a/steps/improve/make_bootable.sh b/steps/improve/make_bootable.sh new file mode 100644 index 00000000..82112961 --- /dev/null +++ b/steps/improve/make_bootable.sh @@ -0,0 +1,68 @@ +#!/bin/sh + +# SPDX-FileCopyrightText: 2024 Gábor Stefanik +# +# SPDX-License-Identifier: GPL-3.0-or-later + +# find the physical disk name +PHYSICAL=${DISK} + +# take care of e.g. "sda1" +if echo "${DISK}" | grep -Eq '^[a-z]{3}[0-9]+$' +then + PHYSICAL=$(echo "${DISK}" | sed -E 's/^([a-z]{3})[0-9]+$/\1/') +fi + +# take care of e.g. "mmcblk0p1" +if echo "${DISK}" | grep -Eq '^[a-z0-9]{3,}p[0-9]+$' +then + PHYSICAL=$(echo "${DISK}" | sed -E 's/^([a-z0-9]{3,})p[0-9]+$/\1/') +fi + +grub-install "/dev/${PHYSICAL}" + +cat > /boot/grub/grub.cfg <<- EOF +set timeout=5 +set default=0 +menuentry 'Linux live-bootstrap (4.9.10)' { + insmod part_msdos + set root='grub-probe -d /dev/${DISK} -t bios_hints | sed -e 's/ //g')' + linux /boot/linux-4.9.10 root=/dev/${DISK} rw $(cat /proc/cmdline) +} +EOF + +cat > /init <<- 'EOF' +#!/usr/bin/bash +cd /steps +. ./bootstrap.cfg +. ./env +. ./helpers.sh +trap 'env PATH=${PREFIX}/bin PS1="[TRAP] \w # " bash -i' ERR +# /dev is automounted by the kernel at this point +mount | grep '/proc' &> /dev/null || (mkdir -p /proc; mount -t proc proc /proc) +mount | grep '/sys' &> /dev/null || (mkdir -p /sys; mount -t sysfs sysfs /sys) +# Make /tmp a ramdisk (speeds up configure etc significantly) +mount | grep '/tmp' &> /dev/null || (mkdir -p /tmp; mount -t tmpfs tmpfs /tmp) +mount | grep '/dev/shm' &> /dev/null || (mkdir -p /dev/shm; mount -t tmpfs tmpfs /dev/shm) + +if test -f /swapfile; then + swapon /swapfile +fi + +if [ "${CHROOT}" = False ]; then + dhcpcd --waitip=4 +fi + +env - PATH=${PREFIX}/bin PS1="\w # " setsid openvt -fec1 -- bash -i + +# ignore errors due to fstab or swapfile not existing +swapoff -a &> /dev/null || true +sync +# sysrq to avoid device busy; then mount to wait for it to finish +echo u > /proc/sysrq-trigger +mount -o remount,ro / +echo o > /proc/sysrq-trigger # power off +while true; do sleep 1; done +EOF + +chmod +x /init 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/improve/open_console.sh b/steps/improve/open_console.sh new file mode 100644 index 00000000..33cc402b --- /dev/null +++ b/steps/improve/open_console.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +# SPDX-FileCopyrightText: 2024 Gábor Stefanik +# +# SPDX-License-Identifier: GPL-3.0-or-later + +if bash --version | grep -q 'GPLv3'; then + env - PATH=${PREFIX}/bin PS1="\w # " openvt -- bash -i +else + bash -c 'while true; do printf "[early Bash - use Ctrl+D] $(pwd) # "; $(cat /dev/tty2); done' &> /dev/tty2 & +fi diff --git a/steps/improve/populate_device_nodes.sh b/steps/improve/populate_device_nodes.sh index 98ffc8d7..99f081cb 100755 --- a/steps/improve/populate_device_nodes.sh +++ b/steps/improve/populate_device_nodes.sh @@ -23,6 +23,8 @@ if mount --version >/dev/null 2>&1; then fi if [ "${CHROOT}" = False ]; then + test -c "/dev/tty1" || mknod -m 666 "/dev/tty1" c 4 1 + test -c "/dev/tty2" || mknod -m 666 "/dev/tty2" c 4 2 test -c "/dev/console" || mknod -m 666 "/dev/console" c 5 1 test -b "/dev/sda" || mknod -m 600 "/dev/sda" b 8 0 test -b "/dev/sda1" || mknod -m 600 "/dev/sda1" b 8 1 diff --git a/steps/improve/swap.sh b/steps/improve/swap.sh index 6dea7a4a..bd2f692b 100644 --- a/steps/improve/swap.sh +++ b/steps/improve/swap.sh @@ -1,4 +1,3 @@ - #!/bin/sh # # SPDX-FileCopyrightText: 2024 Gábor Stefanik diff --git a/steps/jump/move_disk.sh b/steps/jump/move_disk.sh index 2f9cb0c6..c42a78b5 100755 --- a/steps/jump/move_disk.sh +++ b/steps/jump/move_disk.sh @@ -32,6 +32,7 @@ if [ $((0x$(stat -c "%T" "/dev/${DISK}") % 8)) -eq 0 ]; then echo "Creating ext4 partition..." mkfs.ext4 -F -F "/dev/${DISK}1" DISK="${DISK}1" + echo DISK="${DISK}" >> /steps/bootstrap.cfg fi # Mount the partition, move everything into /external diff --git a/steps/kexec-fiwix-1.0/kexec-fiwix-1.0.checksums b/steps/kexec-fiwix-1.0/kexec-fiwix-1.0.checksums index f3e5b342..61d7d422 100644 --- a/steps/kexec-fiwix-1.0/kexec-fiwix-1.0.checksums +++ b/steps/kexec-fiwix-1.0/kexec-fiwix-1.0.checksums @@ -1 +1 @@ -f8c754de5bd9cf5a1b36dfea25e81f7b39c4e0145e10eebafccc8cdca5be91bd /usr/bin/kexec-fiwix +d4f502384ab723ae4b3bf33e8024a93c71cba8481f8065182a8f21ffff0fbd6d /usr/bin/kexec-fiwix diff --git a/steps/kexec-fiwix-1.0/src/kexec-fiwix.c b/steps/kexec-fiwix-1.0/src/kexec-fiwix.c index 7443bf49..4c4826dd 100644 --- a/steps/kexec-fiwix-1.0/src/kexec-fiwix.c +++ b/steps/kexec-fiwix-1.0/src/kexec-fiwix.c @@ -82,7 +82,7 @@ int main() { char *bare_metal = getenv("BARE_METAL"); if (bare_metal != NULL && strcmp(bare_metal, "True") == 0) { - sprintf(cmdline, "fiwix root=/dev/ram0 ramdisksize=%d initrd=fiwix.ext2 kexec_proto=linux kexec_size=%d kexec_cmdline=\"init=/init consoleblank=0\"", INITRD_MB * 1024, KEXEC_MB * 1024); + sprintf(cmdline, "fiwix console=/dev/tty1 root=/dev/ram0 ramdisksize=%d initrd=fiwix.ext2 kexec_proto=linux kexec_size=%d kexec_cmdline=\"init=/init consoleblank=0\"", INITRD_MB * 1024, KEXEC_MB * 1024); } else { diff --git a/steps/libbsd-0.11.8/pass1.sh b/steps/libbsd-0.11.8/pass1.sh new file mode 100644 index 00000000..d6a5c969 --- /dev/null +++ b/steps/libbsd-0.11.8/pass1.sh @@ -0,0 +1,12 @@ +# SPDX-FileCopyrightText: 2024 fosslinux +# +# SPDX-License-Identifier: GPL-3.0-or-later + +src_prepare() { + default + autoreconf-2.71 -fi +} + +src_configure() { + ./configure --prefix="${PREFIX}" --libdir="${LIBDIR}" +} diff --git a/steps/libbsd-0.11.8/sources b/steps/libbsd-0.11.8/sources new file mode 100644 index 00000000..edb49fb0 --- /dev/null +++ b/steps/libbsd-0.11.8/sources @@ -0,0 +1 @@ +https://libbsd.freedesktop.org/releases/libbsd-0.11.8.tar.xz 55fdfa2696fb4d55a592fa9ad14a9df897c7b0008ddb3b30c419914841f85f33 diff --git a/steps/libmd-1.1.0/pass1.sh b/steps/libmd-1.1.0/pass1.sh new file mode 100644 index 00000000..d6a5c969 --- /dev/null +++ b/steps/libmd-1.1.0/pass1.sh @@ -0,0 +1,12 @@ +# SPDX-FileCopyrightText: 2024 fosslinux +# +# SPDX-License-Identifier: GPL-3.0-or-later + +src_prepare() { + default + autoreconf-2.71 -fi +} + +src_configure() { + ./configure --prefix="${PREFIX}" --libdir="${LIBDIR}" +} diff --git a/steps/libmd-1.1.0/sources b/steps/libmd-1.1.0/sources new file mode 100644 index 00000000..1fcfd7f1 --- /dev/null +++ b/steps/libmd-1.1.0/sources @@ -0,0 +1 @@ +https://archive.hadrons.org/software/libmd/libmd-1.1.0.tar.xz 1bd6aa42275313af3141c7cf2e5b964e8b1fd488025caf2f971f43b00776b332 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/lwext4-1.0.0-lb1/files/early-artifacts-needed-after-fiwix.txt b/steps/lwext4-1.0.0-lb1/files/early-artifacts-needed-after-fiwix.txt index 925e3c94..7d0a0ff7 100644 --- a/steps/lwext4-1.0.0-lb1/files/early-artifacts-needed-after-fiwix.txt +++ b/steps/lwext4-1.0.0-lb1/files/early-artifacts-needed-after-fiwix.txt @@ -112,7 +112,7 @@ /external/distfiles/tcc-0.9.27.tar.bz2 /external/distfiles/sed-4.0.9.tar.gz /external/distfiles/bzip2-1.0.8.tar.gz -/external/distfiles/m4-1.4.7.tar.gz +/external/distfiles/m4-1.4.10.tar.gz /external/distfiles/flex-2.6.4.tar.gz /external/distfiles/bison-3.4.1.tar.gz /external/distfiles/bison-3.4.1.tar.gz diff --git a/steps/m4-1.4.7/mk/main.mk b/steps/m4-1.4.10/mk/main.mk similarity index 66% rename from steps/m4-1.4.7/mk/main.mk rename to steps/m4-1.4.10/mk/main.mk index 33f5660b..8e0d6287 100644 --- a/steps/m4-1.4.7/mk/main.mk +++ b/steps/m4-1.4.10/mk/main.mk @@ -7,9 +7,9 @@ CC = tcc AR = tcc -ar CFLAGS = -I lib \ - -DVERSION=\"1.4.7\" \ + -DVERSION=\"1.4.10\" \ -DPACKAGE_BUGREPORT=\"bug-m4@gnu.org\" \ - -DPACKAGE_STRING=\"GNU\ M4\ 1.4.7\" \ + -DPACKAGE_STRING=\"GNU\ M4\ 1.4.10\" \ -DPACKAGE=\"m4\" \ -DPACKAGE_NAME=\"GNU\ M4\" \ -DHAVE_STDINT_H=1 \ @@ -17,14 +17,16 @@ CFLAGS = -I lib \ -DHAVE_DECL___FPENDING=1 \ -D_GNU_SOURCE=1 \ -D_GL_UNUSED= \ + -DGNULIB_CLOSE_STREAM=1 \ -D__getopt_argv_const=const \ - -DSYSCMD_SHELL=\"/bin/sh\" + -DSYSCMD_SHELL=\"/bin/sh\" \ + -DLIBDIR=\"$(PREFIX)/lib/i386-unknown-linux-musl\" LDFLAGS = -L . -lm4 .PHONY: all -LIB_SRC = cloexec close-stream dup-safer error exitfail fd-safer fopen-safer getopt getopt1 mkstemp-safer regex obstack tmpfile-safer verror xalloc-die xasprintf xmalloc xvasprintf +LIB_SRC = clean-temp cloexec close-stream closein closeout dup-safer error exitfail fatal-signal fd-safer fopen-safer getopt getopt1 gl_avltree_oset gl_linkedhash_list gl_list gl_oset localcharset mkstemp-safer regex obstack quotearg tmpdir verror version-etc version-etc-fsf xalloc-die xasprintf xmalloc xvasprintf LIB_OBJECTS = $(addprefix lib/, $(addsuffix .o, $(LIB_SRC))) M4_SRC = m4 builtin debug eval format freeze input macro output path symtab diff --git a/steps/m4-1.4.10/pass1.sh b/steps/m4-1.4.10/pass1.sh new file mode 100644 index 00000000..12ac674c --- /dev/null +++ b/steps/m4-1.4.10/pass1.sh @@ -0,0 +1,9 @@ +# SPDX-FileCopyrightText: 2024 fosslinux +# +# SPDX-License-Identifier: GPL-3.0-or-later + +src_prepare() { + default + + touch lib/configmake.h +} diff --git a/steps/m4-1.4.10/sources b/steps/m4-1.4.10/sources new file mode 100644 index 00000000..3f57a1d9 --- /dev/null +++ b/steps/m4-1.4.10/sources @@ -0,0 +1 @@ +https://mirrors.kernel.org/gnu/m4/m4-1.4.10.tar.gz 197fcb73c346fa669f143c3f0ec3144271f133647df00b2258bff1fd485cabe0 diff --git a/steps/m4-1.4.7/sources b/steps/m4-1.4.7/sources deleted file mode 100644 index 474e2945..00000000 --- a/steps/m4-1.4.7/sources +++ /dev/null @@ -1 +0,0 @@ -https://mirrors.kernel.org/gnu/m4/m4-1.4.7.tar.gz 093c993767f563a11e41c1cf887f4e9065247129679d4c1e213d0544d16d8303 diff --git a/steps/manifest b/steps/manifest index 2eff7540..07650795 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,10 @@ build: heirloom-devtools-070527 build: bash-2.05b improve: setup_repo improve: update_env +improve: merged_usr +improve: populate_device_nodes +define: CONSOLES = ( INTERACTIVE == True && CHROOT == False ) +improve: open_console ( CONSOLES == True ) build: flex-2.5.11 build: tcc-0.9.27 improve: musl_libdir @@ -59,8 +66,9 @@ build: musl-1.1.24 build: tcc-0.9.27 build: sed-4.0.9 build: bzip2-1.0.8 -build: m4-1.4.7 +build: m4-1.4.10 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,7 +82,7 @@ build: perl-5.003 build: perl5.004-05 build: perl5.005-03 build: perl-5.6.2 -improve: populate_device_nodes +uninstall: perl-5.000 perl-5.003 perl5.004-05 perl5.005-03 build: autoconf-2.52 build: automake-1.6.3 build: automake-1.6.3 @@ -122,11 +130,13 @@ jump: linux ( CHROOT == False ) jump: move_disk ( KERNEL_BOOTSTRAP == True ) improve: finalize_job_count improve: finalize_fhs +improve: open_console ( CONSOLES == True ) improve: swap ( SWAP_SIZE != 0 ) build: musl-1.2.4 build: curl-8.5.0 improve: get_network ( CHROOT == False ) build: bash-5.2.15 +improve: open_console ( CONSOLES == True ) build: xz-5.4.1 build: file-5.44 build: libtool-2.4.7 @@ -144,6 +154,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 +189,20 @@ 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 +build: grub-2.06 ( BUILD_LINUX == True ) +improve: make_bootable ( CHROOT == False ) +build: libmd-1.1.0 +build: libbsd-0.11.8 +build: shadow-4.14.3 +build: opendoas-6.8.2 +build: gzip-1.13 +build: diffutils-3.10 +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/opendoas-6.8.2/files/doas.conf b/steps/opendoas-6.8.2/files/doas.conf new file mode 100644 index 00000000..d2423e73 --- /dev/null +++ b/steps/opendoas-6.8.2/files/doas.conf @@ -0,0 +1 @@ +permit nopass :wheel diff --git a/steps/opendoas-6.8.2/files/doas.conf.license b/steps/opendoas-6.8.2/files/doas.conf.license new file mode 100644 index 00000000..4afb897c --- /dev/null +++ b/steps/opendoas-6.8.2/files/doas.conf.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2024 fosslinux + +SPDX-License-Identifier: GPL-3.0-or-later diff --git a/steps/opendoas-6.8.2/pass1.sh b/steps/opendoas-6.8.2/pass1.sh new file mode 100644 index 00000000..bb2bddea --- /dev/null +++ b/steps/opendoas-6.8.2/pass1.sh @@ -0,0 +1,20 @@ +# SPDX-FileCopyrightText: 2024 fosslinux +# +# SPDX-License-Identifier: GPL-3.0-or-later + +src_configure() { + ./configure --prefix="${PREFIX}" \ + --without-pam +} + +src_compile() { + make -f GNUmakefile "${MAKEJOBS}" PREFIX="${PREFIX}" +} + +src_install() { + make -f GNUmakefile install PREFIX="${PREFIX}" DESTDIR="${DESTDIR}" + + ln -s doas "${DESTDIR}${PREFIX}/bin/sudo" + + install -D -m 400 ../../files/doas.conf "${DESTDIR}/etc/doas.conf" +} diff --git a/steps/opendoas-6.8.2/sources b/steps/opendoas-6.8.2/sources new file mode 100644 index 00000000..fc4a7a87 --- /dev/null +++ b/steps/opendoas-6.8.2/sources @@ -0,0 +1 @@ +https://github.com/Duncaen/OpenDoas/releases/download/v6.8.2/opendoas-6.8.2.tar.xz 4e98828056d6266bd8f2c93e6ecf12a63a71dbfd70a5ea99ccd4ab6d0745adf0 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() { diff --git a/steps/shadow-4.14.3/pass1.sh b/steps/shadow-4.14.3/pass1.sh new file mode 100644 index 00000000..2c1b4fa7 --- /dev/null +++ b/steps/shadow-4.14.3/pass1.sh @@ -0,0 +1,37 @@ +# SPDX-FileCopyrightText: 2024 fosslinux +# +# SPDX-License-Identifier: GPL-3.0-or-later + +src_prepare() { + default + + # Pregenerated manpages + find man -name "*.[1-9]" -delete + + # groups is provided by coreutils + sed -i 's/groups$(EXEEXT) //' src/Makefile.in + + autoreconf-2.71 -fi +} + +src_configure() { + PKG_CONFIG_PATH="${LIBDIR}/pkgconfig/" \ + ./configure \ + --prefix="${PREFIX}" \ + --sbindir="${PREFIX}/bin" \ + --libdir="${LIBDIR}" \ + --sysconfdir=/etc \ + --localstatedir=/var +} + +src_compile() { + make "${MAKEJOBS}" PREFIX="${PREFIX}" +} + +src_install() { + make install PREFIX="${PREFIX}" DESTDIR="${DESTDIR}" exec_prefix="${PREFIX}" + + # fix sbin + mv "${DESTDIR}"/usr/sbin/* "${DESTDIR}"/usr/bin/ + rmdir "${DESTDIR}/usr/sbin" +} diff --git a/steps/shadow-4.14.3/sources b/steps/shadow-4.14.3/sources new file mode 100644 index 00000000..327861d8 --- /dev/null +++ b/steps/shadow-4.14.3/sources @@ -0,0 +1 @@ +https://github.com/shadow-maint/shadow/releases/download/4.14.3/shadow-4.14.3.tar.xz 6969279236fe3152768573a38c9f83cb9ca109851a5a990aec1fc672ac2cfcd2 diff --git a/steps/util-linux-2.19.1/pass1.sh b/steps/util-linux-2.19.1/pass1.sh index 4e6b986b..14afd644 100755 --- a/steps/util-linux-2.19.1/pass1.sh +++ b/steps/util-linux-2.19.1/pass1.sh @@ -6,7 +6,7 @@ src_prepare() { default # We don't have gettext (autopoint) yet. - AUTOPOINT=true AUTOMAKE=automake-1.10 ACLOCAL=aclocal-1.10 AUTOM4TE=autom4te-2.64 autoreconf-2.64 -fi + AUTOPOINT=true AUTOMAKE=automake-1.10 AUTOCONF=autoconf-2.64 ACLOCAL=aclocal-1.10 AUTOM4TE=autom4te-2.64 autoreconf-2.64 -fi } src_configure() {