M6 — cross-compile aarch64-musl + addon.zip + install docs
scripts/build-addon-zip.sh runs the whole pipeline from a host with ssh build-host: - one-shot messense/rust-musl-cross:aarch64-musl container builds the sidecar static (6.2MB stripped). Doesn't mutate the build container. - fetches yt-dlp_linux_aarch64 from the upstream release page so Tier 2 + Tier 3 work on the Pi (LibreELEC ships no Python YouTube tools) - packages everything into plugin.video.torttube.zip with the Kodi install-from-zip layout - drops the zip at /srv/downloads/torttube/ on the file share Cargo.toml swaps rustypipe to default-features=false + rustls-tls-webpki-roots so the cross-compile is openssl-free. addon.xml drops the unused script.module.requests requirement — main.py only uses Python stdlib + Kodi's own modules. docs/install.md walks the Kodi UI flow + a smoke curl that fires Player.Open via JSON-RPC. Pi-side smoke is pending install on kodi-host.
This commit is contained in:
parent
6e22873f8f
commit
2df2c0622a
5 changed files with 139 additions and 7 deletions
65
docs/install.md
Normal file
65
docs/install.md
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
# Installing torttube on the LibreELEC RPi
|
||||
|
||||
The addon ships as a single `plugin.video.torttube-<version>.zip` that
|
||||
contains the Python addon, a static aarch64 sidecar binary, and yt-dlp's
|
||||
aarch64 release binary (for Tier 2/3 fallback). Nothing else needs to be
|
||||
installed on the Pi.
|
||||
|
||||
## Build the zip (Sulkta-internal)
|
||||
|
||||
```bash
|
||||
bash scripts/build-addon-zip.sh
|
||||
# → /srv/downloads/torttube/plugin.video.torttube-0.0.1.zip on the build host
|
||||
```
|
||||
|
||||
The script cross-compiles the sidecar in a throwaway
|
||||
`messense/rust-musl-cross:aarch64-musl` container, fetches yt-dlp's
|
||||
official `yt-dlp_linux_aarch64` release binary, packages everything,
|
||||
drops the result at `/srv/downloads/torttube/` (file share).
|
||||
|
||||
## Install on the Pi (Kodi UI flow)
|
||||
|
||||
1. On the Pi: Settings → File manager → Add source → enter
|
||||
`smb://fileserver/downloads/` → name it `downloads`.
|
||||
2. Settings → Add-ons → Install from zip file → `downloads` →
|
||||
`torttube/plugin.video.torttube-<version>.zip`.
|
||||
3. Kodi installs, the addon appears under Video add-ons.
|
||||
|
||||
Unsigned addons need `Settings → System → Add-ons → Unknown sources` ON.
|
||||
|
||||
## Verify
|
||||
|
||||
After install, fire the smoke from any LAN client:
|
||||
|
||||
```bash
|
||||
curl -u kodi:<pw> -H "Content-Type: application/json" \
|
||||
-X POST http://kodi-host:8080/jsonrpc -d '{
|
||||
"jsonrpc": "2.0", "id": 1, "method": "Player.Open",
|
||||
"params": {"item": {"file":
|
||||
"plugin://plugin.video.torttube/?action=play&id=dQw4w9WgXcQ"}}}'
|
||||
```
|
||||
|
||||
The TV should switch to playback of "Never Gonna Give You Up" within a
|
||||
few seconds (rustypipe resolve takes ~1s, then Kodi starts the stream).
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
- **Black screen + "no stream URL"** notification: rustypipe returned
|
||||
separate audio + video streams (DASH-style), and we're picking the
|
||||
video stream which may be video-only. This is the M3 known gap —
|
||||
needs the audio+video merge work in M3+. Workaround: try a video that
|
||||
yt-dlp's tier-2 path can resolve to a combined format; the sidecar
|
||||
falls back automatically.
|
||||
- **Sidecar crashes**: `cat /storage/.kodi/temp/kodi.log | grep torttube`
|
||||
on the Pi. Sidecar logs to stderr; Kodi captures those.
|
||||
- **yt-dlp permission denied**: addon's bin/ dir needs +x. The zip
|
||||
preserves perms but if you copied files manually, `chmod +x bin/*`.
|
||||
- **HTTPS errors from sidecar**: it bundles rustls + webpki roots, so
|
||||
no system CA store needed. If you see "invalid certificate", your Pi
|
||||
clock is wrong (LibreELEC's NTP failed).
|
||||
|
||||
## Updating
|
||||
|
||||
Just rebuild + bump the version in `addon/plugin.video.torttube/addon.xml`,
|
||||
re-run `build-addon-zip.sh`, install the new zip from the same SMB
|
||||
location. Kodi will treat it as an upgrade if the version is higher.
|
||||
Reference in a new issue