You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Prototype: build script — zip addons, generate addons.xml entries and md5s per channel #15
Resolved. Working prototype: tools/build_repo.py + channels.json on branch JMAN730/setup-matt-pocock-skills (commit 86b6717). Run with python3 tools/build_repo.py — stdlib only, one code path for local and CI.
Verified against the real sources:
Builds all 8 shipped addons into out/<channel>/…; correctly skips the two []-mapped services; enforces both manifest rules (unmapped dir / dangling entry → hard fail).
Every zip contains exactly one root folder named the addon id (checked across all 9 produced zips) — Kodi's install requirement.
addons.xml per channel wraps each addon.xml verbatim and re-parses cleanly; .md5 is the bare hash of the exact bytes (verified with md5sum).
<assets> files are copied into datadir/<id>/ with subpaths preserved (e.g. redlight's resources/media/addon_icons/icon.png).
Finding (pre-existing source bug):plugin.audio.mp3streams declares <icon>icon.png</icon> / <fanart>fanart.jpg</fanart> but the icon actually lives at art/icon.png and no fanart file exists — its icon is broken on the live server today too. Fix belongs in that addon's addon.xml (<icon>art/icon.png</icon>, drop the fanart entry), left for the maintainer or a follow-up PR; the script surfaces it as a WARN.
Handed to the release-wiring ticket: the out/ tree is exactly the shape the maintainer must land on the server, so the bundle question in "Define the maintainer handoff" reduces to how to wrap this tree.
Activity
Add prototype repo build script and channel manifest
JMAN730 commentedon Jul 6, 2026
Resolved. Working prototype:
tools/build_repo.py+channels.jsonon branchJMAN730/setup-matt-pocock-skills(commit 86b6717). Run withpython3 tools/build_repo.py— stdlib only, one code path for local and CI.Verified against the real sources:
out/<channel>/…; correctly skips the two[]-mapped services; enforces both manifest rules (unmapped dir / dangling entry → hard fail).addons.xmlper channel wraps eachaddon.xmlverbatim and re-parses cleanly;.md5is the bare hash of the exact bytes (verified withmd5sum).<assets>files are copied intodatadir/<id>/with subpaths preserved (e.g. redlight'sresources/media/addon_icons/icon.png).Finding (pre-existing source bug):
plugin.audio.mp3streamsdeclares<icon>icon.png</icon>/<fanart>fanart.jpg</fanart>but the icon actually lives atart/icon.pngand no fanart file exists — its icon is broken on the live server today too. Fix belongs in that addon'saddon.xml(<icon>art/icon.png</icon>, drop the fanart entry), left for the maintainer or a follow-up PR; the script surfaces it as a WARN.Handed to the release-wiring ticket: the
out/tree is exactly the shape the maintainer must land on the server, so the bundle question in "Define the maintainer handoff" reduces to how to wrap this tree.JMAN730 commentedon Jul 6, 2026
Closing — prototype built and verified, see resolution above.