#!/usr/bin/python3
"""Calculate regressions in version numbers between two releases."""
import sys
import urllib.request
import apt_pkg
apt_pkg.init()
MIRROR = "http://de1.archive.ubuntu.com/ubuntu/dists/{distro}/{component}/source/Sources.gz"
old = sys.argv[1]
new = sys.argv[2]
print("Version regression support for %s to %s" % (old, new))
print("=====================================================")
for component in "main","restricted","universe", "multiverse":
print(component)
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:
continue
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]))))
else:
print("%-30s %-50s -> %-40s" % (pkg, "/".join(old_vers[pkg]), "/".join(new_vers[pkg])))
print()
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
=====================================================
main
----
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 4.15.0.1023.23/bionic-updates -> 4.15.0.1021.21/cosmic (but 4.18.0.1001.1 in cosmic-proposed)
linux-meta-gcp 4.15.0.1021.23/bionic-updates -> 4.15.0.1019.21/cosmic (but 4.18.0.1001.1 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
restricted
----------
universe
--------
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
multiverse
----------
--
debian developer - deb.li/jak | jak-linux.org - free software dev
ubuntu core developer i speak de, en