diff --git a/SHA256SUMS.sources b/SHA256SUMS.sources index e9c2d18..b4e7822 100644 --- a/SHA256SUMS.sources +++ b/SHA256SUMS.sources @@ -26,6 +26,7 @@ e20bdd49a0fb317959b410c1fe81269a620ec21207045d8a37cadea621be4b59 binutils-2.14. ab5a03176ee106d3f0fa90e381da478ddae405918153cca248e682cd0c4a2269 bzip2-1.0.8.tar.gz c25b36b8af6e0ad2a875daf4d6196bd0df28a62be7dd252e5f99a4d5d7288d95 coreutils-5.0.tar.bz2 1d013547889f20576460249c4210632d5314531c8477378a2e046b13a8ebeb7e coreutils-6.10.tar.gz +6f7cfc0ac6717afb6ba1f41b0da43a713ba0dd97dec1227e32effc12d79f08c1 coreutils-8.32.tar.gz d5f2489c4056a31528e3ada4adacc23d498532b0af1a980f2f76158162b139d6 diffutils-2.7.tar.gz 813cd9405aceec5cfecbe96400d01e90ddad7b512d3034487176ce5258ab0f78 findutils-4.2.33.tar.gz bc79b890f35ca38d66ff89a6e3758226131e51ccbd10ef78d5ff150b7bd73689 flex-2.5.11.tar.gz @@ -35,6 +36,7 @@ e9bf58c761a4f988311aef6b41f12fd5c7e51d09477468fb73826aecc1be32e7 gcc-4.0.4.tar. fd4829912cddd12f84181c3451cc752be224643e87fac497b69edddadc49b4f2 gmp-6.2.1.tar.xz df807e694deea2dcba0c43af318394f3e3fcd52658c3b71b61dad0ce0c0cfb77 gnulib-30820c.tar.gz 0cfbf866bc39c31f25fa0e56af1e56c5e5c92fc1e5d51242ebafef7ea211f3d5 gnulib-8e128e.tar.gz +12cfa21abf618a274017d6b18e95fc6582519d7c08e2403e5c5772ccdd5b85f4 gnulib-d279bc.tar.gz a32032bab36208509466654df12f507600dfe0313feebbcd218c32a70bf72a16 grep-2.4.tar.gz 4d2ce9f314f39c9575f913503b0178d6fb2c92920db8e7b7b176b7bab7980fe6 gzip-1.2.4.tar 9f233d8b78e4351fe9dd2d50d83958a0e5af36f54e9818521458a08e058691ba heirloom-devtools-070527.tar.bz2 diff --git a/parts.rst b/parts.rst index 53c9ffa..2c9b804 100644 --- a/parts.rst +++ b/parts.rst @@ -2,6 +2,7 @@ .. SPDX-FileCopyrightText: 2021 Andrius Štikonas .. SPDX-FileCopyrightText: 2021 Paul Dersey .. SPDX-FileCopyrightText: 2021 fosslinux +.. SPDX-FileCopyrightText: 2021 Melg Eight .. SPDX-License-Identifier: CC-BY-SA-4.0 @@ -590,6 +591,13 @@ automake 1.15.1 GNU Automake from 1.15 series. This is the last version that runs on Perl 5.6. +coreutils 8.32 +============= + +We build the latest available coreutils 8.32 which adds needed options to make +results of build metadata reproducible. For example, timestamps are changed with +``touch --no-dereference``. + tar 1.34 ======== diff --git a/rootfs.py b/rootfs.py index 4ddc6f2..3288042 100755 --- a/rootfs.py +++ b/rootfs.py @@ -9,6 +9,7 @@ you can run bootstap inside chroot. # SPDX-License-Identifier: GPL-3.0-or-later # SPDX-FileCopyrightText: 2021 Andrius Štikonas # SPDX-FileCopyrightText: 2021 Bastian Bittorf +# SPDX-FileCopyrightText: 2021 Melg Eight import argparse import glob @@ -33,6 +34,9 @@ def main(): parser.add_argument("-p", "--preserve", help="Do not unmount temporary dir", action="store_true") parser.add_argument("-t", "--tmpdir", help="Temporary directory") + parser.add_argument("--force_timestamps", + help="Force all files timestamps to be 0 unix time", + action="store_true") # QEMU arguments parser.add_argument("-q", "--qemu-cmd", help="QEMU command", @@ -52,7 +56,8 @@ def main(): if args.arch != "x86": raise ValueError("Only x86 is supported at the moment.") - system_a = SysA(arch=args.arch, preserve_tmp=args.preserve, tmpdir=args.tmpdir) + system_a = SysA(arch=args.arch, preserve_tmp=args.preserve, tmpdir=args.tmpdir, + force_timestamps=args.force_timestamps) initramfs_path = os.path.join(system_a.tmp_dir, "initramfs") if not args.chroot: diff --git a/sysa.py b/sysa.py index 4c88dae..4e51201 100755 --- a/sysa.py +++ b/sysa.py @@ -2,6 +2,7 @@ """System A""" # SPDX-License-Identifier: GPL-3.0-or-later # SPDX-FileCopyrightText: 2021 Andrius Štikonas +# SPDX-FileCopyrightText: 2021 Melg Eight import hashlib import os @@ -17,7 +18,7 @@ class SysA: """ Class responsible for preparing sources for System A. """ - def __init__(self, arch, preserve_tmp, tmpdir): + def __init__(self, arch, preserve_tmp, tmpdir, force_timestamps): self.git_dir = os.path.dirname(os.path.join(__file__)) self.arch = arch self.preserve_tmp = preserve_tmp @@ -28,6 +29,7 @@ class SysA: self.tmp_dir = tmpdir self.sysa_dir = os.path.join(self.git_dir, 'sysa') self.after_dir = os.path.join(self.tmp_dir, 'after') + self.force_timestamps = force_timestamps self.prepare() @@ -186,6 +188,7 @@ class SysA: """ self.create_after_dirs() + self.create_configuration_file() self.mescc_tools_checksum() self.deploy_extra_files() self.mescc_tools_extra() @@ -193,6 +196,15 @@ class SysA: self.tcc_0_9_26() self.get_packages() + def create_configuration_file(self): + """ + Creates bootstrap.cfg file which would contain options used to + customize bootstrap. + """ + config_path = os.path.join(self.after_dir, "bootstrap.cfg") + with open(config_path, "w") as config: + config.write("FORCE_TIMESTAMPS=" + str(self.force_timestamps)) + def create_after_dirs(self): """ Create some empty directories for early bootstrap @@ -426,6 +438,10 @@ class SysA: # automake 1.15.1 self.get_file("https://mirrors.kernel.org/gnu/automake/automake-1.15.1.tar.xz") + # coreutils 8.32 + self.get_file(["https://git.savannah.gnu.org/cgit/coreutils.git/snapshot/coreutils-8.32.tar.gz", + "https://git.savannah.gnu.org/cgit/gnulib.git/snapshot/gnulib-d279bc.tar.gz"]) + # tar 1.34 self.get_file(["https://mirrors.kernel.org/gnu/tar/tar-1.34.tar.xz", "https://git.savannah.gnu.org/cgit/gnulib.git/snapshot/gnulib-30820c.tar.gz"]) diff --git a/sysa/coreutils-8.32/checksums b/sysa/coreutils-8.32/checksums new file mode 100644 index 0000000..58e3926 --- /dev/null +++ b/sysa/coreutils-8.32/checksums @@ -0,0 +1,107 @@ +2bb19b976a488abc8d5ef6f6655a751f0a7f5ddf01cf754af4f1947a4504f28c /after/bin/[ +2f4eb51bfe39e55c66d491eabc92ccd40c1ff7d90835f03df413dbfb9752c054 /after/bin/b2sum +e73a17ac386792957a6990bc25053c8b94b45de35e9c5f235534d58ed0a8a935 /after/bin/base32 +d825747640d86c939ceefd300005cf0a6ddcfb66ef979d7f01cf5c0c4468ba01 /after/bin/base64 +ab0ad4b23fcba5c9fad64ca660a500ba08d857267bc93a86c5d5abf664cc385a /after/bin/basename +2c8363bcd9c49f71b2109e75582646310ae4285fde381153125c68aecf41f3e5 /after/bin/basenc +c61e50357601ba6d622bd5e1cea423010d25a4ec64da76791b3db50351b3b112 /after/bin/cat +04ff3c7eb1ac9033b95ee5b0b5c8234167b0cfe71317e7adfa2f849598fc6ed1 /after/bin/chcon +e8ea30a3a3d2558a130987fa2d44227acb1047da07aede69741f6413b33ab9df /after/bin/chgrp +bef6488884ac77c153662452a2bf71d29be3a53ea7798dd7943f6636bce21f56 /after/bin/chmod +4e83f79572f01b6712c0cc7dc21154b0338d6dc4f92a379fd2e5a67898f1c6bc /after/bin/chown +49363b2acf3e85a15649c4a9f12700d92eb7e9c1566732d669c691a93697d94a /after/bin/chroot +99b2aca6a31487d68eaf0f8f2ec9e9e36b5d2a61479dae4d63f7997cf81dbf42 /after/bin/cksum +2668ec14d2f2dc6370f497213a9852759efc517f14fbdbff17c04d28db895bb8 /after/bin/comm +017c629fdfd08fb5af1b292d210bc604207ccafc1a18dbff21a0abf3cee63770 /after/bin/cp +04b0791914942a0c4c167365b9edb40584ad3631a07cd7dd0be1990ef5a028a0 /after/bin/csplit +83b204a10a5c8e36b215909ba08284771f9778a210af41c481b3c89633d16496 /after/bin/cut +b76650df2d3b059006a63a2ee23c28591cd313d1ac2d6587f906a9ade41bed8e /after/bin/date +82be6ccfebc72b2361f3e0de823c0052a3d8071431ddb6e941c460098921789c /after/bin/dd +62b26c448e248869d5f7577aace26787dfb35efbec1c88bc3d98c3603d9d102c /after/bin/df +124dc892158d257eed2fb35b9499135e9740bb265ccb66edcbf905544c808f4d /after/bin/dir +3c75d475b7b5ab532a165f058d9693198b28ed797b844fa9e8e531a3a293e886 /after/bin/dircolors +e033a42a84cd51a39be62eef25dac820fc88b6e56fff3d486461c95ea750ec98 /after/bin/dirname +b7c5e2e068d35c4f0810b1326a2687c1f479947df6da54b53c61ef66e295f9a2 /after/bin/du +1b0d32561261db41ec7b5ceef6824714e063a70ba7050468e18917a610f1f0cf /after/bin/echo +d2265786f1624ea6770b144977f0f4fb529191ceb8ad8c5af0735c28c826ab04 /after/bin/env +4bd3bdd9c4d5a600593780f092f89e7d784b35ac6527caab5819997ef4938fff /after/bin/expand +bdb8da72d4d64c82681cf3e8a9f4da88dbd42c454da5f7ca8a19445113c01f33 /after/bin/expr +7e4f3fabf9de05aaa34aa2e9baabb52fb2f3e87acfa6f202c1639e381fb7ece0 /after/bin/factor +ce84ef03bd5c5b9fef8223cd7f5b53cff7c939f9f5581859442f43b1f24ffd42 /after/bin/false +23bc80a7c3b42c72bdd3d8a0a11764d84558238b93b7cde30673a55081fd27a7 /after/bin/fmt +5ecc029ba10ce5a57d98b49cc77c21fb915eb37beba93738a1fc3d14ebad31b3 /after/bin/fold +22aadd09f819a4f993d33b92642331ea8f0ae4f829b65b673dc00ea75d959846 /after/bin/groups +b6df9e24dd89206ea15f5b3e8cd840c3b44c7f4563ecca620d3d0deec2fbcf5b /after/bin/head +4139d323fd7a01fc6f1b662443a7c0af0b677b3c2fe295743d8fbcff4ed82048 /after/bin/hostid +a6f82e0a6ac850361c799296290ca35578260a89fc6e3b5a56ad4238dfc8bb37 /after/bin/id +d8b7fb9a3e83a41f94f1acc041c4e0430279f7797d817705eeb86634e5e4c584 /after/bin/install +b336bdfa943f530053908bf86239c3a4b0a804a4c39763886a4248e675b7123c /after/bin/join +1b7fd9b369aa36815256199b6afceb30c0fb0751a8a19fa633adba6d29654b42 /after/bin/kill +3421bdec4318066e0e36df02408ec4d9066e84a6ee01f899836611b889a059ef /after/bin/link +6e4960e08193f5f2bed00c55d26c3163067929469cbefdb0599c499688c8fa04 /after/bin/ln +6c68245b55e060067de17ba920ff87c8303913decea2d81588d4efd74530b05c /after/bin/logname +075235c1f345f45434ffec06ddddd0d6ad2a4dad65efb3231591a50248209785 /after/bin/ls +769219e8f4cffd8387d1a53900b3c65c902bb9f3e2857178847894415b950f12 /after/bin/md5sum +2fdbd337da4ff238fba88085efa4c946b3c23510a995cb1c218a032e86f20526 /after/bin/mkdir +0bb537f30fab5289408530cd1878d1d9f1592a119b3bd7c823406e32fcc2f993 /after/bin/mkfifo +1f18fe91c9aad164d2d0d5f1aa319cf5e27562f80577ebbe5e41dc77cb20634c /after/bin/mknod +7480a54cf51676e406cc48255a9c25ba934a021bf61b4e3bba04d0d45e2b04c8 /after/bin/mktemp +7de04a3d8346a4f8e766152d6d4e32841894005c330a5bf67b60e15bafa5717e /after/bin/mv +f3ee0b68fb0e546c887dc8e9003cf9ca570e54207c62ac4154e42f0e0182a060 /after/bin/nice +3a7bab449fa311bea65050823deeef2a5c8dd945861d14a736aca7ac20555623 /after/bin/nl +0c196bc4ed5680e1ea63faac72f6792cebb1ef68b7332e14f79a77bae7236203 /after/bin/nohup +f463be3b2d953544793fd89506a2e3ab1dc9c7fb05b2253c98ab5791a62424f5 /after/bin/nproc +0d587099627d3067d2e871e2517b5f20577c4b4e8dc311f3cc4441e323efc268 /after/bin/numfmt +f086ead993a0bb0a1db8aa03e04781be8cc8b84cfbd6002e794e529591704df6 /after/bin/od +53b0d361ec7fb64d11f5ecc1c5dece768811f2cba60c4528f2bb9437fd3020cc /after/bin/paste +4aa833e4a93f70511918eb3535c4c76dba2d9f96f87487d655910b940ead581a /after/bin/pathchk +66011e626078cc15eff7f117d3457d327b04e2696051a0e7665a0b6c899e8468 /after/bin/pinky +a053f1a2e3ad977c29611783ed5e9cc9b495766d66a26dc6810bc9d155936c6c /after/bin/pr +bccdd16a690a14d1cf868c14122c3bc26cc3d214957fa1c2bcb562c406263b7a /after/bin/printenv +0ea5e299b966350a8beb7396614b57720b7e4e891d9b0d1875d9033d374be721 /after/bin/printf +89580495bc95821f07d11008f70acf9d70eec3a2db48d0374eb5c54feb2ecb38 /after/bin/ptx +eec466a54cc8e5a13f26128258fdf4f17333e48b2c759fb7412df62cfb47e674 /after/bin/pwd +2f70cbe9688f62846222778a234ac3a612e34edbb414b391585c1b44efee707d /after/bin/readlink +2839db35b5390c224cef97bfdb86120d4aa78f6fb6d513bb80f13172c8083075 /after/bin/realpath +c662c03027990fcb8ed59f5144b3fb9a46a66ef115a6d7d9a6053a1e24fbdb71 /after/bin/rm +9d34798c14694c0c3caa61fd9c22275b4c3febc7d048fb2c9cf1ae9189dff176 /after/bin/rmdir +16562920d60f4d71388c1f9ce894d852ff53e9e9d84e879a65285b1ea6f4e402 /after/bin/runcon +a5294ed68982a99c2630c061a64d6d3eafcffb06c8474e8d3154805b0575f5c5 /after/bin/seq +888b71e21d66d7220f63e37d4fd06d228de1b026776bbaa84a901d62ad74abd8 /after/bin/sha1sum +419ddc6994ebe2bc49ee5d2a8c3a7efed5fd64ead1390b885b703a1488bb2274 /after/bin/sha224sum +a84405002a76830aa0f5483d07f272c713dd3b9526950df2dc4369f81a599ec8 /after/bin/sha256sum +45270aa4548bf2ae8c58a03e71eac51944474f7b279b7d10faed2ece34ee80ea /after/bin/sha384sum +a094aa18b9825c5d8bf374c249ee28b16d43fb7655cb3dd5bbe289cd27b6dede /after/bin/sha512sum +27fcc8333a3dddc1f61e309c926871798728f638f2aab1a534da392cf2708cdb /after/bin/shred +db0f9e5853d099ab30b80620609b358d74735636943a25f6a3fd0381b510c308 /after/bin/shuf +7006051038bf81f4eff6475b2dc341e0badd6d7c60fe34e5c2cf51a5eacaa0c5 /after/bin/sleep +30eed72bc4f1c814b8904504226cdb1633056084b0aabf466e21c276506786f4 /after/bin/sort +bc9c507c8ecf43c2b5d6561ef5d2079ad8a3eb9bd400ee9ac877d6014e1945c4 /after/bin/split +48bc6a7172277d53cba1c1c40d8bb17f5144d6640e3a8c6ee230713663d58471 /after/bin/stat +4c768645e03dfd4038f8d9f3204eee6f8738aa99bd772229e9c1cff78dc0cdcb /after/bin/stdbuf +8f2f16382ce6d80cb0ebe5fc9f34b3ad57255aa9ee43a5a5f50a140fa8a29961 /after/bin/stty +d64ac8f851f0219dd16a71b60204dcc77ee689a930e4358595fcd3e4bf15e47d /after/bin/sum +463814942a4eca3e541b763cf759f5146331935594d6aff69d1a1e8da1d52bd9 /after/bin/sync +4837bb4e3382abe4aaa989f7a1a907759635c6cae0f13088535172ff043857c8 /after/bin/tac +4b0772a93c3d6a000349137b2c0eb6bc4e0c2a38667376a0ab2728f37fac778d /after/bin/tail +601a2765ea1142d45ab84359592982483859acd9b1eaa712dce0d62010f36388 /after/bin/tee +a2e22163aaf77d89293567393ad4d9b198b712e824591241c639f69a5cf671b5 /after/bin/test +c49a201a19cbba7a153d583ae5c257ae0773bc2ef0cbe6c6f2ed194592030e74 /after/bin/timeout +ee291cf6f3a9af0bc7d5d2803fdea2138b968ce7e1d9c228a966af6b847a65ce /after/bin/touch +2b8600af9893171d8282f224e55cdf8a361cc2669cf9b11f501ad345c06e17be /after/bin/tr +bf984b62de0b142882c683ca03a56eb7869e5913d8e917758fcadb81de6f2a88 /after/bin/true +95cea6e58b4598b4ad6c4cc8d27e8c44d35e0a7b73501b576d5a4ec409c20495 /after/bin/truncate +20ae9411f3b9d1a6577a0c9d584e3dda13d8afe6f17e92615a1549a82e4fc724 /after/bin/tsort +eca6848521913240e785ea53aa0f0cf4c2f2255ae4043dcecb8fa12127d3663e /after/bin/tty +d8830e45e12e081835126ba61e3733ee92dd6b98ce9ac33fca6b3a8f0f6da97d /after/bin/uname +a7fefed8ca9ed0d21a9e5e4e6cb0f3d3a0de42bfc3ff7ecb7eb884b1a2508054 /after/bin/unexpand +1fda68497c80da9d4c3419c1953f5e86cd3b88a98b468b755606e9f2911f85be /after/bin/uniq +bad61a2a4f6b426344334ac03c698fdf2a76124087993431d8d475ddbc539d6c /after/bin/unlink +0b3c47f1417700d09e96d9f057903eed5411f18ec1b461048df29b1822046c65 /after/bin/uptime +eb178d863f7f9d7a8935891e03f8354f20e6d22485a8deffd966080ad0c73789 /after/bin/users +1c4529c1fba8371992768bca64d70d979ff91ba0256f3b3763a3f5a091b9384c /after/bin/vdir +81654f5e1deb77f7be09d5ec231d4b0f33550d91b68236e83c53407442546ad6 /after/bin/wc +e7e1c068cb667552d77825930899e05c990f6cfc042252c97cab8a104e35023d /after/bin/who +071bb22567a698ae1f48ade64460e13c7d7c60d053c11ca75a3744add5e11730 /after/bin/whoami +543f7dc9c08f2f921b83aa30edf8392aa87c51f43f0e7349ec61c56981049d36 /after/bin/yes +02ae56360b3c7a21a83c0bffba077f82f851fbf08ac26e740779060bebb2e006 /after/libexec/coreutils/libstdbuf.so diff --git a/sysa/coreutils-8.32/coreutils-8.32.sh b/sysa/coreutils-8.32/coreutils-8.32.sh new file mode 100755 index 0000000..6dabfb4 --- /dev/null +++ b/sysa/coreutils-8.32/coreutils-8.32.sh @@ -0,0 +1,50 @@ +# SPDX-FileCopyrightText: 2021 Melg Eight +# +# SPDX-License-Identifier: GPL-3.0-or-later + +# Remove pre-generated files from source code. +remove_generated_files() { + find . -name '*.info' -delete + find . -name '*.gmo' -delete +} + +regenerate_files() { + build-aux/gen-lists-of-programs.sh --autoconf > m4/cu-progs.m4 + 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 + + . ../../import-gnulib.sh + + # Disable generation of man pages due to lack of needed perl 5.8 + # dependency. + cp man/dummy-man man/help2man + + # We don't have autopoint from gettext yet. + AUTOPOINT=true autoreconf-2.69 -fi +} + +src_prepare() { + default + remove_generated_files + regenerate_files +} + +src_configure() { + # FORCE_UNSAFE_CONFIGURE disables "you should not run configure as root" + # error from configuration system of coreutils. + FORCE_UNSAFE_CONFIGURE=1 ./configure CFLAGS="-static" \ + --prefix="${PREFIX}" \ + --target=i386-unknown-linux-gnu \ + --host=i386-unknown-linux-gnu \ + --build=i386-unknown-linux-gnu +} + +src_compile() { + make PREFIX="${PREFIX}" MAKEINFO="true" +} + +src_install() { + make install PREFIX="${PREFIX}" MAKEINFO="true" DESTDIR="${DESTDIR}" +} diff --git a/sysa/coreutils-8.32/import-gnulib.sh b/sysa/coreutils-8.32/import-gnulib.sh new file mode 100644 index 0000000..3895851 --- /dev/null +++ b/sysa/coreutils-8.32/import-gnulib.sh @@ -0,0 +1,298 @@ +#!/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/sysa/coreutils-8.32/patches/Makefile.am.patch b/sysa/coreutils-8.32/patches/Makefile.am.patch new file mode 100644 index 0000000..bd2e810 --- /dev/null +++ b/sysa/coreutils-8.32/patches/Makefile.am.patch @@ -0,0 +1,17 @@ +SPDX-FileCopyrightText: 2021 Melg Eight + +SPDX-License-Identifier: GPL-3.0-or-later + +Remove dependency on po folder because we don't have gettext yet. + +--- ./Makefile.am ++++ ./Makefile.am +@@ -17,7 +17,7 @@ + + ALL_RECURSIVE_TARGETS = + +-SUBDIRS = po . gnulib-tests ++SUBDIRS = . gnulib-tests + + EXTRA_DIST = \ + .mailmap \ diff --git a/sysa/coreutils-8.32/patches/configure.ac.patch b/sysa/coreutils-8.32/patches/configure.ac.patch new file mode 100644 index 0000000..0048f88 --- /dev/null +++ b/sysa/coreutils-8.32/patches/configure.ac.patch @@ -0,0 +1,20 @@ +SPDX-FileCopyrightText: 2021 Melg Eight + +SPDX-License-Identifier: GPL-3.0-or-later + +Remove dependency on gettext, because we don't have it at this stage +of the build. + +--- ./configure.ac ++++ ./configure.ac +@@ -624,8 +624,8 @@ AM_CONDITIONAL([CROSS_COMPILING], [test "$cross_compiling" = yes]) + + # As long as "grep 'PRI[diouxX]' po/*.pot" reports matches in + # translatable strings, we must use need-formatstring-macros here. +-AM_GNU_GETTEXT([external], [need-formatstring-macros]) +-AM_GNU_GETTEXT_VERSION([0.19.2]) ++# AM_GNU_GETTEXT([external], [need-formatstring-macros]) ++# AM_GNU_GETTEXT_VERSION([0.19.2]) + + # For a test of uniq: it uses the $LOCALE_FR envvar. + gt_LOCALE_FR diff --git a/sysa/coreutils-8.32/patches/force_to_use_nanosleep.patch b/sysa/coreutils-8.32/patches/force_to_use_nanosleep.patch new file mode 100644 index 0000000..f7bdbbc --- /dev/null +++ b/sysa/coreutils-8.32/patches/force_to_use_nanosleep.patch @@ -0,0 +1,38 @@ +SPDX-FileCopyrightText: 2021 Melg Eight + +SPDX-License-Identifier: GPL-3.0-or-later + +Replace test for support of correct values produced by nanosleep. +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 +@@ -85,23 +85,9 @@ AC_DEFUN([gl_FUNC_NANOSLEEP], + ts_sleep.tv_nsec = 1; + #if HAVE_DECL_ALARM + { +- static struct sigaction act; +- act.sa_handler = check_for_SIGALRM; +- sigemptyset (&act.sa_mask); +- sigaction (SIGALRM, &act, NULL); +- alarm (1); +- if (nanosleep (&ts_sleep, NULL) != 0) +- return 3; +- /* Test for a minor problem: the handling of large arguments. */ +- ts_sleep.tv_sec = TYPE_MAXIMUM (time_t); +- ts_sleep.tv_nsec = 999999999; +- alarm (1); +- if (nanosleep (&ts_sleep, &ts_remaining) != -1) +- return 4; +- if (errno != EINTR) +- return 5; +- if (ts_remaining.tv_sec <= TYPE_MAXIMUM (time_t) - 10) +- return 6; ++ /* Force to use HAVE_BUG_BIG_NANOSLEEP 1 across kernels even ++ if it correctly handles big nanosleeps. */ ++ return 6; + } + #else /* A simpler test for native Windows. */ + if (nanosleep (&ts_sleep, &ts_remaining) < 0) diff --git a/sysa/coreutils-8.32/patches/printf.c.patch b/sysa/coreutils-8.32/patches/printf.c.patch new file mode 100644 index 0000000..e718f51 --- /dev/null +++ b/sysa/coreutils-8.32/patches/printf.c.patch @@ -0,0 +1,34 @@ +SPDX-FileCopyrightText: 2021 Melg Eight + +SPDX-License-Identifier: GPL-3.0-or-later + +Remove dependency on unicodeio.h. This drops support for outputting unicode +characters. We do that, because inclusion of unicodeio.h from gnulib brings +dependencies on gperf generated files. We don't have gperf on 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 + { diff --git a/sysa/coreutils-8.32/patches/system.h.patch b/sysa/coreutils-8.32/patches/system.h.patch new file mode 100644 index 0000000..a339660 --- /dev/null +++ b/sysa/coreutils-8.32/patches/system.h.patch @@ -0,0 +1,26 @@ +SPDX-FileCopyrightText: 2021 Melg Eight + +SPDX-License-Identifier: GPL-3.0-or-later + +Remove dependency on propername.h. +We do that, because inclusion of 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/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/sysa/helpers.sh b/sysa/helpers.sh index ae63636..90eb05b 100755 --- a/sysa/helpers.sh +++ b/sysa/helpers.sh @@ -3,6 +3,7 @@ # SPDX-FileCopyrightText: 2021 Andrius Štikonas # SPDX-FileCopyrightText: 2021 fosslinux # SPDX-FileCopyrightText: 2021 Paul Dersey +# SPDX-FileCopyrightText: 2021 Melg Eight # # SPDX-License-Identifier: GPL-3.0-or-later @@ -156,3 +157,11 @@ call() { default() { "default_${build_stage}" } + +# Set all files modified dates to be 0 unix time. +# Should be called at the end of bootstrapping process. +# This function needs `touch` that supports --no-dereference +# (at least coreutils 8.1). +canonicalise_all_files_timestamp() { + find / -exec touch --no-dereference -t 197001010000.00 {} + +} diff --git a/sysa/run2.sh b/sysa/run2.sh index 3f9a08d..18665c6 100755 --- a/sysa/run2.sh +++ b/sysa/run2.sh @@ -3,6 +3,7 @@ # SPDX-FileCopyrightText: 2021 Andrius Štikonas # SPDX-FileCopyrightText: 2021 fosslinux # SPDX-FileCopyrightText: 2021 Paul Dersey +# SPDX-FileCopyrightText: 2021 Melg Eight # # SPDX-License-Identifier: GPL-3.0-or-later @@ -10,6 +11,8 @@ set -e . helpers.sh +. bootstrap.cfg + build xz-5.0.5 build automake-1.11.2 @@ -18,6 +21,8 @@ build autoconf-2.69 build automake-1.15.1 +build coreutils-8.32 + build tar-1.34 build gmp-6.2.1 @@ -28,6 +33,11 @@ build mpfr-4.1.0 build mpc-1.2.1 +if [ "$FORCE_TIMESTAMPS" = True ] ; then + echo 'Forcing all files timestamps to be 0 unix time.' + canonicalise_all_files_timestamp +fi + echo "Bootstrapping completed." exec env - PATH=/after/bin PS1="\w # " bash -i