It's been a while since the last update to this thread and proposed wording about the special version numbering conventions in use in Debian, and in the meantime things have settled out a bit more and we have a pretty firm consensus on how to handle special versions. I'd therefore like to resurrect this thread and see if we can agree on some wording.
The patch below adds a definition of native packages to our definitions section and documents the following version number conventions: - Native packages - NMUs of native and non-native packages - binNMUs - Stable updates - Backports I think these are all fairly consistent and widely agreed-on at this point. Concerns, objections, seconds? diff --git a/policy.xml b/policy.xml index cf9a589..fdf50b6 100644 --- a/policy.xml +++ b/policy.xml @@ -357,6 +357,21 @@ </listitem> </varlistentry> <varlistentry> + <term>native package</term> + <listitem> + <para> + A native package is software written specifically for Debian + whose canonical distribution format is as a Debian package. + Native packages have no separate upstream source in their + source package representation and no separate Debian + revision in their version numbers. Native packages are an + exception: most Debian packages are "non-native" and have + source packages composed of an upstream software release and + separate Debian-specific modifications. + </para> + </listitem> + </varlistentry> + <varlistentry> <term>UTF-8</term> <listitem> <para> @@ -3722,8 +3737,8 @@ Package: libc6 <para> It is optional; if it isn't present then the <replaceable>upstream_version</replaceable> may not - contain a hyphen. This format represents the case where a - piece of software was written specifically to be a Debian + contain a hyphen. This format represents a native package: + a piece of software written specifically to be a Debian package, where the Debian package source must always be identical to the pristine source and therefore no revision indication is required. @@ -3811,6 +3826,110 @@ Package: libc6 </para> </footnote> </para> + + <section id="s-special-versions"> + <title>Special Version Conventions</title> + + <para> + The following special version numbering conventions are used in + the Debian archive: + </para> + <itemizedlist> + <listitem> + <para> + The absence of <replaceable>debian_revision</replaceable>, + and therefore of a hyphen in the version number, indicates + that the package is native. + </para> + </listitem> + <listitem> + <para> + <replaceable>debian_revision</replaceable> components + ending in <literal>.</literal> followed by a number + indicate this version of the non-native package was + uploaded by someone other than the maintainer (an NMU or + non-maintainer upload). This is used for a source package + upload; for uploads of only binary packages without source + changes, see the binary NMU convention below. + </para> + </listitem> + <listitem> + <para> + <replaceable>upstream_version</replaceable> components in + native packages ending in <literal>+nmu</literal> followed + by a number indicate an NMU of a native package. As with + the convention for non-native packages, this is used for a + source package upload, not for uploads of only binary + packages without source changes. + </para> + </listitem> + <listitem> + <para> + <replaceable>upstream_version</replaceable> components in + native packages or + <replaceable>debian_revision</replaceable> components in + non-native packages ending in <literal>+b</literal> + 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. + </para> + </listitem> + <listitem> + <para> + <replaceable>upstream_version</replaceable> components in + native packages or + <replaceable>debian_revision</replaceable> components in + non-native packages ending in <literal>+debNuX</literal> + 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 distribution. The + <replaceable>N</replaceable> is the major version number + of the Debian stable release to which the package was + 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 distribution. The + <replaceable>N</replaceable> is the major version number + of the Debian stable release to which the package was + uploaded, and the <replaceable>X</replaceable> is a + number, starting at 1, that is increased for each stable + upload of this package. + </para> + <informalexample> + <para> + Suppose Debian 9 released with a package with version + <literal>1.4-5</literal>. If that package later + receives a stable update in Debian 9, the first update + would have the version <literal>1.4-5+deb9u1</literal>. + A subsequent update would have version + <literal>1.4-5+deb9u2</literal>. These numbers are + designed to sort earlier than <literal>1.4-6</literal>, + the version number that would be used for the next + unstable upload. + </para> + </informalexample> + </listitem> + <listitem> + <para> + <replaceable>upstream_version</replaceable> components in + native packages or + <replaceable>debian_revision</replaceable> components in + non-native packages ending in <literal>~bpoNuX</literal> + indicate a backport of a version of the package to an + older stable release. The part of the version before + <literal>~bpo</literal> is the version of the package + being backported, the <replaceable>N</replaceable> is the + major version number of the Debian stable release to which + the package was backported, and the + <replaceable>X</replaceable> is a number, starting at 1, + that is increased for each revision of the backport of + that package version. + </para> + <para> + This version convention was chosen to sort before the + original package release that is being backported so that + the backport will upgrade to the original package during a + later system upgrade to a newer Debian release. + </para> + </listitem> + </itemizedlist> + </section> </section> <section id="s-f-Description"> -- Russ Allbery (r...@debian.org) <http://www.eyrie.org/~eagle/>