commit: da9a2c6c50f9fafff4ea3b8393443f469f5f0d81
parent 58d1206c8361a7570f816ec590fe10354880981d
Author: Andrius Štikonas <andrius@stikonas.eu>
Date: Sun, 26 Feb 2023 17:00:15 +0800
Move bash rebuild to sysa.
Diffstat:
11 files changed, 292 insertions(+), 263 deletions(-)
diff --git a/.cirrus.yml b/.cirrus.yml
@@ -24,7 +24,7 @@ shell_lint_task:
- apt-get -y install shellcheck
- apt-get -y clean
check_script:
- - shellcheck sysa/run.sh sysb/init sysb/run.sh sysc/init sysc/run.sh sysc/run2.sh sysa/helpers.sh download-distfiles.sh
+ - shellcheck sysa/run.sh sysa/run2.sh sysb/init sysb/run.sh sysc/init sysc/run.sh sysa/helpers.sh download-distfiles.sh
reuse_lint_task:
container:
diff --git a/parts.rst b/parts.rst
@@ -539,6 +539,15 @@ libtool 2.2.4
GNU Libtool is the final part of GNU Autotools. It is a script used to hide away differences
when compiling shared libraries on different platforms.
+bash 5.2.15
+===========
+
+Up to this point, our build of ``bash`` could run scripts but could not be used
+interactively. This new version of ``bash`` compiles without any patches,
+provides new features, and is built with GNU readline support so it can be used
+as an interactive shell. ``autoconf-2.69`` is used to regenerate the configure
+script and ``bison`` is used to recreate some included generated files.
+
binutils 2.24
=============
@@ -683,15 +692,6 @@ sysb is purely a transition to sysc, allowing binaries from sysa to get onto a
disk (as sysa does not necessarily have hard disk support in the kernel).
It populates device nodes, mounts sysc, copies over data, and executes sysc.
-bash 5.1
-========
-
-Up to this point, our build of ``bash`` could run scripts but could not be used
-interactively. This new version of ``bash`` compiles without any patches,
-provides new features, and is built with GNU readline support so it can be used
-as an interactive shell. ``autoconf-2.61`` is used to regenerate the configure
-script and ``bison`` is used to recreate some included generated files.
-
xz 5.0.5
========
diff --git a/sysa/SHA256SUMS.pkgs b/sysa/SHA256SUMS.pkgs
@@ -20,7 +20,7 @@ ef08694bf8e78ffcf56f9c8a63b0f189e301c06f02ab240e15e4c7fe354c2a0d automake-1.7_0
e8ff13753943e43972a8cf1672819f001718ed38e5497cf7b554c21a507ba22b automake-1.7.8_0.tar.bz2
9922651b64ad2e29b944082f26db223008220155048f25d64df1f6d82071ff1c automake-1.8.5_0.tar.bz2
c5807850a377e4bb9aa4121d9781d145bdd80327626a9419630a75ce2c8d9c71 automake-1.9.6_0.tar.bz2
-6e9f4263f8a938e2bf62ae1507092a7d3679a018c2037e2eac9cf424ca20c19c bash-5.1_0.tar.bz2
+ca49c0338d6aed5131f907d375384bf42e70f2875f58973da0015b4fb73156cc bash-5.2.15_0.tar.bz2
78c5e718510fcf0ab4296d5cfac114abb31af4a30aa5c9f2c0844d7ee5bae5c5 bc-1.07.1_0.tar.bz2
b06a20417c7dadb007f3e6930b8385ad934651756a339d8a87e086b1139e62d8 binutils-2.24_0.tar.bz2
aa910ea75172041b9285436c148f81b3a9fb205f61b88b5e5bbaab2c1cee9484 binutils-2.38_0.tar.bz2
diff --git a/sysa/bash-5.2.15/bash-5.2.15.sh b/sysa/bash-5.2.15/bash-5.2.15.sh
@@ -0,0 +1,53 @@
+# SPDX-FileCopyrightText: 2021 Paul Dersey <pdersey@gmail.com>
+# SPDX-FileCopyrightText: 2021 Andrius Štikonas <andrius@stikonas.eu>
+# SPDX-FileCopyrightText: 2021 Bastian Bittorf <bb@npl.de>
+# SPDX-FileCopyrightText: 2022 fosslinux <fosslinux@aussies.space>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+src_prepare() {
+ # Remove bison generated files
+ rm y.tab.c y.tab.h
+
+ # Remove prebuilt translation catalogs
+ rm po/*.gmo
+
+ # Skip documentation
+ mv doc/Makefile.in Makefile.in.doc
+ rm doc/*
+ mv Makefile.in.doc doc/Makefile.in
+
+ # Rebuild configure script
+ rm configure
+ autoconf-2.69
+
+ # avoid non-deterministic build:
+ printf '%s\n%s\n' \
+ '#!/bin/sh' \
+ 'echo "#define PIPESIZE 65536"' >builtins/psize.sh
+}
+
+src_configure() {
+ # --build argument needed for reproducibility
+ # bash_cv_dev_stdin and bash_cv_dev_fd are also used to
+ # improve reproducibility because they make configure
+ # skip checking for /dev/{fd,stdin,stdout,stderr} (build
+ # output is affected by their availability otherwise).
+ # size is part of binutils and is not yet available.
+ CC=tcc LD=tcc AR="tcc -ar" SIZE=true ./configure --prefix="${PREFIX}" \
+ --without-bash-malloc \
+ --disable-nls \
+ --build=i386-unknown-linux-musl \
+ --enable-static-link \
+ bash_cv_dev_stdin=absent \
+ bash_cv_dev_fd=whacky
+}
+
+src_install() {
+ install -D bash "${DESTDIR}${PREFIX}/bin/bash"
+ # Work around weird symlink bug
+ install bash "${DESTDIR}${PREFIX}/bin/sh"
+
+ # Needs special handling b/c is currently running - tar doesn't like this
+ rm -f "${PREFIX}/bin/bash" "${PREFIX}/bin/sh"
+}
diff --git a/sysa/bash-5.2.15/sources b/sysa/bash-5.2.15/sources
@@ -0,0 +1 @@
+https://mirrors.kernel.org/gnu/bash/bash-5.2.15.tar.gz 13720965b5f4fc3a0d4b61dd37e7565c741da9a5be24edc2ae00182fc1b3588c
diff --git a/sysa/run.sh b/sysa/run.sh
@@ -193,62 +193,6 @@ build autoconf-2.69
build libtool-2.2.4
-build binutils-2.24
+build bash-5.2.15
-# Build musl with fewer patches
-build musl-1.1.24 binutils-rebuild.sh patches-pass3
-
-# Rebuild tcc-musl using new musl
-build tcc-0.9.27 tcc-musl-pass3.sh patches-musl-pass3
-
-populate_device_nodes
-
-build gcc-4.0.4 pass1.sh
-
-build findutils-4.2.33
-
-build musl-1.2.3
-
-# This hack fixes a strange bug in mes libc bash
-set -x
-build linux-headers-5.10.41 '' '' linux-5.10.41
-set +x
-
-build gcc-4.0.4 pass2.sh
-
-build util-linux-2.19.1
-
-build e2fsprogs-1.45.7
-
-build dhcpcd-9.4.1 '' '' dhcpcd-dhcpcd-9.4.1-1663155
-
-build kbd-1.15
-
-build make-3.82
-
-build curl-7.83.0
-
-build ed-1.4
-
-build bc-1.07.1
-
-# Clear up some RAM space
-grep '^build' "${SOURCES}/run.sh" | sed "s/build //" | sed "s/ .*$//" | while read -r p ; do
- rm -rf "${SOURCES:?}/${p:?}"
-done
-
-if [ "${CHROOT}" = False ]; then
- build kexec-tools-2.0.22
-
- build linux-4.9.10
-
- create_sysb
- go_sysb
-fi
-
-# In chroot mode transition directly into System C.
-SYSC=/sysc_image
-sys_transfer "${SYSC}" /sysc gzip patch
-if [ "${CHROOT_ONLY_SYSA}" != True ]; then
- exec chroot "${SYSC}" /init
-fi
+exec env -i PATH="${PATH}" PREFIX="${PREFIX}" LIBDIR="${LIBDIR}" SOURCES="${SOURCES}" DISTFILES="${DISTFILES}" DESTDIR="${DESTDIR}" SRCDIR="${SRCDIR}" bash run2.sh
diff --git a/sysa/run2.sh b/sysa/run2.sh
@@ -0,0 +1,95 @@
+#!/bin/bash
+
+# SPDX-FileCopyrightText: 2022 Andrius Štikonas <andrius@stikonas.eu>
+# SPDX-FileCopyrightText: 2021-22 fosslinux <fosslinux@aussies.space>
+# SPDX-FileCopyrightText: 2021 Paul Dersey <pdersey@gmail.com>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+set -e
+
+# shellcheck source=sysa/helpers.sh
+. helpers.sh
+
+create_sysb() {
+ # Copy everything in
+ echo "Creating sysb rootfs"
+ sys_transfer /sysb_image /sysb gzip patch
+ cp -rl /sysc /sysb_image/sysc_src
+ echo "Creating sysb initramfs"
+ gen_initramfs_list.sh -o "${PREFIX}/boot/initramfs-sysb.cpio.gz" /sysb_image
+ rm -rf /sysb /sysb_image # Cleanup
+}
+
+go_sysb() {
+ # Mount proc for kexec
+ mkdir /proc /etc
+ mount -t proc proc /proc
+ # kexec time
+ echo "Loading kernel + sysb initramfs using kexec"
+ kexec -l "${PREFIX}/boot/linux-4.9.10" --console-serial \
+ --initrd="${PREFIX}/boot/initramfs-sysb.cpio.gz" \
+ --append="init=/init console=ttyS0"
+ echo "kexecing into sysb"
+ kexec -e
+}
+
+build binutils-2.24
+
+# Build musl with fewer patches
+build musl-1.1.24 binutils-rebuild.sh patches-pass3
+
+# Rebuild tcc-musl using new musl
+build tcc-0.9.27 tcc-musl-pass3.sh patches-musl-pass3
+
+populate_device_nodes
+
+build gcc-4.0.4 pass1.sh
+
+build findutils-4.2.33
+
+build musl-1.2.3
+
+# This hack fixes a strange bug in mes libc bash
+set -x
+build linux-headers-5.10.41 '' '' linux-5.10.41
+set +x
+
+build gcc-4.0.4 pass2.sh
+
+build util-linux-2.19.1
+
+build e2fsprogs-1.45.7
+
+build dhcpcd-9.4.1 '' '' dhcpcd-dhcpcd-9.4.1-1663155
+
+build kbd-1.15
+
+build make-3.82
+
+build curl-7.83.0
+
+build ed-1.4
+
+build bc-1.07.1
+
+# Clear up some RAM space
+grep '^build' "${SOURCES}/run.sh" | sed "s/build //" | sed "s/ .*$//" | while read -r p ; do
+ rm -rf "${SOURCES:?}/${p:?}"
+done
+
+if [ "${CHROOT}" = False ]; then
+ build kexec-tools-2.0.22
+
+ build linux-4.9.10
+
+ create_sysb
+ go_sysb
+fi
+
+# In chroot mode transition directly into System C.
+SYSC=/sysc_image
+sys_transfer "${SYSC}" /sysc gzip patch
+if [ "${CHROOT_ONLY_SYSA}" != True ]; then
+ exec chroot "${SYSC}" /init
+fi
diff --git a/sysc/bash-5.1/bash-5.1.sh b/sysc/bash-5.1/bash-5.1.sh
@@ -1,45 +0,0 @@
-# SPDX-FileCopyrightText: 2021 Paul Dersey <pdersey@gmail.com>
-# SPDX-FileCopyrightText: 2021 Andrius Štikonas <andrius@stikonas.eu>
-# SPDX-FileCopyrightText: 2021 Bastian Bittorf <bb@npl.de>
-# SPDX-FileCopyrightText: 2022 fosslinux <fosslinux@aussies.space>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-src_prepare() {
- # Remove bison generated files
- rm y.tab.c y.tab.h
-
- # Rebuild configure script
- rm configure
- autoconf-2.64
-
- # avoid non-deterministic build:
- printf '%s\n%s\n' \
- '#!/bin/sh' \
- 'echo "#define PIPESIZE 65536"' >builtins/psize.sh
-}
-
-src_configure() {
- # --build argument needed for reproducibility
- # bash_cv_dev_stdin and bash_cv_dev_fd are also used to
- # improve reproducibility because they make configure
- # skip checking for /dev/{fd,stdin,stdout,stderr} (build
- # output is affected by their availability otherwise).
- ./configure --prefix="${PREFIX}" \
- --without-bash-malloc \
- --disable-nls \
- --build=i386-unknown-linux-musl \
- --enable-static-link \
- bash_cv_dev_stdin=absent \
- bash_cv_dev_fd=whacky
-}
-
-src_install() {
- # Do not install prebuilt .mo translation catalogs
- install -D bash "${DESTDIR}${PREFIX}/bin/bash"
- # Work around weird symlink bug
- install bash "${DESTDIR}${PREFIX}/bin/sh"
-
- # Needs special handling b/c is currently running - tar doesn't like this
- rm -f "${PREFIX}/bin/bash" "${PREFIX}/bin/sh"
-}
diff --git a/sysc/bash-5.1/sources b/sysc/bash-5.1/sources
@@ -1 +0,0 @@
-http://mirrors.kernel.org/gnu/bash/bash-5.1.tar.gz cc012bc860406dcf42f64431bcd3d2fa7560c02915a601aba9cd597a39329baa
diff --git a/sysc/run.sh b/sysc/run.sh
@@ -3,6 +3,7 @@
# SPDX-FileCopyrightText: 2022 Andrius Štikonas <andrius@stikonas.eu>
# SPDX-FileCopyrightText: 2021-22 fosslinux <fosslinux@aussies.space>
# SPDX-FileCopyrightText: 2021 Paul Dersey <pdersey@gmail.com>
+# SPDX-FileCopyrightText: 2021 Melg Eight <public.melg8@gmail.com>
#
# SPDX-License-Identifier: GPL-3.0-or-later
@@ -11,9 +12,16 @@ set -e
# shellcheck source=/dev/null
. .env
+# shellcheck disable=SC2153
+trap 'env - PATH=${PREFIX}/bin PS1="\w # " bash -i' EXIT
+
# shellcheck source=sysa/helpers.sh
. helpers.sh
+trap bash EXIT
+
+umask 0022
+
create_fhs() {
# Add the rest of the FHS that we will use and is not created pre-boot
rm -rf /sbin /usr/sbin
@@ -56,6 +64,126 @@ else
mkdir -p "${DISTFILES}"
fi
-build bash-5.1
+build xz-5.0.5
+
+build file-5.44
+
+build libtool-2.4.7
+
+build automake-1.15.1
+
+build tar-1.34
+
+build coreutils-8.32
+
+build pkg-config-0.29.2
+
+build make-4.2.1
+
+build gmp-6.2.1
+
+build autoconf-archive-2021.02.19
+
+build mpfr-4.1.0
+
+build mpc-1.2.1
+
+build flex-2.5.33
+
+build bison-2.3
+
+build bison-3.4.2
+
+build perl-5.10.1
+
+build dist-3.5-236
+
+build perl-5.32.1
+
+build libarchive-3.5.2
+
+build openssl-1.1.1l
+
+build ca-certificates-3.86
+
+build curl-7.83.0
+
+build zlib-1.2.13
+
+build automake-1.16.3
+
+build autoconf-2.71
+
+build patch-2.7.6
+
+build gettext-0.21
+
+build texinfo-6.7
+
+build gcc-4.7.4
+
+build binutils-2.38
+
+build gperf-3.1
+
+build libunistring-0.9.10
+
+build libffi-3.3
+
+build libatomic_ops-7.6.10
+
+build gc-8.0.4
+
+build guile-3.0.7
+
+build which-2.21
+
+build grep-3.7
+
+build sed-4.8
+
+build autogen-5.18.16 autogen-5.18.16.sh
+
+build musl-1.2.3
+
+build python-2.0.1 stage1.sh
+
+build python-2.0.1 stage2.sh
+
+build python-2.3.7 stage1.sh
+
+build python-2.3.7 stage2.sh
+
+build python-2.5.6
+
+build python-3.1.5 stage1.sh
+
+build python-3.1.5 stage2.sh
+
+build python-3.3.7
+
+build python-3.4.10
+
+build python-3.8.16
+
+build python-3.11.1
+
+build gcc-10.4.0
+
+if [ "$FORCE_TIMESTAMPS" = True ] ; then
+ echo 'Forcing all files timestamps to be 0 unix time.'
+ canonicalise_all_files_timestamp
+fi
+
+shopt -s extglob
+if [ "$UPDATE_CHECKSUMS" = True ] ; then
+ pushd /usr/src/repo
+ sha256sum -- !(*-repodata) | tee "${SOURCES}/SHA256SUMS.pkgs"
+ popd
+fi
+
+echo "Bootstrapping completed."
+
+cd "/"
+exec env -i PATH="${PATH}" HOME="${HOME}" SOURCE_DATE_EPOCH="${SOURCE_DATE_EPOCH}" bash "${SOURCES}/after.sh"
-exec env -i PATH="${PATH}" HOME="${HOME}" SOURCE_DATE_EPOCH="${SOURCE_DATE_EPOCH}" bash run2.sh
diff --git a/sysc/run2.sh b/sysc/run2.sh
@@ -1,146 +0,0 @@
-#!/bin/bash
-
-# SPDX-FileCopyrightText: 2022 Andrius Štikonas <andrius@stikonas.eu>
-# SPDX-FileCopyrightText: 2021-23 fosslinux <fosslinux@aussies.space>
-# SPDX-FileCopyrightText: 2021 Paul Dersey <pdersey@gmail.com>
-# SPDX-FileCopyrightText: 2021 Melg Eight <public.melg8@gmail.com>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-set -e
-
-# shellcheck source=/dev/null
-. .env
-
-# shellcheck disable=SC2153
-trap 'env - PATH=${PREFIX}/bin PS1="\w # " bash -i' EXIT
-
-# shellcheck source=sysa/helpers.sh
-. helpers.sh
-
-trap bash EXIT
-
-umask 0022
-
-build xz-5.0.5
-
-build file-5.44
-
-build libtool-2.4.7
-
-build automake-1.15.1
-
-build tar-1.34
-
-build coreutils-8.32
-
-build pkg-config-0.29.2
-
-build make-4.2.1
-
-build gmp-6.2.1
-
-build autoconf-archive-2021.02.19
-
-build mpfr-4.1.0
-
-build mpc-1.2.1
-
-build flex-2.5.33
-
-build bison-2.3
-
-build bison-3.4.2
-
-build perl-5.10.1
-
-build dist-3.5-236
-
-build perl-5.32.1
-
-build libarchive-3.5.2
-
-build openssl-1.1.1l
-
-build ca-certificates-3.86
-
-build curl-7.83.0
-
-build zlib-1.2.13
-
-build automake-1.16.3
-
-build autoconf-2.71
-
-build patch-2.7.6
-
-build gettext-0.21
-
-build texinfo-6.7
-
-build gcc-4.7.4
-
-build binutils-2.38
-
-build gperf-3.1
-
-build libunistring-0.9.10
-
-build libffi-3.3
-
-build libatomic_ops-7.6.10
-
-build gc-8.0.4
-
-build guile-3.0.7
-
-build which-2.21
-
-build grep-3.7
-
-build sed-4.8
-
-build autogen-5.18.16 autogen-5.18.16.sh
-
-build musl-1.2.3
-
-build python-2.0.1 stage1.sh
-
-build python-2.0.1 stage2.sh
-
-build python-2.3.7 stage1.sh
-
-build python-2.3.7 stage2.sh
-
-build python-2.5.6
-
-build python-3.1.5 stage1.sh
-
-build python-3.1.5 stage2.sh
-
-build python-3.3.7
-
-build python-3.4.10
-
-build python-3.8.16
-
-build python-3.11.1
-
-build gcc-10.4.0
-
-if [ "$FORCE_TIMESTAMPS" = True ] ; then
- echo 'Forcing all files timestamps to be 0 unix time.'
- canonicalise_all_files_timestamp
-fi
-
-shopt -s extglob
-if [ "$UPDATE_CHECKSUMS" = True ] ; then
- pushd /usr/src/repo
- sha256sum -- !(*-repodata) | tee "${SOURCES}/SHA256SUMS.pkgs"
- popd
-fi
-
-echo "Bootstrapping completed."
-
-cd "/"
-exec env -i PATH="${PATH}" HOME="${HOME}" SOURCE_DATE_EPOCH="${SOURCE_DATE_EPOCH}" bash "${SOURCES}/after.sh"