On 09. 12. 21 15:03, Ben Beasley wrote:
Currently, the packaging guidelines say the following[1] regarding
header-only
libraries:
Do not use noarch
It may be tempting to make the header library package noarch, since
the header files themselves are simply text. However, a library should
have tests which should be run on all architectures. Also, the install
process may modify the installed headers depending on the build
architecture. For these reasons, header-only packages must not be
marked noarch.
I’d like to collect feedback on the idea of revising this guidance to clarify
that the *base* package, which in a header-only library package typically has
no %files section and does not produce a binary RPM, must be arched, but that
any subpackages, specifically including the -devel package, may be noarch.
This would address both of the justifications for the general prohibition in
the guidelines:
- The package will still be built, and any tests executed, on all
architectures so long as the base package is not noarch
- Differences in the installed headers depending on the build
architecture would be detected by koji[2], failing the build
(and thereby indicating the need to drop “noarch”)
However, it would confer the following benefits:
- The vast majority of header-only packages could produce noarch
binary rpms. This would:
* save storage and bandwidth
* be less surprising and confusing to packagers and users, who
normally expect arch-independent content to appear in noarch
packages
I have created a PR[3] on the “atomic-queue” package as an example. In the
associated scratch build, you can see that builds occur on all architectures,
but only a single noarch RPM is produced.
If feedback here is positive, I’ll open a Packaging Draft[4] with specific
proposed text.
[1]
https://docs.fedoraproject.org/en-US/packaging-guidelines/#_do_not_use_no...
[2]
https://docs.pagure.org/koji/misc/#how-noarch-sub-packages-are-built
[3]
https://src.fedoraproject.org/rpms/atomic-queue/pull-request/1
[4]
https://fedoraproject.org/wiki/Packaging_Committee#Step_One:_Draft_Guidel...
I like this, but it should mention that this is not always possible. Some
header-only libraries install stuff to %{_libdir} (e.g. cmake files or pkgconfig).
--
Miro Hrončok
--
Phone: +420777974800
IRC: mhroncok