Wednesday, 10 October 2018

Version regressions in cosmic compared to bionic

"""Calculate regressions in version numbers between two releases."""
import sys
import urllib.request

import apt_pkg


MIRROR = "{distro}/{component}/source/Sources.gz"
old = sys.argv[1]
new = sys.argv[2]

print("Version regression support for %s to %s" % (old, new))

for component in "main","restricted","universe", "multiverse":
print(len(component) * "-")
old_vers = {}
new_vers = {}
pro_vers = {}
for pocket in "", "-updates":
old_path, _ = urllib.request.urlretrieve(MIRROR.format(distro=old + pocket, component=component), "old.gz")
new_path, _ = urllib.request.urlretrieve(MIRROR.format(distro=new + pocket, component=component), "new.gz")

for sec in apt_pkg.TagFile(old_path):
if apt_pkg.version_compare(sec["Version"], old_vers.get(sec["Package"], [""])[0]) >= 0:
old_vers[sec["Package"]] = sec["Version"], old + pocket
for sec in apt_pkg.TagFile(new_path):
if apt_pkg.version_compare(sec["Version"], new_vers.get(sec["Package"], [""])[0]) >= 0:
new_vers[sec["Package"]] = sec["Version"], new + pocket

pro_path, _ = urllib.request.urlretrieve(MIRROR.format(distro=new + "-proposed", component=component), "pro.gz")
for sec in apt_pkg.TagFile(pro_path):
pro_vers[sec["Package"]] = sec["Version"], new + "-proposed"

for pkg in sorted(old_vers):
if pkg not in new_vers:

if apt_pkg.version_compare(old_vers[pkg][0], new_vers[pkg][0]) > 0:
if pkg in pro_vers and apt_pkg.version_compare(old_vers[pkg][0], pro_vers[pkg][0]) <= 0:
print("%-30s %-50s -> %-40s (but %s)" % (pkg, "/".join(old_vers[pkg]), "/".join(new_vers[pkg]), (" in ".join(pro_vers[pkg]))))
print("%-30s %-50s -> %-40s" % (pkg, "/".join(old_vers[pkg]), "/".join(new_vers[pkg])))
I recently saw some packages in cosmic that have older
versions than the one in bionic, so I wrote a script to
check that, and here are the results.

I think we need to be more careful when it comes to this,
and regressions in security fixes (e.g. having a list
of CVE regressions in devel compared to stable).

The script used for this list is attached, I'd like to polish
it up a bit, add team info, make it generate html and json and
have it run periodically.

Note that the script compares released versions from the
old release to the new release. If there is a newer version
in proposed, it also mentions that, but still lists it.

-- script output:

Version regression support for bionic to cosmic
ceph 12.2.7-0ubuntu0.18.04.1/bionic-updates -> 12.2.4-0ubuntu1.1build1/cosmic (but 13.2.1+dfsg1-0ubuntu2 in cosmic-proposed)
language-pack-gnome-mai 1:18.04+20180712/bionic-updates -> 1:18.04+20180423/cosmic
language-pack-gnome-mai-base 1:18.04+20180712/bionic-updates -> 1:18.04+20180423/cosmic
language-pack-mai 1:18.04+20180712/bionic-updates -> 1:18.04+20180423/cosmic
language-pack-mai-base 1:18.04+20180712/bionic-updates -> 1:18.04+20180423/cosmic
linux-aws 4.15.0-1023.23/bionic-updates -> 4.15.0-1021.21/cosmic (but 4.18.0-1001.2 in cosmic-proposed)
linux-gcp 4.15.0-1021.22/bionic-updates -> 4.15.0-1019.20/cosmic (but 4.18.0-1001.2 in cosmic-proposed)
linux-meta-aws -> (but in cosmic-proposed)
linux-meta-gcp -> (but in cosmic-proposed)
linux-signed-gcp 4.15.0-1021.22/bionic-updates -> 4.15.0-1019.20/cosmic (but 4.18.0-1001.2 in cosmic-proposed)
thunderbird 1:52.9.1+build3-0ubuntu0.18.04.1/bionic-updates -> 1:52.7.0+build1-0ubuntu1/cosmic
woff2 1.0.2-1build0.1/bionic-updates -> 1.0.2-1/cosmic


mariadb-10.1 1:10.1.34-0ubuntu0.18.04.1/bionic-updates -> 1:10.1.29-6ubuntu2/cosmic (but 1:10.1.35-1ubuntu1 in cosmic-proposed)
snapcraft 2.43.1+18.04/bionic-updates -> 2.43+18.10.1/cosmic (but 2.43.1+18.10 in cosmic-proposed)
swauth 1.3.0-1ubuntu1/bionic-updates -> 1.3.0-1/cosmic


debian developer - | - free software dev
ubuntu core developer i speak de, en