gir-to-d
Build times (auto-updated)
- x86_64: 20s (2026-09-06 07:25 UTC, serial)
Category: maintained/gir-to-d (adopted from official Arch repos – flagged by buildmaster’s “Missing state file” checker as a candidate to move to the AUR; see https://buildmaster.archlinux32.org/checker/summary.html).
2026-09-05: adopted from official repos
- Dropped from: extra-x86_64
- Method used: B (no AUR repo existed, cloned straight from gitlab packaging repo)
- Reason dropped upstream: gitlab commit: upgpkg: 0.23.4-3: Dropped gcc-libs dependency
- Conflict notes: n/a (Method B, no merge performed)
2026-09-05: build failure, two distinct causes, both fixed (pkgrel 3 -> 4)
- Cause 1 – ldc rejects GCC-style LDFLAGS.
mesonforwards the global hardeningLDFLAGS(-Wl,-O1 -Wl,--sort-common ...) verbatim to the D compiler during its sanity check; this system’sldc(1.43.0) doesn’t accept-Wl,passthrough at all (ldc: Unknown command line argument '-Wl,-O1', suggests--O1instead), someson setupfails before compiling a single line: “ERROR: Compiler ldc cannot compile programs.” Verified directly:ldc -Wl,-O1 t.dfails the same way; a synthetic meson project reproduces/fixes with LDFLAGS present/unset respectively. Fix:unset LDFLAGSin build(), replacing the previous-flto=auto->-flto=fullsed (which is now moot – LTO was only ever requested via a flag folded into LDFLAGS). Costs FULL RELRO on the resulting binary (namcap now warns about it) – acceptable, not worth chasing further for one D binary. - Cause 2 – real dmd/ldc compiler regression, surfaced only once
cause 1 was fixed and actual D compilation started:
/usr/include/dlang/ldc/core/internal/newaa.d(110): Error: variable ...Entry!(string, inout(Node)*).Entry.value - only parameters or stack-based variables can be inout, from gir-to-d’s ownsource/gtd/LinkedHasMap.d(Map = LinkedHashMap, used throughoutGirPackage.d/GirStruct.d). Root cause:LinkedHashMapstoresprivate Node*[Key] data;and exposes severalinout-qualified accessors (get,opIndex,opBinaryRight“in”,opEquals,keys,values) over it; instantiating druntime’s internal AA machinery for aninout-qualified value type hits a real compiler restriction. Researched via GitHub API search (noghCLI on this host):dlang/dmd#22510(“dup of inout aa broke with 2.112”) is the same error signature, a genuine regression introduced in DMD 2.112, fixed by PR #22516 (merged 2026-02-05) and backported into 2.112.1 (2026-03-20) – but that fix was scoped narrowly to.dup()calls specifically.LinkedHashMapnever calls.dup(); it hits the same underlying “inout can’t be a struct field” restriction through plaininoutaccessor methods instead, a broader pattern the #22510 fix doesn’t cover. No open upstream issue found for this broader case, and gir-to-d’s own git HEAD is exactly the0.23.4tag (no newer commits at all) – nothing to pull in from either side. - Fix:
fix-inout-linkedhashmap.patch(new, applied inprepare()after the existingadd-main-context-pusher.patch) stripsinoutfrom those six accessors/their locals. Safe becauseMap/LinkedHashMapis never used asconst/immutableanywhere in gir-to-d – it’s an application, not a library, so losing const-correctness on a type that’s always used mutably costs nothing real. Verified: patch applies cleanly against a fresh tarball extract (patch --strip=1, matches the existing patch’s invocation style), the modified file compiles standalone, and a full build produces a workinggirtodbinary (--helpruns correctly). - Both fixes bundled under pkgrel 4 (pkgrel 3, LDFLAGS-only, was never actually published – only pkgrel 4 with both fixes together was built+published), matching [feedback_pkgrel_vs_pkgver].