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.