linux/update-mainline: fix -rc version spelling, clean up a bit

This commit is contained in:
K900 2024-07-29 16:35:57 +03:00
parent 6b6d39d4d0
commit d44b3f0e75

View File

@ -1,5 +1,6 @@
#!/usr/bin/env nix-shell
#!nix-shell -i python3 -p "python3.withPackages (ps: [ ps.beautifulsoup4 ps.lxml ps.packaging ])"
from functools import cached_property
from itertools import groupby
import json
import os
@ -29,20 +30,33 @@ class KernelNature(Enum):
class KernelRelease:
nature: KernelNature
version: str
branch: str
date: str
link: str
eol: bool = False
@cached_property
def parsed_version(self) -> Version:
return parse_version(self.version)
@cached_property
def branch(self) -> str:
version = self.parsed_version
# This is a testing kernel.
if version.is_prerelease:
return "testing"
else:
return f"{version.major}.{version.minor}"
def parse_release(release: Tag) -> KernelRelease | None:
columns: list[Tag] = list(release.find_all("td"))
try:
nature = KernelNature[columns[0].get_text().rstrip(":").upper()]
except KeyError:
# skip linux-next
return None
version = parse_version(columns[1].get_text().rstrip(" [EOL]"))
version = columns[1].get_text().rstrip(" [EOL]")
date = columns[2].get_text()
link = columns[3].find("a")
if link is not None and isinstance(link, Tag):
@ -52,7 +66,6 @@ def parse_release(release: Tag) -> KernelRelease | None:
return KernelRelease(
nature=nature,
branch=get_branch(version),
version=version,
date=date,
link=link,
@ -60,14 +73,6 @@ def parse_release(release: Tag) -> KernelRelease | None:
)
def get_branch(version: Version):
# This is a testing kernel.
if version.is_prerelease:
return "testing"
else:
return f"{version.major}.{version.minor}"
def get_hash(kernel: KernelRelease):
if kernel.branch == "testing":
args = ["--unpack"]
@ -108,16 +113,19 @@ def main():
sys.exit(1)
releases = release_table.find_all("tr")
parsed_releases = filter(None, [parse_release(release) for release in releases])
parsed_releases = [
parsed for release in releases
if (parsed := parse_release(release)) is not None
]
all_kernels = json.load(VERSIONS_FILE.open())
oldest_branch = get_oldest_branch()
for (branch, kernels) in groupby(parsed_releases, lambda kernel: get_branch(kernel.version)):
kernel = max(kernels, key=lambda kernel: kernel.version)
for (branch, kernels) in groupby(parsed_releases, lambda kernel: kernel.branch):
kernel = max(kernels, key=lambda kernel: kernel.parsed_version)
nixpkgs_branch = branch.replace(".", "_")
old_version = parse_version(all_kernels.get(branch, {}).get("version"))
old_version = all_kernels.get(branch, {}).get("version")
if old_version == kernel.version:
print(f"linux_{nixpkgs_branch}: {kernel.version} is latest, skipping...")
continue
@ -144,7 +152,7 @@ def main():
print(message, file=sys.stderr)
all_kernels[branch] = {
"version": str(kernel.version),
"version": kernel.version,
"hash": get_hash(kernel),
}