`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>
65 lines
2.8 KiB
Bash
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
|
|
}
|