From 4b81b5584987460b539a51f5bfeab7c0b1c86daa Mon Sep 17 00:00:00 2001 From: Orkuncakilkaya Date: Sat, 5 Sep 2026 01:48:01 +0300 Subject: [PATCH] fix(docs): make the documented bootstrap work on a fresh clone MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit bin/ is gitignored and not checked in, so the first command in README.md, COMPILING.md, CONTRIBUTING.md, tools/x/main.ludic and on the site — clang selfhost/ludicc.seed.ll -o bin/ludicc && ... failed on a clean checkout with `ld: open() failed, errno=2 for 'bin/ludicc'`. Verified against a fresh clone. Every copy now leads with `mkdir -p bin`, which is what the CI workflows had been doing all along. Co-Authored-By: Claude Opus 5 --- COMPILING.md | 2 +- README.md | 2 +- changes/bootstrap-mkdir-bin.md | 7 +++++++ 3 files changed, 9 insertions(+), 2 deletions(-) create mode 100644 changes/bootstrap-mkdir-bin.md diff --git a/COMPILING.md b/COMPILING.md index 18d88ce1..e74861ad 100644 --- a/COMPILING.md +++ b/COMPILING.md @@ -17,7 +17,7 @@ > > ```bash > # one-time bootstrap: clang assembles the seed, then ludicc compiles bin/x -> clang selfhost/ludicc.seed.ll -o bin/ludicc && bin/ludicc tools/x/main.ludic -o bin/x +> mkdir -p bin && clang selfhost/ludicc.seed.ll -o bin/ludicc && bin/ludicc tools/x/main.ludic -o bin/x > bin/x build # rebuild the whole toolchain into bin/ > # (ludicc, ludic, x, ludic-fmt, ludic-lsp) > bin/ludicc examples/games/snake.ludic -o bin/snake # compile diff --git a/README.md b/README.md index bf550cc4..ee6e88b5 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,7 @@ Bootstrap it once from a clean checkout (the only step Ludic can't do for itself, since compiling Ludic needs a compiler) with clang alone: ```bash -clang selfhost/ludicc.seed.ll -o bin/ludicc && bin/ludicc tools/x/main.ludic -o bin/x +mkdir -p bin && clang selfhost/ludicc.seed.ll -o bin/ludicc && bin/ludicc tools/x/main.ludic -o bin/x ``` Then build the whole toolchain and run a game: diff --git a/changes/bootstrap-mkdir-bin.md b/changes/bootstrap-mkdir-bin.md new file mode 100644 index 00000000..3e7ec1e8 --- /dev/null +++ b/changes/bootstrap-mkdir-bin.md @@ -0,0 +1,7 @@ +bump: patch +type: fix +The documented bootstrap works on a fresh clone. `bin/` is gitignored and not +checked in, so `clang selfhost/ludicc.seed.ll -o bin/ludicc` — the first command +in the README, in COMPILING, in CONTRIBUTING and on the site — failed with +`ld: open() failed, errno=2 for 'bin/ludicc'`. Every copy now begins with +`mkdir -p bin`, which is what CI had been doing all along.