Ian Jackson writes ("Re: Bug#1107137: Distinguish "native source packsge" from "native version number""): > Attached is the fixup! commit I've made. It autosquashes cleanly. > I'll follow up with a re-attachment of the whole 4-patch series.
>From cf66ee770fc633ff98035521946f7f6533d1d236 Mon Sep 17 00:00:00 2001 From: Ian Jackson <ijack...@chiark.greenend.org.uk> Date: Tue, 3 Jun 2025 14:34:00 +0100 Subject: [PATCH 1/4] Add heading for version comparison --- policy/ch-controlfields.rst | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/policy/ch-controlfields.rst b/policy/ch-controlfields.rst index 3151816..c6b4944 100644 --- a/policy/ch-controlfields.rst +++ b/policy/ch-controlfields.rst @@ -596,6 +596,11 @@ The three components here are: non-native package (see :ref:`s-source-packages`). Absence indicates the package is a native package. +.. _s-version-comparison: + +Comparing versions +^^^^^^^^^^^^^^^^^^ + When comparing two version numbers, first the epoch of each are compared, then the ``upstream_version`` if epoch is equal, and then ``debian_revision`` if ``upstream_version`` is also equal. epoch is compared -- 2.47.2
>From c608069fc5daf66edd7d71ea8903f1471ec14952 Mon Sep 17 00:00:00 2001 From: Ian Jackson <ijack...@chiark.greenend.org.uk> Date: Tue, 3 Jun 2025 14:40:31 +0100 Subject: [PATCH 2/4] Distinguish "native version" from "native source package" "Non-native version" means a version with a hyphen. "Non-native source package" means a source package that separates out orig tarballs from Debian packaging and delta. As per TC decision in #1007717, specifically | 1. It is not a bug of any severity for a package with a non-native | version number to use a native source package format. which necessarily implies that these two concepts are separate. --- policy/ch-controlfields.rst | 23 ++++++++++++++++++++--- policy/ch-source.rst | 25 +++++++++++-------------- 2 files changed, 31 insertions(+), 17 deletions(-) diff --git a/policy/ch-controlfields.rst b/policy/ch-controlfields.rst index c6b4944..e0589f5 100644 --- a/policy/ch-controlfields.rst +++ b/policy/ch-controlfields.rst @@ -592,9 +592,26 @@ The three components here are: ``upstream_version`` and ``debian_revision``. The absence of a ``debian_revision`` is equivalent to a ``debian_revision`` of ``0``. - Presence of the ``debian_revision`` part indicates this package is a - non-native package (see :ref:`s-source-packages`). Absence indicates - the package is a native package. +.. _s-native-version: + +Native vs non-native version numbers +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +When the ``debian_revision`` is absent, the package's primary +maintenance is within Debian. This is a **native version number**, or +(informally) a "native version" or "native package". + +The ``debian_revision`` indicates that this package is derived by +Debian from an upstream version which is maintained independently, +outside Debian. Successive updates to the package within Debian, +based on the same upstream version, have the same version number +except for the ``debian_revision``. This is called a **non-native +version number**, or (informally) a "native version" or "native +package". + +Native version numbers and native source packages (see +:ref:`s-source-packages`) often go together, but native source +packages can have non-native version numbers. .. _s-version-comparison: diff --git a/policy/ch-source.rst b/policy/ch-source.rst index a2aa4cc..73a7d52 100644 --- a/policy/ch-source.rst +++ b/policy/ch-source.rst @@ -11,28 +11,25 @@ format of source package. Binary packages are contructed from the source package via a build process defined by ``debian/rules`` and other files in the ``debian`` directory of the unpacked source package. -Debian source packages are classified as *native* or *non-native*. +Some Debian source package formats can represent, separately, the +upstream source code, from the changes made in Debian: -A native source package is one that does not distinguish between Debian -packaging releases and upstream releases. A native source package contains a -single tar file of source material, and the versioning does not have a -Debian-specific component. Native packages are normally (but not +A **native source package** contains a +single tar file of source material. Native packages are normally (but not exclusively) used for software that has no independent existence outside -of Debian, such as software written specifically to be a Debian package. +of Debian, such as software written specifically to be a Debian package - +i.e., packages with native version numbers. -A non-native source package separates the upstream release from the Debian +A **non-native source package** separates the upstream release from the Debian packaging and any Debian-specific changes. The source in a non-native source package is divided into one or more upstream tar files plus a collection of Debian-specific files. (Depending on the format of the source package, those Debian-specific files may come in the form of -another tar file or in the form of a compressed diff.) The version of a -non-native package has an upstream component and a Debian component, and -there may be multiple Debian package versions associated with a single -upstream release version and sharing the same upstream source tar files. +another tar file or in the form of a compressed diff.) Non-native source +packages are only meaningful with, and can only be used with, non-native +version numbers. -Most source packages in Debian are non-native. - -.. _s-standardsversion: +See also :ref:`s-native-version`. Standards conformance --------------------- -- 2.47.2
>From 1cdbe35dd67bc08a75b295d6a72c9fc2830582fc Mon Sep 17 00:00:00 2001 From: Ian Jackson <ijack...@chiark.greenend.org.uk> Date: Tue, 3 Jun 2025 14:39:28 +0100 Subject: [PATCH 3/4] Clarify paragraph about versions without hyphens --- policy/ch-controlfields.rst | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/policy/ch-controlfields.rst b/policy/ch-controlfields.rst index e0589f5..30aea8e 100644 --- a/policy/ch-controlfields.rst +++ b/policy/ch-controlfields.rst @@ -676,7 +676,9 @@ The following special version numbering conventions are used in the Debian archive: - The absence of ``debian_revision``, and therefore of a hyphen in the - version number, indicates that the package is native. + version number, indicates that the package has no separate upstream + maintainers, and is simply maintained by Debian. See + :ref:`s-native-version`. - The presence of ``+really`` in the ``upstream_version`` component indicates that a newer upstream version has been rolled back to an older -- 2.47.2
>From 739e5c1e404e377cd8f0ce83cd66160ecca476da Mon Sep 17 00:00:00 2001 From: Ian Jackson <ijack...@chiark.greenend.org.uk> Date: Tue, 3 Jun 2025 14:39:56 +0100 Subject: [PATCH 4/4] Prefer "[non-]native versions" to "packages" where appropriate --- policy/ch-controlfields.rst | 31 +++++++++++++++++-------------- policy/ch-source.rst | 5 +++-- 2 files changed, 20 insertions(+), 16 deletions(-) diff --git a/policy/ch-controlfields.rst b/policy/ch-controlfields.rst index 30aea8e..7537d2a 100644 --- a/policy/ch-controlfields.rst +++ b/policy/ch-controlfields.rst @@ -597,9 +597,12 @@ The three components here are: Native vs non-native version numbers ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -When the ``debian_revision`` is absent, the package's primary -maintenance is within Debian. This is a **native version number**, or -(informally) a "native version" or "native package". +When the ``debian_revision`` is absent, this is a **native version +number**, or (informally) a "native version" or "native package". In +this case there is no separate versioning of maintainer uploads of the +Debian package, versus upstream releases. Often this is because there +is no separate upstream, and the package's primary maintenance is +within Debian. The ``debian_revision`` indicates that this package is derived by Debian from an upstream version which is maintained independently, @@ -676,8 +679,8 @@ The following special version numbering conventions are used in the Debian archive: - The absence of ``debian_revision``, and therefore of a hyphen in the - version number, indicates that the package has no separate upstream - maintainers, and is simply maintained by Debian. See + version number, indicates a non-native version: the package has + no separate versioning in upstream versus Debian. See :ref:`s-native-version`. - The presence of ``+really`` in the ``upstream_version`` component @@ -694,28 +697,28 @@ Non-maintainer uploads: for a upload including a source package; for uploads of only binary packages without source changes, see the binary NMU convention below. -- ``upstream_version`` components in native packages ending in ``+nmu`` +- ``upstream_version`` components in native versions ending in ``+nmu`` followed by a number indicate an NMU of a native package. As with the convention for non-native packages, this is used for an upload including a source package, not for uploads of only binary packages without source changes. -- ``upstream_version`` components in native packages or - ``debian_revision`` components in non-native packages ending in ``+b`` +- ``upstream_version`` components in native version numbers or + ``debian_revision`` components in non-native versions ending in ``+b`` followed by a number indicate a binary NMU: an upload of a binary package without any source changes and hence without any corresponding source package upload or version change. Stable updates: -- ``debian_revision`` components in non-native packages ending in ``debNuX`` +- ``debian_revision`` components in non-native versions ending in ``debNuX`` also indicate a stable update. Either ``~`` or ``+`` will be used before this string depending on the details of the update. ``N`` is the major version number of the Debian stable release to which the package was uploaded, and ``X`` is a number, starting at 1, that is increased for each stable upload of this package. - There are three cases for non-native packages: + There are three cases for non-native versions: #. For stable updates that use the same upstream version, the ``debian_revision`` component will end in ``+debNuX``. The portion @@ -753,11 +756,11 @@ Stable updates: update to an upstream 1.5 release, the first such stable update would have the version ``1.5-0+deb10u1``. -- ``upstream_version`` components in native packages ending in ``+debNuX`` +- ``upstream_version`` components in native versions ending in ``+debNuX`` indicate a stable update. This is a version of the package uploaded directly to a stable release, and the version is chosen to sort before any later version of the package uploaded to Debian's unstable or a later stable - distribution. As with non-native packages, ``N`` is the major version + distribution. As with non-versons packages, ``N`` is the major version number of the Debian stable release to which the package was uploaded, and ``X`` is a number, starting at 1, that is increased for each stable upload of this package. @@ -771,8 +774,8 @@ Stable updates: Backports: -- ``upstream_version`` components in native packages or - ``debian_revision`` components in non-native packages ending in +- ``upstream_version`` components in native versions or + ``debian_revision`` components in non-native versions ending in ``~bpoNuX`` indicate a backport of a version of the package to an older stable release. The part of the version before ``~bpo`` is the version of the package being backported, ``N`` is the major version number of diff --git a/policy/ch-source.rst b/policy/ch-source.rst index 73a7d52..0e55c09 100644 --- a/policy/ch-source.rst +++ b/policy/ch-source.rst @@ -17,8 +17,7 @@ upstream source code, from the changes made in Debian: A **native source package** contains a single tar file of source material. Native packages are normally (but not exclusively) used for software that has no independent existence outside -of Debian, such as software written specifically to be a Debian package - -i.e., packages with native version numbers. +of Debian, such as software written specifically to be a Debian package. A **non-native source package** separates the upstream release from the Debian packaging and any Debian-specific changes. The source in a non-native @@ -29,6 +28,8 @@ another tar file or in the form of a compressed diff.) Non-native source packages are only meaningful with, and can only be used with, non-native version numbers. +Most source packages in Debian are non-native. + See also :ref:`s-native-version`. Standards conformance -- 2.47.2
-- Ian Jackson <ijack...@chiark.greenend.org.uk> These opinions are my own. Pronouns: they/he. If I emailed you from @fyvzl.net or @evade.org.uk, that is a private address which bypasses my fierce spamfilter.