#797347 dpkg-gencontrol: option to exclude specific architectures

#797347#5
Date:
2015-08-29 19:42:30 UTC
From:
To:
package: dpkg-dev
version: 1.18.2
severity: wishlist

It's often desirable to exclude a specific architecture for a binary
package, but the Architecture field currently requires the opposite.

It would be nice if it were possible to do something like:

Architecture: any [!armhf]

Best wishes,
Mike

#797347#10
Date:
2015-09-10 13:13:20 UTC
From:
To:
Hi!

This is currently "allowed" by dpkg-dev in the dependency syntax, but
mostly as a side effect of how the architecture restriction are parsed.
You could write "!armhf any", where the first match wins. But this is
currently disallowed by policy.

Allowing the same for the Architecture field, would be a possibility,
but both behaviors would have to be agreed by the project, at least by
maintainers having to deal with parsing such restrictions, implemented
and documented at least in dpkg itself. And ideally subsequently policy
updated to match reality.

Thanks,
Guillem

#797347#17
Date:
2026-05-03 11:52:20 UTC
From:
To:
Hello,

is there a workaround for this nowadays?

I just got a merge-request against pinentry:
| Don't build qt6 package on i386 or m68k
| Ubuntu only builds some packages on i386. pinentry is built on Ubuntu
| i386 but qt6 is not. This change would enable Ubuntu to automatically
| sync pinentry package updates from Debian. This is similar to how
| poppler-qt6 isn't built on Debian's i386.

with (inter alia) this change to control:
 Package: pinentry-qt
-Architecture: any
+Architecture: amd64 arm64 armhf loong64 ppc64el riscv64 s903x alpha hppa hurd-any powerpc ppc64 sh4 sparc64 x32

I do not think it is a strange or exotic wish to not build some software on
i386 which we only keep around for legacy software (therefore e.g. no t64-
transition).

cu Andreas

#797347#22
Date:
2026-06-07 06:51:44 UTC
From:
To:
Hi,
"""
When you can't support your package on a particular architecture, you
shouldn't use the Architecture field to reflect that (it's also a pain
to maintain correctly). If the package fails to build from source, you
can just let it be and interested people can take a look at the build
logs. If the package would actually build, the trick is to add a
Build-Depends on `unsupported-architecture [the-not-supported-arch]`.
The buildds will not build the package as the build dependencies are not
fulfilled on that arch. To prevent building on 32-bits architectures,
the `architecture-is-64-bit` build dependency can be used, as
`architecture-is-little-endian` can be used to prevent building on big
endian systems.
"""

Paul

[1]
https://www.debian.org/doc/manuals/developers-reference/pkgs.en.html#being-kind-to-porters

#797347#27
Date:
2026-06-07 09:12:41 UTC
From:
To:
[...]

Hello Paul,

Thanks for the pointer.

This only works if no binary packages should be built for a specific
architecture. In my my case (pinentry) only the qt-package should be
dropped on i386, the other binaries should be (auto)built.

cu Andreas