diff --git a/local/patches/gcc-redox-port/README.md b/local/patches/gcc-redox-port/README.md index 5132149ba1..91e188155e 100644 --- a/local/patches/gcc-redox-port/README.md +++ b/local/patches/gcc-redox-port/README.md @@ -79,3 +79,37 @@ Inference, not a maintainer statement: Redox's own toolchain is Clang/LLVM-21-centric and GCC is the secondary C/C++ path, so upgrade pressure is low. They have jumped versions before (8.2.0 → 13.2.0), which argues the gap is demand-driven rather than a technical blocker. + +## Verified upstream sources (checked, not assumed) + +Latest GCC **release tag** is `releases/gcc-16.1.0`. Note "16.1.1" seen on +distros (e.g. Arch) is a packaging/snapshot string, not an upstream release. + +Tarballs confirmed reachable (HTTP 206 on a range request): + + https://ftp.gnu.org/gnu/gcc/gcc-16.1.0/gcc-16.1.0.tar.xz + https://ftp.gnu.org/gnu/gcc/gcc-15.3.0/gcc-15.3.0.tar.xz + +Prefer the tarball over `git clone` of gcc.gnu.org (~2 GB) — it suits the +offline-first build model and matches how other external recipes vendor sources +(`tar =` + `blake3 =`). + +`gitlab.redox-os.org/redox-os/gcc` carries **no** upstream release tags, so the +pristine base must come from ftp.gnu.org or gcc-mirror, not from the Redox fork. + +## Next steps (in order) + +1. Vendor `gcc-16.1.0.tar.xz`, record its blake3, create + `local/recipes/dev/gcc16/recipe.toml` (model on `recipes/dev/gcc13`). +2. Apply `files/` + the arms in `registration-hunks.txt`; regenerate `configure` + from `crossconfig.m4` with autoconf. +3. Parameterize the hardcoded `13.2.0` in `mk/prefix.mk` (at minimum the + `lib/gcc/$(GNU_TARGET)/13.2.0/include/limits.h` path). +4. Build the cross compiler; stage into `prefix/`. Expect relibc header + fallout (see risks above) before anything else compiles. +5. Full C++ tree rebuild for the libstdc++ ABI change — Qt6, all KF6, Plasma, + Mesa C++. Budget this as the dominant cost, not the port itself. +6. Only then retry `kwin`, whose 16 `std::ranges::to` files are the reason for + the whole exercise. + +**Not started.** Steps 1–6 are unvalidated; nothing below step 0 has been run.