pivra

LOW
maintainer onbeskarakterli 0 votes scanned 2026-10-30 19:57:05.223717
View on AUR
Why flagged

Uploaded within the last 14 days with 2 or fewer community votes — little peer review so far.

Triggered rules

Low Few votes, recently uploaded zero_votes_recent

Uploaded within the last 14 days with 2 or fewer community votes — little peer review so far.

PKGBUILD

1# Maintainer: onbeskarakterli <onbeskarakterli@gmail.com>
2# Stable Pivra 0.1.0 release package for Arch Linux.
3# Immutable upstream commit and SHA-256 are pinned in this PKGBUILD.
4pkgname=pivra
5pkgver=0.1.0
6pkgrel=1
7pkgdesc='Native GNOME JPEG/PNG image viewer'
8arch=('x86_64')
9url='https://github.com/onbeskarakterli/Pivra'
10license=('GPL-3.0-only')
11# Dependencies and native build validated for the v0.1.0 Arch release.
12depends=('gtk4>=4.16' 'libadwaita>=1.2' 'glib2' 'gdk-pixbuf2'
13 'gnome-desktop-4' 'glycin' 'bubblewrap' 'libseccomp' 'lcms2'
14 'fontconfig' 'cairo' 'graphene' 'glibc' 'gcc-libs' 'hicolor-icon-theme')
15makedepends=('cargo' 'pkgconf' 'python>=3.11')
16checkdepends=('desktop-file-utils')
17_target="${CARCH}-unknown-linux-gnu"
18_release_commit='18b9bc2e021aeeeb02dc42198db4522a67ed9e1b'
19source=("pivra-$pkgver.tar.gz::https://github.com/onbeskarakterli/Pivra/archive/$_release_commit.tar.gz"
20 'collect-licenses.py')
21sha256sums=('f8a31e5569ead7ae90b4a292c108ddfd77a45bc59327d2af10e88dc6d459cbf9' 'e0bad72c99f4629b0668f59450e53a75022ea746efe57191ab8da34fb5cf1201')
22
23prepare() {
24 export CARGO_HOME="$srcdir/cargo-home"
25 export CARGO_TARGET_DIR="$srcdir/Pivra-$_release_commit/target"
26 cd "$srcdir/Pivra-$_release_commit" || return 1
27 cargo fetch --locked || return 1
28}
29
30build() {
31 export PIVRA_DISTRIBUTION_BUILD=1
32 export CARGO_HOME="$srcdir/cargo-home"
33 export CARGO_TARGET_DIR="$srcdir/Pivra-$_release_commit/target"
34 cd "$srcdir/Pivra-$_release_commit" || return 1
35 pkg-config --atleast-version=4.16 gtk4 || return 1
36 pkg-config --atleast-version=1.2 libadwaita-1 || return 1
37 pkg-config --exists gnome-desktop-4 gio-2.0 gobject-2.0 gdk-pixbuf-2.0 lcms2 libseccomp || return 1
38 # Do not silently use a static LCMS fallback or an SDK override.
39 if [[ -n ${LCMS2_STATIC+x} || -n ${LCMS2_LIB_DIR+x} ]]; then
40 printf '%s\n' 'BLOCKED: LCMS2 overrides must not change the shared-library contract.' >&2
41 return 1
42 fi
43 local flags
44 local -a compiler cppflags cflags ldflags pkg_cflags pkg_libs
45 read -r -a compiler <<< "${CC:-cc}"
46 read -r -a cppflags <<< "${CPPFLAGS:-}"
47 read -r -a cflags <<< "${CFLAGS:-}"
48 read -r -a ldflags <<< "${LDFLAGS:-}"
49 flags=$(pkg-config --cflags gnome-desktop-4 gio-2.0 gobject-2.0 gdk-pixbuf-2.0) || return 1
50 read -r -a pkg_cflags <<< "$flags"
51 flags=$(pkg-config --libs gnome-desktop-4 gio-2.0 gobject-2.0 gdk-pixbuf-2.0) || return 1
52 read -r -a pkg_libs <<< "$flags"
53 mkdir -p "$srcdir/build" || return 1
54 "${compiler[@]}" "${cppflags[@]}" "${cflags[@]}" "${pkg_cflags[@]}" -Wall -Wextra -Werror \
55 native/thumbnail_factory.c -o "$srcdir/build/pivra-thumbnail-factory" \
56 "${ldflags[@]}" "${pkg_libs[@]}" || return 1
57 cargo build --release --locked --offline --target "$_target" --bin pivra || return 1
58 python - "target/$_target/release/pivra" <<'PY' || return 1
59import pathlib
60import sys
61if b'/out/pivra-thumbnail-factory' in pathlib.Path(sys.argv[1]).read_bytes():
62 sys.exit('FAIL: viewer embeds a Cargo OUT_DIR thumbnail-helper path')
63PY
64 test -x "$srcdir/build/pivra-thumbnail-factory" || return 1
65 readelf -d "target/$_target/release/pivra" > "$srcdir/build/pivra.dynamic" || return 1
66 grep -F 'liblcms2.so.2' "$srcdir/build/pivra.dynamic" >/dev/null || return 1
67 grep -F 'libseccomp.so.2' "$srcdir/build/pivra.dynamic" >/dev/null || return 1
68 cargo metadata --locked --offline --format-version 1 > "$srcdir/build/metadata.json" || return 1
69 python "$srcdir/collect-licenses.py" --metadata "$srcdir/build/metadata.json" \
70 --lock Cargo.lock --cargo-home "$CARGO_HOME" \
71 --notices "$srcdir/build/third-party" --sources "$srcdir/build/crate-sources" || return 1
72}
73
74check() {
75 export PIVRA_DISTRIBUTION_BUILD=1
76 export CARGO_HOME="$srcdir/cargo-home"
77 export CARGO_TARGET_DIR="$srcdir/Pivra-$_release_commit/target"
78 cd "$srcdir/Pivra-$_release_commit" || return 1
79 CARGO_INCREMENTAL=0 cargo test --locked --offline --target "$_target" || return 1
80 cargo check --locked --offline --target "$_target" || return 1
81 desktop-file-validate data/io.github.onbeskarakterli.Pivra.desktop || return 1
82}
83
84package() {
85 cd "$srcdir/Pivra-$_release_commit" || return 1
86 install -Dm755 "target/$_target/release/pivra" "$pkgdir/usr/bin/pivra" || return 1
87 install -Dm755 "$srcdir/build/pivra-thumbnail-factory" "$pkgdir/usr/bin/pivra-thumbnail-factory" || return 1
88 install -Dm644 data/io.github.onbeskarakterli.Pivra.desktop \
89 "$pkgdir/usr/share/applications/io.github.onbeskarakterli.Pivra.desktop" || return 1
90 local variant name
91 for variant in scalable symbolic; do
92 name=io.github.onbeskarakterli.Pivra
93 [[ $variant == symbolic ]] && name+=-symbolic
94 install -Dm644 "data/icons/hicolor/$variant/apps/$name.svg" \
95 "$pkgdir/usr/share/icons/hicolor/$variant/apps/$name.svg" || return 1
96 done
97 install -Dm644 LICENSE "$pkgdir/usr/share/licenses/pivra/LICENSE" || return 1
98 install -d "$pkgdir/usr/share/licenses/pivra/third-party" \
99 "$pkgdir/usr/share/doc/pivra/corresponding-source/crates" || return 1
100 cp -r --no-preserve=ownership "$srcdir/build/third-party/." \
101 "$pkgdir/usr/share/licenses/pivra/third-party/" || return 1
102 cp -r --no-preserve=ownership "$srcdir/build/crate-sources/." \
103 "$pkgdir/usr/share/doc/pivra/corresponding-source/crates/" || return 1
104 install -Dm644 "$srcdir/pivra-$pkgver.tar.gz" \
105 "$pkgdir/usr/share/doc/pivra/corresponding-source/pivra-$pkgver.tar.gz" || return 1
106 install -Dm644 "${BASH_SOURCE[0]}" \
107 "$pkgdir/usr/share/doc/pivra/corresponding-source/PKGBUILD" || return 1
108 install -Dm644 "$srcdir/collect-licenses.py" \
109 "$pkgdir/usr/share/doc/pivra/corresponding-source/collect-licenses.py" || return 1
110 local doc
111 for doc in PIVRA_V0.1_RELEASE_NOTES.md PIVRA_V0.1_DEPENDENCY_LICENSE_AUDIT.md; do
112 install -Dm644 "docs/releases/$doc" "$pkgdir/usr/share/doc/pivra/$doc" || return 1
113 done
114}
115

Scan history

Scanned at (UTC)SeverityRules
2026-10-30 19:57:05 Low 1

Report a package

Reports go to the AURWatch maintainer (one person) and are read by hand. No login required.

0 / 4000
Your suggestion