Compare commits

...

172 Commits

Author SHA1 Message Date
Andrius Štikonas 71253f7f8c Remove patch that is no longer needed.
This fixed some issues with weak symbols but now tcc is properly patched.
2024-04-18 21:28:39 +01:00
Andrius Štikonas 3bbd639937
Merge pull request #461 from fosslinux/update-parts
Update parts.rst
2024-04-17 19:22:50 +01:00
Googulator cd74988efb
fix typos 2024-04-17 02:29:01 +02:00
Googulator 43f31ce543
Update parts.rst 2024-04-17 02:15:05 +02:00
Googulator 85026900ac
Fix formatting of Pythonless build instructions 2024-04-17 00:59:58 +02:00
Googulator 34a72584c1
Update Pythonless bootstrap instructions
* ``pre-network-sources`` is no more
* builder-hex0 stage1 is no longer precompiled, but instead needs to be generated from hex0 code (using POSIX tools or by hand)
2024-04-17 00:58:50 +02:00
Googulator 27b4f1c766
Merge pull request #460 from Googulator/after-extend
Add extension mechanism to execute .sh files dropped in /steps/after
2024-04-17 00:49:53 +02:00
Gábor Stefanik c73d8c9dc1 Add extension mechanism to execute .sh files dropped in /steps/after
These are executed at the end of the bootstrap, if /steps/after exists.
In interactive mode, they run before the interactive prompt is displayed.
2024-04-16 20:53:52 +02:00
Andrius Štikonas 5595a06ad9
Merge pull request #459 from Googulator/script-generator-checksum
Add checksum protection to script-generator
2024-04-16 19:25:45 +01:00
Gábor Stefanik c5eb402eeb Add checksum protection to script-generator 2024-04-16 10:20:39 +02:00
Gábor Stefanik 7f08661b6c Fix a missed amd64 checksum 2024-04-16 10:16:51 +02:00
Andrius Štikonas 0f91a466a1
Merge pull request #356 from Googulator/mes-0.26
Upgrade mes to 0.26
2024-04-16 06:59:39 +01:00
Gábor Stefanik aa3d36b934 Update checksums for x86, amd64 & riscv64
Also, add missing non-x86 checksums for simple-patch.
2024-04-16 00:24:44 +02:00
Gábor Stefanik e08f655cd6 Rebuild pregenerated files in nyacc 2024-04-15 22:11:44 +02:00
Gábor Stefanik c0494d9af8 Fix build of bash with mes-0.26
Since rename.c is now included in meslibc, we need -DHAVE_RENAME.
2024-04-15 22:11:44 +02:00
Gábor Stefanik 70fdbebd9c Upgrade mes to 0.26
This can successfully build a working tcc-mes, but then fails
creating unified-libc.c for subsequent tcc bootstrapping.
2024-04-15 22:11:39 +02:00
Andrius Štikonas 281f6e44d9
Merge pull request #455 from Googulator/linux-openela
Upgrade kernel to 4.14.341-openela
2024-04-15 19:41:59 +01:00
Googulator a5a689c954
Merge pull request #457 from fosslinux/byacc
Move heirloom lex and flex after musl, replace heirloom yacc with byacc
2024-04-15 10:17:13 +02:00
Gábor Stefanik 0c718aeece Update checksums for heirloom yacc -> byacc change 2024-04-15 02:17:59 +02:00
Gábor Stefanik 25443468ee Add files.bootstrapping.world mirrors for all Savannah snapshots 2024-04-15 02:11:05 +02:00
Gábor Stefanik e2a1df94a5 Add licensing information to byacc's makefile
This makefile was included in the byacc distribution as Makefile.old
It was slightly updated to fit our needs.

Berkeley yacc itself is in the public domain, but SPDX/REUSE provides
no good way to represent this. In keeping with that spirit, I chose
CC0 as the license for my modifications, which SPDX can represent.
2024-04-15 01:43:20 +02:00
Gábor Stefanik 02fb689ce1 Move heirloom lex and flex after musl, replace heirloom yacc with byacc
This way, heirloom-devtools is only linked to a libc with a CDDL-compatible
license, making it fully redistributable. Heirloom yacc doesn't work properly
with musl libc, but luckily byacc can do its job just fine, so we only need
heirloom lex now.

Thanks to the more complete libc, and bash being available, heirloom's
bootstrap is significantly simplified.
2024-04-15 01:22:50 +02:00
Gábor Stefanik 6567973a04 Make byacc actually work when compiled against meslibc
This replaces the previous sed hackery with a proper patch, and removes
a few more libc functions that meslibc is missing.
The binary name is changed to "byacc" so it doesn't get overwritten by
heirloom yacc.

The bsearch() replacement code comes from an earlier version of byacc.
2024-04-14 21:14:04 +02:00
Googulator 5ae504cb67
Merge pull request #453 from Googulator/openssl-upgrade
Upgrade OpenSSL to 3.0.13
2024-04-14 06:46:37 +02:00
Gábor Stefanik 3970ee7d1a Add byacc parser generator
This is meant to replace heirloom yacc for compiling pre-musl parsers.
Unlike heirloom yacc, it's in the public domain, and can be linked with
meslibc without licensing concerns.
2024-04-14 05:51:30 +02:00
Gábor Stefanik c75d609cf7 Upgrade kernel to 4.14.341-openela
This is a continuation of the 4.14 series by the Open Enterprise Linux
Alliance, ostensibly to the same maintenance standards as the now
discontinued kernel.org LTS.

This code is primarily offered as a Git repository, with gz tarballs
also available, but no xz versions. Switching back to a gzipped version
of the kernel source code would introduce too much srcfs growth, so we
use the last kernel.org tar.xz release (4.14.336), and apply OpenELA's
changes using a patch generated from the Git repository.
2024-04-14 05:04:24 +02:00
Googulator 29a029947c
Merge pull request #454 from Googulator/source-mirrors
Support multiple mirrors for each source file
2024-04-14 04:12:07 +02:00
Gábor Stefanik 89a4d18ff0 Support multiple mirrors for each source file
If multiple URLs are entered in a sources listing for the same file,
each will be tried in turn, until either one succeeds, or we fail
having run out of mirrors.
2024-04-14 00:17:41 +02:00
Gábor Stefanik 6017ae7a9f Add extra source URL for OpenSSL 3.0.13, to account for it being moved in the future
This will only be useful after #454 is merged.
2024-04-14 00:13:20 +02:00
Gábor Stefanik 637fa823f0 Upgrade OpenSSL to 3.0.13
Fixes #451
2024-04-13 23:43:41 +02:00
Googulator 86e1a5e7f6
Merge pull request #449 from pyy/master
update submodule stage0-posix to latest: updated unxz sources for amd64 aarch64 etc
2024-03-07 17:50:23 +01:00
pyy 5e11d2a592 update submodule stage0-posix to latest: updated unxz sources for amd64 aarch64 etc. 2024-03-07 17:09:31 +01:00
Andrius Štikonas 4737ab7481
Merge pull request #446 from Googulator/qemu-interactive
Use qemu's GUI support in interactive mode
2024-02-28 21:33:50 +00:00
Gábor Stefanik c1c6b278e6 Use qemu's GUI support in interactive mode
Previously, there was no way to access the additional consoles in
qemu mode, due to qemu running in -nographic mode with a serial
console. This is perfectly fine in non-interactive mode, but we can
make interactive mode more usable by using a graphical console like
on bare metal.

Also drop -no-reboot from interactive mode, since rebooting (e.g.
to load a newly compiled kernel) makes sense in this case.
2024-02-25 02:39:43 +01:00
fosslinux 2261098f98
Merge pull request #445 from fosslinux/check-substitutes
Check "substitutes"
2024-02-24 09:37:32 +00:00
fosslinux b80e1f6a57 Ensure that substituted files are equivalent to upstream 2024-02-24 20:36:12 +11:00
fosslinux d6e49c181c
Merge pull request #444 from Googulator/kconfig-update
Update Linux kernel configuration & patches
2024-02-20 10:37:14 +00:00
fosslinux 021574d2a9 Change diffutils-2.7 back to upstream gz tarball
The bz2 tarball we were using is a complete repack of the tarball,
including date & permission modifications. It adds an extra file
RPI-Configure too. This is not optimal as it impedes verification
ability.
2024-02-20 09:53:22 +11:00
Gábor Stefanik 60ec9ea80c Update Linux kernel configuration & patches
This updates the Linux kernel configuration, removing irrelevant
networking-related components, and switching framebuffer drivers to
the DRM-based ones. With this, we can finally bootstrap on systems
with newer NVIDIA cards, which would green screen with the nvidiafb
driver.

KVM is still disabled, see #443 - VIRTUALIZATION is also disabled,
as it's useless without KVM or any other suboption being enabled.

Additionally, we can now drop the bad-asm patch, since our newer
binutils has no problem supporting that syntax, and it doesn't look
quite innocuous to me, removing an offset from a memory access.

The kernel is now built in 2 stages: first, we build vmlinux only,
then, after cleaning up any intermediate .o files (except the ones
needed to build efistub), we convert it to a bzImage. This required
some creative use of the -o option to convince Make not to rebuild
all of the .o files we've just deleted as dependencies.
2024-02-18 17:54:25 +01:00
Gábor Stefanik ee3ab501da Add rootwait to grub command line to fix USB boot failures
Without this, one of my boards fails to reboot from USB drive due to
slow USB enumeration. Rootwait is not needed during the Fiwix -> Linux
jump, because we use an initramfs there, and the init scripts already
wait for USB drives to show up. Linux->Linux kexec, used with a custom
early kernel, might need it, so add it there as well to be safe.
2024-02-18 17:52:33 +01:00
Gábor Stefanik 11d3605b08 Upgrade Linux kernel to 4.14.336
This is the last LTS version buildable using GCC 4.0.x. The next one,
version 4.19, requires at least GCC 4.6.

Fortunately, this is also the first version of the Linux kernel
without firmware blobs being included in /firmware, so the FSFLA
deblob scripts aren't needed anymore to ensure a fully auditable
kernel - the 3 remaining drivers that do include blobs masquerading
as source code are removed via a patch, avoiding all the other side
effects of the deblob scripts.
This doesn't compromise the trustworthiness of the bootstrapped
environment, since all the other drivers deblob would remove use
the firmware loader mechanism, which does nothing when the actual
firmware blobs aren't installed on the system separately. Features
dependent on firmware still won't work, but many drivers that load
firmware do so only optionally. This includes r8169, the driver for
the Realtek gigabit NICs found on many x86 motherboards.

This kernel is considerably larger than 4.9.10, and we build more
of it (including drivers that would previously get stripped away by
the deblob script, such as r8169), so to accommodate that, Fiwix
initrd size is increased by 64MiB, while lowering kexec space by
the same amount to ensure enough userspace memory available in Fiwix.
Fiwix's maximum open file count is also bumped from 1.5K to 2.5K.

The Documentation folder is deleted before build, to further save
space in the ramdisk.
2024-02-17 15:37:33 +01:00
Gábor Stefanik 32138d13b9 Clean pre-Bash build artifacts before building the Linux kernel
All of these are archived, in a compressed form, in base.tar.bz2.
2024-02-17 15:32:02 +01:00
Gábor Stefanik 4e0a0f03dd Capture everything built before the repo system in a base tarball
Parts built before bash and the repo system are available aren't
stored in a clean repository tarball, so if any early file is
overwritten, it's lost. Fix this by creating a base.tar.bz2 right
after the repo is set up, to hold reference copies of early files.
This tarball isn't checksummed, since it varies considerably with
bootstrap options, but the binaries inside are protected by their
own checksums.
2024-02-17 15:32:02 +01:00
Gábor Stefanik 7dc9ebc71d Improve hygiene of kaem build scripts 2024-02-17 15:32:02 +01:00
fosslinux 9c1ae45bb8
Merge pull request #436 from Googulator/xz
Support early xz/lzma decompression, and use it wherever possible
2024-02-15 07:51:13 +00:00
Andrius Štikonas cfa178e8b5
Merge pull request #441 from Googulator/grub-resolution
Allow grub to autodetect screen resolution
2024-02-14 22:52:06 +00:00
Andrius Štikonas 3341de6d42
Merge pull request #439 from Googulator/seedless
Exclude bootstrap-seeds from kernel bootstrap images
2024-02-14 22:51:37 +00:00
Andrius Štikonas a3e7042aa2
Merge pull request #440 from Googulator/usb-fix
Update builder-hex0 with USB mass storage support fixes
2024-02-14 22:50:00 +00:00
Gábor Stefanik 4bc54d83cb Allow grub to autodetect screen resolution
With this, systems without a supported non-vesa FB driver in Linux
(such as Intel integrated graphics) get full resolution after reboot.
2024-02-14 16:02:28 +01:00
Gábor Stefanik 65953732a0 Support early xz/lzma decompression, and use it wherever possible 2024-02-14 14:34:16 +01:00
Gábor Stefanik 967f3f2bb8 Update builder-hex0 with USB mass storage support fixes 2024-02-13 19:53:43 +01:00
Gábor Stefanik 6ecd0a79ef Exclude bootstrap-seeds from kernel bootstrap images
In kernel bootstrap mode, the kernel (builder-hex0) includes the
ability to assemble hex0 source code, and to execute basic commands,
obviating the need for the bootstrap-seeds subdirectory.
With the bootstrap-seeds directory excluded, the image consists of
purely source code, with the exception of the boot sector, which is
assembled from hex0 code by rootfs.py, and delivered ready for BIOS
to boot.
2024-02-13 18:31:36 +01:00
fosslinux 34cb6758d2
Merge pull request #437 from Googulator/e820
Use e820 memory map from BIOS, if available
2024-02-13 10:08:37 +00:00
Gábor Stefanik f2aee4758e Use e820 memory map from BIOS, if available 2024-02-12 13:34:30 +01:00
Gábor Stefanik 9e4c17b68d Pass parameters to make_fiwix_initrd and kexec-fiwix
This extends make_fiwix_initrd and kexec-fiwix to support command
line parameters, instead of hardcoding relevant values within the
C sources. This way, it becomes possible to alter e.g. ramdisk size
without affecting checksums.

While we're at it, also support loading a memory map from file.
2024-02-12 13:34:00 +01:00
fosslinux bbb96a52d6
Merge pull request #432 from Googulator/fiwix-filelist-must-die
Replace Fiwix filelist with parsing builder-hex0's FS structures
2024-02-08 00:48:43 +00:00
fosslinux 54068851d8
Merge pull request #434 from fosslinux/m4
M4 alternative update
2024-02-07 22:11:58 +00:00
fosslinux 61cb7edf91
Merge pull request #435 from Googulator/grub
Fix typo in make_bootable.sh causing failure to reboot
2024-02-07 22:11:47 +00:00
fosslinux 6b4ec19e19 Add m4 1.4.19 2024-02-07 20:35:22 +11:00
fosslinux 068f7d8f40 Fix diffutils manpage reproducibility 2024-02-07 20:22:10 +11:00
Gábor Stefanik 009ec57835 Fix typo in make_bootable.sh causing failure to reboot 2024-02-06 19:22:35 +01:00
Gábor Stefanik 5945bdc1e8 Replace Fiwix filelist with parsing builder-hex0's FS structures
And while we're at it, use a more sustainable way of getting the
address of the next file to be written to.

Since builder-hex0 doesn't distinguish directories from zero-length
files, this has a limitation that it won't copy any zero-length
files or empty directories. Only one such file is important for the
bootstrap process (mes/config.h), which is recreated using an
improve step.
2024-02-06 12:30:24 +01:00
fosslinux ba9d182471 Revert "Update m4 to 1.4.10"
This reverts commit 6d8cf14998.
2024-02-06 18:06:46 +11:00
fosslinux 49f5520143
Merge pull request #429 from fosslinux/gawk
Add gawk 5.3.0
2024-02-06 07:06:16 +00:00
fosslinux f237d67b47
Merge pull request #433 from Googulator/better-early-bash-prompt
Improve pseudo-interactive prompts using the early bash
2024-02-06 06:11:05 +00:00
Gábor Stefanik d50ecd58e8 Improve pseudo-interactive prompts using the early bash
By wrapping $(cat) in an eval, redirections and other advanced
syntax can now work in the early prompts.
Also, since "set -E" is broken is the early bash, fall back to
using "set -e" and an EXIT trap, until we can upgrade to a bash
version that already has working "set -E", or perhaps backport
it to 2.05b.
2024-02-05 10:02:34 +01:00
fosslinux ffbdd8bc18 Add gawk 5.3.0 2024-02-05 18:51:49 +11:00
fosslinux 10d2a72d16
Merge pull request #415 from Googulator/grub
Support reboot in non-chroot modes using grub and an init script
2024-02-05 07:50:36 +00:00
Andrius Štikonas 50947ca61e Fix Fiwix file list and diffutils checksum.
Thanks to Googulator for spotting these.
2024-02-04 18:46:05 +00:00
Andrius Štikonas 0b6c8bfb94 Fix mismerge in parts.rst. 2024-02-04 16:01:30 +00:00
Gábor Stefanik 6d26855dc6 Support reboot in non-chroot modes using grub and an init script
We use grub-2.06 as 2.12 has some packaging issues, and can't be
built in live-bootstrap for now.
2024-02-04 16:54:13 +01:00
fosslinux eb3414c2da
Merge pull request #428 from fosslinux/diffutils
Diffutils 3.10
2024-02-04 03:57:57 +00:00
fosslinux 9c6e5d6406 Add diffutils 3.10 2024-02-04 14:57:46 +11:00
fosslinux 0f27c03ea4
Merge pull request #427 from fosslinux/gzip-newer
Add gzip 1.13
2024-02-04 03:56:07 +00:00
fosslinux cb4404029d Add gzip 1.13
Closes #369
2024-02-04 14:55:55 +11:00
fosslinux 6e05585ff9
Merge pull request #426 from fosslinux/opendoas
Opendoas (ie, sudo)
2024-02-04 03:52:25 +00:00
fosslinux bd303ada4a
Merge pull request #425 from fosslinux/m4-update
Update m4 to 1.4.10
2024-02-04 03:50:55 +00:00
fosslinux 3dee6eab1c
Merge pull request #424 from fosslinux/shadow
Shadow/Users
2024-02-04 03:50:36 +00:00
fosslinux 2188e8182a Add opendoas 2024-02-03 10:07:41 +11:00
fosslinux 75772adb91 Allow the use of setuid binaries
This also changes checksum of util-linux.
2024-02-03 10:07:41 +11:00
fosslinux 72dba439fd
Merge pull request #418 from Googulator/better-interactive
Better interactive mode support
2024-02-02 11:28:49 +00:00
fosslinux 6d8cf14998 Update m4 to 1.4.10 2024-02-02 18:05:02 +11:00
fosslinux bfd951ae51 Add shadow 2024-02-01 21:24:56 +11:00
fosslinux 0696018410 Add libbsd 2024-02-01 21:24:56 +11:00
fosslinux bbfab004c8 Add libmd 2024-02-01 21:24:56 +11:00
fosslinux 6c377de2f0 Add basic users and groups 2024-02-01 21:23:16 +11:00
fosslinux 3733956654
Merge pull request #423 from rick-masters/mkfs-no-prompt
Add -F flag to mkfs to avoid prompt to proceed.
2024-01-30 22:19:37 +00:00
fosslinux 8fe43f3103
Merge pull request #421 from Googulator/builder-hex0-submodule
Update builder-hex0 submodule (smaller stage1 code size)
2024-01-30 22:19:18 +00:00
Gábor Stefanik c748766fac Switch Fiwix's console to tty1 on bare metal
This is needed to make the monitoring/recovery shell on tty2 work,
as the default console is tty0, which will just print to whichever
virtual console is active at the moment, making the shell unusable.
2024-01-30 02:50:36 +01:00
Gábor Stefanik 221f2d0f8e Open shells on virtual terminals for monitoring in interactive mode
We spawn a shell:
- When Bash is first built, on tty2. This shell uses the old Bash,
  so interactive mode needs to be emulated using redirection. Thus,
  entering commands needs to be done using Enter followed by Ctrl+D,
  and certain redirection features are unavailable.
- After moving the system to disk, on tty2. Old Bash, same limitations.
- After 2nd Bash is built, on tty3. This is a fully functional shell.

This is disabled in chroot-like bootstrap modes, or when -i is not set.
2024-01-30 02:50:36 +01:00
Gábor Stefanik 8fca0973ab Fix "no job control in this shell" in final Bash prompt 2024-01-30 02:50:36 +01:00
rick-masters 5aa58e34e0 Add -F flag to mkfs to avoid prompt to proceed. 2024-01-29 23:51:52 +00:00
Gábor Stefanik 66887892bf Update builder-hex0 submodule
* Reduce stage1 footprint back to 192 bytes
* Fix execve without fork
2024-01-28 05:08:31 +01:00
Andrius Štikonas 3e2663b3bd
Merge pull request #419 from fosslinux/live-system-nochange
Live system nochange
2024-01-27 00:59:33 +00:00
Andrius Štikonas 64ec796314
Merge pull request #420 from Googulator/using-bash-bugfix
Fix typo in script-generator causing wrong traps in new Bash
2024-01-27 00:55:30 +00:00
fosslinux 438e01800c Update checksums 2024-01-26 10:29:57 +11:00
fosslinux 2182076773 Use a constant umask 2024-01-26 10:29:57 +11:00
fosslinux 67acb607f6 Never create pyc files on filesystem 2024-01-26 10:29:57 +11:00
fosslinux 1665723b70 Respect DESTDIR for lib-dynload directory in py 2.0.1 2024-01-26 10:29:57 +11:00
fosslinux 76217c6b0d Ensure sources are always cleaned the same
Otherwise, in --repo mode, sources are not cleaned identically to how
they are in non --repo mode
2024-01-26 10:29:57 +11:00
fosslinux b1e3da4e46 Move where DESTDIR is made 2024-01-26 10:29:57 +11:00
fosslinux 7f967fe2dc Cleanup the filesystem at end of bootstrap 2024-01-26 10:29:57 +11:00
fosslinux 8d9981772a Dont remove /usr/include
(lol, no idea how this ever worked)
2024-01-26 10:29:57 +11:00
fosslinux 62ce1b0c1e Remove old python versions 2024-01-26 10:29:53 +11:00
fosslinux fb35fcac4c Uninstall previous perl files using uninstall rather than src_install 2024-01-26 10:29:18 +11:00
fosslinux 0a98747dab Remove files unnecessarily kept around 2024-01-26 10:29:18 +11:00
fosslinux 718bccc7b2 Remove yacc using uninstall rather than in src_install of flex-2.6.4 2024-01-26 10:29:18 +11:00
fosslinux 6901877837 Remove unnecessary touching of live filesystem in flex-2.5.11 2024-01-26 10:29:18 +11:00
fosslinux c0485bce2f Remove unneccessary touching of live filesystem in coreutils-5.0 pass2 2024-01-26 10:29:18 +11:00
fosslinux 3669db9125 Use merged usr throughout the entire bootstrap 2024-01-26 10:29:18 +11:00
fosslinux 5b84cdd178 Don't touch live filesystem in bash-5.2.15
Rather, uninstall existing bash before bash is built
2024-01-26 10:29:18 +11:00
fosslinux bbe121f382 Add uninstall directive to manifest
Allows for removal of old files or packages
2024-01-26 10:29:18 +11:00
fosslinux 8cc26fa60a Remove old relic of "maint"
Never actually used in the manifest, and shouldn't have been there
2024-01-26 10:29:18 +11:00
Eduardo Sánchez Muñoz f995a749de Fix detection of device type (partition/full disk) in move_disk.sh
The version of stat available at that point does not support %Lr, so use instead its hexadecimal counterpar (%T)
2024-01-26 10:29:18 +11:00
Eduardo Sánchez Muñoz 2883225629 Only copy no-network distfiles to "init" when `--external-source` is passed (with kernel bootstrap)
All distfiles are still copied to "external"
2024-01-26 10:29:18 +11:00
Eduardo Sánchez Muñoz 679f73bbf1 Create disk images without root
`mke2fs` has a `-d` option that allows to populate the newly created filesystem without needing to temporarily mount it. That allows to use `parted` and `mkfs.ext3` on regular files without needing root access.
2024-01-26 10:29:18 +11:00
Gábor Stefanik 67aa2a4826 Fix the default build script used by "build <package name>"
Before the simplify refactor, the convention was to name the first
or default build script "<package name>.sh". The refactor changed
this default to "pass1.sh", with "pass2.sh" and so on used for
subsequent passes. This wasn't an issue when building usig scripts
generated by script-generator (which explicitly declares the build
script to use), but broke running "build <package name>" without
an explicit script name from the post-bootstrap bash prompt.

By deriving the script name from the current revision/pass number,
this commit restores that functionality.

An unfortunate blemish is that we number build scripts from 1, but
repo tarballs from 0 - it would be nice to standardize on a single
indexing convention.
2024-01-26 10:29:18 +11:00
Gábor Stefanik 46268e2882 Update builder-hex0 for USB boot support 2024-01-26 10:29:18 +11:00
fosslinux 9632f6af01 Update coreutils to 9.4 2024-01-26 10:29:18 +11:00
Gábor Stefanik 071f6c2d40 Fix typo in script-generator causing wrong traps in new Bash
When renaming using_bash to bash_build, I accidentally removed the
+ sign from the assignment, causing bash_build > 1 to never match,
resulting in old-style Ctrl+D traps even in the new Bash.

