irlume-git
LOW
maintainer archledger
0 votes
scanned 2026-10-19 19:26:12.253336
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: Wisbendji Fimerlus <archledger236@gmail.com>
2
# Generated from packaging/arch/PKGBUILD by scripts/arch-git-pkgbuild.py:
3
# edit that recipe, then run the script (CI checks this file is current).
4
# The nightly channel (docs/adr/0037-nightly-channel.md): builds main.
5
pkgbase=irlume-git
6
pkgname=(irlume-git irlume-kcm-git)
7
pkgver=0.15.0
8
pkgrel=1
9
pkgdesc="Face authentication for Linux: IR cameras, consent-gated, photo-spoofing resistant, TPM-sealed, password always works (nightly: builds main)"
10
arch=('x86_64')
11
url="https://github.com/archledger/irlume"
12
license=('GPL-3.0-or-later')
13
# Arch ships onnxruntime 1.24+ but SPLIT into onnxruntime-cpu / -cuda / -rocm,
14
# each Provides=onnxruntime. Depend on the virtual 'onnxruntime' so any variant
15
# the user has satisfies it (no conflict); a fresh install prompts to pick one,
16
# choose onnxruntime-cpu unless you want GPU execution providers.
17
depends=('onnxruntime' 'tpm2-tss' 'pam' 'polkit' 'dbus')
18
# clang: v4l2-sys-mit generates its V4L2 bindings with bindgen, which needs
19
# libclang at build time; without it makepkg fails on a clean system.
20
makedepends=('git' 'rust' 'cargo' 'gcc' 'clang' 'cmake' 'extra-cmake-modules' 'qt6-base' 'qt6-declarative' 'kcmutils' 'kcoreaddons' 'kio')
21
# The code comes from main over HTTPS. It is not signature-checked: commits
22
# on main are GitHub's squash merges, signed by GitHub's web-flow key, not
23
# by the release key the release recipe checks tags with (ADR-0037).
24
# The ONNX model weights are NOT in the
25
# tag; they are hosted as release assets on the version-independent `models-v1`
26
# release (kept out of Git LFS so builds do not consume the account's LFS
27
# bandwidth quota). makepkg downloads and checksum-verifies them as extra
28
# sources here, and prepare() stages them into the build tree.
29
source=("irlume::git+https://github.com/archledger/irlume.git#branch=main"
30
"glintr100.onnx::https://github.com/archledger/irlume/releases/download/models-v1/glintr100.onnx"
31
"face_detection_yunet_2023mar.onnx::https://github.com/archledger/irlume/releases/download/models-v1/face_detection_yunet_2023mar.onnx"
32
"face_landmark.onnx::https://github.com/archledger/irlume/releases/download/models-v1/face_landmark.onnx"
33
"blaze_face_short_range.onnx::https://github.com/archledger/irlume/releases/download/models-v1/blaze_face_short_range.onnx"
34
"face_landmarks_detector.tflite::https://github.com/archledger/irlume/releases/download/models-v1/face_landmarks_detector.tflite"
35
"liveness_vit.onnx::https://github.com/archledger/irlume/releases/download/models-v1/liveness_vit.onnx"
36
"flir.onnx::https://github.com/archledger/irlume/releases/download/models-v1/flir.onnx"
37
# TFLite C runtime (#295): no current Arch/AUR system package exists
38
# (AUR libtensorflow-lite is 2.4-era), so the pinned irlume-built
39
# artifact bundles at the daemon resolver's first probed path.
40
"libtensorflowlite_c-v2.19.0-linux-x64.tar.gz::https://github.com/archledger/irlume/releases/download/tflite-runtime-v2.19.0/libtensorflowlite_c-v2.19.0-linux-x64.tar.gz")
41
sha256sums=('SKIP'
42
'a7933ea5330113b01c9b60351d8f4c33003f145d8470ac5f0e52ee2effe25c60'
43
'8f2383e4dd3cfbb4553ea8718107fc0423210dc964f9f4280604804ed2552fa4'
44
'821683be088447839638f79d64268bd501bdb72e5d9e262ec981c7e252956caf'
45
'c5453678015f6289c1d77bda88a8ba9c87574f01de1a05ba1909b9a7e08b237b'
46
'c7d54204ce0448474c7f3fa9af494787c0965cbdd6f20fc72867e43046bd43d5'
47
'c7f8a6f3054b11f9719f5e24d37ec227721608fff8b90373c6c3e7659864161c'
48
'df80cea7228b92562692e56aac965d35766c77399159798c552fb3c77b410c72'
49
'dd3abcdbc0f35a9466a682358955ac3826a9a81590cd6b8abcf98548e17bd311')
50
51
# The last release tag, the commits since it and the commit, as the Arch VCS
52
# package guidelines spell it: v0.15.0-139-g3c162b83 -> 0.15.0.r139.g3c162b83,
53
# which vercmp puts after 0.15.0 and before 0.15.1 (ADR-0037 section 2).
54
pkgver() {
55
cd "$srcdir/irlume"
56
git describe --long --tags --match 'v[0-9]*' | sed 's/^v//;s/\([^-]*-g\)/r\1/;s/-/./g'
57
}
58
59
prepare() {
60
cd "$srcdir/irlume"
61
# Stage the release-hosted weights (makepkg already downloaded and verified
62
# them from the sources above) into the tree the build expects.
63
mkdir -p models
64
cp "$srcdir"/glintr100.onnx "$srcdir"/face_detection_yunet_2023mar.onnx \
65
"$srcdir"/face_landmark.onnx "$srcdir"/blaze_face_short_range.onnx \
66
"$srcdir"/face_landmarks_detector.tflite "$srcdir"/liveness_vit.onnx \
67
"$srcdir"/flir.onnx models/
68
}
69
70
build() {
71
cd "$srcdir/irlume"
72
cargo build --release --locked
73
# Plasma System Settings module (split package irlume-kcm).
74
cmake -S kcm -B kcm-build
75
cmake --build kcm-build
76
}
77
78
package_irlume-git() {
79
provides=("irlume=${pkgver}")
80
conflicts=('irlume')
81
optdepends=('fprintd: fingerprint companion factor')
82
backup=('etc/pam.d/irlume-retry-reset')
83
# irlume's alone: set globally, the KCM package carried the hooks too, and
84
# removing only irlume-kcm ran pre_remove, which stops and disables
85
# irlumed while irlume stays installed.
86
install=irlume.install
87
cd "$srcdir/irlume"
88
install -Dm0755 target/release/irlumed "$pkgdir/usr/bin/irlumed"
89
install -Dm0755 target/release/irlume "$pkgdir/usr/bin/irlume"
90
install -Dm0644 packaging/desktop/io.github.archledger.Irlume.desktop "$pkgdir/usr/share/applications/io.github.archledger.Irlume.desktop"
91
install -Dm0644 packaging/desktop/io.github.archledger.Irlume.svg "$pkgdir/usr/share/icons/hicolor/scalable/apps/io.github.archledger.Irlume.svg"
92
install -Dm0644 target/release/libpam_irlume.so "$pkgdir/usr/lib/security/pam_irlume.so"
93
install -Dm0644 target/release/libpam_irlume_view.so "$pkgdir/usr/lib/security/pam_irlume_view.so"
94
# KDE wallet handoff helper. Not in /usr/bin: it is not a command a user
95
# runs, it takes a secret on stdin, and it is only meaningful inside a PAM
96
# transaction.
97
install -Dm0755 target/release/irlume-kwallet-init "$pkgdir/usr/libexec/irlume/irlume-kwallet-init"
98
install -Dm0755 target/release/irlume-gkr-unlock "$pkgdir/usr/libexec/irlume/irlume-gkr-unlock"
99
install -Dm0755 target/release/irlume-password-verify "$pkgdir/usr/libexec/irlume-password-verify"
100
install -Dm0644 packaging/pam/irlume-retry-reset "$pkgdir/etc/pam.d/irlume-retry-reset"
101
# One line per model, deliberately not a loop over basenames. The loop that
102
# used to be here was keyed on ".onnx", so the mesh model could not join it
103
# and was simply forgotten: the unit pointed IRLUME_MESH_MODEL at a file
104
# this package never shipped (#360). Being absent is silent, because
105
# Engine::with_mesh treats a missing path as a no-op and returns Ok, so the
106
# daemon starts but BlazeFace rescue alignment stops working. Spelled out,
107
# each model is one line to add and
108
# check-packaging-parity.sh can see every name.
109
install -Dm0644 models/glintr100.onnx \
110
"$pkgdir/usr/share/irlume/models/glintr100.onnx"
111
install -Dm0644 models/face_detection_yunet_2023mar.onnx \
112
"$pkgdir/usr/share/irlume/models/face_detection_yunet_2023mar.onnx"
113
install -Dm0644 models/face_landmark.onnx \
114
"$pkgdir/usr/share/irlume/models/face_landmark.onnx"
115
install -Dm0644 models/blaze_face_short_range.onnx \
116
"$pkgdir/usr/share/irlume/models/blaze_face_short_range.onnx"
117
install -Dm0644 models/face_landmarks_detector.tflite \
118
"$pkgdir/usr/share/irlume/models/face_landmarks_detector.tflite"
119
install -Dm0644 models/liveness_vit.onnx \
120
"$pkgdir/usr/share/irlume/models/liveness_vit.onnx"
121
install -Dm0644 models/flir.onnx \
122
"$pkgdir/usr/share/irlume/models/flir.onnx"
123
install -Dm0755 "$srcdir/libtensorflowlite_c-v2.19.0-linux-x64/lib/libtensorflowlite_c.so" \
124
"$pkgdir/usr/share/irlume/tflite/libtensorflowlite_c.so"
125
install -Dm0644 "$srcdir/libtensorflowlite_c-v2.19.0-linux-x64/LICENSE.tensorflow" \
126
"$pkgdir/usr/share/irlume/tflite/LICENSE.tensorflow"
127
install -Dm0644 "$srcdir/libtensorflowlite_c-v2.19.0-linux-x64/PROVENANCE" \
128
"$pkgdir/usr/share/irlume/tflite/PROVENANCE"
129
install -Dm0644 "$srcdir/irlume/packaging/licenses/THIRD-PARTY-NOTICES.tflite" \
130
"$pkgdir/usr/share/irlume/tflite/THIRD-PARTY-NOTICES"
131
install -Dm0644 packaging/polkit/org.irlume.enroll.policy "$pkgdir/usr/share/polkit-1/actions/org.irlume.enroll.policy"
132
install -Dm0644 packaging/polkit/org.irlume.recovery-manage.policy "$pkgdir/usr/share/polkit-1/actions/org.irlume.recovery-manage.policy"
133
install -Dm0644 packaging/systemd/irlumed.service "$pkgdir/usr/lib/systemd/system/irlumed.service"
134
install -Dm0644 packaging/systemd/irlumed.socket "$pkgdir/usr/lib/systemd/system/irlumed.socket"
135
# Self-heal: re-applies irlume's greeter PAM lines if a distro update strips
136
# them. No-op until `irlume login enable` writes its marker.
137
install -Dm0644 packaging/systemd/irlume-reconcile.path "$pkgdir/usr/lib/systemd/system/irlume-reconcile.path"
138
install -Dm0644 packaging/systemd/irlume-reconcile.service "$pkgdir/usr/lib/systemd/system/irlume-reconcile.service"
139
install -Dm0644 packaging/systemd/irlume-reconcile.timer "$pkgdir/usr/lib/systemd/system/irlume-reconcile.timer"
140
install -Dm0644 packaging/systemd/irlume-lightdm-prepare.service "$pkgdir/usr/lib/systemd/system/irlume-lightdm-prepare.service"
141
install -Dm0644 packaging/systemd/irlume-lightdm-refresh.service "$pkgdir/usr/lib/systemd/system/irlume-lightdm-refresh.service"
142
install -Dm0644 packaging/systemd/irlume-lightdm-refresh.path "$pkgdir/usr/lib/systemd/system/irlume-lightdm-refresh.path"
143
install -Dm0644 packaging/systemd/irlume-lightdm-refresh.timer "$pkgdir/usr/lib/systemd/system/irlume-lightdm-refresh.timer"
144
install -Dm0644 packaging/lightdm/50-irlume-pam.conf "$pkgdir/usr/lib/systemd/system/lightdm.service.d/50-irlume-pam.conf"
145
# tmpfiles.d: the setgid root:video lock directory for the IR-emitter
146
# exclusion locks (#542). The daemon's bounding set has no CAP_CHOWN, so
147
# the group must be inherited at creation, not corrected in-process.
148
# irlume.install applies it before any daemon start.
149
install -Dm0644 packaging/tmpfiles.d/irlume.conf "$pkgdir/usr/lib/tmpfiles.d/irlume.conf"
150
# udev: descriptor-attested YUYV IR nodes without illumination records lose
151
# the seat-user uaccess tag (#1069, ADR-0031 section 4); applies at the
152
# next plug or boot.
153
install -Dm0644 packaging/udev/72-irlume-ir-nodes.rules "$pkgdir/usr/lib/udev/rules.d/72-irlume-ir-nodes.rules"
154
# AppArmor profile for the daemon. Arch does not run AppArmor by default, so
155
# it sits inert unless the user boots with `lsm=...,apparmor`; irlume.install
156
# loads it only when apparmor_parser is present. The profile confines the
157
# /usr/bin/irlumed binary (same path Arch installs to) and already covers the
158
# system onnxruntime under /usr/lib, so no Arch-specific variant is needed.
159
install -Dm0644 packaging/apparmor/usr.bin.irlumed "$pkgdir/etc/apparmor.d/usr.bin.irlumed"
160
install -Dm0644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
161
install -Dm0644 README.md "$pkgdir/usr/share/doc/$pkgname/README.md"
162
# The machine-API contract, beside the engine that implements it: a consumer
163
# validating our JSON should never have to guess which schema this build speaks.
164
install -Dm0644 schemas/machine-api-v1.schema.json "$pkgdir/usr/share/irlume/schemas/machine-api-v1.schema.json"
165
install -Dm0644 docs/MACHINE-API.md "$pkgdir/usr/share/doc/$pkgname/MACHINE-API.md"
166
install -Dm0644 docs/INTEGRATION.md "$pkgdir/usr/share/doc/$pkgname/INTEGRATION.md"
167
}
168
169
package_irlume-kcm-git() {
170
pkgdesc="Plasma System Settings module for irlume: read-only status, health and launch actions (nightly: builds main)"
171
depends=("irlume-git=${pkgver}" 'qt6-declarative' 'kcmutils' 'kio' 'kirigami')
172
provides=("irlume-kcm=${pkgver}")
173
conflicts=('irlume-kcm')
174
cd "$srcdir/irlume"
175
DESTDIR="$pkgdir" cmake --install kcm-build
176
}
177
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-10-19 19:26:12 | Low | 1 |