The .deb files are now located in the /amd64/ sub folder. Check not only for the _all header, but also check if there is at least one _generic deb file. This was missing in some recent releases by Ubuntu. Reorder the __init__ function to be able to provide the arch to _get_ubuntu_ppa_mainline_kernels(). Signed-off-by: Hauke Mehrtens <hauke@xxxxxxxxxx> --- devel/backports-update-manager | 44 ++++++++++++++++++++++------------ 1 file changed, 29 insertions(+), 15 deletions(-) diff --git a/devel/backports-update-manager b/devel/backports-update-manager index dc969725..2ef82854 100755 --- a/devel/backports-update-manager +++ b/devel/backports-update-manager @@ -37,6 +37,21 @@ def make_version_tuple(ver): sver.append(-1) return sver +def parse_ubuntu_ppa_page(version, baseurl): + html = urlopen(baseurl).read() + if b'Build for amd64 failed' in html: + return None + pkgs = re.findall(b'href="linux-headers-[^"]*-generic_[^"]*\.deb"', html) + if not pkgs: + return None + pkgs = re.findall(b'href="linux-headers-[^"]*_all\.deb"', html) + if not pkgs: + return None + pkgs = [p[6:-1] for p in pkgs] + pkgs.sort() + pkg = pkgs[-1].decode('ascii') + return (version, baseurl + pkg) + class backport_kernel_updater: """ This is the Linux kernel backports kernel updater. It ensures you @@ -53,7 +68,7 @@ class backport_kernel_updater: sys.exit(1) @classmethod - def _get_ubuntu_ppa_mainline_kernels(cls): + def _get_ubuntu_ppa_mainline_kernels(cls, pkg_arch): base = KPATH html = urlopen(base).read() builds = re.findall(b'href="([-v.0-9a-z]*)/"', html) @@ -96,17 +111,16 @@ class backport_kernel_updater: for version in subvers: version = version[1] - html = urlopen(base + version + '/').read() - if b'Build for amd64 failed' in html: - continue - pkgs = re.findall(b'href="linux-headers-[^"]*_all\.deb"', html) - if not pkgs: - continue - pkgs = [p[6:-1] for p in pkgs] - pkgs.sort() - pkg = pkgs[-1].decode('ascii') - result.append((version, base + version + '/' + pkg)) - break + baseurl = base + version + '/' + pkgs = parse_ubuntu_ppa_page(version, baseurl) + if pkgs: + result.append(pkgs) + break + baseurl = base + version + '/' + pkg_arch + '/' + pkgs = parse_ubuntu_ppa_page(version, baseurl) + if pkgs: + result.append(pkgs) + break result.sort(key = lambda x: make_version_tuple(x[0][1:])) return [x[1] for x in result] @@ -116,7 +130,9 @@ class backport_kernel_updater: reference=None): self.ksrc_base = "" self.ksrc_prefix = "" - self.kernel_urls = self._get_ubuntu_ppa_mainline_kernels() + sysname, nodename, release, version, self.machine = os.uname() + self.pkg_arch = self.pkg_arch(self.machine) + self.kernel_urls = self._get_ubuntu_ppa_mainline_kernels(self.pkg_arch) self.num_kernels = len(self.kernel_urls) self.git_trees = GIT_TREES self.git_trees_missing = list() @@ -134,8 +150,6 @@ class backport_kernel_updater: self.reference = reference self.reference_git = None self.cwd = os.getcwd() - sysname, nodename, release, version, self.machine = os.uname() - self.pkg_arch = self.pkg_arch(self.machine) if self.root: self.ksrc_base = self.cwd + "/" self.ksrc_prefix = self.ksrc_base + BACKPORTS_KSRC_DIR -- 2.20.1 -- To unsubscribe from this list: send the line "unsubscribe backports" in