[CentOS-devel] Unshipped -devel packages in CentOS Linux

Fri Nov 8 01:39:59 UTC 2019
Nico Kadel-Garcia <nkadel at gmail.com>

On Wed, Nov 6, 2019 at 12:37 PM Brian Stinson <brian at bstinson.com> wrote:
>
>
> Hi Folks,
>
> We're gearing up to build the next minor release of CentOS Linux 8 so I thought
> now would be a good time to revisit the conversation we've been having about
> what to do with unshipped -devel packages. Just a reminder on a few guiding
> principles:
>
> - The BaseOS, AppStream, and PowerTools repos in CentOS Linux are designed and
>   composed to match Upstream as closely as possible, both in content and behavior
>
> - Unshipped devel packages have no defined maintenance lifecycle in Upstream,
>   and especially not in CentOS

Based on the source for "quota", these "devel" packages are built
along with the binary RPMs. It takes extra work to exclude them from
publication along with the binary RPMs. If Red Hat is publishing the
SRPM, and building the RPMs, it is capricious to exclude the "devel"
packages. As best I've seen over more than 20 years, they have never
pulled this stunt before.

> - We know that some of these devel packages are essential to build applications
>   that the CentOS (and probably EPEL) communities care about.
>
>
> The problems we need to solve if we decide to ship these packages somewhere in
> a CentOS artifact:
>
> - Communicate that these packages are provided as-is and are not meant for
>   runtime dependencies
>
> - Provide the packages in a form that is consumable for individuals and the
>   EPEL community

Well, yes. A polite note that Red Hat elected to be really silly about
this one should serve quite well.

> I'd like to propose that we create a separate repository, disabled by default
> that is composed of the -devel packages that we care about, bundled in a module.
>
> The name of this repository and the module is up for discussion, but I would
> like the naming to help with the communication that these are not for general
> consumption.

Please don't. The current multiplicity of streams from upstream is, in
my observation. pretty foolish. There is no separate stream to put the
SRPM ijn, because the published SRPM bullds the quota-devel package.
(I checked as part of resolving the quota-devel dependency for Samba
with the full domain controller enabled for RHEL 8). The software
license for the quota package is GPLv2, there is no problem publishing
the devel package.

> I'd also like to discuss how we populate this repo/module. It would be

Just leave it in the mainliine repos. In this very small way they will
differ from RHEL. But this is, I think, the only case I have ever seen
RHEL refuse to publish the accompanying devel package with a binary
package.  It's not behavior to emulate.

> easiest to just dump every unshipped package in and move on, but that

This is *not* an unshipped package. This is a package that is shipped,
it's necessary for compiling Samba with domain-controller enabled,
it's included in the upstream Fedora builds, it's compiled
automatically along with the binary package, and it was deliberately
excluced.

> doesn't help us track which of these packages are truly important
> outside of building the distro.  Shipping *everything* also represents a
> larger content set to manage if lifecycle issues come up in the future.
> An alternative would be to store this definition in git (we'll need to
> do that anyways), and allow folks to make pull requests to include new
> content, shipping this as a separate repo would let us spin updates on
> demand.

Well, yes. If you'r4e going to include development libraries at all,
it's going to be a larger set of repositories. But picking and
choosing which to ship binaries, and which to exclude include files
for this way is new behavior and quite capricious. It makes me
quesiton what the motive is. And as much as I hate to think it, I
think it's to hinder Samba domain controller deploymen in favor of
FreeIPA, which seems to have become a sore point.

And no. There is no need, nor exuse, for module wrapping something
that is a critical system component. Fedora is in the midst of some
very heated discussions about the benefits, and lack of benefits, of
modules, and interjecting them into this kind of already built, the
SRPM already builds the devel package, discussion is distracting
clutter.