gcc10
- Category: local-install (see
arch/scripts/install_only_packages) — plain upstream AUR package (maintainer Chris Severance), not maintained/adapted by us. Built+published 2026-08-27 specifically to satisfy [[cmake2]]’smakedepends=('gcc10')for real (unlike [[gcc9]], which was published as a stopgap substitute first and hit its own unrelated build issue for that package). - Had a real, previously-failed manual build attempt already sitting at
/data/INSTALL/gcc10(pkgrel 2, build log showed a genuine failure, no.pkg.tar.*ever produced) — picked up and fixed rather than starting over:- Root cause 1:
libsanitizerfailed to compile —fatal error: linux/scc.h: No such file or directoryinlibsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp.linux/scc.his an obsolete synchronous-serial-driver kernel header currentlinux-api-headers/glibc no longer ships (there were already two similar “obsolete kernel header” patches in this checkout fortermio.hetc, from the same class of bit-rot — GCC 10.5 vs a modern kernel-headers/glibc combo). User’s call: skip building libsanitizer entirely (--disable-libsanitizerinbuild()’s_confarray) rather than patch out yet another missing header one at a time. - Root cause 2 (
--disable-libsanitizeralone wasn’t enough): GCC 10.5’s split-packagepackage_gcc10()/package_gcc10-libs()functions still had hardcodedmake -C ".../libsanitizer" ...install calls and alibsanitizer/{a,l,ub,t}sanentry in the libs array — those obviously fail once the dir was never built/ configured (make: *** .../libsanitizer: No such file or directory. Stop.— that exact phrasing is GNU Make’s own message for amake -C <missing-dir>invocation, not a shellcdfailure). Removed all of it: thelibsanitizer/{a,l,ub,t}san_libsarray entry, the 4make -C .../libsanitizer...install lines inpackage_gcc10(), and thelib{u,a,t}san.so/liblsan.soprovides=()entries inpackage_gcc10-libs()(nothing left to provide those sonames once sanitizer libs aren’t built). - Confirms
--disable-libsanitizeris not fully “clean” on this GCC branch/PKGBUILD combo — later GCC versions handle this more completely. If ever rebuilding a different old-GCC PKGBUILD with the same flag, check itspackage_*()functions for hardcodedlibsanitizerreferences before assuming the configure flag alone is enough. - Kept
pkgrelat 2 (matches the pre-existing failed-attempt checkout’s own numbering; first time this ever actually built and published, no prior successful version to bump past).
- Root cause 1:
- x86_64 only (that’s all this checkout ever targeted).
2026-09-10: tried aarch64 (to unblock cmake2), hit a board OOM – reverted, staying x86_64-only
Attempted as a prerequisite for building
[cmake2] on 64-bit
archs. Added aarch64 to arch=(), pkgrel 2 -> 2.1 (real content change,
local-install X.Y scheme). PKGBUILD itself turned out mostly portable already
(the one CARCH-conditional bit is x86_64-specific multilib handling that
harmlessly no-ops elsewhere; no other hardcoded arch assumptions) –
emacs/tree-sitter were already available for aarch64 too (official repos).
First attempt failed immediately on
gcc-10.5.0.tar.xz ... FAILED (unknown public key 3AB00996FC26A641) – no
keys/pgp/ dir existed for this package yet. Confirmed via keyserver lookup
that 3AB00996FC26A641 is a subkey of Richard Guenther’s key already in
validpgpkeys (...6EEB81F8981C74C7), just never imported locally. Fixed by
running update_pgp_key_dir.sh (populated keys/pgp/*.asc for all 4
validpgpkeys entries) – remote_build.sh auto-imports from there before
building.
Second attempt got much further (past PGP, through configure, deep into
stage1 bootstrap compiling insn-emit.c) but died with
g++: fatal error: Killed signal terminated program cc1plus – eurobuild14’s
kernel OOM-killer, confirmed directly via dmesg:
Out of memory: Killed process (cc1plus) ... anon-rss:664444kB. The board has
only 1.8GB RAM and zero swap configured (free -h:
Mem: 1.8Gi ... Swap: 0B) – insn-emit.c is one of GCC’s most memory-hungry
generated files to compile even on capable hardware, and this board just doesn’t
have the headroom (no swap to fall back on when the working set spikes).
User’s call: not worth adding swap to the board or chasing this further –
reverted aarch64 from arch=() and pkgrel back to 2, matching HEAD (the
un-fixed-upstream commit) exactly for those two fields while leaving every other
pre-existing uncommitted local fix (--disable-libsanitizer etc., from the
original 2026-08-27 session, never committed per this project’s “never commit”
policy) untouched. cmake2 stays x86_64-only too, for the same reason – see
its own memory note. If aarch64 is ever revisited for this package,
eurobuild14 needs a swapfile first (straightforward on its NBD-mounted /data
volume, not local SD flash) – the PKGBUILD/keys side is otherwise ready.