summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md5
-rw-r--r--doc/BOOTSTRAP.md13
2 files changed, 11 insertions, 7 deletions
diff --git a/README.md b/README.md
index 5665863..781de22 100644
--- a/README.md
+++ b/README.md
@@ -118,9 +118,8 @@ $ just-mr --main gcc-latest-musl install toolchain \
For bootstrapping the toolchains, the build host must be a Linux system with:
-1. Coreutils
-2. POSIX-compliant shell (`/bin/sh`)
-3. C compiler (e.g., TinyCC, old GCC)
+1. C compiler (e.g., TinyCC, old GCC)
+2. POSIX-compliant shell located at `/bin/sh`
The C compiler for bootstrapping can be specified by setting the fields
`BOOTSTRAP_CC`, `BOOTSTRAP_CFLAGS`, and `BOOTSTRAP_PATH` in configuration
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