On Sun, 16 Aug 2026 at 18:06:14 +0900, Charles Plessy wrote:
the scope of the i386 architecture is opt-out rather than
opt-in

Usually all architectures are opt-out rather than opt-in (even -ports) - this is how Debian's portability has always been structured. The i386 buildds will attempt to build most packages on i386, unless told not to. I'm not saying that this is necessarily the best way, but it's what is true right now, and I think it's fair to say that we wouldn't have anywhere near the architecture coverage we do on architectures like arm64 and riscv64 if supporting those architectures was opt-in.

Some source packages use "Architecture: amd64 arm64 ..." instead of "Architecture: any", and for *those* packages, i386 is opt-in. I think this makes most sense for packages that are sufficiently low-level that their design requires specific porting work for each new architecture, like libffi, valgrind or libseccomp - when we add a new architecture, for example loong64, those packages are expected to fail their build until a loong64 porter adds an appropriate architecture-specific code path, and there's no point in trying it until that code path has been written, because we already know it's going to fail.

But most packages with higher-level code are portable-in-principle to any architecture, and it's "just" a matter of whether architecture-specific quirks like word size, endianness and excess-precision break the package's assumptions.

And, yes, there's definitely a trade-off between fixing those bugs (sometimes against upstream's objections, and sometimes requiring effort that is out of all proportion to the package's usefulness), vs. treating them as non-bugs because the package isn't actually practically useful on all of our architectures.

We disable i386 building for this package
[creating] extra work for the maintainer
...
Unfortunately these workarounds do not solve the problem of needing
recursive removal of binary packages when removing architectures.

I think a large part of the problem here is that because excluding packages from an architecture is something we've historically treated as exceptional at best and a serious bug at worst, our process for doing so requires asking others for permission, having to justify yourself, and "expensive" manual intervention - to remove a non-leaf package from an architecture where it's broken, you have to ask the archive team to remove all of its reverse-dependencies first, and then the non-leaf package itself, in one bug report per source package. I think Debian could benefit from having a more scalable way to remove sets of packages, particularly on an architecture-specific basis.

This gets worse (more teams involved) for packages that are involved in d-i, as we've seen when removing the GNOME desktop environment from armel after mozjs (and therefore gjs, and therefore GNOME Shell) started requiring lock-free atomic operations that aren't available in the armel baseline.

Also
Salsa CI does not stop testing i386 packages even if the source package
is designed to not build them.

This part, at least, could be solved by the Salsa-CI team making the i386 build opt-in rather than opt-out - although I don't think that necessarily makes sense until/unless it becomes easier to remove packages and packaging ecosystems from i386 when they aren't needed there or don't make sense there.

With team-specific architecture-restriction metapackages like
r-pkg-team-core-architecture, teams can focus their time on maintaining
a curated subset of Debian release architectures. However, we lose
valuable data indicating when or how a dropped architecture might become
viable again.

I think there's a distinction to be made between "we're removing package P from architecture A because there's a practical problem, but it might come back if the architecture A porters can help" vs. "we're preemptively removing package P from architecture A because it's no longer useful there, and it's unlikely to come back". i386 will often fall into the second category.

    smcv

Reply via email to