Publish Documentation / Build & publish docs to gitea-pages (push) Canceled after 0s
🏗️ Build and Test JellyTau / Run Tests (push) Skipped
🏗️ Build and Test JellyTau / Android Compile Check (push) Skipped
🏗️ Build and Test JellyTau / Supply Chain (push) Failing after 27s
Traceability Validation / Check Requirement Traces (push) Successful in 12s
Build & Release / Run Tests (push) Successful in 18m0s
Build & Release / Build Linux (push) Failing after 17m37s
Build & Release / Build Windows (push) Successful in 15m36s
Build & Release / Build Android (push) Successful in 31m6s
Build & Release / Create Release (push) Skipped
Two user-visible features -- the app can update itself, and it can hand you a redacted diagnostics bundle -- plus the supply-chain, release integrity and build work behind them. A minor bump rather than a patch, matching how v0.9.0 was cut off v0.8.2 for a single new user requirement. This one carries two (UR-077, UR-078), both with UI in Settings. The CHANGELOG entry is the release body now: build-release.yml publishes the `## v0.10.0` section and fails if it is missing, instead of the fixed block of install instructions that every release from v0.0.1 to v0.9.1 carried verbatim.
96 lines
3.8 KiB
Bash
96 lines
3.8 KiB
Bash
# Maintainer: Duncan Tourolle <duncan@tourolle.paris>
|
|
#
|
|
# JellyTau — a cross-platform Jellyfin client (Tauri + SvelteKit).
|
|
#
|
|
# This PKGBUILD builds from the local source tree by default (see the `dev`
|
|
# convenience below), which is what scripts/build-arch.sh uses inside the Arch
|
|
# Docker stage. For AUR distribution, replace the `source=()` line with a release
|
|
# tarball/VCS URL and drop the local-copy prepare() step.
|
|
|
|
pkgname=jellytau
|
|
pkgver=0.10.0
|
|
pkgrel=1
|
|
pkgdesc="A cross-platform Jellyfin client"
|
|
arch=('x86_64')
|
|
url="https://gitea.tourolle.paris/dtourolle/jellytau"
|
|
license=('MIT')
|
|
# Runtime: libmpv for audio, webkit2gtk for the webview + HTML5 transcoded video.
|
|
depends=('webkit2gtk-4.1' 'mpv' 'gtk3' 'libayatana-appindicator')
|
|
makedepends=('rust' 'cargo' 'bun' 'nodejs' 'pkgconf' 'libsoup3')
|
|
options=('!strip' '!lto')
|
|
|
|
# Populated from the working tree by scripts/build-arch.sh (SRC env var).
|
|
_srcdir="${JELLYTAU_SRC:-$startdir/../..}"
|
|
|
|
build() {
|
|
cd "$_srcdir"
|
|
export CARGO_HOME="${CARGO_HOME:-$srcdir/cargo-home}"
|
|
bun install --frozen-lockfile || bun install
|
|
bun run build
|
|
# Only the raw binary is needed; packaging is done in package() below so we
|
|
# control the Arch filesystem layout ourselves rather than via tauri-bundler.
|
|
#
|
|
# 🔴 `tauri/custom-protocol` is not optional. `tauri build` passes it for you;
|
|
# a bare `cargo build` does not, and without it Tauri loads the frontend from
|
|
# `devUrl` rather than the assets embedded from `frontendDist`. The result
|
|
# builds and installs cleanly and then cannot load its own UI. check() guards
|
|
# this.
|
|
(cd src-tauri && cargo build --release --locked --features tauri/custom-protocol)
|
|
}
|
|
|
|
check() {
|
|
cd "$_srcdir"
|
|
|
|
# A Tauri binary built without `custom-protocol` does not embed the frontend;
|
|
# it serves it from `devUrl` (http://localhost:1420) instead. It compiles,
|
|
# links and installs perfectly, then launches into "Could not connect to
|
|
# localhost: Connection refused" — which is what this package did for its
|
|
# entire existence, because `tauri build` adds that feature for you and a bare
|
|
# `cargo build` does not.
|
|
#
|
|
# Test for the *assets*, not for the dev URL: `devUrl` is part of the config
|
|
# blob that generate_context!() embeds either way, so its presence proves
|
|
# nothing. A content-hashed filename from the vite build can only be in the
|
|
# binary if the bundle was embedded — the with-feature binary is ~400 KB
|
|
# larger for exactly this reason.
|
|
local _binary="src-tauri/target/release/jellytau"
|
|
local _asset
|
|
_asset="$(basename "$(ls -1 build/_app/immutable/entry/*.js | head -n1)")"
|
|
|
|
if [ -z "$_asset" ]; then
|
|
echo "==> ERROR: no frontend build found — 'bun run build' did not produce build/_app." >&2
|
|
return 1
|
|
fi
|
|
|
|
if ! grep -qa "$_asset" "$_binary"; then
|
|
echo "==> ERROR: the frontend bundle is not embedded in the binary." >&2
|
|
echo " Build with --features tauri/custom-protocol, or the packaged app" >&2
|
|
echo " will start up unable to load its own UI." >&2
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
package() {
|
|
cd "$_srcdir"
|
|
|
|
install -Dm755 "src-tauri/target/release/jellytau" \
|
|
"$pkgdir/usr/bin/jellytau"
|
|
|
|
# Desktop entry
|
|
install -Dm644 "packaging/arch/jellytau.desktop" \
|
|
"$pkgdir/usr/share/applications/jellytau.desktop"
|
|
|
|
# MIT is not in /usr/share/licenses/common, so Arch packaging requires the
|
|
# licence text to ship with the package.
|
|
install -Dm644 "LICENSE" \
|
|
"$pkgdir/usr/share/licenses/$pkgname/LICENSE"
|
|
|
|
# Icons (hicolor)
|
|
install -Dm644 "src-tauri/icons/32x32.png" \
|
|
"$pkgdir/usr/share/icons/hicolor/32x32/apps/jellytau.png"
|
|
install -Dm644 "src-tauri/icons/128x128.png" \
|
|
"$pkgdir/usr/share/icons/hicolor/128x128/apps/jellytau.png"
|
|
install -Dm644 "src-tauri/icons/128x128@2x.png" \
|
|
"$pkgdir/usr/share/icons/hicolor/256x256/apps/jellytau.png"
|
|
}
|