mirror of
https://github.com/narrrl/proton-stream.git
synced 2026-11-03 16:41:26 +01:00
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.
96 lines
3.4 KiB
Bash
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
|
|
}
|