fix: read a pack version past its platform part

_pack_version took the text after the last underscore of the pack name.
AmberELEC's prerelease-20261019_1835 read as 1835 and the page would
announce a version gap that does not exist. The site now removes the
platform part the builder writes (platform_pack_prefix).
This commit is contained in:
Abdessamad Derraz committed 2026-11-06 15:07:25 +01:00
1 parent 52b7ee0f46
commit bc489273a0
3 files changed
+53 -8

No files matched your search

+14 -2
View File
@@ -369,13 +369,25 @@ def _platform_pack_stem(
rep_cfg = load_platform_config(representative, platforms_dir)
version = rep_cfg.get("version", rep_cfg.get("dat_version", ""))
version_tag = f"_{_name_part(str(version))}" if version else ""
return platform_pack_prefix(group_platforms, representative, platforms_dir) + version_tag
def platform_pack_prefix(
group_platforms: list[str], representative: str, platforms_dir: str
) -> str:
"""Platform part of a pack name without the version.
The site reads a pack's version back by removing this prefix: a version
may hold an underscore (AmberELEC prerelease-20261019_1835).
"""
if len(group_platforms) <= 1:
return _name_part(rep_cfg.get("platform", representative), "_") + version_tag
rep_cfg = load_platform_config(representative, platforms_dir)
return _name_part(rep_cfg.get("platform", representative), "_")
names = [
load_platform_config(p, platforms_dir).get("platform", p)
for p in group_platforms
]
return "_".join(_name_part(n) for n in names) + version_tag
return "_".join(_name_part(n) for n in names)
def platform_list_version(config: dict, platform: str) -> str:
+25 -5
View File
@@ -642,11 +642,26 @@ def _release_date(tag: str) -> str:
return f"{moment.day} {moment.strftime('%B %Y')}"
def _pack_version(pack_name: str) -> str:
def _pack_version(pack_name: str, platforms: list[str]) -> str:
"""The platform version a pack was built for, from its name
(Batocera_43.1_BIOS_Pack.zip is 43.1)."""
(Batocera_43.1_BIOS_Pack.zip is 43.1).
Read past the platform part the builder writes, not at the last
underscore: AmberELEC_prerelease-20261019_1835 read as 1835.
"""
from generate_pack import platform_pack_prefix # noqa: PLC0415
stem = pack_name.removesuffix("_BIOS_Pack.zip")
return stem.rsplit("_", 1)[1] if "_" in stem else ""
prefix = platform_pack_prefix(
platforms, platforms[0], str(siteinputs.current().platforms)
) + "_"
return stem[len(prefix):] if stem.startswith(prefix) else ""
def _pack_platforms(platform_name: str, record: dict, pack_name: str) -> list[str]:
"""The platforms a release pack was built for, the one asked first."""
listed = list(record.get("packs", {}).get(pack_name, {}).get("platforms") or [])
return listed or [platform_name]
def release_line(platform_name: str, record: dict) -> list[str]:
@@ -665,7 +680,9 @@ def release_line(platform_name: str, record: dict) -> list[str]:
]
config = load_platform_config(platform_name, str(siteinputs.current().platforms))
page_version = str(config.get("version") or "")
pack_version = _pack_version(pack_name)
pack_version = _pack_version(
pack_name, _pack_platforms(platform_name, record, pack_name)
)
if page_version and pack_version and page_version.lstrip("v") != pack_version.lstrip("v"):
display = config.get("platform", platform_name)
lines.append(f"This pack was built for {display} {pack_version}. The command "
@@ -692,7 +709,10 @@ def setup_version(platform_name: str, record: dict | None = None) -> str:
except FileNotFoundError:
return ""
pack_name = release_record.pack_name_for(platform_name, record or {})
version = (_pack_version(pack_name) if pack_name else "") or str(config.get("version") or "")
version = (
_pack_version(pack_name, _pack_platforms(platform_name, record or {}, pack_name))
if pack_name else ""
) or str(config.get("version") or "")
if not version:
return ""
return f"{config.get('platform', platform_name)} {version.removeprefix('v')}"