This patch restores the intended += behavior.
2024-01-24 10:29:51 +01:00
fosslinux 34e4bf9bcc
Merge pull request #381 from eduardosm/disk-images-without-root
Create disk images without root
2024-01-24 01:40:13 +00:00
Andrius Štikonas 04f6a2d204
Merge pull request #417 from Googulator/fix-default-buildscript
Fix the default build script used by "build <package name>"
2024-01-24 00:24:19 +00:00
Andrius Štikonas 458a65b1d0
Merge pull request #416 from Googulator/builder-hex0-submodule
Update builder-hex0 for USB boot support
2024-01-24 00:20:21 +00:00
Gábor Stefanik 177b58cc09 Fix the default build script used by "build <package name>"
Before the simplify refactor, the convention was to name the first
or default build script "<package name>.sh". The refactor changed
this default to "pass1.sh", with "pass2.sh" and so on used for
subsequent passes. This wasn't an issue when building usig scripts
generated by script-generator (which explicitly declares the build
script to use), but broke running "build <package name>" without
an explicit script name from the post-bootstrap bash prompt.

By deriving the script name from the current revision/pass number,
this commit restores that functionality.

An unfortunate blemish is that we number build scripts from 1, but
repo tarballs from 0 - it would be nice to standardize on a single
indexing convention.
2024-01-22 22:59:25 +01:00
Gábor Stefanik 25575b28b2 Update builder-hex0 for USB boot support 2024-01-22 22:57:42 +01:00
Andrius Štikonas 51dd19aadf
Merge pull request #382 from fosslinux/coreutils-9.4
Coreutils 9.4
2024-01-22 19:21:19 +00:00
fosslinux 06b40f3f00
Merge pull request #414 from Googulator/builder-hex0-submodule
Use builder-hex0 stages from submodule
2024-01-22 03:43:31 +00:00
Gábor Stefanik 2023432c5e Use builder-hex0 stages from submodule
This ends the reliance on the precompiled stage1 image in ootstrap-seeds,
and the locally committed copy of the stage2 hex0 code. Instead, both
stages are taken from the new builder-hex0 submodule, with stage1 compiled
by generator.py on the fly. The local copy of stage2 is dropped.

This way, updating to a newer builder-hex0 becomes much easier: just update
the submodule.
2024-01-21 19:18:21 +01:00
Gábor Stefanik 5d5eb5d73b Add builder-hex0 as a submodule 2024-01-21 19:04:56 +01:00
Andrius Štikonas 9ff2d1f0f1 Add abort.{s,o} to libc+tcc. 2024-01-20 22:07:31 +00:00
fosslinux c750c6f002 Update coreutils to 9.4 2024-01-21 08:47:34 +11:00
Andrius Štikonas 241f5431b0 Update amd64 checksums. 2024-01-20 18:07:38 +00:00
fosslinux 490bc621a5
Merge pull request #400 from Googulator/autogen-trap-fix
Upgrade autogen bootstrap tarball to fix trap issue
2024-01-13 01:07:00 +00:00
fosslinux f71445362e
Merge pull request #408 from Googulator/checksum-fix
Fix Python 3 checksum regression from 8341c4e
2024-01-13 01:06:31 +00:00
Eduardo Sánchez Muñoz 5243d3b3ce Fix detection of device type (partition/full disk) in move_disk.sh
The version of stat available at that point does not support %Lr, so use instead its hexadecimal counterpar (%T)
2024-01-12 22:39:44 +01:00
Eduardo Sánchez Muñoz 3f41cab6f7 Only copy no-network distfiles to "init" when `--external-source` is passed (with kernel bootstrap)
All distfiles are still copied to "external"
2024-01-12 22:39:21 +01:00
Eduardo Sánchez Muñoz 5dbaeaf19b Create disk images without root
`mke2fs` has a `-d` option that allows to populate the newly created filesystem without needing to temporarily mount it. That allows to use `parted` and `mkfs.ext3` on regular files without needing root access.
2024-01-12 22:39:20 +01:00
fosslinux e6185414db
Merge pull request #410 from rick-masters/populate-devices-for-kexec
Populate devices so kexec can read /proc/iomem.
2024-01-12 20:41:34 +00:00
fosslinux 1ddc0bc2e1
Merge pull request #409 from Googulator/fix-premature-shutdown
Fix panic due to after.sh prematurely quitting on shutdown
2024-01-12 20:41:08 +00:00
Gábor Stefanik 7e73fd25cb Fix Python 3 checksum regression from 8341c4e
The Linux kernel won't autocreate /dev/shm inside devtmpfs.
Without it, semaphores won't work properly in Python.

Previously, /dev/shm was set up in populate_device_nodes, but we
no longer run that after booting into Linux.
2024-01-12 19:58:40 +01:00
Gábor Stefanik 36c1925742 Fix panic due to after.sh prematurely quitting on shutdown
The sysrq shutdown trigger takes some time to fully shut down the system,
during which init is expected to continue running. Since after.sh is the
last step in our init, if it quits before shutdown is complete, Linux will
panic with "Attempted to kill init".

Add an infinite loop after shutdown is issued via sysrq to prevent this.
2024-01-12 19:55:10 +01:00
Gábor Stefanik 9ed4416940 Upgrade autogen bootstrap tarball to v1.0.1 to fix return code issue 2024-01-12 16:11:14 +01:00
rick-masters b2f4e3d129 Populate devices so kexec can read /proc/iomem. 2024-01-12 14:59:27 +00:00
Andrius Štikonas 754d967b29
Merge pull request #406 from rick-masters/fix-qemu-linux-str-concat
Account for int and NoneType in string concatenations.
2024-01-10 22:39:55 +00:00
Andrius Štikonas 969f42155b
Merge pull request #404 from rick-masters/add-curl-header-for-download
Add curl header to bypass suspected savannah throttling.
2024-01-10 22:36:48 +00:00
Andrius Štikonas 78a7a5e222
Merge pull request #403 from rick-masters/fix-download-error
Convert status_code to string for error message.
2024-01-10 22:36:29 +00:00
rick-masters 82235e5bd0 Account for int and NoneType in string concatenations. 2024-01-10 18:03:50 +00:00
rick-masters 7a0f03678c Add curl header to bypass suspected savannah throttling. 2024-01-10 17:46:15 +00:00
rick-masters 468aeb07a7 Convert status_code to string for error message. 2024-01-10 17:32:06 +00:00
fosslinux 5b7175de3e
Merge pull request #401 from stikonas/weak_symbols
Fix weak symbols to work in tcc.
2024-01-10 07:20:54 +00:00
fosslinux b2747cb6cf
Merge pull request #392 from Googulator/bare-metal-move-disk
Make move_disk work on bare metal
2024-01-10 07:16:32 +00:00
fosslinux f51fb080b1
Merge pull request #391 from Googulator/bare-metal-linux
Make the Linux kernel & Fiwix->Linux kexec more bare-metal-friendly
2024-01-10 07:16:20 +00:00
fosslinux 01a4f90378
Merge pull request #388 from Googulator/kernel-bootstrap-jobs
Restore multicore build support with kernel-bootstrap
2024-01-10 07:16:10 +00:00
fosslinux 31753cccb5
Merge pull request #386 from Googulator/debug-trap
Support interactive issue resolution prompts
2024-01-10 07:15:33 +00:00
Andrius Štikonas be15f9caca Fix weak symbols to work in tcc.
Fixes #322.
2024-01-09 22:52:43 +00:00
Andrius Štikonas 959ea69742
Merge pull request #398 from Googulator/after-fix
Fix spelling of sysrq-trigger in after.sh
2024-01-09 22:45:54 +00:00
Gábor Stefanik 50d1d68f99 Restore multicore build support with kernel-bootstrap
This was removed as part of the simplify refactor, severely slowing
down qemu and bare-metal builds. Restoring it brings us back to the
same build times that we saw before the refactor.
2024-01-08 12:56:15 +01:00
Gábor Stefanik a76fac4fa7 Allow update_env to incorporate runtime changes to bootstrap.cfg
Perform variable substitution at runtime, rather than at generation
time. This way, if bootstrap.cfg changes after update_env, the new
values there take effect immediately.
2024-01-08 12:55:19 +01:00
Gábor Stefanik a0f13c0ed2 Support interactive issue resolution prompts
This adds a new flag, -i / --interactive, which enables opening a
Bash prompt whenever something goes wrong in the bootstrap. This is
highly useful when developing or debugging live-bootstrap, but it
needs to be off by default, for use in automated processes.

