Last active
July 6, 2018 04:04
-
-
Save andersk/72bf1e03fb5c8fff0b13e3dc497d85cd to your computer and use it in GitHub Desktop.
Revisions
-
andersk revised this gist
Jul 6, 2018 . 1 changed file with 2 additions and 2 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,6 +1,6 @@ #!/usr/bin/python3 import apt_pkg import debian.deb822 import gzip import sys from io import BytesIO @@ -30,7 +30,7 @@ def get_pocket_component_versions(pocket, component): with urlopen(url) as fz, gzip.open(fz) as f: return { src["Package"]: src["Version"] for src in debian.deb822.Sources.iter_paragraphs(BytesIO(f.read())) } -
andersk created this gist
Jul 6, 2018 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,54 @@ #!/usr/bin/python3 import apt_pkg import deb822 import gzip import sys from io import BytesIO from ubuntutools.lp.lpapicache import Distribution from urllib.request import urlopen COMPONENTS = ["main", "restricted", "universe", "multiverse"] POCKETS = ["", "-security", "-updates"] apt_pkg.init_system() def merge_versions(version_dicts): out = {} for d in version_dicts: for p, v in d.items(): if p not in out or apt_pkg.version_compare(v, out[p]) > 0: out[p] = v return out def get_pocket_component_versions(pocket, component): url = ( f"http://archive.ubuntu.com/ubuntu/dists/{pocket}/{component}/source/Sources.gz" ) print(f"Reading {url}", file=sys.stderr) with urlopen(url) as fz, gzip.open(fz) as f: return { src["Package"]: src["Version"] for src in deb822.Sources.iter_paragraphs(BytesIO(f.read())) } def get_release_versions(release): return merge_versions( get_pocket_component_versions(release + pocket, component) for pocket in POCKETS for component in COMPONENTS ) dist = Distribution("ubuntu") releases = [series.name for series in dist.series if series.active] versions = {release: get_release_versions(release) for release in releases} for new, old in zip(releases[:-1], releases[1:]): print(f"Comparing {new}, {old}:") for p in sorted(set(versions[new]) & set(versions[old])): if apt_pkg.version_compare(versions[new][p], versions[old][p]) < 0: print(f"{p} {versions[new][p]} < {versions[old][p]}") print()