Files
DarkRoom/packaging/PKGBUILD
T
dtourolleandClaude Opus 5 16c17c349d Bump pkgrel so makepkg rebuilds instead of reusing the modelless archive
`makepkg -si` reported "A package has already been built, installing existing
package" and installed 0.7.0-1 — the archive from before the models were added,
so the install still had no model and the app still said so. The version had not
changed because the application had not changed; only what the package contains
did, which is precisely what pkgrel exists to signal.

Verified: 0.7.0-2 carries both models at /usr/share/darkroom/models/.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-27 18:14:56 +02:00

65 lines
2.8 KiB
Bash

# Maintainer: Duncan Tourolle <duncan@tourolle.paris>
#
# Builds from the local checkout rather than a release tarball, which is what
# makes `makepkg -si` in this directory install what you are actually working
# on. Swap `source` for a tagged tarball when there is something to release.
pkgname=darkroom
pkgver=0.7.0
# 2: the package gained the face models (docs/faces.md §2.2a). Same version,
# different contents, so makepkg must not reuse the 0.7.0-1 archive.
pkgrel=2
pkgdesc="Non-destructive RAW photo library and editor"
arch=('x86_64')
url="https://gitea.tourolle.paris/dtourolle/DarkRoom"
license=('GPL-3.0-or-later')
# Runtime: Vulkan for wgpu, and a Secret Service implementation for the
# Nextcloud credentials (FR-NC-2) — gnome-keyring or kwallet both provide it.
depends=('vulkan-icd-loader' 'fontconfig' 'libxkbcommon')
makedepends=('cargo' 'git')
optdepends=('gnome-keyring: store Nextcloud credentials'
'kwallet: store Nextcloud credentials')
options=('!lto') # the workspace sets its own LTO in Cargo.toml
_repo="$(cd "${startdir}/.." && pwd)"
build() {
cd "${_repo}"
export RUSTUP_TOOLCHAIN=stable
export CARGO_TARGET_DIR="${_repo}/target"
cargo build --release --locked -p darkroom-desktop
}
package() {
cd "${_repo}"
install -Dm755 "target/release/darkroom-desktop" \
"${pkgdir}/usr/bin/darkroom-desktop"
install -Dm644 "packaging/paris.tourolle.darkroom.desktop" \
"${pkgdir}/usr/share/applications/paris.tourolle.darkroom.desktop"
# The icon's *name* is the contract, not its path: the desktop entry says
# `Icon=paris.tourolle.darkroom` and the compositor resolves that through
# the hicolor theme. Installed under 256x256 because that is the source's
# actual size — lying about it makes scaled-down icons look wrong.
install -Dm644 "ui/dr-ui/ui/app-icon.png" \
"${pkgdir}/usr/share/icons/hicolor/256x256/apps/paris.tourolle.darkroom.png"
install -Dm644 "README.md" "${pkgdir}/usr/share/doc/${pkgname}/README.md"
# The face models, into the last directory the app searches. A pair the
# user placed in their own data directory outranks these, so installing
# them cannot override a deliberate choice of weights.
#
# These live in LFS; a checkout without `git lfs pull` has ~130-byte
# pointers here. Installing one produces a package whose face indexing
# fails inside the graph loader on the user's machine, so refuse instead.
for _m in scrfd_500m_640.onnx arcface_mbf_b1.onnx; do
_src="models/face/${_m}"
if [[ "$(stat -c%s "${_src}")" -lt 100000 ]]; then
echo "error: ${_m} is an LFS pointer, not a model — run: git lfs pull" >&2
return 1
fi
install -Dm644 "${_src}" "${pkgdir}/usr/share/darkroom/models/${_m}"
done
}