Hi Axel and Alberto,

Thanks for the conversation on this issue. I just wanted to add a
little context to cloud-init's versioning scheme in Ubuntu.

> That said, AFAIK -0ubuntu1~22.10.1 is not a formally documented version
anywhere, though I have seen it a few times.

For lack of a better word, I'll refer to the `~XX.YY.1` as a
"diminished version suffix".

The diminished version suffix is typically used in a project to which
all applies:
 - the project tends to release an upstream version of a package
[1.2.3-0ubuntu1]
   without any diminished version suffix
 - the project publishes the same functional upstream version to
stable Ubuntu releases

   18.04, 20.04, 22.04, 22.10 [1.2.3-0ubuntu1~XX.YY.1]


When the stable release version is equivalent, minus debian/* release
specific packaging
changes, the package version needs to be able to support an upgrade
path where the
development release version is greater than the last stable release version:

 dpkg  --compare-versions 1.2.3-0ubuntu1 gt 1.2.3-0ubuntu1~22.10.1

  So, those projects[1] tend to use the tilde `~` sort order to establish that
the stable release package version ~22.04.1 is considered less than
the devel release.

This is more common in Ubuntu packages that have an SRU exception
<https://wiki.ubuntu.com/StableReleaseUpdates#Documentation_for_Special_Cases>
because they are more

likely to publish the same upstream version in multiple Ubuntu releases.


  If these projects were to adopt the dot-delimited .24.10.1
"augmented version suffix",
those projects would also need to ensure that any published version in
the Ubuntu
development release also contains that Ubuntu devel series augmented
suffix .22.10.1.


The docs we used to come up with this sort ordering using the tilde are here
- https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-version
(debian_revision)

"""
 The lexical comparison is a comparison of ASCII values modified so
that all the letters
 sort earlier than all the non-letters and so that a tilde sorts
before anything,
 even the end of a part. For example, the following parts are in
sorted order from
 earliest to latest: ~~, ~~a, ~, the empty part, a
"""


> Alberto: what kind of upload is this?  22.10 is the current dev version,
so it's not some kind of backport.  With such context, I can guess that
this is some kind of package that your team is maintaining for multiple
ubuntu branches

Correct Axel. This is just an upload into the Ubuntu devel release
with a release-specific

diminished version syntax. From cloud-init perspective we figured we
could provide

Ubuntu release-specific ~XX.YY.1 to ensure all releases carry the same
general format suffix.

This way a community contributor wanting build their own deb from
upstream direct,
without version suffix, would be able to install the clean upstream
release and upgrade

from what is in-distro in ubuntu.


> ISTR that source-nmu-* just wasn't issued under ubuntu (i.e. with
--profile=ubuntu), did it start to be issued now?  I don't have any
recollection about binary-nmu-*
  All said the nmu lintian warnings seemed to have shown up in lintian
reports within the
last year. In cloud-init we don't correct our lintian warnings as much
as we should, but
we figured we should raise awareness on this issue to get upstream input on how
this should be addressed long term.


Thanks again for helping bring clarity here,

Chad

References

[1] Some Ubuntu packages which use ~XX.YY diminished package version schemes:
python3-distutils, ca-certificates, curtin, cloud-init,
ubuntu-advantage-tools, wslu, libstdc++6

Reply via email to