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.
57 lines
2.5 KiB
Bash
Executable file
57 lines
2.5 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
# Build addon.zip for torttube — runs from a host with SSH access to the build host.
|
|
#
|
|
# Cross-compiles the sidecar via messense/rust-musl-cross:aarch64-musl
|
|
# (one-shot container, no host-toolchain mutation), bundles yt-dlp's
|
|
# aarch64 release binary, packages with the Kodi addon dir layout, and
|
|
# drops the zip at /srv/downloads/torttube/ on the build host.
|
|
#
|
|
# Usage: bash scripts/build-addon-zip.sh
|
|
#
|
|
# Expected: ssh alias "build-host" works (per your SSH config), and the
|
|
# torttube source is at /build/torttube/
|
|
# on the build host (rsync first if you're iterating locally).
|
|
set -euo pipefail
|
|
|
|
VERSION="${VERSION:-0.0.1}"
|
|
SRC=/build/torttube
|
|
CARGO_HOME_CACHE=/build/.cargo-aarch64
|
|
TARGET_DIR=/build/.aarch64-target
|
|
STAGE=/tmp/torttube-stage
|
|
DEST_DIR=/srv/downloads/torttube
|
|
|
|
echo ">>> Cross-compile sidecar for aarch64-musl"
|
|
ssh build-host "docker run --rm \
|
|
-v $SRC/sidecar:/src \
|
|
-v $CARGO_HOME_CACHE:/cargo-home \
|
|
-v $TARGET_DIR:/target \
|
|
-e PATH=/root/.cargo/bin:/usr/local/musl/bin:/usr/local/bin:/usr/bin:/bin \
|
|
-e CARGO_HOME=/cargo-home \
|
|
-e CARGO_TARGET_DIR=/target \
|
|
-e CARGO_TARGET_AARCH64_UNKNOWN_LINUX_MUSL_LINKER=aarch64-unknown-linux-musl-gcc \
|
|
-e CC_aarch64_unknown_linux_musl=aarch64-unknown-linux-musl-gcc \
|
|
-w /src \
|
|
messense/rust-musl-cross:aarch64-musl \
|
|
cargo build --release"
|
|
|
|
echo ">>> Stage addon tree"
|
|
ssh build-host "rm -rf $STAGE && mkdir -p $STAGE/plugin.video.torttube/bin"
|
|
ssh build-host "rsync -a $SRC/addon/plugin.video.torttube/ $STAGE/plugin.video.torttube/ --exclude bin"
|
|
ssh build-host "cp $TARGET_DIR/aarch64-unknown-linux-musl/release/torttube-sidecar $STAGE/plugin.video.torttube/bin/"
|
|
|
|
echo ">>> Fetch yt-dlp aarch64 release binary"
|
|
ssh build-host "curl -sSL -o $STAGE/plugin.video.torttube/bin/yt-dlp \
|
|
https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp_linux_aarch64"
|
|
ssh build-host "chmod +x $STAGE/plugin.video.torttube/bin/*"
|
|
|
|
echo ">>> Build addon.zip"
|
|
ssh build-host "cd $STAGE && rm -f plugin.video.torttube.zip && \
|
|
zip -r plugin.video.torttube.zip plugin.video.torttube/ -x '*.DS_Store' > /dev/null"
|
|
|
|
echo ">>> Drop at $DEST_DIR/plugin.video.torttube-$VERSION.zip"
|
|
ssh build-host "mkdir -p $DEST_DIR && cp $STAGE/plugin.video.torttube.zip \
|
|
$DEST_DIR/plugin.video.torttube-$VERSION.zip"
|
|
|
|
ssh build-host "ls -la $DEST_DIR/"
|
|
echo ">>> done — install via Kodi: Settings > Add-ons > Install from zip"
|
|
echo " SMB path: smb://fileserver/downloads/torttube/plugin.video.torttube-$VERSION.zip"
|