Simon McVittie <s...@debian.org> writes: > Here are some updated patches for Policy, incorporating this requirement.
> I have not attempted to incorporate the corner case involving > build-profiles. I think if we were going to do that, it would require > documenting build-profiles first (#757760), and maybe even then it's too > much of a corner-case to be documenting unless/until it actually > happens. I also second these changes. In the name of expediency, and since I believe all the proposed wording changes were informative, I applied these patches for the next release and made the wording changes suggested by Holger and Sean. Attached are the changes as committed. Subsequent to this work, we added the non-free-firmware archive area. Simon's patch therefore doesn't add a statement to that section about whether source packages in non-free-firmware are allowed to produce binaries in non-free, or if source packages in non-free are allowed to produce binaries in non-free-firmware, and I don't know what the answer to that is. Would the following wording be correct? If a source package is in the *non-free-firmware* archive area, then each of the binary packages that it produces must also be in the *non-free-firmware* archive area. Please let me know, and I will propose some follow-up wording for that. -- Russ Allbery (r...@debian.org) <https://www.eyrie.org/~eagle/>
diff --git a/debian/changelog b/debian/changelog index 66d6fa0..a5e3e3e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -11,6 +11,11 @@ debian-policy (4.6.3.0) UNRELEASED; urgency=medium Seconded: Russ Allbery <r...@debian.org> Seconded: Holger Levsen <hol...@layer-acht.org> Closes: #1035733 + * Policy: Source packages in main may build binary packages in contrib + Wording: Simon McVittie <s...@debian.org> + Seconded: Holger Levsen <hol...@layer-acht.org> + Seconded: Russ Allbery <r...@debian.org> + Closes: #994008 -- Sean Whitton <spwhit...@spwhitton.name> Wed, 14 Jun 2023 16:58:40 +0100 diff --git a/policy/ch-archive.rst b/policy/ch-archive.rst index c7cd340..eb8978a 100644 --- a/policy/ch-archive.rst +++ b/policy/ch-archive.rst @@ -136,6 +136,27 @@ In addition, the packages in *main* - must meet all policy requirements presented in this manual. +If a source package is in the *main* archive area, then at least one of +its binary packages must be in the *main* archive area, and each of the +remaining packages must be in either the *main* or *contrib* archive +area. Each binary package's archive area is indicated by its ``Section`` +field: see :ref:`s-subsections`. + +Source packages in *main* with a mixture of *main* and *contrib* binary +packages are more complex for archive tooling to handle, and therefore +should be limited to situations where it would be inconvenient to split +the source package. If it is straightforward to split the source package +into a *main* part and a *contrib* part that are built separately, then +those parts should be represented as separate source packages. + +When a *main* source package has a mixture of *main* and *contrib* binary +packages, the source package and the *main* binary packages must follow +the requirements for *main* packages, but the *contrib* binary packages +may follow the weaker requirements for *contrib* packages. In particular, +source packages in *main* must not have build dependencies outside *main*, +but the *contrib* binary packages may have runtime dependencies outside +*main*. + .. [2] See `What Does Free Mean? <https://www.debian.org/intro/free>`_ for more about what we mean by free software. @@ -192,6 +213,10 @@ Examples of packages which would be included in *contrib* are: - wrapper packages or other sorts of free accessories for non-free programs. +If a source package is in the *contrib* archive area, then each of the +binary packages that it produces must also be in the *contrib* archive +area. + .. _s-non-free: The non-free archive area @@ -214,6 +239,10 @@ In addition, the packages in *non-free* - must meet all policy requirements presented in this manual that it is possible for them to meet. [4]_ +If a source package is in the *non-free* archive area, then each of the +binary packages that it produces must also be in the *non-free* archive +area. + .. [4] It is possible that there are policy requirements which the package is unable to meet, for example, if the source is unavailable. These diff --git a/policy/upgrading-checklist.rst b/policy/upgrading-checklist.rst index 54a473b..6009819 100644 --- a/policy/upgrading-checklist.rst +++ b/policy/upgrading-checklist.rst @@ -44,6 +44,13 @@ Version 4.7.0 Unreleased. +2.2.1 + Document that source packages in the *main* archive area may build + binary packages in the *contrib* archive area, although this is + discouraged unless the source package is inconvenient to split. This + does not relax the requirement that source packages in *main* must not + have build dependencies outside of *main*. + 2.2.2 The ``non-free-firmware`` archive area has been added.