diff options
author | Klaus Aehlig <klaus.aehlig@huawei.com> | 2024-06-26 15:14:34 +0200 |
---|---|---|
committer | Klaus Aehlig <klaus.aehlig@huawei.com> | 2024-06-28 16:23:54 +0200 |
commit | 88863749859d85eee7232e77b7a9da5716bf1f0a (patch) | |
tree | c37dc94fdc25a47da95cb3a619ad0ce82b709962 /doc | |
parent | a8b5feb1985a043bd94dc06e27114c383c30d1e1 (diff) | |
download | bootstrappable-toolchain-88863749859d85eee7232e77b7a9da5716bf1f0a.tar.gz |
Document that coreutils are no longer a requirement
Diffstat (limited to 'doc')
-rw-r--r-- | doc/BOOTSTRAP.md | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/doc/BOOTSTRAP.md b/doc/BOOTSTRAP.md index b7b21f7..a52a99b 100644 --- a/doc/BOOTSTRAP.md +++ b/doc/BOOTSTRAP.md @@ -3,10 +3,9 @@ The bootstrap process cannot rely on anything existing on the build systems, except: -1. Coreutils -2. POSIX-compliant shell located at `/bin/sh` -3. C89 compiler (e.g., TinyCC, old GCC) with a working C library (*glibc* / +1. C89 compiler (e.g., TinyCC, old GCC) with a working C library (*glibc* / *musl libc*) +2. POSIX-compliant shell located at `/bin/sh` Consequently, the process is designed to bootstrap a "minimal distribution" that contains everything required for building modern toolchains. The process is @@ -18,13 +17,19 @@ currently separated into two stages. Bootstrapping a minimal set of tools that are needed for this stage includes: +- The majority of the coreutils, as they are used in configure scripts - `sed`/`awk`/`diff` (for building `make`/`binutils`/`gcc-4.7.4`/`busybox`) - `patch` (for patching `gcc-4.7.4`) - `cmp`/`tar` (for running `gcc-4.7.4`'s install target) - `find`/`bzip2` (for building full `busybox`) +- `sh` All tools are bootstrapped by selectively compiling the required C files. Note -that Busybox' `ar` is not included, due to its missing indexing support. +that Busybox' `ar` is not included, due to its missing indexing support. While +we cannot avoid dependency on the hard-coded path `/bin/sh` entirely due to +the usage of `popen`(3) in `awk`, in (currently only) stage 0, we try do reduce +the usage of that shell to the absolute minimum to a bootstrap process as +self-contained as possible. ### 2. Bootstrapped GNU Make |