On Thu, 09 Sep 2021 at 21:15:06 +0200, Ansgar wrote: > On Thu, 2021-09-09 at 17:39 +0100, Simon McVittie wrote: > > In the form of a table, the allowed source/binary combinations are: > > > > | binary | > > | main contrib non-free | > > -----------------|-------------------------| > > main | yes yes - | > > source contrib | - yes - | > > non-free | - - yes | > > > > ftp team: is this correct? > > Yes. But source packages in main must also produce at least one binary > package in main[1].
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 personally would prefer if we would avoid using this feature too much > if possible. I've added some wording to try to express that. smcv
>From a332e4e787837cac0856c9c36d6e87e9f19197e2 Mon Sep 17 00:00:00 2001 From: Simon McVittie <s...@debian.org> Date: Thu, 9 Sep 2021 15:43:20 +0100 Subject: [PATCH 1/2] archive: Point out that mixed main/contrib source packages can exist Most source packages produce only binary packages in the same archive area, but a few source packages in main (such as bumblebee) produce a mixture of main and contrib binary packages. If an upstream project is in this situation (for example a program with optional plugins that have non-free dependencies) it isn't entirely obvious how to package it; clarify that a single source package in main is considered to be appropriate in this case, as long as no non-free build-dependencies are required. Signed-off-by: Simon McVittie <s...@debian.org> Closes: #994008 --- policy/ch-archive.rst | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/policy/ch-archive.rst b/policy/ch-archive.rst index ab04261..3d40f55 100644 --- a/policy/ch-archive.rst +++ b/policy/ch-archive.rst @@ -130,6 +130,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 +the binary packages that it produces 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 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 compiled +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, build-dependencies outside *main* are not allowed in +these source packages, but the *contrib* binary packages may have runtime +dependencies outside *main*. + .. _s-contrib: The contrib archive area -- 2.33.1
>From 14cd80454fc2ef8122315a1edcc05eed43106583 Mon Sep 17 00:00:00 2001 From: Simon McVittie <s...@debian.org> Date: Thu, 9 Sep 2021 15:53:20 +0100 Subject: [PATCH 2/2] archive: Clarify binaries produced by contrib and non-free source A source package outside main cannot produce main binary packages, because we want main to be self-contained: if you download all main source packages, that should give you the source code of all main binary packages. A source package in contrib cannot produce non-free binary packages, because by definition contrib only contains free software (with non-free dependencies, but those are not part of the source code). A source package in non-free cannot produce contrib binary packages, because we want main + contrib to be self-contained: if you download all main or contrib source packages, that should give you the source code of all main and contrib binary packages. Signed-off-by: Simon McVittie <s...@debian.org> --- policy/ch-archive.rst | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/policy/ch-archive.rst b/policy/ch-archive.rst index 3d40f55..0979d87 100644 --- a/policy/ch-archive.rst +++ b/policy/ch-archive.rst @@ -177,6 +177,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 @@ -199,6 +203,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. [#]_ +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. + .. _s-pkgcopyright: Copyright considerations -- 2.33.1