mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-10-10 13:33:24 -05:00
refactor: split the pack builder into its layers
generate_pack.py held six responsibilities in 4744 lines. Five move out in dependency order, so nothing above reaches back down: destinations, core extras, resolution with its storage tiers, the notes shipped inside a pack, and the pack verifier. generate_pack.py keeps the build and the command line, and re-exports the rest. Two things the move surfaced. The offline switch was a module global the command line assigned, which a re-export would have copied and frozen at False; it is set through a call now and not re-exported. And a facade placed after the entry point binds too late: importing the module worked, running it did not, so the manifest run died on a name the tests never exercised because tests import. Verified against the previous revision on frozen inputs: every generated artefact is identical, save the catalogue that embeds hashes of files carrying a build timestamp.
This commit is contained in:
1 parent
b5fd643ccf
commit
c31ce0b693
7 files changed
+1872
-1754
No files matched your search
@@ -86,3 +86,17 @@ def artifact_lock(directory: str, exclusive: bool = True):
|
||||
yield
|
||||
finally:
|
||||
fcntl.flock(handle, fcntl.LOCK_UN)
|
||||
|
||||
def _build_timestamp(db: dict | None = None) -> str:
|
||||
"""Timestamp for generated artifacts.
|
||||
|
||||
Reads the database snapshot the artifact was built from, so rebuilding
|
||||
the same data twice yields the same value. Falls back to the clock only
|
||||
when no database is at hand.
|
||||
"""
|
||||
stamp = (db or {}).get("generated_at")
|
||||
if isinstance(stamp, str) and stamp:
|
||||
return stamp
|
||||
from datetime import datetime, timezone
|
||||
|
||||
return datetime.now(timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ")
|
||||
Reference in new issue
Block a user