summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: fda579d79a970d6ba241aaf7ade35395f6dbcd6d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# rubrika — Firma digital de PDFs con DNIe
# https://github.com/vrieraj/rubrika

pkgname=rubrika
pkgver=1.0.1
pkgrel=1
pkgdesc="Firma digital de PDFs con DNIe o certificado .p12 — interfaz nativa KDE"
arch=('any')
url='https://github.com/vrieraj/rubrika'
license=('GPL3')
depends=(
    # ── Sistema ──────────────────────────────────────────────────────────────
    'opensc'                    # librería PKCS#11 para DNIe (/usr/lib/opensc-pkcs11.so)
    'ccid'                      # driver para lectores de tarjeta USB
    'pcsclite'                  # demonio PC/SC para comunicación con el lector

    # ── Certificados (nuestro paquete) ────────────────────────────────────────
    'rubrika-certificates'

    # ── Python — repos oficiales ──────────────────────────────────────────────
    'python'
    'python-pymupdf'            # renderizado de páginas PDF como imágenes
    'python-python-pkcs11'      # interfaz PKCS#11 para el DNIe
    'python-pillow'             # procesado de imagen para la rúbrica
    'pyside6'                   # interfaz gráfica nativa Qt/KDE
    'python-asn1crypto'         # extracción del nombre del certificado X.509
    'python-numpy'              # conversión de pixels en la rúbrica

    # ── Python — AUR ──────────────────────────────────────────────────────────
    'python-pyhanko'            # motor de firma PDF/PAdES
    # python-pyhanko-certvalidator se instala como dependencia de python-pyhanko
)
optdepends=(
    'breeze: tema Breeze nativo de KDE'
    'xdg-utils: abrir el PDF firmado desde la aplicación'
)
install=rubrika.install
source=(
    "rubrika-${pkgver}.tar.gz::https://github.com/vrieraj/rubrika/archive/refs/tags/v${pkgver}.tar.gz"
)
sha256sums=('b9638d2f39806a9926bf7f1bf8ed0d46ed8aa8b7ad8ce2ac6f47280db97e88dc')

package() {
    cd "rubrika-${pkgver}"

    # ── Archivos principales ──────────────────────────────────────────────────
    install -Dm644 main.py  "${pkgdir}/usr/share/rubrika/main.py"
    install -Dm644 utils.py "${pkgdir}/usr/share/rubrika/utils.py"

    # ── Wrapper ejecutable ────────────────────────────────────────────────────
    install -Dm755 /dev/stdin "${pkgdir}/usr/bin/rubrika" << 'EOF'
#!/bin/bash
VENDOR_DIR="${HOME}/.local/share/rubrika/vendor"
mkdir -p "${VENDOR_DIR}"
export PYTHONPATH="${VENDOR_DIR}:${PYTHONPATH}"

if ! python -c "import pyhanko" 2>/dev/null; then
    echo "Instalando pyhanko en ${VENDOR_DIR}..."
    pip install pyhanko --target="${VENDOR_DIR}" --quiet
fi

exec python /usr/share/rubrika/main.py "$@"
EOF

    # ── Entrada en el menú de aplicaciones ───────────────────────────────────
    install -Dm644 rubrika.desktop \
        "${pkgdir}/usr/share/applications/rubrika.desktop"

    # ── Icono ─────────────────────────────────────────────────────────────────
    install -Dm644 rubrika.svg \
        "${pkgdir}/usr/share/icons/hicolor/scalable/apps/rubrika.svg"

    # ── Documentación ─────────────────────────────────────────────────────────
    install -Dm644 README.md \
        "${pkgdir}/usr/share/doc/rubrika/README.md"
    install -Dm644 LICENSE \
        "${pkgdir}/usr/share/licenses/rubrika/LICENSE"
}