mirror of
https://github.com/narrrl/proton-drive-linux.git
synced 2026-11-03 16:41:26 +01:00
Four faults found by reading the journal for issues that were never fixed, tracked as B94-B97 in docs/BUGS.md. A create parked behind a temp-file rename (B70) had no exit but that rename, so 43 uploads sat in the queue for weeks holding their staged bytes. The primary drain worker now sweeps parked creates while the queue is idle: one whose node is gone is discarded, and one older than PARK_EXPIRY_MS that nobody holds open is un-parked rather than dropped, since staged bytes are the only copy of the write. An open node stays parked however old it is. .tmp and .temp leave TRANSIENT_SUFFIXES. The list served two mechanisms with different consequences: ignoring a name during mirror reconcile is reversible, parking a create is not, and a Takeout index.tmp is a final name that nothing will ever rename. Staged blobs that match no queued op and name no node were kept forever and warned about once per blob per mount (95 blobs, ~445 MiB, oldest two months). Blobs past STAGING_ORPHAN_RETAIN are retired; the rest are one aggregated warning. Refresh control requests now run one per scope. Every scope is individually cheap, but duplicates contend for the database lock the running refresh holds, which left five in flight for twenty-three minutes. request_kind names the scope so the report says which view wedged. The photo metadata pass also stops at shutdown instead of running into the cancelled runtime and logging one "skipping undecryptable photo" per node.
78 lines
2.9 KiB
Bash
78 lines
2.9 KiB
Bash
# Maintainer: Nils Pukropp <contact@narl.io>
|
|
#
|
|
# Local-build PKGBUILD. Builds the proton-drive-linux workspace from the
|
|
# checkout this file lives in: this is NOT a source-fetch package, it compiles
|
|
# the working tree in place. The Proton SDK is unpublished and comes from its
|
|
# GitHub repo (pinned by Cargo.lock), so the build needs network access — no
|
|
# sibling checkout required any more.
|
|
#
|
|
# Build + install: cd packaging && makepkg -fi
|
|
|
|
pkgname=proton-drive-linux
|
|
pkgver=1.11.1
|
|
pkgrel=1
|
|
pkgdesc="Unofficial Proton Drive client for Linux: files-on-demand FUSE mount, CLI, GTK4 app + tray"
|
|
arch=('x86_64')
|
|
url="https://github.com/narrrl/proton-drive-linux"
|
|
license=('MIT')
|
|
depends=('fuse3' 'gtk4' 'libadwaita' 'webkitgtk-6.0' 'perl-image-exiftool')
|
|
makedepends=('cargo' 'git')
|
|
provides=('pdfs')
|
|
# Files-on-demand mount + keyring need these at runtime.
|
|
optdepends=('gnome-keyring: credential storage via Secret Service'
|
|
'xdg-utils: "Open folder" action from the tray'
|
|
'fzf: live search-as-you-type launcher (pdfs-prompt --fzf)'
|
|
'foot: terminal for pdfs-prompt --fzf started from a keybinding')
|
|
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"
|
|
export RUSTUP_TOOLCHAIN=stable
|
|
export CARGO_TARGET_DIR="$_workspace/target"
|
|
# `--locked` not `--frozen`: the lock is authoritative, but cargo must still be
|
|
# allowed to fetch the git-sourced SDK.
|
|
cargo build --release --locked \
|
|
--bin pdfs \
|
|
--bin pdfs-tray \
|
|
--bin pdfs-app \
|
|
--bin pdfs-prompt
|
|
}
|
|
|
|
package() {
|
|
cd "$_workspace"
|
|
local rel="target/release"
|
|
|
|
install -Dm755 "$rel/pdfs" "$pkgdir/usr/bin/pdfs"
|
|
install -Dm755 "$rel/pdfs-tray" "$pkgdir/usr/bin/pdfs-tray"
|
|
install -Dm755 "$rel/pdfs-app" "$pkgdir/usr/bin/pdfs-app"
|
|
install -Dm755 "$rel/pdfs-prompt" "$pkgdir/usr/bin/pdfs-prompt"
|
|
|
|
install -Dm644 "packaging/io.narl.proton-drive-linux.desktop" \
|
|
"$pkgdir/usr/share/applications/io.narl.proton-drive-linux.desktop"
|
|
install -Dm644 "packaging/io.narl.proton-drive-linux-tray.desktop" \
|
|
"$pkgdir/etc/xdg/autostart/io.narl.proton-drive-linux-tray.desktop"
|
|
install -Dm644 "packaging/io.narl.proton-drive-linux.svg" \
|
|
"$pkgdir/usr/share/icons/hicolor/scalable/apps/io.narl.proton-drive-linux.svg"
|
|
|
|
# systemd user service that runs the auto-mount daemon. Enabled per-user by
|
|
# the GUI on login (`systemctl --user enable --now proton-drive.service`).
|
|
install -Dm644 "packaging/proton-drive.service" \
|
|
"$pkgdir/usr/lib/systemd/user/proton-drive.service"
|
|
|
|
install -Dm644 "LICENSE" "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
|
|
}
|