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
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
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
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
[...] 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