plico

LOW
maintainer gradia64 0 votes scanned 2026-10-20 09:27:54.737837
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: gradia <gradia@disroot.org>
2
3pkgname=plico
4pkgver=0.1.4
5pkgrel=1
6pkgdesc="Editor PDF nativo per Linux: pagine, cancellazione vera, moduli, OCR, firma (PySide6/Qt)"
7arch=('any')
8url="https://github.com/gradia64/Plico"
9license=('GPL-3.0-or-later')
10# Tutto dai repository ufficiali. pyHanko e le sue due dipendenze che Arch
11# non ha (pyhanko-certvalidator, uritools) sono Python puro e vengono incluse
12# in /usr/share/plico/vendor, fissate per SHA-256 qui sotto: la firma PAdES
13# funziona senza pacchetti AUR di terzi.
14depends=(
15 'python' 'pyside6' 'qt6-svg' 'hicolor-icon-theme'
16 # il plugin TIFF di Qt (scansioni .tif in «Crea da immagini» e «Unisci»)
17 'qt6-imageformats'
18 'python-pymupdf' 'python-pikepdf'
19 # dipendenze di pyHanko e pyhanko-certvalidator
20 'python-asn1crypto' 'python-tzlocal' 'python-aiohttp' 'python-cryptography'
21 'python-lxml' 'python-oscrypto' 'python-certifi'
22)
23makedepends=('git' 'qt6-tools')
24checkdepends=('python-pytest' 'ttf-dejavu')
25# Tesseract è dentro MuPDF (python-pymupdf): l'OCR vuole solo i dati di lingua
26optdepends=(
27 'tesseract-data-ita: OCR dei documenti in italiano'
28 'tesseract-data-eng: OCR dei documenti in inglese'
29 'tesseract-data-fra: OCR dei documenti in francese'
30 'tesseract-data-deu: OCR dei documenti in tedesco'
31 'tesseract-data-spa: OCR dei documenti in spagnolo'
32)
33_pyhanko=pyhanko-0.37.0-py3-none-any.whl
34_certvalidator=pyhanko_certvalidator-0.32.1-py3-none-any.whl
35_uritools=uritools-6.1.3-py3-none-any.whl
36# Il tag firmato dal maintainer: con «?signed» makepkg verifica la firma del
37# tag annotato e la accetta solo da una chiave in validpgpkeys. Il prefisso
38# «$pkgname::» fissa la cartella del clone in $srcdir/plico.
39source=(
40 "$pkgname::git+$url.git#tag=v$pkgver?signed"
41 "https://files.pythonhosted.org/packages/1c/6e/e6dfe44b6669574cf37f37efbe67cc969cb69e27620ac5e5ff7b45bab607/$_pyhanko"
42 "https://files.pythonhosted.org/packages/f4/49/81f92016547077d004a883864da9148e725741f365064a1c9dfe5558f49a/$_certvalidator"
43 "https://files.pythonhosted.org/packages/ac/76/e9bb35862bcc5b82218d2c017b1eacdcfeb3ba46ce0c0ca8ffc4db80ddbe/$_uritools"
44)
45# le wheel sono zip: makepkg non le scompatta, lo fa prepare() nella cartella giusta
46noextract=("$_pyhanko" "$_certvalidator" "$_uritools")
47# SKIP per il sorgente git: lo garantisce la firma del tag
48sha256sums=('SKIP'
49 '79046d8057edec5fcc61aa66dc1041262f5248eec473c33a89905a0a661eed05'
50 '76100cdda13bd085beaa94d4b9080fe6f4ee67248976ec9a19c4d58642558a2b'
51 '136f113e76e53f85bf2d9cce0c3d40ceec775d0409e7d6de9b28f046a7d42838')
52# Impronta della primaria: makepkg accetta anche le firme delle sue
53# sottochiavi, quindi una rotazione delle sottochiavi non cambia questa riga.
54validpgpkeys=('184307C7A1585AFAD7F09DF6EBC8B4A0FFD5B91F') # gradia (Plico release key)
55
56prepare() {
57 rm -rf vendor
58 for wheel in "$_pyhanko" "$_certvalidator" "$_uritools"; do
59 python -m zipfile -e "$wheel" vendor
60 done
61}
62
63build() {
64 cd "$pkgname"
65 # i cataloghi: lrelease sta in qt6-tools, che serve solo per costruire
66 local lrelease=/usr/lib/qt6/bin/lrelease
67 for ts in src/plico/translations/*.ts; do
68 "$lrelease" -silent "$ts" -qm "${ts%.ts}.qm"
69 done
70}
71
72check() {
73 cd "$pkgname"
74 QT_QPA_PLATFORM=offscreen PYTHONPATH="$PWD/src:$srcdir/vendor" \
75 python -m pytest -q -p no:cacheprovider tests
76}
77
78package() {
79 cd "$pkgname"
80
81 install -d "$pkgdir/usr/share/plico"
82 cp -r src/plico "$pkgdir/usr/share/plico/"
83 rm -f "$pkgdir"/usr/share/plico/plico/translations/*.ts
84 cp -r "$srcdir/vendor" "$pkgdir/usr/share/plico/vendor"
85 find "$pkgdir/usr/share/plico" -type d -name __pycache__ -prune -exec rm -rf {} +
86 install -Dm644 packaging/common/launcher.py "$pkgdir/usr/share/plico/launcher.py"
87 python -m compileall -q -s "$pkgdir" -p / "$pkgdir/usr/share/plico"
88
89 # vendor/ nel PYTHONPATH: dopo la cartella di launcher.py (sys.path[0]),
90 # prima dei pacchetti di sistema. Qui e non in launcher.py, perché il
91 # launcher viene dal tag, e un tag vecchio non sa di vendor/
92 install -d "$pkgdir/usr/bin"
93 cat > "$pkgdir/usr/bin/plico" <<'SH'
94#!/bin/sh
95PYTHONPATH="/usr/share/plico/vendor${PYTHONPATH:+:$PYTHONPATH}"
96export PYTHONPATH
97exec /usr/bin/python3 /usr/share/plico/launcher.py "$@"
98SH
99 chmod 755 "$pkgdir/usr/bin/plico"
100
101 install -Dm644 flatpak/io.github.gradia64.plico.desktop \
102 "$pkgdir/usr/share/applications/io.github.gradia64.plico.desktop"
103 install -Dm644 flatpak/io.github.gradia64.plico.svg \
104 "$pkgdir/usr/share/icons/hicolor/scalable/apps/io.github.gradia64.plico.svg"
105 install -Dm644 flatpak/io.github.gradia64.plico.metainfo.xml \
106 "$pkgdir/usr/share/metainfo/io.github.gradia64.plico.metainfo.xml"
107 install -Dm644 README.md "$pkgdir/usr/share/doc/$pkgname/README.md"
108}
109

Scan history

Scanned at (UTC)SeverityRules
2026-10-20 09:27:54 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