fix: point each Amiberry build pin at its repo

KNULLI builds amiberry from Batocera's package through its batocera
submodule: the reference now names knulli-linux at 20260511, the tag
platforms/knulli.yml is read at, and the package file below the
submodule. check_freshness follows a path .gitmodules declares to the
commit the tree pins, which reads AMIBERRY_VERSION = v7.1.0 there.

RetroBat pins amiberry 8.3.0.0 only in emulators/versions.xml on its
download server, read by emulatorLauncher/Installer.cs. No repository
holds it, so amiberry-8.3.0 keeps pin_frozen, which says so, and no
pin_build.
This commit is contained in:
Abdessamad Derraz committed 2026-11-10 07:10:43 +01:00
1 parent 7d89877aab
commit 6191d4783a
4 files changed
+40 -13

No files matched your search

+4 -4
View File
@@ -7,7 +7,7 @@ profiled_date: "2026-11-09"
source_commit: "c53d6db770a5580732a7f2bb48abcbfcd95fd0f4"
pin_frozen: "AmberELEC builds this revision (AmberELEC packages/games/emulators/amiberry/package.mk:6\
\ at a21975b), KNULLI the v7.1.0 tag through its batocera submodule (batocera package/batocera/emulators/amiberry/amiberry.mk:7\
\ at 487014d). The two read the same files: equal ROM database, folders, scan and booter, the changes\
\ at 487014d, the commit knulli-linux 20260511 pins). The two read the same files: equal ROM database, folders, scan and booter, the changes\
\ between them being hotkeys, the GUI font and the plugins folder."
pin_build:
- platform: amberelec
@@ -17,9 +17,9 @@ pin_build:
variable: PKG_VERSION
value: "c53d6db770a5580732a7f2bb48abcbfcd95fd0f4"
- platform: knulli
repo: "https://github.com/batocera-linux/batocera.linux"
revision: "487014d91147610ebdd62f870009d4563ac61763"
path: "package/batocera/emulators/amiberry/amiberry.mk"
repo: "https://github.com/knulli-cfw/knulli-linux"
revision: "20260511"
path: "batocera/package/batocera/emulators/amiberry/amiberry.mk"
variable: AMIBERRY_VERSION
value: "v7.1.0"
core_version: "7.1.1"
+3 -9
View File
@@ -6,15 +6,9 @@ upstream: "https://github.com/tonioni/WinUAE"
profiled_date: "2026-11-09"
source_commit: "110ab1b08c010f8b1f873310add18cc66dae4f24"
pin_frozen: "RetroBat, the only platform that ships it, installs the Windows build of the v8.3.0 tag\
\ (RetroBat emulators/versions.xml lists amiberry 8.3.0.0 on its stable channel, RetroBat emulatorLauncher/Installer.cs:26,\
\ 199-237 reads it). Later releases are not part of that install."
pin_build:
- platform: retrobat
repo: "https://www.retrobat.org/repo/win64"
revision: "stable"
path: "emulators/versions.xml"
variable: amiberry
value: "8.3.0.0"
\ (emulators/versions.xml on its download server lists amiberry 8.3.0.0 for the stable channel, which\
\ emulatorLauncher/Installer.cs:26, 199-237 reads). No repository holds that list. Later releases are not\
\ part of that install."
core_version: "8.3.0"
version_basis:
kind: file
+11
View File
@@ -1615,6 +1615,17 @@ def check_pin_builds(
at = revision or upstream.resolve_head(repo, cache_dir, offline)
lines = upstream.fetch_file(repo, at, reference["path"], cache_dir, offline) \
if at else None
if at and lines is None:
# A file of a submodule is read at the commit the
# platform's tree pins: KNULLI builds Batocera's
# amiberry package through its batocera submodule.
modules = upstream.fetch_file(repo, at, ".gitmodules", cache_dir, offline)
declared = upstream.submodule_urls("\n".join(modules or ()), repo)
if any(reference["path"].startswith(f"{p}/") for p in declared):
linked = upstream.through_gitlink(repo, at, reference["path"],
cache_dir, offline)
if linked is not None:
lines = upstream.fetch_file(*linked, cache_dir, offline)
except upstream.NotCachedError:
findings.append(Finding("profiles", subject, SKIPPED, local=recorded[:12],
detail="offline, the build file is not cached"))
+22
View File
@@ -86,6 +86,28 @@ class HeldPinsReadTheirBuildFileAgain(unittest.TestCase):
self.assertEqual(found["mame0278 (recalbox)"].status, cf.STALE)
self.assertIn("is gone", found["mame0278 (recalbox)"].detail)
def test_a_file_of_a_submodule_is_read_at_its_gitlink(self):
"""KNULLI builds Batocera's amiberry package through its batocera
submodule: the file is not in knulli-linux's own tree."""
self._platform("10.2")
ref = {**self.REF, "path": "batocera/package/amiberry/amiberry.mk",
"variable": "AMIBERRY_VERSION", "value": "v7.1.0"}
modules = ['[submodule "batocera"]', "\tpath = batocera",
"\turl = https://github.com/batocera-linux/batocera.linux.git"]
def fetch(repo, sha, path, *_args):
if path == ".gitmodules":
return modules
if repo.slug == "batocera-linux/batocera.linux" and sha == "c" * 40:
return ["AMIBERRY_VERSION = v7.1.0"]
return None
profiles = {"amiberry": {"pin_frozen": "x", "pin_build": [ref]}}
with mock.patch.object(cf.upstream, "fetch_file", side_effect=fetch), \
mock.patch.object(cf.upstream, "list_gitlinks", return_value={"batocera": "c" * 40}):
(row,) = cf.check_pin_builds(profiles, self.platforms, "cache", False)
self.assertEqual(row.status, cf.OK, row.detail)
def test_offline_and_uncached_is_skipped(self):
self._platform("10.2")
profiles = {"mame0278": {"pin_frozen": "x", "pin_build": [self.REF]}}