In the future, asking for variables at runtime could (and perhaps
should) also be gated behind this flag.
2024-01-08 12:54:23 +01:00
Gábor Stefanik 82062143a4 Fix spelling of sysrq-trigger in after.sh 2024-01-08 12:43:31 +01:00
fosslinux 9ec45654cf
Merge pull request #390 from Googulator/devtmpfs
Use devtmpfs, and improve finalize_fhs.sh
2024-01-08 10:55:57 +00:00
fosslinux 4a822e231c
Merge pull request #389 from Googulator/after
After bootstrap, drop to a shell if needed, then shut down cleanly
2024-01-08 10:55:21 +00:00
fosslinux e44748cce1
Merge pull request #387 from Googulator/swap-support
Support swap files in qemu or bare-metal mode
2024-01-08 10:52:05 +00:00
fosslinux 0ffe5b5e71
Merge pull request #385 from Googulator/script-generator-uninit
Fix uninitialized variables in script-generator
2024-01-08 10:47:53 +00:00
Gábor Stefanik 2a095a3301 After bootstrap, drop to a shell if needed, then shut down cleanly 2024-01-08 05:19:19 +01:00
rick-masters 1bffe44154
Upgrade Fiwix to 1.5.0-lb1, pulling from upstream Mikaku repo. (#397) 2024-01-08 01:37:15 +00:00
Gábor Stefanik d5008f93a5 Support swap files in qemu or bare-metal mode
This can help alleviate memory pressure when bootstrapping
with high core counts.
2024-01-02 04:32:08 +01:00
Gábor Stefanik 82c570694a Make the Linux kernel & Fiwix->Linux kexec more bare-metal-friendly
* Enable additional hardware drivers in Linux for better bare metal
  display, network & input device compatibility
* Disable ATA-over-Ethernet support, because it spams the network
  with unnecessary packets, is basically useless for bootstrapping,
  and may even be a security risk
* Increase Fiwix initrd size to 1280MB to fit a larger Linux build
* Make the Fiwix kexec size configurable the same way as initrd
  (and reduce from 280MB to 256MB which is sufficient in my testing)
* Use a more conservative memory map for Fiwix & Linux
* Boot Linux with consoleblank=0 on bare metal, so the build won't
  go blind after 5 minutes
* Support kexec-fiwix with interrupts disabled (will be useful later
  when builder-hex0 is updated)
2024-01-02 01:33:09 +01:00
Gábor Stefanik 6c2144e50a Make move_disk work on bare metal
* Use -S32 -H64 --force to trick sfdisk into allowing MiB-aligned
  partitions on a drive that reports a CHS geometry
* Explicitly create partition at sector 2097152 (=1GiB)
* Force mkfs.ext4 to overwrite any existing filesystem it might find
* Wait up to 2 minutes for the disk to become readable (especially
  USB drives often show up with a delay)
2024-01-02 00:57:29 +01:00
Gábor Stefanik 8341c4e089 Use devtmpfs, and improve finalize_fhs.sh
With this, finalize_fhs.sh can be rerun as needed, e.g. when rebooting.
Also, the preferred nameserver will persist after DHCP.

Thanks to devtmpfs, we no longer need to manage /dev once Linux is up.
2024-01-02 00:15:32 +01:00
Gábor Stefanik 9384a5d432 Support "!=" comparisons in script-generator 2024-01-02 00:14:00 +01:00
Gábor Stefanik f9cf916e5e Fix uninitialized variables in script-generator 2024-01-02 00:11:29 +01:00
230 changed files with 29245 additions and 6592 deletions

View File

@ -21,7 +21,7 @@ jobs:
- name: Install pylint
run: sudo pip3 install pylint
- name: pylint
run: pylint rootfs.py lib/utils.py lib/generator.py lib/target.py --disable=duplicate-code
run: pylint rootfs.py lib/utils.py lib/generator.py lib/target.py check_substitutes.py --disable=duplicate-code
shellcheck:
name: Lint shell files
@ -42,3 +42,12 @@ jobs:
run: sudo pip3 install reuse
- name: reuse
run: reuse lint
substitutes:
name: Check validity of substituted tarballs
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v3
- name: Check validity of substitutes
run: ./check_substitutes.py

4
.gitmodules vendored
View File

@ -5,3 +5,7 @@
[submodule "seed/stage0-posix"]
path = seed/stage0-posix
url = https://github.com/oriansj/stage0-posix
[submodule "builder-hex0"]
path = builder-hex0
url = https://github.com/ironmeld/builder-hex0

View File

@ -9,6 +9,6 @@ Source: https://github.com/fosslinux/live-bootstrap
# Copyright: $YEAR $NAME <$CONTACT>
# License: ...
Files: steps/*/sources steps/*/*.checksums steps/SHA256SUMS.pkgs steps/*/simple-patches/* steps/pre-network-sources
Files: steps/*/sources steps/*/*.checksums steps/SHA256SUMS.pkgs steps/*/simple-patches/* seed/*.checksums
Copyright: none
License: MIT

121
LICENSES/CC0-1.0.txt Normal file
View File

@ -0,0 +1,121 @@
Creative Commons Legal Code
CC0 1.0 Universal
CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN
ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS
PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM
THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED
HEREUNDER.
Statement of Purpose
The laws of most jurisdictions throughout the world automatically confer
exclusive Copyright and Related Rights (defined below) upon the creator
and subsequent owner(s) (each and all, an "owner") of an original work of
authorship and/or a database (each, a "Work").
Certain owners wish to permanently relinquish those rights to a Work for
the purpose of contributing to a commons of creative, cultural and
scientific works ("Commons") that the public can reliably and without fear
of later claims of infringement build upon, modify, incorporate in other
works, reuse and redistribute as freely as possible in any form whatsoever
and for any purposes, including without limitation commercial purposes.
These owners may contribute to the Commons to promote the ideal of a free
culture and the further production of creative, cultural and scientific
works, or to gain reputation or greater distribution for their Work in
part through the use and efforts of others.
For these and/or other purposes and motivations, and without any
expectation of additional consideration or compensation, the person
associating CC0 with a Work (the "Affirmer"), to the extent that he or she
is an owner of Copyright and Related Rights in the Work, voluntarily
elects to apply CC0 to the Work and publicly distribute the Work under its
terms, with knowledge of his or her Copyright and Related Rights in the
Work and the meaning and intended legal effect of CC0 on those rights.
1. Copyright and Related Rights. A Work made available under CC0 may be
protected by copyright and related or neighboring rights ("Copyright and
Related Rights"). Copyright and Related Rights include, but are not
limited to, the following:
i. the right to reproduce, adapt, distribute, perform, display,
communicate, and translate a Work;
ii. moral rights retained by the original author(s) and/or performer(s);
iii. publicity and privacy rights pertaining to a person's image or
likeness depicted in a Work;
iv. rights protecting against unfair competition in regards to a Work,
subject to the limitations in paragraph 4(a), below;
v. rights protecting the extraction, dissemination, use and reuse of data
in a Work;
vi. database rights (such as those arising under Directive 96/9/EC of the
European Parliament and of the Council of 11 March 1996 on the legal
protection of databases, and under any national implementation
thereof, including any amended or successor version of such
directive); and
vii. other similar, equivalent or corresponding rights throughout the
world based on applicable law or treaty, and any national
implementations thereof.
2. Waiver. To the greatest extent permitted by, but not in contravention
of, applicable law, Affirmer hereby overtly, fully, permanently,
irrevocably and unconditionally waives, abandons, and surrenders all of
Affirmer's Copyright and Related Rights and associated claims and causes
of action, whether now known or unknown (including existing as well as
future claims and causes of action), in the Work (i) in all territories
worldwide, (ii) for the maximum duration provided by applicable law or
treaty (including future time extensions), (iii) in any current or future
medium and for any number of copies, and (iv) for any purpose whatsoever,
including without limitation commercial, advertising or promotional
purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each
member of the public at large and to the detriment of Affirmer's heirs and
successors, fully intending that such Waiver shall not be subject to
revocation, rescission, cancellation, termination, or any other legal or
equitable action to disrupt the quiet enjoyment of the Work by the public
as contemplated by Affirmer's express Statement of Purpose.
3. Public License Fallback. Should any part of the Waiver for any reason
be judged legally invalid or ineffective under applicable law, then the
Waiver shall be preserved to the maximum extent permitted taking into
account Affirmer's express Statement of Purpose. In addition, to the
extent the Waiver is so judged Affirmer hereby grants to each affected
person a royalty-free, non transferable, non sublicensable, non exclusive,
irrevocable and unconditional license to exercise Affirmer's Copyright and
Related Rights in the Work (i) in all territories worldwide, (ii) for the
maximum duration provided by applicable law or treaty (including future
time extensions), (iii) in any current or future medium and for any number
of copies, and (iv) for any purpose whatsoever, including without
limitation commercial, advertising or promotional purposes (the
"License"). The License shall be deemed effective as of the date CC0 was
applied by Affirmer to the Work. Should any part of the License for any
reason be judged legally invalid or ineffective under applicable law, such
partial invalidity or ineffectiveness shall not invalidate the remainder
of the License, and in such case Affirmer hereby affirms that he or she
will not (i) exercise any of his or her remaining Copyright and Related
Rights in the Work or (ii) assert any associated claims and causes of
action with respect to the Work, in either case contrary to Affirmer's
express Statement of Purpose.
4. Limitations and Disclaimers.
a. No trademark or patent rights held by Affirmer are waived, abandoned,
surrendered, licensed or otherwise affected by this document.
b. Affirmer offers the Work as-is and makes no representations or
warranties of any kind concerning the Work, express, implied,
statutory or otherwise, including without limitation warranties of
title, merchantability, fitness for a particular purpose, non
infringement, or the absence of latent or other defects, accuracy, or
the present or absence of errors, whether or not discoverable, all to
the greatest extent permissible under applicable law.
c. Affirmer disclaims responsibility for clearing rights of other persons
that may apply to the Work or any use thereof, including without
limitation any person's Copyright and Related Rights in the Work.
Further, Affirmer disclaims responsibility for obtaining any necessary
consents, permissions or other rights required for any use of the
Work.
d. Affirmer understands and acknowledges that Creative Commons is not a
party to this document and has no duty or obligation with respect to
this CC0 or use of the Work.

View File

@ -1,298 +0,0 @@
COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL)
Version 1.0
1. Definitions.
1.1. “Contributor” means each individual or entity that creates or contributes
to the creation of Modifications.
1.2. “Contributor Version” means the combination of the Original Software,
prior Modifications used by a Contributor (if any), and the Modifications
made by that particular Contributor.
1.3. “Covered Software” means (a) the Original Software, or (b) Modifications,
or (c) the combination of files containing Original Software with files containing
Modifications, in each case including portions thereof.
1.4. “Executable” means the Covered Software in any form other than Source
Code.
1.5. “Initial Developer” means the individual or entity that first makes Original
Software available under this License.
1.6. “Larger Work” means a work which combines Covered Software or portions
thereof with code not governed by the terms of this License.
1.7. “License” means this document.
1.8. “Licensable” means having the right to grant, to the maximum extent possible,
whether at the time of the initial grant or subsequently acquired, any and
all of the rights conveyed herein.
1.9. “Modifications” means the Source Code and Executable form of any of the
following:
A. Any file that results from an addition to, deletion from or modification
of the contents of a file containing Original Software or previous Modifications;
B. Any new file that contains any part of the Original Software or previous
Modification; or
C. Any new file that is contributed or otherwise made available under the
terms of this License.
1.10. “Original Software” means the Source Code and Executable form of computer
software code that is originally released under this License.
1.11. “Patent Claims” means any patent claim(s), now owned or hereafter acquired,
including without limitation, method, process, and apparatus claims, in any
patent Licensable by grantor.
1.12. “Source Code” means (a) the common form of computer software code in
which modifications are made and (b) associated documentation included in
or with such code.
1.13. “You” (or “Your”) means an individual or a legal entity exercising rights
under, and complying with all of the terms of, this License. For legal entities,
“You” includes any entity which controls, is controlled by, or is under common
control with You. For purposes of this definition, “control” means (a) the
power, direct or indirect, to cause the direction or management of such entity,
whether by contract or otherwise, or (b) ownership of more than fifty percent
(50%) of the outstanding shares or beneficial ownership of such entity.
2. License Grants.
2.1. The Initial Developer Grant.
Conditioned upon Your compliance with Section 3.1 below and subject to third
party intellectual property claims, the Initial Developer hereby grants You
a world-wide, royalty-free, non-exclusive license:
(a) under intellectual property rights (other than patent or trademark) Licensable
by Initial Developer, to use, reproduce, modify, display, perform, sublicense
and distribute the Original Software (or portions thereof), with or without
Modifications, and/or as part of a Larger Work; and
(b) under Patent Claims infringed by the making, using or selling of Original
Software, to make, have made, use, practice, sell, and offer for sale, and/or
otherwise dispose of the Original Software (or portions thereof).
(c) The licenses granted in Sections 2.1(a) and (b) are effective on the date
Initial Developer first distributes or otherwise makes the Original Software
available to a third party under the terms of this License.
(d) Notwithstanding Section 2.1(b) above, no patent license is granted: (1)
for code that You delete from the Original Software, or (2) for infringements
caused by: (i) the modification of the Original Software, or (ii) the combination
of the Original Software with other software or devices.
2.2. Contributor Grant.
Conditioned upon Your compliance with Section 3.1 below and subject to third
party intellectual property claims, each Contributor hereby grants You a world-wide,
royalty-free, non-exclusive license:
(a) under intellectual property rights (other than patent or trademark) Licensable
by Contributor to use, reproduce, modify, display, perform, sublicense and
distribute the Modifications created by such Contributor (or portions thereof),
either on an unmodified basis, with other Modifications, as Covered Software
and/or as part of a Larger Work; and
(b) under Patent Claims infringed by the making, using, or selling of Modifications
made by that Contributor either alone and/or in combination with its Contributor
Version (or portions of such combination), to make, use, sell, offer for sale,
have made, and/or otherwise dispose of: (1) Modifications made by that Contributor
(or portions thereof); and (2) the combination of Modifications made by that
Contributor with its Contributor Version (or portions of such combination).
(c) The licenses granted in Sections 2.2(a) and 2.2(b) are effective on the
date Contributor first distributes or otherwise makes the Modifications available
to a third party.
(d) Notwithstanding Section 2.2(b) above, no patent license is granted: (1)
for any code that Contributor has deleted from the Contributor Version; (2)
for infringements caused by: (i) third party modifications of Contributor
Version, or (ii) the combination of Modifications made by that Contributor
with other software (except as part of the Contributor Version) or other devices;
or (3) under Patent Claims infringed by Covered Software in the absence of
Modifications made by that Contributor.
3. Distribution Obligations.
3.1. Availability of Source Code.
Any Covered Software that You distribute or otherwise make available in Executable
form must also be made available in Source Code form and that Source Code
form must be distributed only under the terms of this License. You must include
a copy of this License with every copy of the Source Code form of the Covered
Software You distribute or otherwise make available. You must inform recipients
of any such Covered Software in Executable form as to how they can obtain
such Covered Software in Source Code form in a reasonable manner on or through
a medium customarily used for software exchange.
3.2. Modifications.
The Modifications that You create or to which You contribute are governed
by the terms of this License. You represent that You believe Your Modifications
are Your original creation(s) and/or You have sufficient rights to grant the
rights conveyed by this License.
3.3. Required Notices.
You must include a notice in each of Your Modifications that identifies You
as the Contributor of the Modification. You may not remove or alter any copyright,
patent or trademark notices contained within the Covered Software, or any
notices of licensing or any descriptive text giving attribution to any Contributor
or the Initial Developer.
3.4. Application of Additional Terms.
You may not offer or impose any terms on any Covered Software in Source Code
form that alters or restricts the applicable version of this License or the
recipients rights hereunder. You may choose to offer, and to charge a fee
for, warranty, support, indemnity or liability obligations to one or more
recipients of Covered Software. However, you may do so only on Your own behalf,
and not on behalf of the Initial Developer or any Contributor. You must make
it absolutely clear that any such warranty, support, indemnity or liability
obligation is offered by You alone, and You hereby agree to indemnify the
Initial Developer and every Contributor for any liability incurred by the
Initial Developer or such Contributor as a result of warranty, support, indemnity
or liability terms You offer.
3.5. Distribution of Executable Versions.
You may distribute the Executable form of the Covered Software under the terms
of this License or under the terms of a license of Your choice, which may
contain terms different from this License, provided that You are in compliance
with the terms of this License and that the license for the Executable form
does not attempt to limit or alter the recipients rights in the Source Code
form from the rights set forth in this License. If You distribute the Covered
Software in Executable form under a different license, You must make it absolutely
clear that any terms which differ from this License are offered by You alone,
not by the Initial Developer or Contributor. You hereby agree to indemnify
the Initial Developer and every Contributor for any liability incurred by
the Initial Developer or such Contributor as a result of any such terms You
offer.
3.6. Larger Works.
You may create a Larger Work by combining Covered Software with other code
not governed by the terms of this License and distribute the Larger Work as
a single product. In such a case, You must make sure the requirements of this
License are fulfilled for the Covered Software.
4. Versions of the License.
4.1. New Versions.
Sun Microsystems, Inc. is the initial license steward and may publish revised
and/or new versions of this License from time to time. Each version will be
given a distinguishing version number. Except as provided in Section 4.3,
no one other than the license steward has the right to modify this License.
4.2. Effect of New Versions.
You may always continue to use, distribute or otherwise make the Covered Software
available under the terms of the version of the License under which You originally
received the Covered Software. If the Initial Developer includes a notice
in the Original Software prohibiting it from being distributed or otherwise
made available under any subsequent version of the License, You must distribute
and make the Covered Software available under the terms of the version of
the License under which You originally received the Covered Software. Otherwise,
You may also choose to use, distribute or otherwise make the Covered Software
available under the terms of any subsequent version of the License published
by the license steward.
4.3. Modified Versions.
When You are an Initial Developer and You want to create a new license for
Your Original Software, You may create and use a modified version of this
License if You: (a) rename the license and remove any references to the name
of the license steward (except to note that the license differs from this
License); and (b) otherwise make it clear that the license contains terms
which differ from this License.
5. DISCLAIMER OF WARRANTY.
COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN “AS IS” BASIS, WITHOUT
WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION,
WARRANTIES THAT THE COVERED SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT
FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY
AND PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY COVERED SOFTWARE
PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER
CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION.
THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE.
NO USE OF ANY COVERED SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
6. TERMINATION.
6.1. This License and the rights granted hereunder will terminate automatically
if You fail to comply with terms herein and fail to cure such breach within
30 days of becoming aware of the breach. Provisions which, by their nature,
must remain in effect beyond the termination of this License shall survive.
6.2. If You assert a patent infringement claim (excluding declaratory judgment
actions) against Initial Developer or a Contributor (the Initial Developer
or Contributor against whom You assert such claim is referred to as “Participant”)
alleging that the Participant Software (meaning the Contributor Version where
the Participant is a Contributor or the Original Software where the Participant
is the Initial Developer) directly or indirectly infringes any patent, then
any and all rights granted directly or indirectly to You by such Participant,
the Initial Developer (if the Initial Developer is not the Participant) and
all Contributors under Sections 2.1 and/or 2.2 of this License shall, upon
60 days notice from Participant terminate prospectively and automatically
at the expiration of such 60 day notice period, unless if within such 60 day
period You withdraw Your claim with respect to the Participant Software against
such Participant either unilaterally or pursuant to a written agreement with
Participant.
6.3. In the event of termination under Sections 6.1 or 6.2 above, all end
user licenses that have been validly granted by You or any distributor hereunder
prior to termination (excluding licenses granted to You by any distributor)
shall survive termination.
7. LIMITATION OF LIABILITY.
UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING
NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY
OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED SOFTWARE, OR ANY SUPPLIER
OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL,
INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION,
DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE
OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF
SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS
LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL
INJURY RESULTING FROM SUCH PARTYS NEGLIGENCE TO THE EXTENT APPLICABLE LAW
PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR
LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION
MAY NOT APPLY TO YOU.
8. U.S. GOVERNMENT END USERS.
The Covered Software is a “commercial item,” as that term is defined in 48
C.F.R. 2.101 (Oct. 1995), consisting of “commercial computer software” (as
that term is defined at 48 C.F.R. § 252.227-7014(a)(1)) and “commercial computer
software documentation” as such terms are used in 48 C.F.R. 12.212 (Sept.
1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4
(June 1995), all U.S. Government End Users acquire Covered Software with only
those rights set forth herein. This U.S. Government Rights clause is in lieu
of, and supersedes, any other FAR, DFAR, or other clause or provision that
addresses Government rights in computer software under this License.
9. MISCELLANEOUS.
This License represents the complete agreement concerning subject matter hereof.
If any provision of this License is held to be unenforceable, such provision
shall be reformed only to the extent necessary to make it enforceable. This
License shall be governed by the law of the jurisdiction specified in a notice
contained within the Original Software (except to the extent applicable law,
if any, provides otherwise), excluding such jurisdictions conflict-of-law
provisions. Any litigation relating to this License shall be subject to the
jurisdiction of the courts located in the jurisdiction and venue specified
in a notice contained within the Original Software, with the losing party
responsible for costs, including, without limitation, court costs and reasonable
attorneys fees and expenses. The application of the United Nations Convention
on Contracts for the International Sale of Goods is expressly excluded. Any
law or regulation which provides that the language of a contract shall be
construed against the drafter shall not apply to this License. You agree that
You alone are responsible for compliance with the United States export administration
regulations (and the export control laws and regulation of any other countries)
when You use, distribute or otherwise make available any Covered Software.
10. RESPONSIBILITY FOR CLAIMS.
As between Initial Developer and the Contributors, each party is responsible
for claims and damages arising, directly or indirectly, out of its utilization
of rights under this License and You agree to work with Initial Developer
and Contributors to distribute such responsibility on an equitable basis.
Nothing herein is intended or shall be deemed to constitute any admission
of liability.

View File

@ -31,7 +31,7 @@ Without using Python:
metal. (All of this *can* be automated, but not in a trustable way. See
further below.)
a. **chroot:** Create a directory where the chroot will reside, run
``./download-distfiles.sh``, and copy:
``./download-distfiles.sh``, and copy:
* The entire contents of ``seed/stage0-posix`` into that directory.
* All other files in ``seed`` into that directory.
* ``steps/`` and ``distfiles/`` into that directory.
@ -40,16 +40,17 @@ Without using Python:
* Run ``/bootstrap-seeds/POSIX/x86/kaem-optional-seed`` in the chroot.
(Eg, ``chroot rootfs /bootstrap-seeds/POSIX/x86/kaem-optional-seed``).
b. **QEMU:** Create two blank disk images.
* On the first image, write
``seed/stage0-posix/bootstrap-seeds/NATIVE/x86/builder-hex0-x86-stage1.img``
to it, followed by ``kernel-bootstrap/builder-hex0-x86-stage2.hex0``,
followed by zeros padding the disk to the next sector.
* Generate ``builder-hex0-x86-stage1.img`` from hex0 source:
``sed 's/[;#].*$//g' builder-hex0/builder-hex0-x86-stage1-hex0 | xxd -r -p``
* On the first image, write ``builder-hex0-x86-stage1.img`` to it, followed
by ``kernel-bootstrap/builder-hex0-x86-stage2.hex0``, followed by zeros
padding the disk to the next sector.
* distfiles can be obtained using ``./download-distfiles.sh``.
* See the list in part a. For every file within that list, write a line to
the disk ``src <size-of-file> <path-to-file>``, followed by the contents
of the file.
* *Only* copy distfiles listed in ``steps/pre-network-sources`` into
this disk.
* *Only* copy distfiles listed in ``sources`` files for ``build:`` steps
manifested before ``improve: get_network`` into this disk.
* Optionally (if you don't do this, distfiles will be network downloaded):
* On the second image, create an MSDOS partition table and one ext3
partition.

1
builder-hex0 Submodule

@ -0,0 +1 @@
Subproject commit a2781242d19e6be891b453d8fa827137ab5db31a

162
check_substitutes.py Executable file
View File

@ -0,0 +1,162 @@
#!/usr/bin/env python3
# SPDX-License-Identifier: GPL-3.0-or-later
#
# SPDX-FileCopyrightText: 2024 fosslinux <fosslinux@aussies.space>
"""Check that substituted files are the same."""
import bz2
import filecmp
import gzip
import itertools
import lzma
import shutil
import tarfile
import tempfile
import sys
import os
from lib.generator import Generator
# Get a temporary directory to work in
working = tempfile.mkdtemp()
# Colour constants
# pylint: disable=too-few-public-methods
class Colors():
"""ANSI Color Codes"""
GREY = "\033[90m"
RED = "\033[91m"
GREEN = "\033[92m"
ORANGE = "\033[91m\033[93m"
YELLOW = "\033[93m"
END = "\033[0m"
def traverse_path(base_root):
"""Takes a path and returns a set of all directories and files in that path."""
all_dirs = set()
all_files = set()
for root, directories, files in os.walk(base_root, topdown=True):
for d in directories:
all_dirs.add(os.path.join(root, d).lstrip(base_root))
for f in files:
all_files.add(os.path.join(root, f).lstrip(base_root))
return (all_dirs, all_files)
class Distfile():
"""Represents one distfile and operations performed on it."""
def __init__(self, i, url):
self.i = i
self.url = url
self.out_file = f"{i}-{os.path.basename(url)}"
self.filepath = ""
def download(self):
"""Downloads the distfile."""
Generator.download_file(self.url, working, self.out_file, silent=True)
self.filepath = os.path.join(working, self.out_file)
def decompress(self):
"""Decompresses the distfile."""
compression = self.out_file.split('.')[-1]
decompress_func = {
"gz": gzip.open,
"tgz": gzip.open,
"bz2": bz2.open,
"xz": lzma.open,
"lzma": lzma.open
}
if compression not in decompress_func:
# No decompression needed
return
# Remove the compression extension
new_path = '.'.join(self.filepath.split('.')[:-1])
# tgz -> .tar
if compression == "tgz":
new_path = f"{new_path}.tar"
# Move the decompressed binary stream to a new file
with decompress_func[compression](self.filepath, 'rb') as fin:
with open(new_path, 'wb') as fout:
shutil.copyfileobj(fin, fout)
self.filepath = new_path
def extract(self):
"""Extracts the distfile."""
# Sanity check
if not tarfile.is_tarfile(self.filepath):
return
out_dir = os.path.join(working, f"{self.i}")
os.mkdir(out_dir)
with tarfile.open(self.filepath, 'r') as f:
f.extractall(path=out_dir)
self.filepath = out_dir
# It makes more sense here to label them d1 and d2 rather than have one be self.
# pylint: disable=no-self-argument
def compare(d1, d2):
"""Compares the distfile to another distfile."""
if not os.path.isdir(d1.filepath):
# Compare files
return filecmp.cmp(d1.filepath, d2.filepath, shallow=False)
if not os.path.isdir(d2.filepath):
# Then, d2 is a file and d1 is a directory
return False
# Otherwise it's two directories
dirnames1, filenames1 = traverse_path(d1.filepath)
dirnames2, filenames2 = traverse_path(d2.filepath)
if dirnames1 != dirnames2:
return False
if filenames1 != filenames2:
return False
return filecmp.cmpfiles(d1.filepath, d2.filepath, filenames1, shallow=False)
def check(*args):
"""Check if a list of distfiles are equivalent."""
notequiv = []
# Find all pairs that are not equivalent
for pair in itertools.combinations(args, 2):
if pair[0].compare(pair[1]):
print(f"{Colors.GREY}DEBUG: {pair[0].url} is equivalent to {pair[1].url}{Colors.END}")
else:
notequiv.append(pair)
# Decompress all, and check again
for d in {y for x in notequiv for y in x}:
d.decompress()
for pair in notequiv.copy():
if pair[0].compare(pair[1]):
# pylint: disable=line-too-long
print(f"{Colors.YELLOW}NOTE: {pair[0].url} is equivalent to {pair[1].url} when decompressed{Colors.END}")
notequiv.remove(pair)
# Extract all, and check again
for d in {y for x in notequiv for y in x}:
d.extract()
has_error = False
for pair in notequiv:
if pair[0].compare(pair[1]):
# pylint: disable=line-too-long
print(f"{Colors.ORANGE}WARN: {pair[0].url} is equivalent to {pair[1].url} when extracted{Colors.END}")
else:
has_error = True
# pylint: disable=line-too-long
print(f"{Colors.RED}ERROR: {pair[0].url} is not equivalent to {pair[1].url}!{Colors.END}")
return has_error
def main():
"""Main function."""
has_error = False
with open("substitutes", 'r', encoding="utf-8") as f:
for line in f.readlines():
urls = line.strip().split(' ')
distfiles = []
for i, url in enumerate(urls):
distfiles.append(Distfile(i, url))
for distfile in distfiles:
distfile.download()
if check(*distfiles):
has_error = True
sys.exit(has_error)
if __name__ == "__main__":
main()

View File

@ -15,8 +15,19 @@ download_source() {
local dest_path="${distfiles}/${fname}"
if ! [ -e "${dest_path}" ]; then
echo "Downloading ${fname}"
curl --fail --location "${url}" --output "${dest_path}"
curl --fail --location "${url}" --output "${dest_path}" || true
fi
}
check_source() {
local distfiles="${1}"
local url="${2}"
local checksum="${3}"
local fname="${4}"
# Default to basename of url if not given
fname="${fname:-$(basename "${url}")}"
local dest_path="${distfiles}/${fname}"
echo "${checksum} ${dest_path}" | sha256sum -c
}
@ -25,6 +36,7 @@ set -e
cd "$(dirname "$(readlink -f "$0")")"
mkdir -p distfiles
# First, try to download anything missing - ignore failing mirrors
for entry in steps/*; do
[ -e "${entry}/sources" ] || continue
@ -35,3 +47,15 @@ for entry in steps/*; do
download_source distfiles ${line}
done < "${entry}/sources"
done
# Then, check if everything has been obtained at least once
for entry in steps/*; do
[ -e "${entry}/sources" ] || continue
# shellcheck disable=SC2162
while read line; do
# This is intentional - we want to split out ${line} into separate arguments.
# shellcheck disable=SC2086
check_source distfiles ${line}
done < "${entry}/sources"
done

File diff suppressed because it is too large Load Diff

View File

@ -12,6 +12,7 @@ import hashlib
import os
import shutil
import tarfile
import traceback
import requests
# pylint: disable=too-many-instance-attributes
@ -29,6 +30,7 @@ class Generator():
self.external_sources = external_sources
self.repo_path = repo_path
self.source_manifest = self.get_source_manifest(not self.external_sources)
self.early_source_manifest = self.get_source_manifest(True)
self.target_dir = None
self.external_dir = None
@ -59,26 +61,16 @@ class Generator():
# argument matrix ... or we could just use ext3 instead which
# is effectively universally the same
if kernel_bootstrap:
init_path = os.path.join(self.target_dir, 'init')
self.target_dir = os.path.join(self.target_dir, 'init')
os.mkdir(self.target_dir)
os.mkdir(init_path)
self.target_dir = init_path
if self.repo_path or self.external_sources:
target.add_disk("external", filesystem="ext3")
target.mount_disk("external", "external")
else:
if not self.repo_path and not self.external_sources:
self.external_dir = os.path.join(self.target_dir, 'external')
elif using_kernel:
self.target_dir = os.path.join(self.target_dir, 'disk')
target.add_disk("disk",
filesystem="ext3",
size=(target_size + "M") if target_size else "16G",
bootable=True)
target.mount_disk("disk", "disk")
self.external_dir = os.path.join(self.target_dir, 'external')
os.makedirs(self.external_dir, exist_ok=True)
os.makedirs(self.external_dir)
if self.early_preseed:
# Extract tar containing preseed
@ -87,15 +79,13 @@ class Generator():
shutil.copy2(os.path.join(self.git_dir, 'seed', 'preseeded.kaem'),
os.path.join(self.target_dir, 'kaem.x86'))
else:
self.stage0_posix()
self.stage0_posix(kernel_bootstrap)
self.seed()
self.steps()
self.distfiles()
self.create_fiwix_file_list()
if self.repo_path:
repo_dir = os.path.join(self.external_dir, 'repo-preseeded')
shutil.copytree(self.repo_path, repo_dir)
@ -103,10 +93,16 @@ class Generator():
if kernel_bootstrap:
self.create_builder_hex0_disk_image(self.target_dir + '.img', target_size)
if kernel_bootstrap and (self.external_sources or self.repo_path):
target.umount_disk('external')
if self.repo_path or self.external_sources:
mkfs_args = ['-d', os.path.join(target.path, 'external')]
target.add_disk("external", filesystem="ext3", mkfs_args=mkfs_args)
elif using_kernel:
target.umount_disk('disk')
mkfs_args = ['-F', '-d', os.path.join(target.path, 'disk')]
target.add_disk("disk",
filesystem="ext3",
size=(str(target_size) + "M") if target_size else "16G",
bootable=True,
mkfs_args=mkfs_args)
def steps(self):
"""Copy in steps."""
@ -114,10 +110,12 @@ class Generator():
shutil.copytree(os.path.join(self.git_dir, 'steps'), os.path.join(self.target_dir, 'steps'))
def stage0_posix(self):
def stage0_posix(self, kernel_bootstrap=False):
"""Copy in all of the stage0-posix"""
stage0_posix_base_dir = os.path.join(self.git_dir, 'seed', 'stage0-posix')
for entry in os.listdir(stage0_posix_base_dir):
if kernel_bootstrap and entry == 'bootstrap-seeds':
continue
orig = os.path.join(stage0_posix_base_dir, entry)
target = os.path.join(self.target_dir, entry)
if os.path.isfile(orig):
@ -125,10 +123,12 @@ class Generator():
else:
shutil.copytree(orig, target)
arch = stage0_arch_map.get(self.arch, self.arch)
kaem_optional_seed = os.path.join(self.git_dir, 'seed', 'stage0-posix', 'bootstrap-seeds',
'POSIX', arch, 'kaem-optional-seed')
shutil.copy2(kaem_optional_seed, os.path.join(self.target_dir, 'init'))
if not kernel_bootstrap:
arch = stage0_arch_map.get(self.arch, self.arch)
kaem_optional_seed = os.path.join(self.git_dir, 'seed', 'stage0-posix',
'bootstrap-seeds', 'POSIX', arch,
'kaem-optional-seed')
shutil.copy2(kaem_optional_seed, os.path.join(self.target_dir, 'init'))
def seed(self):
"""Copy in extra seed files"""
@ -137,35 +137,12 @@ class Generator():
if os.path.isfile(os.path.join(seed_dir, entry)):
shutil.copy2(os.path.join(seed_dir, entry), os.path.join(self.target_dir, entry))
@staticmethod
def add_fiwix_files(file_list_path, dirpath):
"""Add files to the list to populate Fiwix file system"""
for root, _, filepaths in os.walk(dirpath):
if 'stage0-posix' in root:
continue
with open(file_list_path, 'a', encoding="utf-8") as file_list:
for filepath in filepaths:
file_list.write(f"/{os.path.join(root, filepath)}\n")
def create_fiwix_file_list(self):
"""Create a list of files to populate Fiwix file system"""
file_list_path = os.path.join(self.target_dir, 'steps', 'lwext4-1.0.0-lb1',
'files', 'fiwix-file-list.txt')
shutil.copyfile(os.path.join(self.target_dir, 'steps', 'lwext4-1.0.0-lb1',
'files', 'early-artifacts-needed-after-fiwix.txt'),
file_list_path)
save_cwd = os.getcwd()
os.chdir(self.target_dir)
self.add_fiwix_files(file_list_path, 'steps')
self.add_fiwix_files(file_list_path, 'distfiles')
os.chdir(save_cwd)
def distfiles(self):
"""Copy in distfiles"""
def copy_no_network_distfiles(out):
def copy_no_network_distfiles(out, early):
# Note that "no disk" implies "no network" for kernel bootstrap mode
for file in self.source_manifest:
manifest = self.early_source_manifest if early else self.source_manifest
for file in manifest:
file = file[3].strip()
shutil.copy2(os.path.join(self.distfiles_dir, file),
os.path.join(out, file))
@ -175,13 +152,13 @@ class Generator():
if early_distfile_dir != main_distfile_dir:
os.makedirs(early_distfile_dir, exist_ok=True)
copy_no_network_distfiles(early_distfile_dir)
copy_no_network_distfiles(early_distfile_dir, True)
if self.external_sources:
shutil.copytree(self.distfiles_dir, main_distfile_dir, dirs_exist_ok=True)
else:
os.mkdir(main_distfile_dir)
copy_no_network_distfiles(main_distfile_dir)
copy_no_network_distfiles(main_distfile_dir, False)
@staticmethod
def output_dir(srcfs_file, dirpath):
@ -221,28 +198,44 @@ class Generator():
self.output_tree(image_file, '.')
# Add commands to kick off stage0-posix
cmd = ' '.join(['hex0',
'./bootstrap-seeds/POSIX/x86/hex0_x86.hex0',
'./bootstrap-seeds/POSIX/x86/hex0-seed\n'])
cmd = ' '.join(['src',
'0',
'/bootstrap-seeds\n'])
image_file.write(cmd.encode())
cmd = ' '.join(['src',
'0',
'/bootstrap-seeds/POSIX\n'])
image_file.write(cmd.encode())
cmd = ' '.join(['src',
'0',
'/bootstrap-seeds/POSIX/x86\n'])
image_file.write(cmd.encode())
cmd = ' '.join(['hex0',
'./bootstrap-seeds/POSIX/x86/kaem-minimal.hex0',
'./bootstrap-seeds/POSIX/x86/kaem-optional-seed\n'])
'/x86/hex0_x86.hex0',
'/bootstrap-seeds/POSIX/x86/hex0-seed\n'])
image_file.write(cmd.encode())
cmd = ' '.join(['./bootstrap-seeds/POSIX/x86/kaem-optional-seed', './kaem.x86\n'])
cmd = ' '.join(['hex0',
'/x86/kaem-minimal.hex0',
'/bootstrap-seeds/POSIX/x86/kaem-optional-seed\n'])
image_file.write(cmd.encode())
cmd = ' '.join(['hex0',
'/x86/kaem-minimal.hex0',
'/init\n'])
image_file.write(cmd.encode())
cmd = ' '.join(['/bootstrap-seeds/POSIX/x86/kaem-optional-seed', '/kaem.x86\n'])
image_file.write(cmd.encode())
os.chdir(save_cwd)
def create_builder_hex0_disk_image(self, image_file_name, size):
"""Create builder-hex0 disk image"""
shutil.copyfile(os.path.join('seed', 'stage0-posix', 'bootstrap-seeds',
'NATIVE', 'x86', 'builder-hex0-x86-stage1.img'),
image_file_name)
with open(image_file_name, 'ab') as image_file:
# Compile and write stage1 binary seed
with open(os.path.join('builder-hex0', 'builder-hex0-x86-stage1.hex0'),
encoding="utf-8") as infile:
for line in infile:
image_file.write(bytes.fromhex(line.split('#')[0].split(';')[0].strip()))
# Append stage2 hex0 source
with open(os.path.join('kernel-bootstrap', 'builder-hex0-x86-stage2.hex0'),
with open(os.path.join('builder-hex0', 'builder-hex0-x86-stage2.hex0'),
encoding="utf-8") as infile:
image_file.write(infile.read().encode())
# Pad to next sector
@ -282,7 +275,7 @@ When in doubt, try deleting the file in question -- it will be downloaded again
this script the next time")
@staticmethod
def download_file(url, directory, file_name):
def download_file(url, directory, file_name, silent=False):
"""
Download a single source archive.
"""
@ -294,10 +287,12 @@ this script the next time")
# Actually download the file
headers = {
"Accept-Encoding": "identity"
"Accept-Encoding": "identity",
"User-Agent": "curl/7.88.1"
}
if not os.path.isfile(abs_file_name):
print(f"Downloading: {file_name}")
if not silent:
print(f"Downloading: {file_name}")
response = requests.get(url, allow_redirects=True, stream=True,
headers=headers, timeout=20)
if response.status_code == 200:
@ -305,13 +300,18 @@ this script the next time")
target_file.write(response.raw.read())
else:
raise requests.HTTPError("Download failed: HTTP " +
response.status_code + " " + response.reason)
str(response.status_code) + " " + response.reason)
return abs_file_name
def get_packages(self):
"""Prepare remaining sources"""
for line in self.source_manifest:
path = self.download_file(line[2], line[1], line[3])
try:
path = self.download_file(line[2], line[1], line[3])
except requests.HTTPError:
print(traceback.format_exc())
for line in self.source_manifest:
path = os.path.join(line[1], line[3])
self.check_file(path, line[0])
@classmethod

View File

@ -8,10 +8,9 @@ Contains a class that represents a target directory
"""
import enum
import getpass
import os
from lib.utils import mount, umount, create_disk, run_as_root
from lib.utils import mount, create_disk
class TargetType(enum.Enum):
"""Different types of target dirs we can have"""
@ -24,7 +23,6 @@ class Target:
"""
_disks = {}
_disk_filesystems = {}
_mountpoints = {}
def __init__(self, path="target"):
@ -34,15 +32,6 @@ class Target:
if not os.path.exists(self.path):
os.mkdir(self.path)
def __del__(self):
for path in self._mountpoints:
print(f"Unmounting {path}")
umount(path)
for disk in self._disks.values():
print(f"Detaching {disk}")
run_as_root("losetup", "-d", disk)
def tmpfs(self, size="8G"):
"""Mount a tmpfs"""
print(f"Mounting tmpfs on {self.path}")
@ -59,32 +48,13 @@ class Target:
mkfs_args=None):
"""Add a disk"""
disk_path = os.path.join(self.path, f"{name}.img")
self._disks[name] = create_disk(disk_path,
tabletype,
filesystem,
size,
bootable,
mkfs_args)
self._disk_filesystems[name] = filesystem
# Allow executing user to access it
run_as_root("chown", getpass.getuser(), self._disks[name])
def mount_disk(self, name, mountpoint=None):
"""Mount the disk"""
if mountpoint is None:
mountpoint = f"{name}_mnt"
mountpoint = os.path.join(self.path, mountpoint)
os.mkdir(mountpoint)
mount(self._disks[name] + "p1", mountpoint, self._disk_filesystems[name])
# Allow executing user to access it
run_as_root("chown", getpass.getuser(), mountpoint)
self._mountpoints[name] = mountpoint
return mountpoint
def umount_disk(self, name):
"""Unmount a disk"""
umount(self._mountpoints[name])
del self._mountpoints[name]
create_disk(disk_path,
tabletype,
filesystem,
size,
bootable,
mkfs_args)
self._disks[name] = disk_path
def get_disk(self, name):
"""Get the path to a device of a disk"""

View File

@ -37,16 +37,13 @@ def create_disk(image, disk_type, fs_type, size, bootable=False, mkfs_args=None)
if mkfs_args is None:
mkfs_args = []
run('truncate', '-s', size, image)
# First find the device we will use, then actually use it
loop_dev = run_as_root('losetup', '-f', capture_output=True).stdout.decode().strip()
run_as_root('losetup', '-P', loop_dev, image)
# Create the partition
if disk_type != "none":
run_as_root('parted', '--script', image, 'mklabel', disk_type, 'mkpart',
'primary', fs_type, '1GiB' if bootable else '1MiB', '100%')
run_as_root('partprobe', loop_dev)
run_as_root('mkfs.' + fs_type, loop_dev + "p1", *mkfs_args)
return loop_dev
# 1 GiB if bootable, 1 MiB otherwise
offset = str(1024 * 1024 * (1024 if bootable else 1))
run('parted', '--script', image, 'mklabel', disk_type, 'mkpart',
'primary', fs_type, offset + 'B', '100%')
run('mkfs.' + fs_type, image, '-E', 'offset=' + offset, *mkfs_args)
def mount(source, target, fs_type, options='', **kwargs):
"""Mount filesystem"""

337
parts.rst
View File

@ -4,6 +4,7 @@
.. SPDX-FileCopyrightText: 2021 Paul Dersey <pdersey@gmail.com>
.. SPDX-FileCopyrightText: 2021-23 fosslinux <fosslinux@aussies.space>
.. SPDX-FileCopyrightText: 2021 Melg Eight <public.melg8@gmail.com>
.. SPDX-FileCopyrightText: 2024 Gábor Stefanik <netrolller.3d@gmail.com>
.. SPDX-License-Identifier: CC-BY-SA-4.0
@ -152,8 +153,9 @@ mescc-tools-extra
utilities ``cp`` and ``chown``. This allows us to have one unified
directory for our binaries. Furthermore, we also build ``sha256sum``, a
checksumming tool, that we use to ensure reproducibility and authenticity
of generated binaries. We also build initial ``untar``, ``ungz`` and ``unbz2``
utilities to deal with compressed archives.
of generated binaries. We also build initial ``untar``, ``ungz``, ``unxz``
and ``unbz2`` utilities to deal with compressed archives, as well as
``replace``, a trivial search-and-replace program.
live-bootstrap seed
===================
@ -179,8 +181,9 @@ The following directives are supported:
* ``build``, builds a particular package defined in ``steps/``.
* ``improve``, runs a script making a distinct and logical improvement to the
live bootstrap system.
* ``define``, define a variable evaluated from other constants/variables.
* ``define``, defines a variable evaluated from other constants/variables.
* ``jump``, moves into a new rootfs/kernel using a custom script.
* ``uninstall``, removes a previously built package for file.
checksum-transcriber 1.0
========================
@ -196,7 +199,7 @@ simple-patch 1.0
text block given to it, and replacing it with another text block. This is
sufficient for the early patching required before we have full proper GNU patch.
mes 0.25
mes 0.26
========
GNU ``mes`` is a scheme interpreter. It runs the sister project ``mescc``,
@ -209,6 +212,10 @@ to this part:
2. We then use this to recompile the Mes interpreter as well as building
the libc. This second interpreter is faster and less buggy.
The ``mescc`` component depends on the ``nyacc`` parsing library, version 1.00.2.
We use a modified version, 1.00.2-lb1, which incorporates Timothy Sample's
changes required to bootstrap ``mescc`` without relying on pregenerated files.
From this point until musl, we are capable of making non-standard and strange
libraries. All libraries are in ``/usr/lib/mes``, and includes are in
``/usr/include/mes``, as they are incompatible with musl.
@ -243,13 +250,13 @@ using older versions compilable by tinycc. Prior to this point, all tools
have been adapted significantly for the bootstrap; now, we will be using
old tooling instead.
fiwix 1.4.0-lb1
fiwix 1.5.0-lb1
===============
If the kernel bootstrap option is enabled then the Fiwix kernel is built next.
This is a Linux 2.0 clone which is much simpler to understand and build than
Linux. This version of Fiwix is a fork of 1.4.0 that contains many
modifications and enhancements to support live-boostrap.
Linux. This version of Fiwix is an intermediate release on top of 1.5.0 that
contains many modifications and enhancements to support live-boostrap.
lwext4 1.0.0-lb1
================
@ -266,20 +273,6 @@ kexec-fiwix
If the kernel bootstrap option is enabled then a C program `kexec-fiwix` is compiled
and run which places the Fiwix ram drive in memory and launches the Fiwix kernel.
esfu 1.0
========
This is an extremely crippled basic implementation of ``mount`` and ``mknod``.
Sufficient only for the next step.
early_mount_disk
================
When using kernel bootstrap, distfiles from this point exist on an external
disk. Using ``esfu``'s ``mount`` and ``mknod``, we are able to mount this disk.
This is unnecessary when not using kernel bootstrap as everything is done on the
disk.
make 3.82
=========
@ -329,13 +322,15 @@ we skip them.
The ``cp`` in this stage replaces the ``mescc-tools-extra`` ``cp``.
heirloom devtools
=================
byacc 20240109
==============
``lex`` and ``yacc`` from the Heirloom project. The Heirloom project is
a collection of standard UNIX utilities derived from code by Caldera and
Sun. Differently from the analogous utilities from the GNU project, they
can be compiled with a simple ``Makefile``.
The Berkeley Yacc parser generator, a public-domain implementation of the
``yacc`` utility. Differently from the analogous ``bison`` utility from the
GNU project, it can be compiled with a simple ``Makefile``.
Some code is backported from an earlier version of byacc, 20140101, because
of an incompatibility of newer versions with meslibc.
bash 2.05b
==========
@ -346,7 +341,19 @@ kaem, including proper POSIX sh support, globbing, etc.
Bash ships with a bison pre-generated file here which we delete.
Unfortunately, we have not bootstrapped bison but fortunately for us,
heirloom yacc is able to cope here.
Berkeley Yacc is able to cope here.
setup_repo
==========
This is a simple script that sets up the ``/external/repo`` directory to hold
binary tarballs of artifacts built in each step. It also creates ``base.tar.bz2``,
a tarball containing every artifact built before ``setup_repo``, which have no
individual repository tarballs corresponding to them.
From this point on, every package is built and installed into a temporary
directory, packaged from there into a repository tarball, and then installed
onto the live system from the newly built repository tarball.
update_env
==========
@ -354,17 +361,26 @@ update_env
This is a simple script that makes some small updates to the env file that were
not possible when using kaem.
flex 2.5.11
===========
merged_usr
==========
``flex`` is a tool for generating lexers or scanners: programs that
recognize lexical patterns.
Sets up symlinks from folders outside the ``/usr`` hierarchy to the corresponding
``/usr`` ones ("merged-usr" file system layout).
Unfortunately ``flex`` also depends on itself for compiling its own
scanner, so first flex 2.5.11 is compiled, with its scanner definition
manually modified so that it can be processed by lex from the Heirloom
project (the required modifications are mostly syntactical, plus a few
workarounds to avoid some flex advanced features).
populate_device_nodes
=====================
Sets up important device nodes under ``/dev``. These nodes are temporary, as once
the Linux kernel is started, ``devtmpfs`` is used to maintain ``/dev``.
open_console
============
In interactive mode only, sets up an interactive Bash console, accessible by
pressing Ctrl+Alt+F2. Because the early Bash doesn't support true interactive
operation, we emulate it using a REPL. A side effect of this is that after every
command entered, one must press Enter followed by Ctrl+D, rather than just Enter
as with a real interactive shell.
tcc 0.9.27 (patched)
====================
@ -381,9 +397,7 @@ C library. Our previous Mes C library was incomplete which prevented us
from building many newer or more complex programs.
``tcc`` has slight problems when building and linking ``musl``, so we
apply a few patches. In particular, we replace all weak symbols with
strong symbols and will patch ``tcc`` in the next step to ignore
duplicate symbols.
apply a few patches.
We do not use any of ``/usr/lib/mes`` or ``/usr/include/mes`` any longer, rather
using ``/usr/lib`` and ``/usr/include`` like normal.
@ -426,6 +440,30 @@ m4 1.4.7
flex 2.6.4 and bison. It allows macros to be defined and files to be
generated from those macros.
heirloom devtools
=================
``lex`` from the Heirloom project. The Heirloom project is a collection
of standard UNIX utilities derived from code by Caldera and Sun.
Differently from the analogous utilities from the GNU project, they can
be compiled with a simple ``Makefile``.
Because issues with the Heirloom version of ``yacc`` compiled against musl,
we continue using Berkeley Yacc together with Heirloom ``lex`` for the next
few steps.
flex 2.5.11
===========
``flex`` is a tool for generating lexers or scanners: programs that
recognize lexical patterns.
Unfortunately ``flex`` also depends on itself for compiling its own
scanner, so first flex 2.5.11 is compiled, with its scanner definition
manually modified so that it can be processed by lex from the Heirloom
project (the required modifications are mostly syntactical, plus a few
workarounds to avoid some flex advanced features).
flex 2.6.4
==========
@ -657,14 +695,13 @@ and the GNU assembler ``as``.
musl 1.1.24 (v3)
================
We rebuild musl for the third time. This time we use GNU ar rather than ``tcc -ar``,
so we can drop weak symbols patch. Also, we can use GNU as to build assembly source files,
We rebuild musl for the third time. This time we can use GNU as to build assembly source files,
so those assembly files that tcc failed to compile no longer have to be patched.
tcc 0.9.27 (musl v3)
====================
We rebuild tcc against new musl and without a patch to ignore duplicate symbols.
We rebuild tcc against new musl.
gcc 4.0.4
=========
@ -693,12 +730,19 @@ GCC can build the latest as of the time of writing musl version.
We also don't need any of the TCC patches that we used before.
To accomodate Fiwix, there are patches to avoid syscalls set_thread_area and clone.
Linux headers 5.10.41
=====================
Linux headers 4.14.341-openela
==============================
This gets some headers out of the Linux kernel that are required to use the
kernel ABI, needed for ``util-linux``.
The version of the Linux kernel used comes from the Open Enterprise Linux
Association, who maintain this version as a continuation of the now ended
4.14 LTS release, to the same maintenance standards as the LTS.
Because this isn't directly available as an efficiently compressed tarball,
we start with the final LTS release, version 4.14.336, and apply the
differences using a patch file.
gcc 4.0.4
=========
@ -711,14 +755,13 @@ util-linux 2.19.1
This gives us access to a much less crippled version of ``mount`` and ``mknod``.
The latest version is not used because of autotools/GCC incompatibilities.
move_disk
=========
dhcpcd 10.0.1
=============
In ``kernel-bootstrap`` mode, we have been working off an initramfs for some
things up until now. At this point we are now capable of moving to it entirely,
so we do so.
``dhcpcd`` is a DHCP client daemon, which we later use to obtain an IP address.
Only wired interfaces are supported at the moment.
kbd-1.15
kbd 1.15
========
``kbd`` contains ``loadkeys`` which is required for building the Linux kernel.
@ -758,40 +801,100 @@ kind of soft-restart. It is only built for non-chroot mode, as we only use it
in non-chroot mode. It is used to boot the Linux kernel that will be built next
from the current Linux kernel (when using ``--kernel``).
Linux kernel 4.9.10
===================
clean_sources
=============
A script to remove source tarballs no longer needed for subsequent build steps from
distfiles. This frees space for the Linux kernel build.
clean_artifacts
===============
More space freeing in preparation for the kernel build. This time, we clear out any
artifacts left over from previous builds that weren't packaged in a proper repository
tarball or ``base.tar.bz2``
Linux kernel 4.14.341-openela
=============================
A lot going on here. This is the first (and currently only) time the Linux kernel
is built. Firstly, Linux kernel version 4.9.x is used because newer versions
require much more stringent requirements on the make, GCC, binutils versions.
However, the docs are also wrong, as the latest of the 4.9.x series does not
work with our version of binutils. However, a much earlier 4.9.10 does
(selected arbitrarily, could go newer but did not test), with a small amount
of patching. This is also modern enough for most hardware and to cause few
problems with software built afterwards. Secondly, the linux-libre scripts are used
to deblob the kernel. Every other pregenerated file is appended with ``_shipped``
is built. Firstly, Linux kernel version 4.14.y is used because newer versions
require much more stringent requirements on the make and GCC versions. This is also
modern enough for most hardware and to cause few problems with software built
afterwards. Secondly, since 4.14.y is no longer supported by kernel.org, we use the
last available kernel.org tarball, 4.14.336, and patch it up to 4.14.341-openela,
maintained by the Open Enterprise Linux Association as an ELTS version.
Pregenerated files in the kernel have file names appended with ``_shipped``
so we use a ``find`` command to remove those, which are automatically regenerated.
The kernel config was originally taken from Void Linux, and was then modified
for the requirements of live-bootstrap, including compiler features, drivers,
and removing modules. Modules are unused. They are difficult to transfer to
subsequent systems, and we do not have ``modprobe``.
The linux-libre scripts are no longer used to deblob the kernel, due to undesirable
modifications they make beyond just deblobbing. Instead, the remaining 4 drivers that
ship binary blobs in line with source code are stripped using a patch - neither of
these drivers are relevant to bootstrapping.
The kernel is built in 2 stages:
1. We build ``vmlinux`` and all of its dependencies.
2. After clearing away any unnecessary intermediate files, we build the final
``bzImage`` kernel. This is necessary because the whole build wouldn't fit
in Fiwix's initrd image all at once.
We then kexec to use the new Linux kernel, using ``kexec-tools`` for a Linux
kernel and ``kexec-linux`` for Fiwix.
move_disk
=========
In ``kernel-bootstrap`` mode, we have been working off an initramfs for some
things up until now. At this point we are now capable of moving to it entirely,
so we do so.
finalize_job_count
==================
In ``kernel-bootstrap`` mode, up until this point, we had no multiprocessor
support, and very limited RAM, so all builds used only one thread.
At this point, we allow the full selected thread count to take effect,
speeding up subsequent builds thanks to parallelization.
finalize_fhs
============
Sets up the file system as per the Filesystem Hierarchy Standard (FHS), creating
directories and mounting pseudo-filesystems as necessary.
open_console
============
In interactive mode only, sets up an interactive Bash console, accessible by
pressing Ctrl+Alt+F2, again. This is still the early Bash, requiring Ctrl+D.
swap
====
If enabled in ``bootstrap.cfg``, creates and activates a swap file under the
name ``/swapfile``.
musl 1.2.4
==========
At this point, it is guaranteed that we are running on Linux with thread support,
so we rebuild musl with thread support.
curl 8.5.0
==========
curl 8.5.0 and get_network
==========================
``curl`` is used to download files using various protocols including HTTP and HTTPS.
However, this first build does not support encrypted HTTPS yet. ``curl`` requires
Linux and musl with thread support, which are now available.
Once curl is built, we use dhcpcd to set up networking for downloading subsequent
source packages.
bash 5.2.15
===========
@ -800,6 +903,13 @@ and is built with GNU readline support so it can be used as a fully-featured
interactive shell. ``autoconf-2.69`` is used to regenerate the configure
script and ``bison`` is used to recreate some included generated files.
open_console
============
Now that we have a proper interactive shell available, open another interactive
console (only in interactive mode), this time accessible using Ctrl+Shift+F3, since
Ctrl+Shift+F2 is already occupied by our previous console, running the old Bash.
xz 5.4.1
========
@ -825,10 +935,10 @@ tar 1.34
Newer tar has better support for decompressing .tar.bz2 and .tar.xz archives.
It also deals better with modern tar archives with extra metadata.
coreutils 8.32
coreutils 9.4
==============
We build the latest available coreutils 8.32 which adds needed options to make
We build the latest available coreutils 9.4 which adds needed options to make
results of build metadata reproducible. For example, timestamps are changed with
``touch --no-dereference``.
@ -886,7 +996,7 @@ bison 2.3
This is an older version of bison required for the bison files in perl 5.10.1.
We backwards-bootstrap this from 3.4.1, using 3.4.1 to compile the bison files
in 2.3. This parser works sufficiently well for perl 5.10.5.
in 2.3. This parser works sufficiently well for perl 5.10.1.
bison 3.4.2
===========
@ -922,11 +1032,13 @@ libarchive 3.5.2
``libarchive`` is a C library used to read and write archives.
openssl 1.1.1l
openssl 3.0.13
==============
OpenSSL is a C library for secure communications/cryptography.
We do not use the latest 3.3.0 release because it causes lockups in curl.
curl 8.5.0
==========
@ -978,7 +1090,7 @@ We also add in two patchsets to the compiler;
* one to add support for musl shared library support
* one providing a few compiler flags/features that are required later to build GCC 10
binutils 2.38
binutils 2.41
=============
This version of binutils provides a more comprehensive set of programming tools for
@ -1193,14 +1305,14 @@ C/C++ standards available in GCC 4.7. Instead of manually configuring & compilin
every subdirectory, since we now have ``autogen`` available we are able to use
the top-level configure to build the project. We do not use GCC's bootstrap mode,
where GCC is recompiled with itself after being built, since we're just going
to use this GCC to compile GCC 12, it adds build time for little benefit.
to use this GCC to compile GCC 13, it adds build time for little benefit.
binutils 2.38 (pass 2)
binutils 2.41 (pass 2)
======================
We recompile Binutils with the full intended autogen top-level build system,
instead of the subdirectory build system used before. This creates a binutils
that functions completely correctly for the build of GCC 12 (eg, fixes the
that functions completely correctly for the build of GCC 13 (eg, fixes the
mistaken plugin loading support). Other modern features are added, including;
* threaded linking
@ -1227,3 +1339,86 @@ 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``.
gawk 5.3.0
==========
Similarly to diffutils, our gawk is currently very ancient (1999). That doesn't
cut it for modern software such as glibc. We update gawk to a much more modern
version.
m4 1.4.19
=========
We are in need of a newer version of m4 for some modern software. Attempts to
update m4 1.4.7 earlier in the bootstrap demonstrate some issues with Fiwix,
so we build a newer m4 at the end of the bootstrap instead.
cleanup_filesystem
==================
Remove any remaining loose build artifacts from ``steps``.
If preseeding was used, this step also removes the ``repo-preseeded`` directory.
null_time
=========
If FORCE_TIMESTAMPS is enabled, resets all file times in the file system to the
Unix epoch, to ensure maximum file system reproducibility.
update_checksums
================
If checksum updating is enabled, regenerates SHA256SUMS.pkgs to contain the actual
hashes of the packages just built.
after
=====
At the end of the bootstrap, executes any additional shell scripts placed in the
``/steps/after`` directory (if it exists), opens an interactive console (only in
interactive mode), and finally ensures a clean shutdown of the bootstrap system
(only needed in qemu and on bare metal).

View File

@ -12,6 +12,7 @@ you can run bootstap inside chroot.
# SPDX-FileCopyrightText: 2021 Bastian Bittorf <bb@npl.de>
# SPDX-FileCopyrightText: 2021 Melg Eight <public.melg8@gmail.com>
# SPDX-FileCopyrightText: 2021-23 fosslinux <fosslinux@aussies.space>
# SPDX-FileCopyrightText: 2023-24 Gábor Stefanik <netrolller.3d@gmail.com>
import argparse
import os
@ -27,12 +28,17 @@ def create_configuration_file(args):
"""
config_path = os.path.join('steps', 'bootstrap.cfg')
with open(config_path, "w", encoding="utf_8") as config:
config.write(f"ARCH={args.arch}\n")
config.write(f"ARCH_DIR={stage0_arch_map.get(args.arch, args.arch)}\n")
config.write(f"FORCE_TIMESTAMPS={args.force_timestamps}\n")
config.write(f"CHROOT={args.chroot or args.bwrap}\n")
config.write(f"UPDATE_CHECKSUMS={args.update_checksums}\n")
config.write(f"JOBS={args.cores}\n")
config.write(f"SWAP_SIZE={args.swap}\n")
config.write(f"FINAL_JOBS={args.cores}\n")
config.write(f"INTERNAL_CI={args.internal_ci or False}\n")
config.write(f"BARE_METAL={args.bare_metal}\n")
config.write(f"INTERACTIVE={args.interactive}\n")
config.write(f"BARE_METAL={args.bare_metal or (args.qemu and args.interactive)}\n")
if (args.bare_metal or args.qemu) and not args.kernel:
if args.repo or args.external_sources:
config.write("DISK=sdb1\n")
@ -44,7 +50,7 @@ def create_configuration_file(args):
config.write("KERNEL_BOOTSTRAP=False\n")
config.write(f"BUILD_KERNELS={args.update_checksums or args.build_kernels}\n")
# pylint: disable=too-many-statements
# pylint: disable=too-many-statements,too-many-branches
def main():
"""
A few command line arguments to customize bootstrap.
@ -70,22 +76,27 @@ def main():
help="Force all files timestamps to be 0 unix time",
action="store_true")
parser.add_argument("--update-checksums",
help="Update checksum files.",
help="Update checksum files",
action="store_true")
parser.add_argument("--external-sources",
help="Download sources externally from live-bootstrap.",
help="Download sources externally from live-bootstrap",
action="store_true")
parser.add_argument("--build-kernels",
help="Also build kernels in chroot and bwrap builds.",
help="Also build kernels in chroot and bwrap builds",
action="store_true")
parser.add_argument("--no-create-config",
help="Do not automatically create config file",
action="store_true")
parser.add_argument("-i", "--interactive",
help="Use interactive prompts to resolve issues during bootstrap",
action="store_true")
parser.add_argument("-r", "--repo",
help="Path to prebuilt binary packages.", nargs=None)
help="Path to prebuilt binary packages", nargs=None)
parser.add_argument("--early-preseed",
help="Skip early stages of live-bootstrap.", nargs=None)
help="Skip early stages of live-bootstrap", nargs=None)
parser.add_argument("--internal-ci", help="INTERNAL for github CI")
parser.add_argument("-s", "--swap", help="Swap space to allocate in Linux",
default=0)
# QEMU arguments
parser.add_argument("-q", "--qemu", help="Use QEMU",
@ -143,6 +154,16 @@ def main():
else:
args.target_size = 0
# Swap file size validation
if args.qemu or args.bare_metal:
args.swap = (int(str(args.swap).rstrip('gGmM')) *
(1024 if str(args.swap).lower().endswith('g') else 1))
else:
args.swap = 0
# Set constant umask
os.umask(0o022)
# bootstrap.cfg
try:
os.remove(os.path.join('steps', 'bootstrap.cfg'))
@ -229,24 +250,33 @@ print(shutil.which('chroot'))
if args.kernel:
generator.prepare(target, using_kernel=True, target_size=size)
run(args.qemu_cmd,
arg_list = [
'-enable-kvm',
'-m', str(args.qemu_ram) + 'M',
'-smp', str(args.cores),
'-no-reboot',
'-drive', 'file=' + target.get_disk("disk") + ',format=raw',
'-drive', 'file=' + target.get_disk("external") + ',format=raw',
'-drive', 'file=' + target.get_disk("disk") + ',format=raw'
]
if target.get_disk("external") is not None:
arg_list += [
'-drive', 'file=' + target.get_disk("external") + ',format=raw',
]
arg_list += [
'-nic', 'user,ipv6=off,model=e1000',
'-kernel', args.kernel,
'-nographic',
'-append', 'console=ttyS0 root=/dev/sda1 rootfstype=ext3 init=/init rw')
'-append',
]
if args.interactive:
arg_list += ['consoleblank=0 earlyprintk=vga root=/dev/sda1 '
'rootfstype=ext3 init=/init rw']
else:
arg_list += ['console=ttyS0 earlycon=uart8250,io,0x3f8,115200n8 '
'root=/dev/sda1 rootfstype=ext3 init=/init rw']
else:
generator.prepare(target, kernel_bootstrap=True, target_size=size)
arg_list = [
'-enable-kvm',
'-m', str(args.qemu_ram) + 'M',
'-smp', str(args.cores),
'-no-reboot',
'-drive', 'file=' + generator.target_dir + '.img' + ',format=raw'
]
if target.get_disk("external") is not None:
@ -255,10 +285,11 @@ print(shutil.which('chroot'))
]
arg_list += [
'-machine', 'kernel-irqchip=split',
'-nic', 'user,ipv6=off,model=e1000',
'-nographic'
'-nic', 'user,ipv6=off,model=e1000'
]
run(args.qemu_cmd, *arg_list)
if not args.interactive:
arg_list += ['-no-reboot', '-nographic']
run(args.qemu_cmd, *arg_list)
if __name__ == "__main__":
main()

View File

@ -11,5 +11,5 @@ set -ex
PATH=/${ARCH_DIR}/bin
catm seed-full.kaem /steps/env seed.kaem
catm seed-full.kaem /steps/bootstrap.cfg /steps/env seed.kaem
kaem --file seed-full.kaem

View File

@ -0,0 +1 @@
1927a357c893d60952616146e788af25e637635b2862650914bf895d27f556a6 script-generator

View File

@ -7,10 +7,10 @@
#define MAX_TOKEN 64
#define MAX_STRING 2048
#include <bootstrappable.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <bootstrappable.h>
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;
@ -168,7 +168,7 @@ void output_config(FILE *out) {
char *get_var(char *name) {
/* Search through existing variables. */
Variable *var;
Variable *last;
Variable *last = NULL;
for (var = variables; var != NULL; var = var->next) {
if (strcmp(name, var->name) == 0) {
return var->val;
@ -212,13 +212,14 @@ Token *fill(Token *tok, Directive *directive, int type) {
Token *logic(Token *tok, char **val) {
/* logic = "("
* (name |
* (name "==" value) |
* (logic "||" logic) |
* (logic "&&" logic))
* ")"
* (name |
* (name "==" value) |
* (name "!=" value) |
* (logic "||" logic) |
* (logic "&&" logic))
* ")"
*/
char *lhs = tok->val;
char *rhs;
tok = tok->next;
@ -235,8 +236,17 @@ Token *logic(Token *tok, char **val) {
} else {
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 {
fputs("Expected == after ", stderr);
fputs("Expected == or != after ", stderr);
fputs(lhs, stderr);
fputs(" in logic\n", stderr);
exit(1);
@ -350,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);
@ -358,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) {
@ -373,7 +395,7 @@ int interpret(Directive *directive) {
Directive *interpreter(Directive *directives) {
Directive *directive;
Directive *last;
Directive *last = NULL;
for (directive = directives; directive != NULL; directive = directive->next) {
if (interpret(directive)) {
/* This means this directive needs to be removed from the linked list. */
@ -390,30 +412,13 @@ Directive *interpreter(Directive *directives) {
return directives;
}
void add_to_fiwix_filelist(char *filename) {
/* Add the filename to fiwix-file-list.txt */
FILE *fiwix_list = fopen("/steps/lwext4-1.0.0-lb1/files/fiwix-file-list.txt", "r");
fseek(fiwix_list, 0, SEEK_END);
long size = ftell(fiwix_list);
char *contents = calloc(size, sizeof(char));
fseek(fiwix_list, 0, SEEK_SET);
fread(contents, 1, size, fiwix_list);
fclose(fiwix_list);
fiwix_list = fopen("/steps/lwext4-1.0.0-lb1/files/fiwix-file-list.txt", "w");
fwrite(contents, 1, size, fiwix_list);
fputs(filename, fiwix_list);
fputc('\n', fiwix_list);
fclose(fiwix_list);
}
/* Script generator. */
FILE *start_script(int id, int using_bash) {
FILE *start_script(int id, int bash_build) {
/* Create the file /steps/$id.sh */
char *filename = calloc(MAX_STRING, sizeof(char));
strcpy(filename, "/steps/");
strcat(filename, int2str(id, 10, 0));
strcat(filename, ".sh");
add_to_fiwix_filelist(filename);
FILE *out = fopen(filename, "w");
if (out == NULL) {
@ -423,9 +428,20 @@ FILE *start_script(int id, int using_bash) {
exit(1);
}
if (using_bash) {
if (bash_build) {
fputs("#!/bin/bash\n", out);
fputs("set -e\n", out);
if (strcmp(get_var("INTERACTIVE"), "True") == 0) {
if (bash_build != 1) {
fputs("set -E\ntrap 'env PS1=\"[TRAP] \\w # \" bash -i' ERR\n", out);
} else {
/* FIXME early bash has buggy ERR trap handling */
fputs("set -e\ntrap 'bash -c '\"'\"'while true; do printf \""
"[TRAP - use Ctrl+D] $(pwd) # \"; eval \"$(cat)\"; done'\"'\"'' EXIT\n",
out);
}
} else {
fputs("set -e\n", out);
}
fputs("cd /steps\n", out);
fputs(". ./bootstrap.cfg\n", out);
fputs(". ./env\n", out);
@ -450,8 +466,8 @@ FILE *start_script(int id, int using_bash) {
return out;
}
void output_call_script(FILE *out, char *type, char *name, int using_bash, int source) {
if (using_bash) {
void output_call_script(FILE *out, char *type, char *name, int bash_build, int source) {
if (bash_build) {
if (source) {
fputs(". ", out);
} else {
@ -469,8 +485,8 @@ void output_call_script(FILE *out, char *type, char *name, int using_bash, int s
fputs(".sh\n", out);
}
void output_build(FILE *out, Directive *directive, int pass_no, int using_bash) {
if (using_bash) {
void output_build(FILE *out, Directive *directive, int pass_no, int bash_build) {
if (bash_build) {
fputs("build ", out);
fputs(directive->arg, out);
fputs(" pass", out);
@ -510,9 +526,9 @@ void generate(Directive *directives) {
int counter = 0;
/* Initially, we use kaem, not bash. */
int using_bash = 0;
int bash_build = 0;
FILE *out = start_script(counter, using_bash);
FILE *out = start_script(counter, bash_build);
counter += 1;
Directive *directive;
@ -528,24 +544,24 @@ void generate(Directive *directives) {
pass_no += 1;
}
}
output_build(out, directive, pass_no, using_bash);
output_build(out, directive, pass_no, bash_build);
if (strncmp(directive->arg, "bash-", 5) == 0) {
if (!using_bash) {
if (!bash_build) {
/*
* We are transitioning from bash to kaem, the point at which "early
* preseed" occurs. So generate the preseed jump script at this point.
*/
generate_preseed_jump(counter);
}
using_bash = 1;
bash_build += 1;
/* Create call to new script. */
output_call_script(out, "", int2str(counter, 10, 0), using_bash, 0);
output_call_script(out, "", int2str(counter, 10, 0), bash_build, 0);
fclose(out);
out = start_script(counter, using_bash);
out = start_script(counter, bash_build);
counter += 1;
}
} else if (directive->type == TYPE_IMPROVE) {
output_call_script(out, "improve", directive->arg, using_bash, 1);
output_call_script(out, "improve", directive->arg, bash_build, 1);
} else if (directive->type == TYPE_JUMP) {
/*
* Create /init to call new script.
@ -553,7 +569,7 @@ void generate(Directive *directives) {
* moving that to /init at the appropriate time.
*/
filename = calloc(MAX_STRING, sizeof(char));
if (using_bash) {
if (bash_build) {
fputs("mv /init /init.bak\n", out);
/* Move new init to /init. */
strcpy(filename, "/init.");
@ -572,16 +588,10 @@ void generate(Directive *directives) {
fputs("chmod 755 /init\n", out);
}
output_call_script(out, "jump", directive->arg, using_bash, 1);
output_call_script(out, "jump", directive->arg, bash_build, 1);
fclose(out);
/*
* This cannot go before here as builder-hex0 does not like having
* multiple files open at once!
*/
add_to_fiwix_filelist(filename);
if (using_bash) {
if (bash_build) {
out = fopen(filename, "w");
if (out == NULL) {
fputs("Error opening /init\n", stderr);
@ -596,12 +606,14 @@ void generate(Directive *directives) {
}
fputs("set -ex\n", out);
}
output_call_script(out, "", int2str(counter, 10, 0), using_bash, 0);
output_call_script(out, "", int2str(counter, 10, 0), bash_build, 0);
fclose(out);
out = start_script(counter, using_bash);
out = start_script(counter, bash_build);
counter += 1;
} else if (directive->type == TYPE_MAINT) {
output_call_script(out, "maint", directive->arg, using_bash, 1);
} else if (directive->type == TYPE_UNINSTALL) {
fputs("uninstall ", out);
fputs(directive->arg, out);
fputs("\n", out);
}
}
fclose(out);

View File

@ -0,0 +1 @@
1aa31b29ce0999b6a9cace93bc584020ec78059b9ad37d9aa3da9ad6c3d9af59 script-generator

View File

@ -0,0 +1 @@
dc6106dbc02839cdc9e3e2348432242eb6d33d840ab74badfd63c3c9997462b9 script-generator

View File

@ -30,6 +30,7 @@ cp /${ARCH_DIR}/bin/sha256sum ${BINDIR}/sha256sum
cp /${ARCH_DIR}/bin/unbz2 ${BINDIR}/unbz2
cp /${ARCH_DIR}/bin/ungz ${BINDIR}/ungz
cp /${ARCH_DIR}/bin/untar ${BINDIR}/untar
cp /${ARCH_DIR}/bin/unxz ${BINDIR}/unxz
cp /${ARCH_DIR}/bin/cp ${BINDIR}/cp
cp /${ARCH_DIR}/bin/replace ${BINDIR}/replace
cp /${ARCH_DIR}/bin/rm ${BINDIR}/rm
@ -50,6 +51,7 @@ chmod 755 ${BINDIR}/sha256sum
chmod 755 ${BINDIR}/unbz2
chmod 755 ${BINDIR}/ungz
chmod 755 ${BINDIR}/untar
chmod 755 ${BINDIR}/unxz
chmod 755 ${BINDIR}/replace
chmod 755 ${BINDIR}/rm
@ -58,10 +60,16 @@ M2LIBC_PATH=/M2libc
# mes envars
NYACC_PKG=nyacc-1.00.2
MES_PKG=mes-0.25
MES_PKG=mes-0.26
MES_PREFIX=${SRCDIR}/${MES_PKG}/build/${MES_PKG}
GUILE_LOAD_PATH=${MES_PREFIX}/mes/module:${MES_PREFIX}/module:${SRCDIR}/${MES_PKG}/build/${NYACC_PKG}/module
M2-Mesoplanet --architecture ${ARCH} -f script-generator.c -o script-generator
# Checksums
if match x${UPDATE_CHECKSUMS} xTrue; then
sha256sum -o script-generator.${ARCH}.checksums script-generator
else
sha256sum -c script-generator.${ARCH}.checksums
fi
./script-generator /steps/manifest
kaem --file /steps/0.sh

@ -1 +1 @@
Subproject commit a5c382e9ab5d070d192841122e453ca72754eec1
Subproject commit 779e5424d4b55fe9b7faea2285ae8b6486df0433

View File

@ -9,110 +9,120 @@ d5fcce4baea5e11f983a7e4b7148545ab6720bb4e010898c73387f6711be67f4 autoconf-2.64_
298dcf17a439adb306237b308e3c4ed3d376cb863ae0f0f08bfdf1f3199a548b autoconf-2.69_0.tar.bz2
8c2401edf1c68910005bbcb8b8e84727a46f7d9643d2ad1267bd0259078dadc4 autoconf-2.71_0.tar.bz2
6ff691e3ddd4f3d1796d28b07a2a96691dbd9801844c99ccbe660da59dabd74b autoconf-archive-2021.02.19_0.tar.bz2
9b52663ad7c591520805b96c519c4a291d8a9a960a907341c5b78cd631ebb344 autogen-5.18.16_0.tar.bz2
439fc68ab7d0a9a46caca2c7cbefbdb6ffe906f927e07d150e102bb76b393c37 autogen-5.18.16_0.tar.bz2
02a426e82a52d4a2cd7e73fe3dc5a2c58b3ed100f24a92c57e42511fd86e247c automake-1.10.3_0.tar.bz2
34925adeaa2876a5e068adeb17b71fe7c7105244c3cb5439d33f7406310674da automake-1.11.2_0.tar.bz2
7e36e9e4b3957c95b6de8ff475c9b37aa007e2f9735b01c0eaf14b711fdd112f automake-1.15.1_0.tar.bz2
57100612d902537b72ee2fd3dfecc903f2ea3959f1a480af87c6a1ef9a9d7c03 automake-1.16.3_0.tar.bz2
1c7e09ac08f156960420fca1f6e8560c1855bf01b001a0648b56153d6ceb9c28 automake-1.6.3_0.tar.bz2
444131776779d1f27628088a817bfb8c9aa85f4b036b934794a71e484ec9bd70 automake-1.6.3_1.tar.bz2
ef08694bf8e78ffcf56f9c8a63b0f189e301c06f02ab240e15e4c7fe354c2a0d automake-1.7_0.tar.bz2
e8ff13753943e43972a8cf1672819f001718ed38e5497cf7b554c21a507ba22b automake-1.7.8_0.tar.bz2
ef08694bf8e78ffcf56f9c8a63b0f189e301c06f02ab240e15e4c7fe354c2a0d automake-1.7_0.tar.bz2
9922651b64ad2e29b944082f26db223008220155048f25d64df1f6d82071ff1c automake-1.8.5_0.tar.bz2
c5807850a377e4bb9aa4121d9781d145bdd80327626a9419630a75ce2c8d9c71 automake-1.9.6_0.tar.bz2
f8a55bf656f950ee3c5cea48af03f552166f6db9926b78c78843f3cc52a6e22d bash-5.2.15_0.tar.bz2
ebc631ee8e9382650005984ec5f3910492ccb6fb2656b4c0af0f4afc16998906 bc-1.07.1_0.tar.bz2
28b38078f88d77ebfa8ad1a514a5724fe11581bdbfc72b79f087fa24986ac9cb binutils-2.30_0.tar.bz2
90009c7a2232fce68ad628d6afe1f474d57874462b3ea2c50ab1a3e6c60a5a36 binutils-2.30_0.tar.bz2
da658346866061324b92a6b734561257acfdb981783ad5794d67a0cd56e14e58 binutils-2.41_0.tar.bz2
026447a32ab08a8a5150bab82a2f150af4a2ed90c47cfde631e1460eaed019aa binutils-2.41_1.tar.bz2
f0bb18831983493b82fde53917e8d16c6a380761ac5e71e14769a82193fee788 bison-2.3_0.tar.bz2
7018edd13a1dd5ba35fdc8be49af91b28901aad3080fdeebdb98b79f8a90d7ed bison-3.4.1_0.tar.bz2
41c9a95b11cf183524927f52f9f7e97a479e0261c0551f6a4c22690b931243db bison-3.4.1_1.tar.bz2
4a291da4dc1d2a49eeff6bd6017d0d91f804d0a8a2b701de9ed5c53cf5061fe4 bison-3.4.1_2.tar.bz2
e4a3c9466d95c58bb072159da3473d71b40eb069b756acefba293588c4495a6f bison-3.4.1_0.tar.bz2
fd3a3b855c3cbc42d719a0cbbae773d27e0e12b563641124ba2870b7103da1f8 bison-3.4.1_1.tar.bz2
5232f6f8f3864b5827a015ce0414d484bb8aeb9f34ba66ceb7093da0a79561a8 bison-3.4.1_2.tar.bz2
6d5e4debdec03aee096dbcefcad878fb5c6a069f895ee7ade878d9eeb97fb83e bison-3.4.2_0.tar.bz2
e196396a3073992ca4d8ce1606831e3a6e06fd22753f89b778eec01eed549a92 bzip2-1.0.8_0.tar.bz2
727b0f28369b78f171dce4e227b05cea474dcb638c357387429c125f0d80fbc8 bzip2-1.0.8_0.tar.bz2
543214998317d764595d3dd247a1fb2e0803ad77978b8474bd24d64c161b9530 ca-certificates-3.95_0.tar.bz2
692ec3f83fdd94a3687c764e6246f608e4600bc8f9fec953a0b23617ad24d08d coreutils-5.0_0.tar.bz2
09092e187588c5d33c023ac41671b367aef9f7ee967d2c7c03430b33cc03f251 coreutils-6.10_0.tar.bz2
f49900486ae7f0c8107d729b71ede155ee44544cdf8d562b50fbea4095bd05b2 coreutils-8.32_0.tar.bz2
6a10f5258650ae75e92eb7aa1a5e6107b72c8b6419a4f64272262a1545c43161 curl-8.5.0_0.tar.bz2
f9efd6600ceb91918078078ff44a33f2a4fb4a59edb804866aebd288c2cfb24e curl-8.5.0_1.tar.bz2
1d4dec2d1885a6b5499a0f0d55e9c2c65dab532c4c593d848b6a542f67789627 dhcpcd-10.0.1_0.tar.bz2
c4008ae6b168aee4120b0f3624a1875f9e413d8f0c637708b8b04a1fb5be173c diffutils-2.7_0.tar.bz2
da3a3c7e0e6ce94ccb3d39885bc44207eb94c912b324a4c7669b5a752648b02d coreutils-5.0_0.tar.bz2
56b84ab2035847524d595bb417c2b91c290174965550be321cd3d5d1f77aa2e5 coreutils-6.10_0.tar.bz2
9fa31a4aeaa5132205efb796c8f546c94c1cfef6b5c27e64f6ebe06ca0360e67 coreutils-9.4_0.tar.bz2
abd629e5675196c39dae00afbe23e2116bbd277be1d82214e2ec557a3b03994f curl-8.5.0_0.tar.bz2
db8757b5fe77f56073caa034bfe9b3af6076d7299db966c4348e06f01a34415f curl-8.5.0_1.tar.bz2
9534d834b018343b8335d0ef0b5faff3ee18e4ecbecf43a2a80deb972283f5d6 dhcpcd-10.0.1_0.tar.bz2
e6372051f90c40d1f4a5cca2f8930187b363dfc916bcb973c72bca6c0aba3cd5 diffutils-2.7_0.tar.bz2
41e3129b974391fe4ace69914fdef9b0fe72c6f5d87d495750fb89bdd999fa01 diffutils-3.10_0.tar.bz2
bda6afcd3a390a34a57443269a4857ccc470129f7a557981778c145fd841cbd1 dist-3.5-236_0.tar.bz2
3a4c5143a241364019afd39af067f1e8433bab78b04096870d9bf2c70ec6ded8 e2fsprogs-1.45.7_0.tar.bz2
26c0835a8b9be115082a2866e906363947528169c7274bd3b82752df77e99f11 e2fsprogs-1.45.7_0.tar.bz2
9c6f7e156f299f1d0948537e28f00d40e727a3debae3cce158e9bce827136214 ed-1.4_0.tar.bz2
0061d240f9bb2bb534db7003ddcc4eae9981954ad72e8f41ff1d76dc449ebd37 file-5.44_0.tar.bz2
d1db172ab3ea159cad1d76a7de9ec92fa8fec33270ddce16e304ece908dd1344 findutils-4.2.33_0.tar.bz2
41902ec0383ea977a8d008dee37150e022e0714cd99f54c37f29c153464b758a flex-2.5.11_0.tar.bz2
eec07e0d710ed3dd8d0ba6a1ec6ca9f1fa3a611bbb225195435679175317bf90 findutils-4.2.33_0.tar.bz2
80798628ccb38521f42e1ca1abe4f0244e4b283e6f662cd354ab70e61a9b4675 flex-2.5.11_0.tar.bz2
b3a8d59229289ca5a1de6a24c9c828d2847144f6662e0d5b7f41e7ff6e57abaa flex-2.5.33_0.tar.bz2
408131b1c033a5f8a6845997b049784be0b466cec107a71270e5a04dae2c1e6c flex-2.6.4_0.tar.bz2
5ff7fbe16b55563719b108260bd6a34ebabab0465d758ca98cba522932532e45 gawk-3.0.4_0.tar.bz2
e10060b55e2378a065cf8590cae17400c8befc6b3bb0cbbb7093f1b9f46ec4cc flex-2.6.4_0.tar.bz2
5619cf9a893902491a9d8a8f8da4d39efb3606d7d0a72cb4aaa9d1ff798b5495 gawk-3.0.4_0.tar.bz2
62e90abe883f6ccd679adf42d00c2c18a9809bbab599411c81b6c4ac4d446452 gawk-5.3.0_0.tar.bz2
6de1c1380026ef9948387e665610185b6014f47a80453177a6c81898c95cbbd3 gc-8.0.4_0.tar.bz2
c99d080cf17ac3f75cbae67095cb76220a92d96d877c92c896a7f05c9c94e92d gcc-10.4.0_0.tar.bz2
e0c9e7f4f0cd0d5027f2a38eb262f883133c31ac9ec93ee6afa5abc028096bc0 gcc-13.1.0_0.tar.bz2
526c3710b5067bd2fc869371541d7e71dcff1cffcba7ddecabedc33967e19e2c gcc-4.0.4_0.tar.bz2
27bb77077559b6c0f8dd7b8790ac48f70410ecc8816b5c493988ad5556da65e2 gcc-4.0.4_0.tar.bz2
c1bf792e90df13bf7a24d3f8ce3939fd96ff61b8117e4dcef75605974f3fcf25 gcc-4.0.4_1.tar.bz2
7ac087bf006188154c28401d0c875ede56076c19d41bc54ffa0d7cc18ce40800 gcc-4.7.4_0.tar.bz2
dc67fc1b132fa3945349efe74c5b2197bd0b6babf4d29d2deddd04f09d9af680 gettext-0.21_0.tar.bz2
309282ba840f80b5e10897b1221f3ff3329b9e05b982c788d03652f411974524 gmp-6.2.1_0.tar.bz2
62edfa633f64202b2d29199d11d56a897654a441c7ae39a4d59ca5fe75199f61 gperf-3.1_0.tar.bz2
67d706423e079a9cd764fd9607027d296c0ff2380c1104006a2230a299eb2c1d grep-2.4_0.tar.bz2
c1989fc2855dbb0350c4e5b677028306614a9f4b5cb6c01fd459c5e1abf592b9 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
29a1603101cfbe2660e2d695f5b9c08dc9eefd8e3389405a6530c479e271821b heirloom-devtools-070527_0.tar.bz2
8d2015b87337abbf287f7a39ee4cf53514120b5d3e90a93fe7d533dcc43f14fa help2man-1.36.4_0.tar.bz2
f650c3b24de6edd49cd662c9e9ce11f7b0b5ea6df66d561b46a032b08fc34faa kbd-1.15_0.tar.bz2
ea5639dc6198c5f243362a1a7adfbea0cb779e085975712a1b410e82d7e0cf84 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
fc784d2c46ffe91e7d54150022c9d2687140e90e3019c1d6799f875f22d99d2e kexec-tools-2.0.22_0.tar.bz2
e4dcdabf540a9e51a555616abff8ec2fdee5bb40bb05ce702b5410239dd5d7d8 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
fd2264a08cbeeb28f3e2580cba174376a154c77b0ef6cbf67b55fd13c0987f52 linux-4.9.10_0.tar.bz2
d15c922973c15a8206e09020e8cfe6a78f7e93614de212f2b37ff80163799c6c linux-headers-4.9.10_0.tar.bz2
3864f2c66516fc4f5086f626f4da2b2a7635e21babca86ba478f866920868e2b m4-1.4.7_0.tar.bz2
5787f84a49e1d22560d0398e4f9075d6021017eb2a757697dc2877e7565d0199 linux-4.14.341-openela_0.tar.bz2
c97644d0db5b3de127b048683afee6d31453441d97ba5dea71df5838b13542a4 linux-headers-4.14.341-openela_0.tar.bz2
78b0cf6d9312e53c613186cbddd5f747310f375c1f322f33a6ac33682d2f3389 m4-1.4.19_0.tar.bz2
0e3c21b0a1d8ca0c3f74a98ebe268809def62778ff4a486ff20c1d6e8247dc49 m4-1.4.7_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
98a9f55c01ed375fae21913284e7fa07ff434c0810f34d791f3fbaa1df221302 mpfr-4.1.0_0.tar.bz2
12dfbee21a78220b4eb9fb843b6a00dd50c5849ffc4754b78209369499e3fefe musl-1.1.24_0.tar.bz2
8d09bb24659023897cacf959068cdd492acc965777d7fb49e1888c14e867b36d musl-1.1.24_1.tar.bz2
b79e0f8a39ba8880d43aa27551b72915655c62af39125e1f4ac8f8e69e71aaca musl-1.1.24_2.tar.bz2
40fc3497fa8cdd96ac338a10e78504c6dc942e7f4fa459550fb953d52bd53aa7 musl-1.1.24_0.tar.bz2
20285055d84ac6106965a9d343ba8ebd19209f62782efb8ed863318c0b7d5e7d musl-1.1.24_1.tar.bz2
d58d85c4be26d90f111f273929a4998d05294fe5aa37c4842d5aecaa593e6079 musl-1.1.24_2.tar.bz2
81f79a0faf58e105c5f12d9f538d3ea7578a3b361e633ab8f47324ec23ec9de6 musl-1.2.4_0.tar.bz2
6dc5e763b747b66f72692c6820d7f46b7f4cf2e2fe05229a1d01c03919c1c936 musl-1.2.4_1.tar.bz2
820203286127e7c22cee9f1b3cff664431f10d14c3f22f00b3e771fd849fd449 musl-1.2.4_2.tar.bz2
c490016e49bbf77e7f63071f7aa60e8290a0c67f017846def1c3f65bd10d5712 openssl-1.1.1l_0.tar.bz2
a18c4b2e5de2bfe5bb3ee9d360484fcfebad3df042f1859d4aa333dd60f55e56 opendoas-6.8.2_0.tar.bz2
67b536b2f2a6c56e4673e462a3dbe2f42e8a4a5cb0b61b6bc1fdc14adea33f63 openssl-3.0.13_0.tar.bz2
71864d042cdc564b65eab21360902c714e9b43f80a19689c5600589529b267e7 patch-2.7.6_0.tar.bz2
914a7abf36a64723b6e9f9b0b6ccd19c8e544fa798896a2bb1151dc341890c22 perl-5.000_0.tar.bz2
887d835562d471653bcda60e652fceb4b3ef58a83321a4eb5af0431dc182781b perl-5.003_0.tar.bz2
b86fc586d72a6d204d0b9017afe17aa2439529e13f43befc56648b78de17c8f8 perl5.004-05_0.tar.bz2
451ae6bb6e996a1c857fe92ec379654413fadec180c6477cf5fd4b5d7a079e26 perl5.005-03_0.tar.bz2
287b0a8c0de14a2817e68ab023bfc502a0880d8c34386162351d5ffaf942da70 perl-5.000_0.tar.bz2
9617799cdc9d4be39d31af54b9bcae47941d68416e9cc9c92cbc2ed08785dbc1 perl-5.003_0.tar.bz2
74d64a8af080022432fa94dba449090419d25b103d247710dc0b6102a4ad86a6 perl-5.10.1_0.tar.bz2
fdccd3ba27a44d2149f159040414a04b39bfc72673ba36f50051b61199cc425c perl-5.32.1_0.tar.bz2
9fa8850897248d77d554caa2b3d52e7890308cbf28750ffc24c09f498aee563c perl-5.6.2_0.tar.bz2
d381e910532061ac97e48ff09906bddbcb0956b37fc47d8c666f56a56b50c589 perl-5.32.1_0.tar.bz2
d63d2fda752759778ae2d0dd08e6c023a81afbfc63ce11db860fc6858ae26c7f perl-5.6.2_0.tar.bz2
c39ab70bce0bd09f013109ad7370085e90d77ef2b55abcfdc922d7832524c9cf perl5.004-05_0.tar.bz2
2ac211ad3cf966dd89434c175970e10699c363b66228abc1642766aeafe2766a perl5.005-03_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
52ffb1ea6f2b893a6fd26f930c8ff63f78ddcc31ac3ec9c2ddade555205aa1ef python-3.11.1_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
80d8fcaf68c82238ddffb120b62fbc20d58bd9e2416cba080547a9f442e9e229 python-2.5.6_0.tar.bz2
3508248f299b73c50e3607c4c294d40face05170476a5026b0821aed69025863 python-3.1.5_0.tar.bz2
12b1ffc7ec98ba8f807160b93ba69a694d5395567c3bcac1e49e8f8d1d50de43 python-3.1.5_1.tar.bz2
d6a7d3a109f63cd5ed4feaa772c33e272e570e216346ee90f6ca365d3a951615 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
6081832f1fc258df7dd927986821991b49fa78a71b76f4b37b5c34a8ebc9bc86 sed-4.0.9_0.tar.bz2
af7a8334045fed8bd610b19194c0b46aa670070fc4738c34449ba5e93e49db8a python-3.8.16_0.tar.bz2
c313520567176dd9bf61a271ee56e06a62e944e862f9dc4564d94b7fc884c8f9 sed-4.0.9_0.tar.bz2
e8daec00b2c2de7b18efbec057dc9290eed06668806c6f5a48914d4a5cd95eb4 sed-4.8_0.tar.bz2
ef2f2c791c1ae74f19c98ebcd7edae6ae28bc1d9367cc3a2cdb1ac302a156cb7 shadow-4.14.3_0.tar.bz2
912d8f344104f1322255d6210c7c7e1371413ab530b2c6796e6aa565c74bf647 tar-1.34_0.tar.bz2
d5d0df210248a385ae255cc5651369108e9a71fa8668821a6b1ed30a8d7364a1 tcc-0.9.27_0.tar.bz2
79276f54bc57933b6002e5511e6d8d88e22159dcf1cbbc9da763c38691a2c628 tcc-0.9.27_1.tar.bz2
31b5cbfec69d8037cc7f788c658f6fcd8c88794ecba34a2c5724bf6223b210f5 tcc-0.9.27_2.tar.bz2
2b503cd31d3326ac1ed0eb9f506ac93c93770da51164e152a812cd248961069c tcc-0.9.27_3.tar.bz2
60e98c09d9135b0150ed52b71cfbb072335741c0954a9b14bbba850c20564036 tcc-0.9.27_0.tar.bz2
e2c9ea82a1ebf2d5d4c937fa837ddb6fc6835395cf03f3207df40c96b6cafcd8 tcc-0.9.27_1.tar.bz2
4860223e6960ce976e6ad59aa90b69c18a1473684bce59ec8a8b36535405792b 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
59bda6faaa95782154b917a6600cdf932e08cd6bf9388ba40d801baf18e5b454 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

View File

@ -1 +1 @@
https://mirrors.kernel.org/gnu/autoconf/autoconf-2.64.tar.bz2 872f4cadf12e7e7c8a2414e047fdff26b517c7f1a977d72433c124d0d3acaa85
https://mirrors.kernel.org/gnu/autoconf/autoconf-2.64.tar.xz 32d977213320b8ae76c71175305301197f2b0e04e72d70694bc3d3e2ae6c7248

View File

@ -1 +1 @@
https://mirrors.kernel.org/gnu/autoconf/autoconf-2.69.tar.gz 954bd69b391edc12d6a4a51a2dd1476543da5c6bbf05a95b59dc0dd6fd4c2969
https://mirrors.kernel.org/gnu/autoconf/autoconf-2.69.tar.xz 64ebcec9f8ac5b2487125a86a7760d2591ac9e1d3dbd59489633f9de62a57684

View File

@ -1,4 +1,6 @@
https://github.com/schierlm/gnu-autogen-bootstrapping/archive/refs/tags/autogen-5.18.16-v1.0.tar.gz 98ff63400dff5282017c33e4ec3c93da8a92a5260340da253e59bd6eef18d116
https://github.com/schierlm/gnu-autogen-bootstrapping/archive/refs/tags/autogen-5.18.16-v1.0.1.tar.gz 953ba180b18acff188a0a8700770c7cf2fc97e1683c7b9699a5a748b542ccdd5
https://mirrors.kernel.org/gnu/autogen/rel5.18.16/autogen-5.18.16.tar.xz f8a13466b48faa3ba99fe17a069e71c9ab006d9b1cfabe699f8c60a47d5bb49a
https://git.savannah.gnu.org/cgit/autogen.git/snapshot/autogen-5.18.16.tar.gz 0c04ab2f7ce13c4a1c06c4abc7dfe75312aad89b8b0a1068e5e563787eb56632
https://files.bootstrapping.world/autogen-5.18.16.tar.gz 0c04ab2f7ce13c4a1c06c4abc7dfe75312aad89b8b0a1068e5e563787eb56632
http://git.savannah.gnu.org/cgit/gnulib.git/snapshot/gnulib-8f4538a5.tar.gz e207c0bb72093c3a72dde302fcfaa1dbda12a62172d47b73565883a92209ebab
https://files.bootstrapping.world/gnulib-8f4538a5.tar.gz e207c0bb72093c3a72dde302fcfaa1dbda12a62172d47b73565883a92209ebab

View File

@ -1 +1 @@
https://mirrors.kernel.org/gnu/automake/automake-1.15.1.tar.gz 988e32527abe052307d21c8ca000aa238b914df363a617e38f4fb89f5abf6260
https://mirrors.kernel.org/gnu/automake/automake-1.15.1.tar.xz af6ba39142220687c500f79b4aa2f181d9b24e4f8d8ec497cea4ba26c64bedaf

View File

@ -1 +1 @@
dd42ffbc30919b13693cbd58536599907d057dc58aabde2b2b1e36ec0475e694 /usr/bin/bash
467552a7875bae2086ba0fa9a8d2a253a158984e27b2e89acf2e3bcec539ad54 /usr/bin/bash

View File

@ -49,6 +49,7 @@ COMMON_CFLAGS = \
-DHAVE_BZERO \
-DHAVE_POSIX_SIGNALS \
-DHAVE_GETCWD \
-DHAVE_RENAME \
-DHAVE_SYS_SIGLIST \
-Dendpwent\(x\)=0 \
-Denable_hostname_completion\(on_or_off\)=0

View File

@ -16,8 +16,8 @@ mkdir build src
cd build
# Extract
cp ${DISTFILES}/${pkg}.tar.gz ../src/
gzip -d -f ../src/${pkg}.tar.gz
cp ${DISTFILES}/${pkg}.tar.bz2 ../src/
bzip2 -d -f ../src/${pkg}.tar.bz2
tar xf ../src/${pkg}.tar
rm -r ../src/
cd ${pkg}
@ -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 ../..

View File

@ -1 +1 @@
https://mirrors.kernel.org/gnu/bash/bash-2.05b.tar.gz ba03d412998cc54bd0b0f2d6c32100967d3137098affdc2d32e6e7c11b163fe4
https://src.fedoraproject.org/repo/pkgs/bash/bash-2.05b.tar.bz2/f3e5428ed52a4f536f571a945d5de95d/bash-2.05b.tar.bz2 1ce4e5b47a6354531389f0adefb54dee2823227bf6e1e59a31c0e9317a330822

View File

@ -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"
}

View File

@ -1 +1 @@
https://mirrors.kernel.org/gnu/bc/bc-1.07.1.tar.gz 62adfca89b0a1c0164c2cdca59ca210c1d44c3ffc46daf9931cf4942664cb02a
https://mirrors.kernel.org/slackware/slackware64-15.0/source/ap/bc/bc-1.07.1.tar.xz 95396f88fc719a1bf8bd463809119526fef44a42ab9eb708335c2cb79bc801c6

View File

@ -1 +1 @@
https://mirrors.kernel.org/gnu/binutils/binutils-2.30.tar.bz2 efeade848067e9a03f1918b1da0d37aaffa0b0127a06b5e9236229851d9d0c09
https://mirrors.kernel.org/gnu/binutils/binutils-2.30.tar.xz 6e46b8aeae2f727a36f0bd9505e405768a72218f1796f0d09757d45209871ae6

View File

@ -1,2 +1,3 @@
http://mirrors.kernel.org/gnu/bison/bison-2.3.tar.bz2 b10d7e9e354be72aee4e4911cf19dd27b5c527d4e7200857365b5fcdeea0dffb
http://git.savannah.gnu.org/cgit/gnulib.git/snapshot/gnulib-b28236b.tar.gz 0190f28cb155fedd22bf8558c3e8705eed9eacfb7ae29e7508d025a68eb90899
https://files.bootstrapping.world/gnulib-b28236b.tar.gz 0190f28cb155fedd22bf8558c3e8705eed9eacfb7ae29e7508d025a68eb90899

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
https://mirrors.kernel.org/gnu/bison/bison-3.4.1.tar.gz 7007fc89c216fbfaff5525359b02a7e5b612694df5168c74673f67055f015095
https://mirrors.kernel.org/gnu/bison/bison-3.4.1.tar.xz 27159ac5ebf736dffd5636fd2cd625767c9e437de65baa63cb0de83570bd820d

View File

@ -1,2 +1,3 @@
http://mirrors.kernel.org/gnu/bison/bison-3.4.2.tar.xz 27d05534699735dc69e86add5b808d6cb35900ad3fd63fa82e3eb644336abfa0
http://git.savannah.gnu.org/cgit/gnulib.git/snapshot/gnulib-672663a.tar.gz 8cced51f89a950472473856f86e88f5daf97a2347756125ccdc8ee907deec570
https://files.bootstrapping.world/gnulib-672663a.tar.gz 8cced51f89a950472473856f86e88f5daf97a2347756125ccdc8ee907deec570

View File

@ -0,0 +1 @@
5a478142a517173180b2030cdd87b5f0f0c077e4b4a152c4b72141febf4d5905 /usr/bin/yacc

View File

@ -0,0 +1,98 @@
# SPDX-FileCopyrightText: 2002-2022 Thomas E. Dickey
# SPDX-FileCopyrightText: 2024 Gábor Stefanik <netrolller.3d@gmail.com>
#
# SPDX-License-Identifier: CC0-1.0
#
# From original byacc README:
# Berkeley Yacc is in the public domain. The data structures and algorithms
# used in Berkeley Yacc are all either taken from documents available to the
# general public or are inventions of the author. Anyone may freely distribute
# source or binary forms of Berkeley Yacc whether unchanged or modified.
# Distributers may charge whatever fees they can obtain for Berkeley Yacc.
# Programs generated by Berkeley Yacc may be distributed freely.
#
# (typo "Distributers" in original)
DEST = .
HDRS = defs.h
CFLAGS ?= -O -DNDEBUG
LDFLAGS ?=
LIBS ?=
LINKER ?= $(CC)
MAKEFILE = Makefile
OBJS = closure.o \
error.o graph.o \
lalr.o \
lr0.o \
main.o \
mkpar.o mstring.o \
output.o \
reader.o \
symtab.o \
verbose.o \
warshall.o yaccpar.o
PRINT = pr -f -l88
PROGRAM = yacc
SRCS = closure.c \
error.c graph.c \
lalr.c \
lr0.c \
main.c \
mkpar.c mstring.c \
output.c \
reader.c \
symtab.c \
verbose.c \
warshall.c yaccpar.c
all: $(PROGRAM)
$(PROGRAM): $(OBJS) $(LIBS)
@$(LINKER) $(LDFLAGS) -o $(PROGRAM) $(OBJS) $(LIBS)
clean:; @rm -f $(OBJS)
clobber:; @rm -f $(OBJS) $(PROGRAM)
depend:; @mkmf -f $(MAKEFILE) PROGRAM=$(PROGRAM) DEST=$(DEST)
index:; @ctags -wx $(HDRS) $(SRCS)
install: $(PROGRAM)
@echo Installing $(PROGRAM) in $(DEST)
@install -s $(PROGRAM) $(DEST)
listing:; @$(PRINT) Makefile $(HDRS) $(SRCS) | lpr
lint:; @lint $(SRCS)
program: $(PROGRAM)
tags: $(HDRS) $(SRCS); @ctags $(HDRS) $(SRCS)
###
closure.o: defs.h
error.o: defs.h
lalr.o: defs.h
lr0.o: defs.h
main.o: defs.h
mkpar.o: defs.h
output.o: defs.h
reader.o: defs.h
symtab.o: defs.h
verbose.o: defs.h
warshall.o: defs.h
btyaccpar.o: defs.h
yaccpar.o: defs.h
graph.o: defs.h
mstring.o: defs.h

View File

@ -0,0 +1,45 @@
#!/bin/sh
# SPDX-FileCopyrightText: 2021 Andrius Štikonas <andrius@stikonas.eu>
# SPDX-FileCopyrightText: 2021-22 fosslinux <fosslinux@aussies.space>
# SPDX-FileCopyrightText: 2024 Gábor Stefanik <netrolller.3d@gmail.com>
#
# SPDX-License-Identifier: GPL-3.0-or-later
set -ex
# Check tarball checksums
checksum-transcriber sources
sha256sum -c sources.SHA256SUM
mkdir build src
cd build
# Extract
cp ${DISTFILES}/${pkg}.tgz ../src/${pkg}.tar.gz
gunzip -f ../src/${pkg}.tar.gz
tar xf ../src/${pkg}.tar
rm -r ../src/
cd ${pkg}
# Prepare and patch
cp ../../files/Makefile .
patch -Np0 -i ../../patches/meslibc.patch
# Build yacc
make CC=tcc AR=tcc\ -ar CFLAGS=-DMAXPATHLEN=100\ -DEILSEQ=84\ -DMB_LEN_MAX=100 LDFLAGS=-lgetopt\ -static RANLIB=true
# Install yacc
install yacc ${BINDIR}/yacc
cd ../..
# Checksums
if match x${UPDATE_CHECKSUMS} xTrue; then
sha256sum -o ${pkg}.checksums \
/usr/bin/yacc
install ${pkg}.checksums ${SRCDIR}
else
sha256sum -c ${pkg}.checksums
fi

View File

@ -0,0 +1,170 @@
SPDX-FileCopyrightText: 2024 Gábor Stefanik <netrolller.3d@gmail.com>
SPDX-License-Identifier: GPL-3.0-or-later
Remove usages of tmpfile(), rewind(), fgetpos(), fsetpos() and bsearch(),
which are unsupported by meslibc, and add missing declaration for strdup.
License note: Berkeley Yacc is in the public domain, but it's linked with
meslibc, which is GPL-3.0-or-later, so we apply that license here too.
diff -ru ../byacc-20240109.bak/main.c ./main.c
--- ../byacc-20240109.bak/main.c 2024-04-14 16:06:09.646465507 +0200
+++ ./main.c 2024-04-14 20:41:56.227083399 +0200
@@ -788,7 +788,7 @@
(void)umask(save_umask);
}
#else
- result = tmpfile();
+ result = fopen(label, "w+");
#endif
if (result == 0)
diff -ru ../byacc-20240109.bak/output.c ./output.c
--- ../byacc-20240109.bak/output.c 2024-04-14 16:06:09.646465507 +0200
+++ ./output.c 2024-04-14 16:06:24.636465897 +0200
@@ -1289,7 +1289,7 @@
{
if (union_file != 0)
{
- rewind(union_file);
+ fseek(union_file, 0, SEEK_SET);
while ((c = getc(union_file)) != EOF)
putc_code(fp, c);
}
@@ -1314,7 +1314,7 @@
if (text_file == NULL)
open_error("text_file");
- rewind(text_file);
+ fseek(text_file, 0, SEEK_SET);
in = text_file;
if ((c = getc(in)) == EOF)
return;
@@ -1684,7 +1684,7 @@
int state;
char line_state[20];
- rewind(action_file);
+ fseek(action_file, 0, SEEK_SET);
if ((c = getc(action_file)) == EOF)
return;
diff -ru ../byacc-20240109.bak/reader.c ./reader.c
--- ../byacc-20240109.bak/reader.c 2024-04-14 16:06:09.646465507 +0200
+++ ./reader.c 2024-04-14 20:40:58.387082748 +0200
@@ -70,7 +70,7 @@
char *line_data; /* saved input-line */
size_t line_used; /* position within saved input-line */
size_t line_size; /* length of saved input-line */
- fpos_t line_fpos; /* pointer before reading past saved input-line */
+ long line_fpos; /* pointer before reading past saved input-line */
}
SAVE_LINE;
@@ -315,7 +315,7 @@
line = save_area.line_data;
cptr = save_area.line_used + line;
linesize = save_area.line_size;
- if (fsetpos(input_file, &save_area.line_fpos) != 0)
+ if (fseek(input_file, save_area.line_fpos, SEEK_SET) != 0)
on_error();
memset(&save_area, 0, sizeof(save_area));
}
@@ -338,7 +338,7 @@
save_area.line_size = linesize;
NO_SPACE(save_area.line_data);
memcpy(save_area.line_data, line, linesize);
- if (fgetpos(f, &save_area.line_fpos) != 0)
+ if ((save_area.line_fpos = ftell(f)) == -1)
on_error();
must_save = -must_save;
}
@@ -572,6 +572,36 @@
return strcmp(p->name, q->name);
}
+/*
+ * Compare keyword to cached token, treating '_' and '-' the same. Some
+ * grammars rely upon this misfeature.
+ */
+static int
+matchec(const char *name)
+{
+ const char *p = cache;
+ const char *q = name;
+ int code = 0; /* assume mismatch */
+
+ while (*p != '\0' && *q != '\0')
+ {
+ char a = *p++;
+ char b = *q++;
+ if (a == '_')
+ a = '-';
+ if (b == '_')
+ b = '-';
+ if (a != b)
+ break;
+ if (*p == '\0' && *q == '\0')
+ {
+ code = 1;
+ break;
+ }
+ }
+ return code;
+}
+
static int
keyword(void)
{
@@ -612,10 +642,36 @@
}
cachec(NUL);
- if ((key = bsearch(cache, keywords,
- sizeof(keywords) / sizeof(*key),
- sizeof(*key), compare_keys)))
- return key->token;
+ if (matchec("token") || matchec("term"))
+ return (TOKEN);
+ if (matchec("type"))
+ return (TYPE);
+ if (matchec("left"))
+ return (LEFT);
+ if (matchec("right"))
+ return (RIGHT);
+ if (matchec("nonassoc") || matchec("binary"))
+ return (NONASSOC);
+ if (matchec("start"))
+ return (START);
+ if (matchec("union"))
+ return (UNION);
+ if (matchec("ident"))
+ return (IDENT);
+ if (matchec("expect"))
+ return (EXPECT);
+ if (matchec("expect-rr"))
+ return (EXPECT_RR);
+ if (matchec("pure-parser"))
+ return (PURE_PARSER);
+ if (matchec("parse-param"))
+ return (PARSE_PARAM);
+ if (matchec("lex-param"))
+ return (LEX_PARAM);
+ if (matchec("token-table"))
+ return (TOKEN_TABLE);
+ if (matchec("yacc"))
+ return (POSIX_YACC);
}
else
{
@@ -1178,6 +1234,9 @@
return result;
}
+char *
+strdup (char const *s);
+
static void
save_param(int k, char *buffer, int name, int type2)
{

View File

@ -0,0 +1 @@
https://invisible-island.net/archives/byacc/byacc-20240109.tgz f2897779017189f1a94757705ef6f6e15dc9208ef079eea7f28abec577e08446

View File

@ -1 +1 @@
d04adf65091f839217b5ae725df01ad9ddeb77e74cd7474b26cf2fa8962ad150 /usr/bin/bzip2
103af2b8cb00efe5ea91266978db548a69cee5883aa6263e1f1b960448065580 /usr/bin/bzip2

View File

@ -12,12 +12,13 @@ checksum-transcriber sources
sha256sum -c sources.SHA256SUM
mkdir build src
cd build
cd build
# Extract
cp ${DISTFILES}/${pkg}.tar.gz ../src/
gzip -d -f ../src/${pkg}.tar.gz
cp ${DISTFILES}/${pkg}.tar.xz ../src/
unxz --file ../src/${pkg}.tar.xz --output ../src/${pkg}.tar
tar xf ../src/${pkg}.tar
rm -r ../src
cd ${pkg}
# Patch

View File

@ -1 +1 @@
https://sourceware.org/pub/bzip2/bzip2-1.0.8.tar.gz ab5a03176ee106d3f0fa90e381da478ddae405918153cca248e682cd0c4a2269
https://mirrors.kernel.org/slackware/slackware-14.0/patches/source/bzip2/bzip2-1.0.8.tar.xz 47fd74b2ff83effad0ddf62074e6fad1f6b4a77a96e121ab421c20a216371a1f

View File

@ -1 +1 @@
4d1a7b8a0e42f278df20893610dd37dec62b609c2c342d9252917907e4d73c03 /usr/bin/checksum-transcriber
74656fa0cdd15992f7eee5797ecc33d7e65eb0e41acd3c6636cae45e5d3ce35d /usr/bin/checksum-transcriber

View File

@ -1 +1 @@
b6145df4b2a92d5ee75902f4367e7a1a5456a5cef7a2e1365610637b054c477a /usr/bin/checksum-transcriber
394b4651da547ae43b5de818a4bb9843f3872b2dbc022adf3711c991371d4398 /usr/bin/checksum-transcriber

View File

@ -1 +1 @@
a670c810b4f94d67bd171d5a79469882c04066ea7585f31c52f4c166ad5e5ee8 /usr/bin/checksum-transcriber
19fd50d727e8a7feba8b6e369e68287d1922d8f623a156fb113d994891e96998 /usr/bin/checksum-transcriber

View File

@ -1,61 +1,61 @@
292fcbf47ee383832767bb2bb8b378f96a14dd68725270ae0db5539a94d031f3 /usr/bin/install
a57f7328c2a81bd50fe5c83015406634baa8747211f912c9090e162e70735110 /usr/bin/basename
f2e6cf099ee87d2f4a3b1e62db57075fab98ee3d2d5839ff9e81eb0ac0e37137 /usr/bin/cat
9c77061b24adf9ba42951f8008dc457bcefff17b87d867f09a61f0c96817f083 /usr/bin/chmod
669211c275348cff62c580d96119af225735746c0168edb63492116bf9647bd1 /usr/bin/cksum
5be51d83898d33ffced444433fb977bd576e7bd3c37330f311458502f990083a /usr/bin/cp
e72996b66d573cfb1f27120ade2fd29bc9582e79057d8d43b6081aea510562d4 /usr/bin/csplit
a22cc2f79c70fac946e79fd93551578505c69a76beba68cbebb8d32e323a3e49 /usr/bin/cut
9e2b178412eaa6b8442940b632452d931af50dc8be1c770d47e752248d9fd4ea /usr/bin/dirname
42d8967cdfdd14e9f6f4ad6feb3e899f491ce2dcb6cb62f5160b6bd217bc4a04 /usr/bin/echo
dda7112d7c33fe77486f4336d5d57cc3228ce9a18082332250af2c0be57391b0 /usr/bin/expand
6f32c1383580aa37c9877eaed65090839dd3d12d8868ded3147c1adbdeb9a909 /usr/bin/expr
d8eaa5d9d8e601fdbbe4715e5632a55efa986e691027590ac5905c150d8e4f94 /usr/bin/factor
9f1f38e219d15070ece6229c3f75e40f11e5a3aaf426ee17745b95bb5205c94d /usr/bin/false
98915280c8bad059cfb1bf99636dc69bf33532f7a982bd086d2114e0daa39a76 /usr/bin/fmt
a8f6d99bc641f486ebdbc1bc5adb1b9fa424aceb4d9e0cc62ce08ceb43541c88 /usr/bin/fold
4d215db24218e8b6dfeeea05268477fac56b11651d789a5972945a15ab7b2917 /usr/bin/head
52718fa65c99150a773da13f4b155f8843391219f89d4aa0d5fe1d3cc9cf36b0 /usr/bin/hostname
fc845714f8d461698daaadcd7bb507d4228c09504b886a679c129226727186d0 /usr/bin/id
2fbe6af8f5c01521edacff2d145b8ee392489684e1624157e1e1841aade290a2 /usr/bin/join
ea4e13ec9e2f622600d961be4f41de96251e429e7ed8a881be8fb70c379b80de /usr/bin/kill
5c606a0febaeca39455847b11ea2ad1445cd4bfd40e187e4e3499c23e0dc2d43 /usr/bin/link
52c561306a91197034106b20678da1b06e77228ab77a3ce40639fa1c132d44bc /usr/bin/ln
2d7450a962ffdb434d2061aa36e74aa18e1e3e5d237eb39ccd3851a34a819694 /usr/bin/logname
bb651823aa51315576d30c79c84248577bce2daab9be4cbcaedabdf2aef882a5 /usr/bin/mkfifo
051a8465ba5e34d0f8c84f34f618b2ff059e566bf52d36c572d164762eca3618 /usr/bin/mkdir
50be768057f0284b4b9cc034b990cc739228b96449c1c2062d9d98c778b1d4b5 /usr/bin/mknod
e7c50e668907ce88388f127b2f07aed6dc10ddb6a8c9313f4269ed5b7e923c92 /usr/bin/nl
ae1033bcc79daca95df1feefa3b4d64c0313cc2bf021efcf14760cccc5b42215 /usr/bin/od
79aa11388de19028de66b06ce6e0983ba0d558b146aed51ce293d599fcaec627 /usr/bin/paste
70eb12b8db8550d5b642df34d28f19e76a768a425efccaa8dfaee18c41db1228 /usr/bin/pathchk
1fa81f879efc48472ab093eb82edc429736a10078aecab04d2b2cfb9634b47ef /usr/bin/pr
8913fd449afc122c42b99b89b04428a22e7f07e032eaa530cbd076e611849a23 /usr/bin/printf
b87663d81cc361221e643ca9f064995c7333f7c650f918393c9bb4482d8667e3 /usr/bin/ptx
d31910a5308cfe80f2136677234d515728a06c84f60441f131d2b8dd878ce3aa /usr/bin/pwd
84290d1d0a662ffc8d0ec314bbffa53aaacdae4104d8ba8f9a56d8896e97923b /usr/bin/readlink
55dfb9a4c9c1f4efe74aaceaad37baff1e9f24acea83ac92a7008b703394edd4 /usr/bin/rmdir
fec6d4f310ee0ad79fc76a23ed440b916502bc30af41c4a5e1ed578d2dca91f3 /usr/bin/seq
1d0c39f163aa5029d867a091e5d1963b8e55aec09c33cd99da237df7e5b31e60 /usr/bin/sleep
355ba0b4e1e655cfde75c493d907a68dbe2acf12adec88eaad019f231de1e75b /usr/bin/sort
96ab28039a859a5b78f142aabe75f55b560e340e350751ce3696d02903dfb31f /usr/bin/split
8852646f277cfbb01eff42c903f03248a7e3e9833cf3655c78a34f02687872ee /usr/bin/sum
79b02fef988b77c1e3adee565aa474aec05e522ef4a5fd4635ca9bb6b1e65b6c /usr/bin/tail
91038661556a3c6e91d4f45b41e44388bf62aea5a37abeca3395740344e03890 /usr/bin/tee
0c4517c49db58cd700f588281557514894e5c924bfad5df129a70ff46d4a8dae /usr/bin/tr
2d897818467998063800a4e92c50fa855b090202da11831f87be17665fd44a29 /usr/bin/tsort
f8ca50f4d91ef6233049e2bd68cf6aa05a300a16d9fba2dce2e90e085ab8f401 /usr/bin/unexpand
c8066c50b1a6f654a4cd1adc69e3a7fd58c6fa6ce987617c54b0d2668cb39daf /usr/bin/uniq
93feee6a854be3a733f9e7a4e421e274f0781d235c02421b837fee3134c47897 /usr/bin/unlink
a31f4b48b7517a348b44621e8d572eda835ffcdb7a97f64b1d7e78d67a38c84f /usr/bin/wc
fae709b45aca8b7e4630aa853681b6f1d053135b4a5c8f72477a1e311f1e4616 /usr/bin/whoami
11a17c10d03e56012685851f96145fe8a4701fd4ecbf05bad1c19b92fe97f347 /usr/bin/tac
ceac9200b63c7b8b3cda19ca4e90b7d619c3bbd412834a7cb14ae022e5f05fa2 /usr/bin/test
958a28e582bb69c684f666e2b47b98ff27d3b9a6177549444b85c03aad746c3d /usr/bin/touch
05dc8f5f6d78716f649eb7ad5d355a67b6e133e241efcd0b99d5bd1b3c01b3b1 /usr/bin/true
2203da05ecbf1d8be50e4c9669d78f8c45aa09055e55486322e18f9874cb3b4e /usr/bin/yes
7ec9570369e239d3f295490250fc0d79c32fd6cf2d7d4eb02042c56c67d8bc86 /usr/bin/ls
8323119905c2d42d9aefafb214ae314b7b9103247263328472d909fd794ffe8a /usr/bin/md5sum
e2ed596c2adba6cab2853cea203f66bf5aeee85d3424685acffc567dc417459a /usr/bin/mv
cb67b297e4e4f124f6c0a2a392fb8934ea8c07af4155bd7d49f367b9c77f4719 /usr/bin/rm
b51e023e8e70a8cc6dadaba1a789c5c8c96dc526f224a1e8de44e57aad31ca7a /usr/bin/sha1sum
523b51bf51c379c1dfa2d04b69863c02c31f31d54638a03a399bac71c498e302 /usr/bin/install
0b802f4c74c8a2640c84f7a87f010bccdc9858dc9b2ba438c6d3cc3894c3892a /usr/bin/basename
42a8ccb469ffd7e098626c2bd40d7933904a7d152b6b4aaa83512a7d43c8c026 /usr/bin/cat
0dc7228a05afd6956fec228358e38901e9176c8a01307547364f7f3d7df1ae85 /usr/bin/chmod
99d8f566fe26bf0997b32294cf301b8ac90796b79e7fe274bee19b8e5f4a2f2d /usr/bin/cksum
0a0b5e17e778a50637ae0f496232f742ae3748f137b4abaf78639c4278db5fe9 /usr/bin/cp
44d2c5e2d430998efb6260337a780cb730818be82fc1272da50e1dab2fcfb6a1 /usr/bin/csplit
c985d78e11c8a6140569068fcdb8473aaf81dee6a5d5e412bd47f9ae14c0aa8e /usr/bin/cut
7725e05029dd5537c673ca9f8662a70044202f5cce6267c6bbfa8b1bddb9a3e3 /usr/bin/dirname
95a6849907b9baf30168589ba2cfba2e08e760e2624962d8b5abf11f20662dd4 /usr/bin/echo
948341073b85442d6c00bef62360e810219189f2e0ae06b15bf512c9ad5586f6 /usr/bin/expand
ee13822dd21e78374d46671d38375ae8db1126e75c0dbe19bd63f92702ead9ca /usr/bin/expr
6918fd8d5f8a3f80c4f1bbd534c5115033927deb9ba816e12fca45d19eec1bcc /usr/bin/factor
d3c5662d77ad197191b53b88e0ffed4e1659084f41b18736a8deaf16755c17ab /usr/bin/false
83509ff0c83016065ad02086f255620c84ac12d668f7f0ab1b1463b621cd2467 /usr/bin/fmt
7649cb10eb246de6035e5d7db5c900ecaef8d83677452d1f084001962fdd251f /usr/bin/fold
8e26e4f22735c21109b4969ff6e4c8e52cb623198c708c91fc323f9a78d8a9f8 /usr/bin/head
dfa93d89a269ab8bc1a31ac27ae58ca4b57e9e80016c14bdb32560a11b5d2781 /usr/bin/hostname
a85003482887e354b121b2467244b9d8b289d484e888b95e4eac017356a50ca1 /usr/bin/id
a16d179a6252510cc3d7184a3afe03d67a2697f0958c65fc588cdc20540da0ba /usr/bin/join
fa575a974614812d656a739bd7971726c5ef37d9b659302caada5fb98c2d9bd2 /usr/bin/kill
60132054c00316ef9010664b90daeb3aed3edc7daa3492164aaf9cd6dda47385 /usr/bin/link
1422bd7e979aaa6fdb6b885f8befc95537207a6668df2d98f2f3e8b2997e754b /usr/bin/ln
b273ec1b70d14ad732b3843e66b80cc9995d0f064159c7fee06cea50b867414b /usr/bin/logname
dc1fb1d37393741dc72ec83c9ae52498ef0994cb9543c50f94e239f9cf80b30b /usr/bin/mkfifo
5eac78966fb4dbc976c834677eaf3162ed5eb4cfadc7e09693f1d982e9fe855b /usr/bin/mkdir
172edf9d1a9766eed0d836355c0e5f39e941ca0f3db1ee9a2a03a0ea63fa22d5 /usr/bin/mknod
9c9892aa721dc5dd7661c039d015d74525d071ee065df0bc1f6aa06ef0c50fce /usr/bin/nl
2a035b319845e589315a853b50818666c3d1198806430acdb9d5839471812b1f /usr/bin/od
02e8bd0034632d192d562ac6e7a65e1d5d58bdf704879de26dd02a74b4a0d645 /usr/bin/paste
7fcedafbe585d81fb1968c3cf8b3551817f1cdd98461896d1206f954f2d6a1e2 /usr/bin/pathchk
19038aeda999dd42316e08243c55b3d515150fbe11c811bb47f556face7add7f /usr/bin/pr
b990dc4321203613e56b0dabd8f8984dcbd8adc6e72f5e9265376a1911a08cad /usr/bin/printf
f32aaf380592c7ff14bd71515083c75d35d8fa396d600f75ce99be347ee6f387 /usr/bin/ptx
05dbc4ad66caace6dad054bc21ca98c261ef1cdcbd25431e4c82198eda2c12b2 /usr/bin/pwd
56ba3841290c6f5977bb44887b672bee3b97f571c845ea31e2d17f926662ffc5 /usr/bin/readlink
e9a9e3cf2c2908659a03b63b9fa4963d52c7fdf69d699c359855467a19df4756 /usr/bin/rmdir
e30b629fa1fcf35a5f46f5cfd1b1602aa5c7ca184a1ff343452349333b778a6c /usr/bin/seq
c30b559c2efb15b90865600f203f1ea75aa50e728f7dfd4d2a0eaf1aa8ff3924 /usr/bin/sleep
53e4e2c96092489cb2b9e6883e66164c12a228de0420389dd63cad506948487f /usr/bin/sort
b1a1344aaee44f1bf04430b0c0a4a6148af69128160f2bc093fce91d79d6e25f /usr/bin/split
e5de0b1782231a9ce0b0bbcc7c818a39517e419273fe56faddc628b7c0a0e5a6 /usr/bin/sum
df19f0df1b4198e02261b478266ce642c62450114c818c8812249cb1eac473e6 /usr/bin/tail
0b6726576538145c62a7c33994574ff3d2470ed475d612076caf7049a6eb8f7c /usr/bin/tee
311ce27575937ff583e67ee98cd8a64ef6d8a103666de773a0f61c7ba1537cf9 /usr/bin/tr
b4285c93f16b2f1521c2729c20df7176408d27c32a055676fadc34c009b956ba /usr/bin/tsort
5958c475dcee08b42516bf0aeec420e19ea592d56d1781692d2481e273999762 /usr/bin/unexpand
08a550c90975a232311cd2f41c8fabb06e3b32b4c6aa362a35ca038189712f67 /usr/bin/uniq
d33508270e1f86fc959d6abb12ae03ac6643f0138395e1b67586539d5c3dd38b /usr/bin/unlink
7e7526b6970838c620fbcccf8ce295a5d901aa03186da4036d1938ee907d1d46 /usr/bin/wc
ef0041e5daf3b96d6656068c9bc27cde52c11f10177ede1ee7ecc0d1fc09c061 /usr/bin/whoami
794107d42c946b844c84575f80b7fc2ac35bc197555d36ecefd9471a4ce8943e /usr/bin/tac
61624e0509eded80e4539890d33908e8f9b92da3f53685810da6bfa5f749c141 /usr/bin/test
cc16741fbadaeee5ef9427ac96f762c6e7d21ed8b80a625afde5b375443896b3 /usr/bin/touch
3f94bca6093256356dd09d896aa657c2f7aa26b6b337cbde19d59e1bb6ca2e34 /usr/bin/true
6256e12f10ab5e9e199db96fec51809591445d3135cea446e788523c47989504 /usr/bin/yes
f10746a6226e699da42a1a2a4e1a99d36fd7d9d6211a100a8bf0a98b3585321e /usr/bin/ls
e604f08d122e88c1a112c32b59b870f8b0c9000e4821684bc41d0a50d6338214 /usr/bin/md5sum
32aa8dc8b78a0807cdf3867725a529f56b8e0701f2fcd3dc93c5e19e0c8b4f9f /usr/bin/mv
4dcfebaed9312e084e9927ce1bb89ec4a928d668816c8f5f1efd6acaf54d8bbd /usr/bin/rm
e4c326abc31fac0c5bd77d5c2f6bafee9b9a97e6cfb603f55eb6c722bb41e875 /usr/bin/sha1sum

File diff suppressed because one or more lines are too long

View File

@ -20,6 +20,7 @@ cd build
cp ${DISTFILES}/${pkg}.tar.bz2 ../src/
bunzip2 -f ../src/${pkg}.tar.bz2
tar xf ../src/${pkg}.tar
rm -r ../src
cd ${pkg}
cp ../../mk/main.mk Makefile

View File

@ -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
}

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
https://mirrors.kernel.org/gnu/coreutils/coreutils-6.10.tar.gz 1d013547889f20576460249c4210632d5314531c8477378a2e046b13a8ebeb7e
https://mirrors.kernel.org/gnu/coreutils/coreutils-6.10.tar.lzma 8b05bba1b2726a164e444c314e3f359604b58216be704bed8f2e028449cc6204

View File

@ -1,298 +0,0 @@
#!/bin/sh
# SPDX-FileCopyrightText: 2021 Melg Eight <public.melg8@gmail.com>
#
# 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

View File

@ -1,50 +0,0 @@
SPDX-FileCopyrightText: 2021 Melg Eight <public.melg8@gmail.com>
SPDX-License-Identifier: GPL-3.0-or-later
Remove dependency on gperf. This drops support for outputting unicode
characters. We do that, because inclusion of unicodeio.h and propername.h
from gnulib brings dependencies on gperf generated files. We don't have
gperf at this stage so we can't regenerate them.
--- ./src/printf.c
+++ ./src/printf.c
@@ -59,7 +59,6 @@
#include "die.h"
#include "error.h"
#include "quote.h"
-#include "unicodeio.h"
#include "xprintf.h"
/* The official name of this program (e.g., no 'g' prefix). */
@@ -292,8 +291,12 @@ print_esc (const char *escstart, bool octal_0)
|| (uni_value >= 0xd800 && uni_value <= 0xdfff))
die (EXIT_FAILURE, 0, _("invalid universal character name \\%c%0*x"),
esc_char, (esc_char == 'u' ? 4 : 8), uni_value);
-
- print_unicode_char (stdout, uni_value, 0);
+ putchar ('\\');
+ if (*p)
+ {
+ putchar (*p);
+ p++;
+ }
}
else
{
--- ./src/system.h
+++ ./src/system.h
@@ -361,13 +361,13 @@ enum
#include "version-etc.h"
#undef emit_bug_reporting_address
-#include "propername.h"
/* Define away proper_name (leaving proper_name_utf8, which affects far
fewer programs), since it's not worth the cost of adding ~17KB to
the x86_64 text size of every single program. This avoids a 40%
(almost ~2MB) increase in the on-disk space utilization for the set
of the 100 binaries. */
#define proper_name(x) (x)
+#define proper_name_utf8(x, y) (x, y)
#include "progname.h"

View File

@ -1,2 +0,0 @@
http://git.savannah.gnu.org/cgit/coreutils.git/snapshot/coreutils-8.32.tar.gz 6f7cfc0ac6717afb6ba1f41b0da43a713ba0dd97dec1227e32effc12d79f08c1
http://git.savannah.gnu.org/cgit/gnulib.git/snapshot/gnulib-d279bc.tar.gz 12cfa21abf618a274017d6b18e95fc6582519d7c08e2403e5c5772ccdd5b85f4

View File

@ -0,0 +1,327 @@
#!/bin/sh
# SPDX-FileCopyrightText: 2021 Melg Eight <public.melg8@gmail.com>
# SPDX-FileCopyrightText: 2023 fosslinux <fosslinux@aussies.space>
#
# SPDX-License-Identifier: GPL-3.0-or-later
# Regenerate unicode files
pushd ../gnulib-bb5bb43/lib
gcc -Iunictype -o gen-uni-tables gen-uni-tables.c
mv ../../*.txt .
./gen-uni-tables UnicodeData-15.0.0.txt PropList-15.0.0.txt DerivedCoreProperties-15.0.0.txt emoji-data-15.0.0.txt ArabicShaping-15.0.0.txt Scripts-15.0.0.txt Blocks-15.0.0.txt PropList-3.0.1.txt EastAsianWidth-15.0.0.txt LineBreak-15.0.0.txt WordBreakProperty-15.0.0.txt GraphemeBreakProperty-15.0.0.txt CompositionExclusions-15.0.0.txt SpecialCasing-15.0.0.txt CaseFolding-15.0.0.txt 15.0
popd
../gnulib-bb5bb43/gnulib-tool --import --local-dir=gl \
--lib=libcoreutils \
--source-base=lib \
--m4-base=m4 \
--doc-base=doc \
--tests-base=gnulib-tests \
--aux-dir=build-aux \
--with-tests \
--makefile-name=gnulib.mk \
--automake-subdir \
--no-conditional-dependencies \
--no-libtool \
--macro-prefix=gl \
--avoid=canonicalize-lgpl \
--avoid=dummy \
acl \
alignalloc \
alignasof \
alloca \
announce-gen \
areadlink-with-size \
areadlinkat-with-size \
argmatch \
argv-iter \
assert \
assert-h \
assure \
attribute \
autobuild \
backup-rename \
backupfile \
base32 \
base64 \
btowc \
buffer-lcm \
byteswap \
c-strcase \
calloc-gnu \
canon-host \
canonicalize \
chmodat \
chown \
chownat \
cl-strtod \
cl-strtold \
cloexec \
closein \
closeout \
config-h \
configmake \
copy-file-range \
count-leading-zeros \
crypto/md5 \
crypto/sha1 \
crypto/sha256 \
crypto/sha512 \
crypto/sm3 \
cycle-check \
d-ino \
d-type \
di-set \
dirfd \
dirname \
do-release-commit-and-tag \
dtoastr \
dup2 \
environ \
error \
euidaccess \
exclude \
exitfail \
explicit_bzero \
faccessat \
fadvise \
fchdir \
fchmodat \
fchownat \
fclose \
fcntl \
fcntl-safer \
fd-reopen \
fdatasync \
fdopen \
fdutimensat \
file-has-acl \
file-type \
fileblocks \
filemode \
filenamecat \
filevercmp \
flexmember \
fnmatch-gnu \
fopen-safer \
fprintftime \
fpurge \
free-posix \
freopen \
freopen-safer \
fseeko \
fstatat \
fsusage \
fsync \
ftoastr \
ftruncate \
fts \
full-read \
full-write \
getgroups \
gethrxtime \
getline \
getloadavg \
getlogin \
getndelim2 \
getopt-gnu \
getpagesize \
getpass-gnu \
gettext-h \
gettime \
gettime-res \
getugroups \
getusershell \
git-version-gen \
gitlog-to-changelog \
gnu-make \
gnu-web-doc-update \
gnumakefile \
gnupload \
group-member \
hard-locale \
hash \
hash-triple \
heap \
host-os \
human \
idcache \
idx \
ignore-value \
inttostr \
inttypes \
isapipe \
isatty \
isblank \
largefile \
lchmod \
lchown \
ldtoastr \
lib-ignore \
libgmp \
linebuffer \
link \
link-follow \
linkat \
long-options \
lstat \
maintainer-makefile \
malloc-gnu \
manywarnings \
mbrlen \
mbrtowc \
mbsalign \
mbschr \
mbslen \
mbswidth \
memcasecmp \
memchr \
memcmp2 \
mempcpy \
memrchr \
mgetgroups \
minmax \
mkancesdirs \
mkdir \
mkdir-p \
mkdirat \
mkfifo \
mkfifoat \
mknod \
mkostemp \
mkstemp \
mktime \
modechange \
mountlist \
mpsort \
netinet_in \
nproc \
nstrftime \
nullptr \
obstack \
open \
openat-safer \
parse-datetime \
parse-datetime2 \
pathmax \
perl \
physmem \
pipe-posix \
pipe2 \
posix-shell \
posixtm \
posixver \
priv-set \
progname \
propername-lite \
pthread-cond \
pthread-mutex \
pthread-thread \
pthread_sigmask \
putenv \
quote \
quotearg \
randint \
randperm \
rawmemchr \
read-file \
readlink \
readtokens \
readtokens0 \
readutmp \
realloc-gnu \
regex \
remove \
rename \
renameat \
renameatu \
rmdir \
root-dev-ino \
rpmatch \
safe-read \
same \
save-cwd \
savedir \
savewd \
select \
selinux-at \
setenv \
settime \
sig2str \
sigaction \
smack \
ssize_t \
stat-macros \
stat-size \
stat-time \
stdbool \
stdckdint \
stdlib-safer \
stpcpy \
stpncpy \
strdup-posix \
strncat \
strnumcmp \
strsignal \
strtoimax \
strtoumax \
symlinkat \
sys_ioctl \
sys_resource \
sys_stat \
sys_wait \
targetdir \
tempname \
termios \
time_rz \
timer-time \
timespec \
tmpdir \
tzset \
uname \
unicodeio \
unistd-safer \
unlink-busy \
unlinkat \
unlinkdir \
unlocked-io \
unsetenv \
update-copyright \
useless-if-before-free \
userspec \
utimecmp \
utimens \
utimensat \
vasprintf-posix \
vc-list-files \
verify \
verror \
version-etc-fsf \
wchar-single \
wcswidth \
wcwidth \
winsz-ioctl \
winsz-termios \
write-any-file \
xalignalloc \
xalloc \
xbinary-io \
xdectoint \
xfts \
xgetcwd \
xgetgroups \
xgethostname \
xmemcoll \
xnanosleep \
xprintf \
xprintf-posix \
xreadlink \
xstrtod \
xstrtoimax \
xstrtol \
xstrtol-error \
xstrtold \
xstrtoumax \
year2038-recommended \
yesno

View File

@ -1,5 +1,6 @@
# SPDX-FileCopyrightText: 2021 Melg Eight <public.melg8@gmail.com>
# SPDX-FileCopyrightText: 2022 Andrius Štikonas <andrius@stikonas.eu>
# SPDX-FileCopyrightText: 2023 fosslinux <fosslinux@aussies.space>
#
# SPDX-License-Identifier: GPL-3.0-or-later
@ -8,14 +9,17 @@ regenerate_files() {
build-aux/gen-lists-of-programs.sh --automake > src/cu-progs.mk
build-aux/gen-single-binary.sh src/local.mk > src/single-binary.mk
touch ChangeLog
cp ../gnulib-d279bc/build-aux/po/Makefile.in.in po/Makefile.in.in
cp ../gnulib-bb5bb43/build-aux/po/Makefile.in.in po/Makefile.in.in
# Remove pregenerated gnulib files
pushd ../gnulib-bb5bb43
rm lib/uniwidth/width*.h
rm lib/unictype/ctype*.h
rm lib/unicase/tolower.h
popd
. ../../import-gnulib.sh
# Disable generation of man pages due to lack of needed perl 5.8
# dependency.
cp man/dummy-man man/help2man
VERSION=$(basename "${BASH_SOURCE[0]}" .sh | sed 's/coreutils-//')
echo "$VERSION" > .tarball-version
@ -35,14 +39,16 @@ src_configure() {
# In some environments, the configure script would set it to
# "no, but it is partly working", and in others it would set it
# to "yes", producing different build outputs.
# Also, tell coreutils we don't have perl, which disables help2man
FORCE_UNSAFE_CONFIGURE=1 ./configure CFLAGS="-static" \
--prefix="${PREFIX}" \
--build=i386-unknown-linux-musl \
gl_cv_func_getcwd_path_max="no, but it is partly working"
gl_cv_func_getcwd_path_max="no, but it is partly working" \
gl_cv_prog_perl="no"
}
src_compile() {
make "${MAKEJOBS}" PREFIX="${PREFIX}" MAKEINFO="true"
make "${MAKEJOBS}" PREFIX="${PREFIX}" MAKEINFO="true" GPERF="true"
}
src_install() {

View File

@ -7,8 +7,8 @@ We always assume that kernel doesn't have correct implementation and
instead use function from gnulib with fix. That fixes reproducibility
problem across different kernels.
--- ../gnulib-d279bc/m4/nanosleep.m4
+++ ../gnulib-d279bc/m4/nanosleep.m4
--- ../gnulib-bb5bb43/m4/nanosleep.m4
+++ ../gnulib-bb5bb43/m4/nanosleep.m4
@@ -85,23 +85,9 @@ AC_DEFUN([gl_FUNC_NANOSLEEP],
ts_sleep.tv_nsec = 1;
#if HAVE_DECL_ALARM

View File

@ -0,0 +1,19 @@
http://git.savannah.gnu.org/cgit/coreutils.git/snapshot/coreutils-9.4.tar.xz 8fb56810310253300b3d6f84e68dc97eb2d74e1f4f78e05776831d9d82e4f2d7
https://files.bootstrapping.world/coreutils-9.4.tar.xz 8fb56810310253300b3d6f84e68dc97eb2d74e1f4f78e05776831d9d82e4f2d7
http://git.savannah.gnu.org/cgit/gnulib.git/snapshot/gnulib-bb5bb43.tar.gz b8aa1ac1b18c67f081486069e6a7a5564f20431c2313a94c20a46dcfb904be2a
https://files.bootstrapping.world/gnulib-bb5bb43.tar.gz b8aa1ac1b18c67f081486069e6a7a5564f20431c2313a94c20a46dcfb904be2a
http://ftp.unicode.org/Public/15.0.0/ucd/UnicodeData.txt 806e9aed65037197f1ec85e12be6e8cd870fc5608b4de0fffd990f689f376a73 UnicodeData-15.0.0.txt
http://ftp.unicode.org/Public/15.0.0/ucd/PropList.txt e05c0a2811d113dae4abd832884199a3ea8d187ee1b872d8240a788a96540bfd PropList-15.0.0.txt
http://ftp.unicode.org/Public/15.0.0/ucd/DerivedCoreProperties.txt d367290bc0867e6b484c68370530bdd1a08b6b32404601b8c7accaf83e05628d DerivedCoreProperties-15.0.0.txt
http://ftp.unicode.org/Public/15.0.0/ucd/emoji/emoji-data.txt 29071dba22c72c27783a73016afb8ffaeb025866740791f9c2d0b55cc45a3470 emoji-data-15.0.0.txt
http://ftp.unicode.org/Public/15.0.0/ucd/ArabicShaping.txt eb840f36e0a7446293578c684a54c6d83d249abde7bdd4dfa89794af1d7fe9e9 ArabicShaping-15.0.0.txt
http://ftp.unicode.org/Public/15.0.0/ucd/Scripts.txt cca85d830f46aece2e7c1459ef1249993dca8f2e46d51e869255be140d7ea4b0 Scripts-15.0.0.txt
http://ftp.unicode.org/Public/15.0.0/ucd/Blocks.txt 529dc5d0f6386d52f2f56e004bbfab48ce2d587eea9d38ba546c4052491bd820 Blocks-15.0.0.txt
http://ftp.unicode.org/Public/3.0-Update1/PropList-3.0.1.txt 909eef4adbeddbdddcd9487c856fe8cdbb8912aa8eb315ed7885b6ef65f4dc4c
http://ftp.unicode.org/Public/15.0.0/ucd/EastAsianWidth.txt 743e7bc435c04ab1a8459710b1c3cad56eedced5b806b4659b6e69b85d0adf2a EastAsianWidth-15.0.0.txt
http://ftp.unicode.org/Public/15.0.0/ucd/LineBreak.txt 012bca868e2c4e59a5a10a7546baf0c6fb1b2ef458c277f054915c8a49d292bf LineBreak-15.0.0.txt
http://ftp.unicode.org/Public/15.0.0/ucd/auxiliary/WordBreakProperty.txt 5188a56e91593467c2e912601ebc78750e6adc9b04541b8c5becb5441e388ce2 WordBreakProperty-15.0.0.txt
http://ftp.unicode.org/Public/15.0.0/ucd/auxiliary/GraphemeBreakProperty.txt 5a0f8748575432f8ff95e1dd5bfaa27bda1a844809e17d6939ee912bba6568a1 GraphemeBreakProperty-15.0.0.txt
http://ftp.unicode.org/Public/15.0.0/ucd/CompositionExclusions.txt 3b019c0a33c3140cbc920c078f4f9af2680ba4f71869c8d4de5190667c70b6a3 CompositionExclusions-15.0.0.txt
http://ftp.unicode.org/Public/15.0.0/ucd/SpecialCasing.txt 78b29c64b5840d25c11a9f31b665ee551b8a499eca6c70d770fcad7dd710f494 SpecialCasing-15.0.0.txt
http://ftp.unicode.org/Public/15.0.0/ucd/CaseFolding.txt cdd49e55eae3bbf1f0a3f6580c974a0263cb86a6a08daa10fbf705b4808a56f7 CaseFolding-15.0.0.txt

View File

@ -1 +1 @@
https://curl.se/download/curl-8.5.0.tar.bz2 ce4b6a6655431147624aaf582632a36fe1ade262d5fab385c60f78942dd8d87b
https://curl.se/download/curl-8.5.0.tar.xz 42ab8db9e20d8290a3b633e7fbb3cec15db34df65fd1015ef8ac1e4723750eeb

View File

@ -0,0 +1,99 @@
#!/bin/sh
# SPDX-FileCopyrightText: 2024 fosslinux <fosslinux@aussies.space>
#
# 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

24
steps/diffutils-3.10/pass1.sh Executable file
View File

@ -0,0 +1,24 @@
# SPDX-FileCopyrightText: 2024 fosslinux <fosslinux@aussies.space>
#
# SPDX-License-Identifier: GPL-3.0-or-later
src_prepare() {
default
autoreconf-2.71 -fi
rm man/*.1
rm doc/*.info
# gperf
rm lib/iconv_open*.h
# Don't use in tree help2man
rm man/help2man
ln -s "${PREFIX}/bin/help2man" man/help2man
. ../../import-gnulib.sh
}
src_configure() {
./configure --prefix="${PREFIX}"
}

View File

@ -0,0 +1,3 @@
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
https://files.bootstrapping.world/gnulib-5d2fe24.tar.gz 72e7bb2d1d75e63d1c46d33b8dd22e8eb60afdba4af3e7251151b5c2a6f00bfb

View File

@ -1,4 +1,4 @@
https://mirrors.edge.kernel.org/pub/linux/kernel/people/tytso/e2fsprogs/v1.45.7/e2fsprogs-1.45.7.tar.gz 340e9de42a12d0c26dd7527e9ef055ac85586de5c61f6273ae19f88d04e55804
https://mirrors.edge.kernel.org/pub/linux/kernel/people/tytso/e2fsprogs/v1.45.7/e2fsprogs-1.45.7.tar.xz 62d49c86d9d4becf305093edd65464484dc9ea41c6ff9ae4f536e4a341b171a2
https://www.unicode.org/Public/11.0.0/ucd/CaseFolding.txt 64f117a4749dd4a1b6c54277f63f6cf1e0eb45d290cbedaf777fbe71b8880885
https://www.unicode.org/Public/11.0.0/ucd/DerivedAge.txt eb115a5de9a32c9ad447d6ea1cddcadb53d47f6cbc2521f3fe0bebb040c39866
https://www.unicode.org/Public/11.0.0/ucd/extracted/DerivedCombiningClass.txt 11c8bd81ecbede4d67c7b5b693a471647d5401956707c639ae053b836cc7f5da

View File

@ -1 +1 @@
https://mirrors.kernel.org/gnu/ed/ed-1.4.tar.gz db36da85ee1a9d8bafb4b041bd4c8c11becba0c43ec446353b67045de1634fda
https://mirrors.kernel.org/slackware/slackware-13.37/source/a/ed/ed-1.4.tar.xz 102c80e6da527c6b8eebd5195cd05fc71808d60735d73e8bb503a5e294475007

View File

@ -1,2 +1,3 @@
https://mirrors.kernel.org/gnu/findutils/findutils-4.2.33.tar.gz 813cd9405aceec5cfecbe96400d01e90ddad7b512d3034487176ce5258ab0f78
https://git.savannah.gnu.org/cgit/gnulib.git/snapshot/gnulib-8e128e.tar.gz 0cfbf866bc39c31f25fa0e56af1e56c5e5c92fc1e5d51242ebafef7ea211f3d5
https://files.bootstrapping.world/gnulib-8e128e.tar.gz 0cfbf866bc39c31f25fa0e56af1e56c5e5c92fc1e5d51242ebafef7ea211f3d5

View File

@ -1 +0,0 @@
eda65efb4ca7b1e37cb5e0872e8267251870cdf86b341e6d967c856a926cc3f5 /boot/fiwix

View File

@ -1 +0,0 @@
https://github.com/rick-masters/Fiwix/releases/download/v1.4.0-lb3/fiwix-1.4.0-lb3.tar.gz 525a24e32571e574da76e2a8c898f4eab371dfb85302d545c498a21c8028283d

View File

@ -0,0 +1,22 @@
/* SPDX-FileCopyrightText: 2024 Richard Masters <grick23@gmail.com> */
/* SPDX-License-Identifier: MIT */
#undef NR_PROCS
#define NR_PROCS 4096
#undef NR_CALLOUTS
#define NR_CALLOUTS NR_PROCS
#undef NR_OPENS
#define NR_OPENS 4096
#undef NR_FLOCKS
#define NR_FLOCKS (NR_PROCS * 5)
#undef MAX_PID_VALUE
#define MAX_PID_VALUE 16000000
#undef RAMDISK_DRIVES
#define RAMDISK_DRIVES 0
#define CONFIG_SYSCALL_6TH_ARG
#define CONFIG_VM_SPLIT22
#define CONFIG_KEXEC
#undef CONFIG_OFFSET64
#define CONFIG_MMAP2
#define CONFIG_64BIT_SYSCALLS
#undef CONFIG_NET
#undef CONFIG_PRINTK64

View File

@ -0,0 +1,4 @@
/* SPDX-FileCopyrightText: 2024 Richard Masters <grick23@gmail.com> */
/* SPDX-License-Identifier: MIT */
#undef INIT_PROGRAM
#define INIT_PROGRAM "/init"

View File

@ -0,0 +1,8 @@
/* SPDX-FileCopyrightText: 2024 Richard Masters <grick23@gmail.com> */
/* SPDX-License-Identifier: MIT */
#undef CHILD_MAX
#define CHILD_MAX 4096
#undef OPEN_MAX
#define OPEN_MAX 4096
#undef FD_SETSIZE
#define FD_SETSIZE OPEN_MAX

View File

@ -0,0 +1,4 @@
/* SPDX-FileCopyrightText: 2024 Richard Masters <grick23@gmail.com> */
/* SPDX-License-Identifier: MIT */
#undef UTS_SYSNAME
#define UTS_SYSNAME "Linux"

View File

@ -0,0 +1 @@
2c6d2d24bc1ffcec1af415b031846d06f581cd4d2b8ba721fed55f98863a79f9 /boot/fiwix

View File

@ -9,18 +9,21 @@ checksum-transcriber sources
sha256sum -c sources.SHA256SUM
# Extract
mkdir build src
cd src
ungz --file ${DISTFILES}/${pkg}.tar.gz --output ${pkg}.tar
cd ..
mkdir build
cd build
untar --file ../src/${pkg}.tar
ungz --file ${DISTFILES}/${pkg}.tar.gz --output ${pkg}.tar
untar --file ${pkg}.tar
cd ${pkg}
alias as="tcc -m32 -march=i386 -std=c89 -D__KERNEL__ -DMAX_PID_VALUE=64000000 -DCONFIG_MMAP2 -DNO_CONFIG_OFFSET64 -DCONFIG_64BIT_SYSCALLS -DCONFIG_KEXEC -DNR_PROCS=4096 -DCHILD_MAX=4096 -DOPEN_MAX=1536 -DNR_OPENS=1536 -DINIT_PROGRAM=\"/init\" -DUTS_SYSNAME=\"Linux\" -D__VERSION__=\"tcc\" -traditional -I${SRCDIR}/${pkg}/build/${pkg}/include"
cp ../../files/custom_config.h include/fiwix
cp ../../files/custom_limits.h include/fiwix
cp ../../files/custom_kernel.h include/fiwix
cp ../../files/custom_system.h include/fiwix
alias cc="tcc -m32 -march=i386 -std=c89 -D__KERNEL__ -DMAX_PID_VALUE=64000000 -DCONFIG_MMAP2 -DNO_CONFIG_OFFSET64 -DCONFIG_64BIT_SYSCALLS -DCONFIG_KEXEC -DNR_PROCS=4096 -DCHILD_MAX=4096 -DOPEN_MAX=1536 -DNR_OPENS=1536 -DINIT_PROGRAM=\"/init\" -DUTS_SYSNAME=\"Linux\" -D__VERSION__=\"tcc\" -I${SRCDIR}/${pkg}/build/${pkg}/include -O2 -fno-pie -fno-common -ffreestanding -Wall -Wstrict-prototypes"
alias as="tcc -m32 -march=i386 -std=c89 -D__KERNEL__ -DCUSTOM_CONFIG_H -DCUSTOM_LIMITS_H -DCUSTOM_KERNEL_H -DCUSTOM_SYSTEM_H -D__VERSION__=\"tcc\" -traditional -I/${SRCDIR}/${pkg}/build/${pkg}/include"
alias cc="tcc -m32 -march=i386 -std=c89 -D__KERNEL__ -DCUSTOM_CONFIG_H -DCUSTOM_LIMITS_H -DCUSTOM_KERNEL_H -DCUSTOM_SYSTEM_H -D__VERSION__=\"tcc\" -I/${SRCDIR}/${pkg}/build/${pkg}/include -O2 -fno-pie -fno-common -ffreestanding -Wall -Wstrict-prototypes"
cd kernel
as -c -o boot.o boot.S
@ -59,7 +62,6 @@ cc -c -o fdatasync.o fdatasync.c
cc -c -o chmod.o chmod.c
cc -c -o mmap2.o mmap2.c
cc -c -o msgsnd.o msgsnd.c
cc -c -o madvise.o madvise.c
cc -c -o exit.o exit.c
cc -c -o readlink.o readlink.c
cc -c -o socketcall.o socketcall.c
@ -132,10 +134,8 @@ cc -c -o pause.o pause.c
cc -c -o utime.o utime.c
cc -c -o statfs.o statfs.c
cc -c -o ioperm.o ioperm.c
cc -c -o exit_group.o exit_group.c
cc -c -o ftime.o ftime.c
cc -c -o truncate.o truncate.c
cc -c -o pipe2.o pipe2.c
cc -c -o old_mmap.o old_mmap.c
cc -c -o olduname.o olduname.c
cc -c -o kill.o kill.c
@ -164,6 +164,7 @@ cc -c -o nanosleep.o nanosleep.c
cc -c -o close.o close.c
cc -c -o chroot.o chroot.c
cc -c -o ftruncate64.o ftruncate64.c
cc -c -o truncate64.o truncate64.c
cc -c -o msgrcv.o msgrcv.c
cc -c -o umount2.o umount2.c
cc -c -o time.o time.c
@ -185,6 +186,7 @@ cc -c -o getpgrp.o getpgrp.c
cc -c -o fchown.o fchown.c
cc -c -o execve.o execve.c
cc -c -o shmget.o shmget.c
cc -c -o lchown.o lchown.c
cd ../..
cd mm
@ -304,7 +306,7 @@ cc -c -o printk.o printk.c
cd ..
mkdir /boot
tcc -m32 -Wl,-Ttext=0xC0100000 -static -nostdlib -nostdinc \
tcc -m32 -Wl,-Ttext=0x80100000 -static -nostdlib -nostdinc \
kernel/boot.o \
kernel/core386.o \
kernel/main.o kernel/init.o \
@ -338,7 +340,6 @@ tcc -m32 -Wl,-Ttext=0xC0100000 -static -nostdlib -nostdinc \
kernel/syscalls/chmod.o \
kernel/syscalls/mmap2.o \
kernel/syscalls/msgsnd.o \
kernel/syscalls/madvise.o \
kernel/syscalls/exit.o \
kernel/syscalls/readlink.o \
kernel/syscalls/socketcall.o \
@ -411,10 +412,8 @@ tcc -m32 -Wl,-Ttext=0xC0100000 -static -nostdlib -nostdinc \
kernel/syscalls/utime.o \
kernel/syscalls/statfs.o \
kernel/syscalls/ioperm.o \
kernel/syscalls/exit_group.o \
kernel/syscalls/ftime.o \
kernel/syscalls/truncate.o \
kernel/syscalls/pipe2.o \
kernel/syscalls/old_mmap.o \
kernel/syscalls/olduname.o \
kernel/syscalls/kill.o \
@ -443,6 +442,7 @@ tcc -m32 -Wl,-Ttext=0xC0100000 -static -nostdlib -nostdinc \
kernel/syscalls/close.o \
kernel/syscalls/chroot.o \
kernel/syscalls/ftruncate64.o \
kernel/syscalls/truncate64.o \
kernel/syscalls/msgrcv.o \
kernel/syscalls/umount2.o \
kernel/syscalls/time.o \
@ -464,6 +464,7 @@ tcc -m32 -Wl,-Ttext=0xC0100000 -static -nostdlib -nostdinc \
kernel/syscalls/fchown.o \
kernel/syscalls/execve.o \
kernel/syscalls/shmget.o \
kernel/syscalls/lchown.o \
mm/bios_map.o \
mm/buddy_low.o \
mm/memory.o \

View File

@ -0,0 +1 @@
https://github.com/mikaku/Fiwix/releases/download/v1.5.0-lb1/fiwix-1.5.0-lb1.tar.gz 6635f8b8a44694a374daccd528a8d22550e684d33dc967f7fa2d161b9d69deb4

View File

@ -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
}

View File

@ -20,7 +20,4 @@ src_install() {
cd src
default
cd ..
# Remove yacc, we won't need it any longer
rm "${PREFIX}/bin/yacc"
}

17
steps/gawk-5.3.0/pass1.sh Normal file
View File

@ -0,0 +1,17 @@
# SPDX-FileCopyrightText: 2024 fosslinux <fosslinux@aussies.space>
#
# SPDX-License-Identifier: GPL-3.0-or-later
src_prepare() {
default
# texinfo
rm doc/*.info
# bison
rm awkgram.c command.c
}
src_configure() {
./configure --prefix="${PREFIX}"
}

1
steps/gawk-5.3.0/sources Normal file
View File

@ -0,0 +1 @@
https://mirrors.kernel.org/gnu/gawk/gawk-5.3.0.tar.xz ca9c16d3d11d0ff8c69d79dc0b47267e1329a69b39b799895604ed447d3ca90b

View File

@ -4,7 +4,7 @@
# SPDX-License-Identifier: GPL-3.0-or-later
EXTRA_DISTFILES="automake-1.16.3.tar.gz"
EXTRA_DISTFILES="automake-1.16.3.tar.xz"
src_prepare() {
default

View File

@ -4,7 +4,7 @@
# SPDX-License-Identifier: GPL-3.0-or-later
EXTRA_DISTFILES="automake-1.16.3.tar.gz"
EXTRA_DISTFILES="automake-1.16.3.tar.xz"
src_prepare() {
default

View File

@ -1,2 +1,2 @@
https://mirrors.kernel.org/gnu/gcc/gcc-4.0.4/gcc-core-4.0.4.tar.bz2 e9bf58c761a4f988311aef6b41f12fd5c7e51d09477468fb73826aecc1be32e7
https://mirrors.kernel.org/gnu/automake/automake-1.16.3.tar.gz ce010788b51f64511a1e9bb2a1ec626037c6d0e7ede32c1c103611b9d3cba65f
https://mirrors.kernel.org/gnu/automake/automake-1.16.3.tar.xz ff2bf7656c4d1c6fdda3b8bebb21f09153a736bcba169aaf65eab25fa113bf3a

View File

@ -1,2 +1,3 @@
https://mirrors.kernel.org/gnu/gettext/gettext-0.21.tar.xz d20fcbb537e02dcf1383197ba05bd0734ef7bf5db06bdb241eb69b7d16b73192
https://git.savannah.gnu.org/cgit/gnulib.git/snapshot/gnulib-7daa86f.tar.gz 2d911c2f2ed97b347d6d360b742abdc98aa626d4f8f847ee682c7cde12e90871
https://files.bootstrapping.world/gnulib-7daa86f.tar.gz 2d911c2f2ed97b347d6d360b742abdc98aa626d4f8f847ee682c7cde12e90871

View File

@ -1,2 +1,3 @@
https://mirrors.kernel.org/gnu/grep/grep-3.7.tar.xz 5c10da312460aec721984d5d83246d24520ec438dd48d7ab5a05dbc0d6d6823c
http://git.savannah.gnu.org/cgit/gnulib.git/snapshot/gnulib-8f4538a5.tar.gz e207c0bb72093c3a72dde302fcfaa1dbda12a62172d47b73565883a92209ebab
https://files.bootstrapping.world/gnulib-8f4538a5.tar.gz e207c0bb72093c3a72dde302fcfaa1dbda12a62172d47b73565883a92209ebab

View File

@ -0,0 +1,39 @@
#!/bin/sh
# SPDX-FileCopyrightText: 2021 Melg Eight <public.melg8@gmail.com>
# SPDX-FileCopyrightText: 2023 fosslinux <fosslinux@aussies.space>
# SPDX-FileCopyrightText: 2024 Gábor Stefanik <netrolller.3d@gmail.com>
#
# 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

35
steps/grub-2.06/pass1.sh Normal file
View File

@ -0,0 +1,35 @@
# SPDX-FileCopyrightText: 2024 Gábor Stefanik <netrolller.3d@gmail.com>
#
# 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"
}

17
steps/grub-2.06/sources Normal file
View File

@ -0,0 +1,17 @@
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
https://files.bootstrapping.world/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

View File

@ -1,5 +1,7 @@
https://mirrors.kernel.org/gnu/guile/guile-3.0.7.tar.xz f57d86c70620271bfceb7a9be0c81744a033f08adc7ceba832c9917ab3e691b7
https://mirrors.kernel.org/gnu/guile/guile-3.0.9.tar.xz 1a2625ac72b2366e95792f3fe758fd2df775b4044a90a4a9787326e66c0d750d
https://git.savannah.gnu.org/cgit/gnulib.git/snapshot/gnulib-901694b9.tar.gz f9aad85de1f41d57c9368d304020ffbf354a5e56db1297f022c3d12181134e56
https://files.bootstrapping.world/gnulib-901694b9.tar.gz f9aad85de1f41d57c9368d304020ffbf354a5e56db1297f022c3d12181134e56
https://git.savannah.gnu.org/cgit/gnulib.git/snapshot/gnulib-356a414e.tar.gz fc9973f1a9243fdc4b98d33d7704f3c71bfdc4c2ef96899b8f28cade7290a714
https://files.bootstrapping.world/gnulib-356a414e.tar.gz fc9973f1a9243fdc4b98d33d7704f3c71bfdc4c2ef96899b8f28cade7290a714
https://github.com/schierlm/guile-psyntax-bootstrapping/archive/refs/tags/guile-3.0.7.tar.gz 14cda9c416506dfadf60c14fc623ff01ef99b87564a78d0a29c5d17143c97609

View File

@ -0,0 +1,64 @@
#!/bin/sh
#
# SPDX-FileCopyrightText: 2024 fosslinux <fosslinux@aussies.space>
#
# 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

14
steps/gzip-1.13/pass1.sh Executable file
View File

@ -0,0 +1,14 @@
# SPDX-FileCopyrightText: 2024 fosslinux <fosslinux@aussies.space>
#
# SPDX-License-Identifier: GPL-3.0-or-later
src_prepare() {
default
autoreconf-2.71 -fi
. ../../import-gnulib.sh
}
src_configure() {
./configure --prefix="${PREFIX}"
}

3
steps/gzip-1.13/sources Normal file
View File

@ -0,0 +1,3 @@
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
https://files.bootstrapping.world/gnulib-5651802.tar.gz 56f1221eb682c3502ee097f583f44673570753cb452346ad4806d94560c3fac9

View File

@ -1 +1 @@
2eea6424aebf9d68e674c48c729e2eff72cfe330f5d4a5cc3918b7275c36e679 /usr/bin/gzip
e5ddef55d9747552d3d29662312417d8223b125d6df423fdec303e2684e2c34c /usr/bin/gzip

View File

@ -12,13 +12,13 @@ set -ex
checksum-transcriber sources
sha256sum -c sources.SHA256SUM
mkdir build src
mkdir build
cd build
# Extract
ungz --file ${DISTFILES}/${pkg}.tar.gz --output ../src/${pkg}.tar
untar --file ../src/${pkg}.tar
rm ../src/${pkg}.tar
ungz --file ${DISTFILES}/${pkg}.tar.gz --output ${pkg}.tar
untar --file ${pkg}.tar
rm ${pkg}.tar
cd ${pkg}
# Prepare

View File

@ -1,5 +0,0 @@
22356e9e871747acbd93f0e08aee1c05aa0de8240bfd80f5d2565e3ea281ae0e /usr/bin/yacc
3719795cec49866ad20fdd75aceb1eb0cce9975f2afd716069f880dff16f668f /usr/bin/lex
ffe696afc1bda32a5f4035e29b3275cab73a27df7635ccbe02ed49a30374ccdd /usr/lib/mes/libl.a
bf3fb293f1ff89ee3dbcb08166c64b7a6793b49a12673d7633e3353ebea80d4d /usr/lib/mes/yaccpar
ee0f187b844f50d64c912bfcb5d73706662846d6d8a90b8b1fb20dda60464734 /usr/lib/mes/lex/ncform

View File

@ -1,60 +0,0 @@
#!/bin/sh
# SPDX-FileCopyrightText: 2021 Andrius Štikonas <andrius@stikonas.eu>
# SPDX-FileCopyrightText: 2021-22 fosslinux <fosslinux@aussies.space>
#
# SPDX-License-Identifier: GPL-3.0-or-later
set -ex
# Check tarball checksums
checksum-transcriber sources
sha256sum -c sources.SHA256SUM
mkdir build src
cd build
# Extract
cp ${DISTFILES}/${pkg}.tar.bz2 ../src/
bunzip2 -f ../src/${pkg}.tar.bz2
tar xf ../src/${pkg}.tar ${pkg}/yacc ${pkg}/lex
rm -r ../src/
cd ${pkg}
# Prepare and patch
patch -Np0 -i ../../patches/yacc_remove_wchar.patch
patch -Np0 -i ../../patches/lex_remove_wchar.patch
# Build yacc
cd yacc
make -f Makefile.mk CC=tcc AR=tcc\ -ar CFLAGS=-DMAXPATHLEN=100\ -DEILSEQ=84\ -DMB_LEN_MAX=100 LDFLAGS=-lgetopt\ -static RANLIB=true
# Install yacc
install yacc ${BINDIR}
install -m 644 yaccpar ${LIBDIR}
# Build lex
cd ../lex
make -f Makefile.mk CC=tcc AR=tcc\ -ar CFLAGS=-DEILSEQ=84\ -DMB_LEN_MAX=100 LDFLAGS=-lgetopt\ -static RANLIB=true
# Install lex
mkdir ${LIBDIR}/lex
install lex ${BINDIR}
install libl.a ${LIBDIR}
install -m 644 ncform ${LIBDIR}/lex
cd ../../..
# Checksums
if match x${UPDATE_CHECKSUMS} xTrue; then
sha256sum -o ${pkg}.checksums \
/usr/bin/yacc \
/usr/bin/lex \
/usr/lib/mes/libl.a \
/usr/lib/mes/yaccpar \
/usr/lib/mes/lex/ncform
install ${pkg}.checksums ${SRCDIR}
else
sha256sum -c ${pkg}.checksums
fi

View File

@ -0,0 +1,21 @@
#!/bin/sh
# SPDX-FileCopyrightText: 2021 Andrius Štikonas <andrius@stikonas.eu>
# SPDX-FileCopyrightText: 2021-22 fosslinux <fosslinux@aussies.space>
# SPDX-FileCopyrightText: 2024 Gábor Stefanik <netrolller.3d@gmail.com>
#
# SPDX-License-Identifier: GPL-3.0-or-later
src_compile() {
cd lex
make -f Makefile.mk CC=tcc AR=tcc\ -ar LDFLAGS=-static RANLIB=true
cd ..
}
src_install() {
mkdir -p "${DESTDIR}${BINDIR}" "${DESTDIR}${LIBDIR}/lex"
install lex/lex "${DESTDIR}${BINDIR}"
install lex/libl.a "${DESTDIR}${LIBDIR}"
install -m 644 lex/ncform "${DESTDIR}${LIBDIR}/lex"
}

Some files were not shown because too many files have changed in this diff Show More