gcc: record verified upstream sources and the port sequence
redbear-ci / check (push) Has been cancelled

Latest upstream RELEASE tag is releases/gcc-16.1.0; '16.1.1' seen on distros
is a packaging/snapshot string, not an upstream release. Both
gcc-16.1.0.tar.xz and gcc-15.3.0.tar.xz confirmed reachable on ftp.gnu.org
(HTTP 206 on a range request). The Redox gcc fork carries no upstream
release tags, so the pristine base must come from ftp.gnu.org or
gcc-mirror.

Records the ordered next steps and marks them explicitly NOT STARTED, so the
extraction is not mistaken for a working port. The dominant cost is step 5 --
the full C++ tree rebuild forced by the libstdc++ ABI change -- not the
13-file port itself.
This commit is contained in:
2026-08-03 11:28:46 +03:00
parent c88ddabcdd
commit 1bceaa7b47
+34
View File
@@ -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 16 are unvalidated; nothing below step 0 has been run.