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

Bug#1014584:



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 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="" 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 to: