Files
proton-stream/packaging/PKGBUILD
T
nvrl dc70cafbb7 chore(version): bump to 1.3.0
Minor. One new client: an iOS 17+ app, a SwiftUI port of the Android one
over the same Rust engine, published as an unsigned .ipa for SideStore and
AltStore. docs/IOS.md lists where iOS cannot follow Android: no
picture-in-picture, links come in through the protonstream:// scheme or
Paste link rather than the share sheet, and downloads run while the app
does.

No change to the Rust crates, the catalog schema or the desktop and Android
clients since 1.2.0.
2026-10-07 01:55:22 +02:00

96 lines
3.4 KiB
Bash

# Maintainer: Nils Pukropp <contact@narl.io>
#
# Local-build PKGBUILD, mirroring ../proton-drive-linux/packaging/PKGBUILD: this
# is NOT a source-fetch package, it compiles the working tree this file lives in.
#
# cd packaging && makepkg -fi
#
# Two things it needs that an ordinary AUR package would not:
#
# * Network, so cargo can fetch crates.io (`--locked`, not `--frozen`).
# * A sibling `../../proton-sdk-rs` checkout, for as long as the workspace
# carries `[patch.crates-io]`. Once proton-sdk 0.3.3 is published and that
# block is removed, the check in build() stops firing and the package
# builds from the registry alone.
pkgname=proton-stream
pkgver=1.3.0
pkgrel=1
pkgdesc="Netflix-style desktop client for Proton Drive public links: browse and stream a share"
arch=('x86_64')
url="https://github.com/narrrl/proton-stream"
license=('MIT')
# mpv carries libmpv.so plus its headers on Arch, so it is both the runtime and
# the build dependency. libsecret is the Secret Service side of the keyring —
# the share fragment and custom password never touch shares.json.
depends=('mpv' 'libsecret' 'webkit2gtk-4.1' 'hicolor-icon-theme')
makedepends=('cargo')
optdepends=('gnome-keyring: credential storage via Secret Service'
'kwallet: credential storage via Secret Service on KDE')
provides=('pstr')
# !lto for the same reason the sibling repo sets it; !debug keeps a 0.1.0 local
# package from also emitting a multi-hundred-MB -debug split.
options=('!lto' '!debug')
# Built in place from the checkout; nothing to fetch or checksum.
source=()
sha256sums=()
# Absolute path to the workspace root (packaging/ lives directly under it).
_workspace="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
pkgver() {
cd "$_workspace"
local v
v=$(grep -m1 '^version' Cargo.toml | cut -d'"' -f2)
printf '%s' "${v:-0.1.0}"
}
build() {
cd "$_workspace"
# The dev-only path patch. Fail early and legibly rather than a hundred lines
# into a cargo resolve error.
if grep -q '^\[patch\.crates-io\]' Cargo.toml && [[ ! -d "$_workspace/../proton-sdk-rs" ]]; then
echo "error: Cargo.toml still carries [patch.crates-io] pointing at ../proton-sdk-rs," >&2
echo " but that checkout is missing. Clone it beside this repo, or drop the" >&2
echo " patch block once proton-sdk 0.3.3 is on crates.io." >&2
return 1
fi
export RUSTUP_TOOLCHAIN=stable
export CARGO_TARGET_DIR="$_workspace/target"
cargo build --release --locked \
--bin proton-stream \
--bin pstr
}
check() {
cd "$_workspace"
export RUSTUP_TOOLCHAIN=stable
export CARGO_TARGET_DIR="$_workspace/target"
# Offline suites only; nothing here needs a share or an account.
# cargo test --workspace --locked
}
package() {
cd "$_workspace"
local rel="target/release"
install -Dm755 "$rel/proton-stream" "$pkgdir/usr/bin/proton-stream"
install -Dm755 "$rel/pstr" "$pkgdir/usr/bin/pstr"
install -Dm644 "packaging/io.narl.proton-stream.desktop" \
"$pkgdir/usr/share/applications/io.narl.proton-stream.desktop"
install -Dm644 "packaging/io.narl.proton-stream.svg" \
"$pkgdir/usr/share/icons/hicolor/scalable/apps/io.narl.proton-stream.svg"
install -Dm644 "README.md" "$pkgdir/usr/share/doc/$pkgname/README.md"
if [[ -f LICENSE ]]; then
install -Dm644 "LICENSE" "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
else
warning "no LICENSE file in the repo root; the package ships without one"
fi
}