summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorKlaus Aehlig <klaus.aehlig@huawei.com>2024-06-26 15:14:34 +0200
committerKlaus Aehlig <klaus.aehlig@huawei.com>2024-06-28 16:23:54 +0200
commit88863749859d85eee7232e77b7a9da5716bf1f0a (patch)
treec37dc94fdc25a47da95cb3a619ad0ce82b709962 /doc
parenta8b5feb1985a043bd94dc06e27114c383c30d1e1 (diff)
downloadbootstrappable-toolchain-88863749859d85eee7232e77b7a9da5716bf1f0a.tar.gz
Document that coreutils are no longer a requirement
Diffstat (limited to 'doc')
-rw-r--r--doc/BOOTSTRAP.md13
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