build: a nix shell, because the loader is the one thing gcc cannot build
make falls back to the GNU toolchain when clang is absent, and that works for the kernel. It does not work for the UEFI loader: BOOTX64.EFI is PE/COFF and wants clang plus lld-link, so a machine with only gcc gets a kernel that builds and a loader that silently stays whatever it already was. That is not hypothetical -- it is what left a stale boot splash on this tree for half a day. The mask in include/logo.h was the new mark, the kernel drew it, and the loader kept drawing one compiled months earlier because nothing could relink it and nothing said so. shell.nix declares everything docs/guides/building.md lists, and building.md gains a NixOS section saying why using it matters rather than just how. Verified: with clang 21.1.8 and LLD 21.1.8 the loader relinks and the splash draws Shift in metal, screendumped from the framebuffer rather than inferred. Pinned to the host's nixpkgs rather than a flake input, deliberately. This is a convenience for a development machine, not a reproducibility claim; if it ever needs to be the latter it wants a flake and should say so. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VQ7Qx8E1q1M1bbCq8QLHS2
This commit is contained in:
parent
c4d4f20548
commit
6c42ab3b1a
3 changed files with 68 additions and 0 deletions
|
|
@ -47,6 +47,7 @@ schos/
|
|||
│ can be re-fetched sparsely. Copying from it is governed by
|
||||
│ the per-file licence check in docs/licensing.md §3 --
|
||||
│ NetBSD is not uniformly licensed.
|
||||
├─ shell.nix NixOS development shell: the whole toolchain in one file
|
||||
├─ docs/ architecture/ what it is plan/ what's next
|
||||
│ guides/ how to work history/ why it's like this
|
||||
└─ build/ ALL generated output (see below)
|
||||
|
|
|
|||
Loading…
Reference in a new issue