mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-02-21 11:34:13 +00:00
linux/update-mainline: fix -rc version spelling, clean up a bit
This commit is contained in:
parent
6b6d39d4d0
commit
d44b3f0e75
@ -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),
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user