Bug#542288: debian-policy: Version numbering: native packages, NMU's, and binary only uploads
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 (rra@debian.org) <http://www.eyrie.org/~eagle/>
Reply to: