[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: