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
Research: Kodi repository artifact format and kodi-addon-checker usage #13
What exactly must the release bundle contain for Kodi to consume it, and how is kodi-addon-checker run in CI?
Pin down, against Team Kodi's own docs/repos (kodi.wiki, xbmc/kodi-addon-checker, existing repo-generator actions):
The addons.xml schema a repository datadir expects, and the .md5 convention (of the xml, per-zip, or both).
Zip layout: folder-at-root requirement, <addon.id>-<version>.zip naming, where icon.png/fanart.jpg and per-addon addon.xml copies must sit in the datadir for artwork to resolve.
Whether the three-channel layout needs anything channel-specific beyond separate directories.
kodi-addon-checker invocation: branch flags (nexus/omega/piers), running against a repo of many addons, output formats usable as a CI job summary, known false positives on legacy addons.
Prior art worth stealing: existing GitHub Actions for Kodi repo generation.
Deliverable: a markdown summary committed under docs/research/, linked from this issue.
addons.xml = root <addons> wrapping each addon's addon.xml copied verbatim; parsed by CAddonMgr::AddonsFromRepoXML. May be served gzipped.
addons.xml.md5 is a change marker, not verified by default; Kodi reads only the first token, so a bare lowercase hex hash is safest. Give every<dir> a checksum or repo-wide caching is disabled.
Per-zip hashes: only via <hashes> in the repository addon's <dir> (sidecar <zip>.md5/.sha256 files); there is no hash element in addons.xml. Omit <hashes> → no per-zip files needed.
Zip: URL is constructed as datadir/<id>/<id>-<version>.zip, byte-exact/case-sensitive; zip must contain exactly one root folder with a parseable addon.xml — any stray root entry breaks install.
Pre-install art resolves only from <assets> paths relative to datadir/<id>/ (no icon.png filename fallback in modern Kodi) — every shipped addon.xml needs an <assets> block, and icon.png/fanart.jpg must be copied into the datadir per addon.
Channels: nothing special beyond one <dir> per channel; minversion/maxversion are inclusive and compared to the xbmc.addon API version. The flat dir-less form is an error since v20.
kodi-addon-checker: pip install kodi-addon-checker; --branch required (…nexus omega piers); pointing it at a folder with no top-level addon.xml checks every subfolder (repo mode); exit 1 on PROBLEMs, 0 on warnings; console/log reporters only (no JSON); needs network. No [COLOR]-in-name check — the noise is artwork sizes, blacklisted strings/filetypes, and folder/id mismatch (--allow-folder-id-mismatch exists).
Prior art: no maintained, licensed, reusable Action for datadir repo generation exists; ecosystem norm (jurialmunkey, CastagnaIT, drinfernoo) is a small stdlib-only in-repo generator script — confirms rolling our own shared by local + CI, and installing the checker via pip rather than the stale official Action.
Activity
JMAN730 commentedon Jul 6, 2026
Resolved. Full findings: docs/research/kodi-repo-artifact-format.md (verified against Kodi master source, kodi.wiki, and xbmc/addon-check v0.0.36).
Key answers:
<addons>wrapping each addon'saddon.xmlcopied verbatim; parsed byCAddonMgr::AddonsFromRepoXML. May be served gzipped.<dir>a checksum or repo-wide caching is disabled.<hashes>in the repository addon's<dir>(sidecar<zip>.md5/.sha256files); there is no hash element in addons.xml. Omit<hashes>→ no per-zip files needed.datadir/<id>/<id>-<version>.zip, byte-exact/case-sensitive; zip must contain exactly one root folder with a parseableaddon.xml— any stray root entry breaks install.<assets>paths relative todatadir/<id>/(noicon.pngfilename fallback in modern Kodi) — every shipped addon.xml needs an<assets>block, andicon.png/fanart.jpgmust be copied into the datadir per addon.<dir>per channel;minversion/maxversionare inclusive and compared to thexbmc.addonAPI version. The flat dir-less form is an error since v20.pip install kodi-addon-checker;--branchrequired (…nexus omega piers); pointing it at a folder with no top-leveladdon.xmlchecks every subfolder (repo mode); exit 1 on PROBLEMs, 0 on warnings; console/log reporters only (no JSON); needs network. No[COLOR]-in-name check — the noise is artwork sizes, blacklisted strings/filetypes, and folder/id mismatch (--allow-folder-id-mismatchexists).JMAN730 commentedon Jul 6, 2026
Closing — research complete, findings linked above.