libfprint-sigfm-0078

CLEAN
maintainer rsd 0 votes scanned 2026-10-19 00:03:55.276608
View on AUR

Triggered rules

Clean AI review downgraded a static finding llm_review

The static rules flagged this LOW, but an AI model (qwen/qwen3-235b-a22b-2507) reviewed the full PKGBUILD and judged it CLEAN (confidence 95%): The package builds from pinned git sources on GitHub, includes proper b2sums for verification, and installs a library and a setup tool without executing remote code or introducing unverifiable binaries; the flagged low votes and recent upload are mitigated by transparent, reviewable build process.

1 higher static finding superseded - not the current verdict (shown for transparency)
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: Raul Dias <raul at dias dot com dot br>
2# Contributor: Jan Alexander Steffens (heftig)
3# Contributor: Tom Gundersen
4# Contributor: Thomas Baechler
5# Based on the Arch Linux libfprint PKGBUILD.
6
7pkgname=libfprint-sigfm-0078
8pkgver=1.94.100.r25.gf9c60a2
9pkgrel=3
10pkgdesc="Library for fingerprint readers, with the SIGFM matcher and the Synaptics 06cb:0078 driver"
11url="https://github.com/rsd/fingerprint-06cb-0078"
12arch=(x86_64)
13# The libfprint fork is LGPL-2.1-or-later; this project's setup tool and Python
14# package (synaptics0078) are MIT.
15license=(LGPL-2.1-or-later MIT)
16depends=(
17 libgcc
18 glib2
19 glibc
20 libgudev
21 libgusb
22 openssl
23 pixman
24 # SIGFM matcher, used by the synaptics0078 driver
25 opencv
26 libstdc++
27 # synaptics0078-setup: the interpreter, USB access (calibration), download,
28 # bsdtar (vendor archives) and setpriv (unprivileged extraction)
29 python
30 python-pyusb
31 curl
32 libarchive
33 util-linux
34)
35makedepends=(
36 git
37 glib2-devel
38 gobject-introspection
39 gtk-doc
40 meson
41 python-cairo
42 python-gobject
43 systemd
44)
45checkdepends=(
46 cairo
47 umockdev
48 python-pytest
49)
50# libfprint-git too: Omarchy's fingerprint setup checks `pacman -Q libfprint-git`
51# and would otherwise replace this package with its own libfprint-git.
52provides=(
53 "libfprint=${pkgver%%.r*}"
54 "libfprint-git=${pkgver%%.r*}"
55 libfprint-2.so
56)
57conflicts=(libfprint libfprint-git)
58groups=(fprint)
59# The libfprint fork: upstream 1.94.100 master + the SIGFM series + the
60# synaptics0078 driver, branch sigfm-0078, pinned by commit.
61_repo=https://github.com/rsd/libfprint.git
62_commit=f9c60a25c95b8fcf805812bae1ddb984e2e568d9
63# This project (synaptics0078-setup and the synaptics0078 Python package),
64# pinned by release tag.
65_toolrepo=https://github.com/rsd/fingerprint-06cb-0078.git
66_tooltag=v0.1.0
67source=(
68 "libfprint::git+${_repo}#commit=${_commit}"
69 "fp0078::git+${_toolrepo}#tag=${_tooltag}"
70)
71# b2sums of `git archive` of each pin (makepkg verifies git sources pinned by
72# commit or tag), so a moved tag fails the build.
73b2sums=('040fb63356af23dd30d14cab7c29c02cd64d7b8089c99380875da9b1fa7ee290df09dd06bd9606d682ac8f9b6f4770c139f52d7ca518182d9f984be186653cb6'
74 'b1392843542f4b7e8387f24c2449f02183e04d3e42d1fd80499a554d93c4db70e818e9c8464545f9720bc79f1db518faec83e162e67739abc142ca8f1517c00e')
75install=libfprint-sigfm-0078.install
76
77prepare() {
78 local f
79 for f in synaptics0078/__init__.py packaging/arch/libfprint-sigfm-0078/synaptics0078-setup LICENSE; do
80 if [[ ! -f fp0078/$f ]]; then
81 echo "fp0078 at ${_tooltag} has no $f" >&2
82 return 1
83 fi
84 done
85}
86
87build() {
88 local meson_options=(
89 # Add virtual drivers for integration tests (e.g. in fprintd)
90 -D drivers=all
91
92 -D installed-tests=false
93
94 # synaptics0078_data_dir stays at its default, /var/lib/fprint/synaptics0078,
95 # where synaptics0078-setup installs the per-unit files.
96 )
97
98 arch-meson libfprint build "${meson_options[@]}"
99
100 # Without OpenCV, meson silently drops the synaptics0078 driver from
101 # drivers=all; that build must never ship.
102 if ! grep -qx '#define HAVE_SIGFM 1' build/config.h; then
103 echo "OpenCV not found: HAVE_SIGFM is unset, synaptics0078 would be missing" >&2
104 return 1
105 fi
106
107 meson compile -C build
108}
109
110check() {
111 # makepkg runs this under errexit: a failing step fails the build.
112 _check_meson
113 _check_python
114}
115
116_check_meson() {
117 meson test -C build --print-errorlogs && return 0
118
119 # egis_etu905 fails intermittently on unmodified upstream too (its umockdev
120 # replay times out while cancelling). When it is the ONLY failure, it is
121 # rerun alone, up to 3 times; every attempt stays in the log. Any other
122 # failure, or egis_etu905 failing all 3 reruns, fails the build.
123 local failed
124 failed=$(python3 -c '
125import json, sys
126for line in open(sys.argv[1]):
127 t = json.loads(line)
128 if t["result"] not in ("OK", "SKIP", "EXPECTEDFAIL"):
129 print(t["name"])
130' build/meson-logs/testlog.json)
131 if [[ $failed != *:egis_etu905 || $failed == *$'\n'* ]]; then
132 return 1
133 fi
134 local i
135 for i in 1 2 3; do
136 echo "check: egis_etu905 was the only failure (known upstream flake); rerun $i of 3" >&2
137 meson test -C build --print-errorlogs egis_etu905 && return 0
138 done
139 return 1
140}
141
142# The package and setup tests, from the pinned checkout, with the system
143# interpreter. Tests that need local/b5 or the template skip there: a git
144# checkout has no local/ or proto/data/.
145_check_python() {
146 cd fp0078
147 PYTHONDONTWRITEBYTECODE=1 python -m pytest -q -p no:cacheprovider \
148 synaptics0078/tests tools/test_synaptics0078_setup.py
149}
150
151package() {
152 meson install -C build --destdir "$pkgdir"
153
154 cd fp0078
155 install -Dm755 packaging/arch/libfprint-sigfm-0078/synaptics0078-setup \
156 "$pkgdir/usr/bin/synaptics0078-setup"
157 install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE-synaptics0078"
158
159 # The Python package goes to a private dir (it survives Python minor upgrades,
160 # which site-packages does not without a rebuild), without its tests.
161 local _libdir=/usr/lib/synaptics0078 f
162 while IFS= read -r -d '' f; do
163 install -Dm644 "$f" "$pkgdir$_libdir/$f"
164 done < <(find synaptics0078 -path synaptics0078/tests -prune -o -type f -name '*.py' -print0)
165 # pyc at build time, so pacman owns them (the setup runs with -B). The recorded
166 # source path is the installed one; checked-hash pycs stay valid whatever
167 # mtime makepkg gives the files.
168 python -m compileall -q -f --invalidation-mode checked-hash \
169 -s "$pkgdir" -p / "$pkgdir$_libdir/synaptics0078"
170}
171
172# vim:set sw=2 sts=-1 et:
173

Scan history

Scanned at (UTC)SeverityRules
2026-10-19 00:03:55 Clean 2
2026-10-18 23:23:07 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