From 1c2a139c8b4630f873a0d75767ff7c755cfafcbb Mon Sep 17 00:00:00 2001 From: Ignacio Galmarino Date: Wed, 30 Sep 2026 23:08:29 +0000 Subject: [PATCH] feat: update to Rev26_08 and fix packaging issues - bump to Rev26_08 (Agente GAUDI 29.0, Idopte 6.23.50.5) - derive source paths from pkgver; extract RPMs in prepare() - unpack xsd.bin into /usr/share/SCMiddleware/shema like the RPM %post - list only direct dependencies; use libxml2-legacy; add optdepends - move the p11-kit module to the idopte package, which ships libidop11.so - install certificates under /usr/share so the ca-trust hook handles them - stop enabling services from install scripts - drop RPM .build-id links, SysV init script and bogus provides - mark etc/idoss.conf as backup; install GAUDI licence - use LicenseRef-proprietary; fix garbled 0BSD LICENSE text Co-Authored-By: Claude Opus 5.5 --- .SRCINFO | 136 ++++++++++++------------------------------- LICENSE | 18 +++--- PKGBUILD | 96 ++++++++++++++++-------------- certificados.install | 12 ---- idocachesrv.install | 3 +- 5 files changed, 100 insertions(+), 165 deletions(-) delete mode 100644 certificados.install diff --git a/.SRCINFO b/.SRCINFO index 23db75a..5adf1dd 100644 --- a/.SRCINFO +++ b/.SRCINFO @@ -1,141 +1,79 @@ pkgbase = firma-digital pkgdesc = Instalador de suite para Firma Digital de Costa Rica - pkgver = Rev26_02 - pkgrel = 5 + pkgver = Rev26_08 + pkgrel = 1 epoch = 1 url = https://soportefirmadigital.com/sfdj/dl.aspx arch = x86_64 - license = MIT - license = unknown - license = unknown + license = LicenseRef-proprietary options = !strip - source = local://sfd_ClientesLinux_RPM64_rev26_02.zip + source = local://sfd_ClientesLinux_RPM64_rev26_08.zip source = local://idocachesrv.service - sha256sums = 6b034f1d2c8411ed665c3ca0dffea852fa6bd9097be5e1d48762927655b7eda5 + sha256sums = 364b804cb3db5f078a0317df64e6dd2c5d75c6f126bf3d576f892fe5b5dd0664 sha256sums = 463db4a2c758e42702373771fe96b7d84c7eb3668b3b220218ce429f6670cd8a pkgname = firma-digital-agente-gaudi pkgdesc = Agente GAUDI para Firma Digital de Costa Rica - provides = Agente-GAUDI + depends = alsa-lib + depends = at-spi2-core + depends = cairo + depends = fontconfig + depends = freetype2 + depends = gdk-pixbuf2 + depends = glib2 + depends = glibc + depends = gtk3 + depends = libglvnd + depends = libx11 + depends = libxext + depends = libxi + depends = libxrender + depends = libxtst + depends = libxxf86vm + depends = pango + depends = zlib + optdepends = firma-digital-middleware-idopte: tarjetas Idopte + optdepends = firma-digital-middleware-smartcard: tarjetas Athena pkgname = firma-digital-middleware-idopte pkgdesc = Middleware PKCS#11 Idopte para Firma Digital de Costa Rica install = idocachesrv.install - depends = aom depends = at-spi2-core depends = brotli depends = bzip2 depends = cairo - depends = dav1d - depends = dbus - depends = e2fsprogs - depends = enchant depends = expat depends = fontconfig depends = freetype2 - depends = fribidi depends = gdk-pixbuf2 depends = glib2 - depends = glycin - depends = graphite - depends = gst-plugins-base-libs - depends = gstreamer + depends = glibc depends = gtk3 depends = harfbuzz - depends = harfbuzz-icu - depends = hidapi - depends = highway - depends = hyphen - depends = icu - depends = json-glib - depends = keyutils - depends = krb5 - depends = lcms2 - depends = libatomic - depends = libavif - depends = libcloudproviders - depends = libdatrie - depends = libdrm - depends = libelf - depends = libepoxy - depends = libevdev - depends = libffi depends = libgcc - depends = libgcrypt - depends = libglvnd - depends = libgpg-error - depends = libgudev - depends = libidn2 - depends = libjpeg-turbo - depends = libjxl - depends = libmanette depends = libnotify depends = libpng - depends = libpsl - depends = libseccomp - depends = libsecret depends = libsoup depends = libstdc++ - depends = libtasn1 - depends = libthai - depends = libunistring - depends = libunwind - depends = libwebp - depends = libx11 - depends = libxau - depends = libxcb - depends = libxcomposite - depends = libxcursor - depends = libxdamage - depends = libxdmcp - depends = libxext - depends = libxfixes - depends = libxi - depends = libxinerama - depends = libxkbcommon - depends = libxml2 - depends = libxrandr - depends = libxrender - depends = libxslt - depends = libyuv - depends = mesa - depends = openssl - depends = orc + depends = libxml2-legacy depends = pango - depends = pcre2 depends = pcsclite - depends = pixman - depends = rav1e - depends = sqlite - depends = svt-av1 - depends = systemd-libs - depends = tinysparql - depends = tpm2-tss - depends = util-linux-libs - depends = wayland depends = webkit2gtk - depends = woff2 - depends = xz depends = zlib - depends = zstd - provides = idocachesrv - provides = legacy.so - provides = libcrypto.so.3 - provides = libidolog.so - provides = libidop11.so - provides = libssl.so.3 - provides = libt_ias.so - provides = SCManager - conflicts = + optdepends = ccid: lectores de tarjetas USB + optdepends = zenity: diálogos de selección de archivos en SCManager + optdepends = xdg-utils: abrir documentos desde SCManager + optdepends = python-nautilus: extensión de Nautilus + optdepends = python-requests: extensión de Nautilus + backup = etc/idoss.conf pkgname = firma-digital-certificados-bccr pkgdesc = Certificados del BCCR para Firma Digital de Costa Rica - install = certificados.install - depends = p11-kit - depends = pcsclite + depends = ca-certificates-utils pkgname = firma-digital-middleware-smartcard pkgdesc = Middleware PKCS#11 Smart Card para Firma Digital de Costa Rica + depends = glibc + depends = libgcc + depends = libstdc++ depends = pcsclite - provides = libASEP11.so - provides = libaseLaserP11.so diff --git a/LICENSE b/LICENSE index 6063375..c84c407 100644 --- a/LICENSE +++ b/LICENSE @@ -1,12 +1,12 @@ Copyright (C) 2026 Aaron "Zeta" González -Permission to use, copy, modify, and/or distribute this software for anypurpose -with or without fee is hereby granted. +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIESWITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OFMERCHANTABILITY AND -FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FORANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGESWHATSOEVER RESULTING FROM LOSS -OF USE, DATA OR PROFITS, WHETHER IN ANACTION OF CONTRACT, NEGLIGENCE OR OTHER -TORTIOUS ACTION, ARISING OUT OFOR IN CONNECTION WITH THE USE OR PERFORMANCE OF -THIS SOFTWARE. +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. diff --git a/PKGBUILD b/PKGBUILD index 1dfe02c..7971795 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -1,30 +1,32 @@ # Maintainer: Zeta +# +# The upstream zip can't be fetched automatically: download it from +# https://soportefirmadigital.com/sfdj/dl.aspx and put it next to this PKGBUILD. pkgname=('firma-digital-agente-gaudi' 'firma-digital-middleware-idopte' 'firma-digital-certificados-bccr' 'firma-digital-middleware-smartcard') -pkgver=Rev26_02 +pkgver=Rev26_08 pkgbase=firma-digital -pkgrel=5 +pkgrel=1 epoch=1 pkgdesc="Instalador de suite para Firma Digital de Costa Rica" arch=(x86_64) url="https://soportefirmadigital.com/sfdj/dl.aspx" -license=('MIT' 'unknown' 'unknown') -depends=() -makedepends=() +license=('LicenseRef-proprietary') options=("!strip") -source=("local://sfd_ClientesLinux_RPM64_rev26_02.zip" "local://idocachesrv.service") -noextract=() -sha256sums=('6b034f1d2c8411ed665c3ca0dffea852fa6bd9097be5e1d48762927655b7eda5' +source=("local://sfd_ClientesLinux_RPM64_${pkgver,}.zip" "local://idocachesrv.service") +sha256sums=('364b804cb3db5f078a0317df64e6dd2c5d75c6f126bf3d576f892fe5b5dd0664' '463db4a2c758e42702373771fe96b7d84c7eb3668b3b220218ce429f6670cd8a') -build() { - bsdtar -xf "${srcdir}/sfd_ClientesLinux_RPM64_26_02/Firma Digital/Idopte/scmiddleware-costa-rica-user_idopte_6.23.44.0_rh9_amd64.rpm" -C "${srcdir}/sfd_ClientesLinux_RPM64_26_02/Firma Digital/Idopte" - bsdtar -xf "${srcdir}/sfd_ClientesLinux_RPM64_26_02/Firma Digital/Agente GAUDI/agente-gaudi_27.0_amd64.rpm" -C "${srcdir}/sfd_ClientesLinux_RPM64_26_02/Firma Digital/Agente GAUDI" +_dir="sfd_ClientesLinux_RPM64_${pkgver#Rev}/Firma Digital" + +prepare() { + cd "${srcdir}/${_dir}" + bsdtar -xf Idopte/scmiddleware-costa-rica-user_idopte_*_amd64.rpm -C Idopte + bsdtar -xf "Agente GAUDI"/agente-gaudi_*_amd64.rpm -C "Agente GAUDI" } package_firma-digital-certificados-bccr() { pkgdesc="Certificados del BCCR para Firma Digital de Costa Rica" - depends=("p11-kit" "pcsclite") - install=certificados.install + depends=("ca-certificates-utils") certs=( "CA Certificado firma de codigo.cer" "CA POLITICA PERSONA FISICA - COSTA RICA v2(1).crt" @@ -47,65 +49,71 @@ package_firma-digital-certificados-bccr() { "Raiz Certificado firma de codigo.cer" ) + # ca-certificates-utils' pacman hook runs update-ca-trust for this path msg "Installing certificates" for cert in "${certs[@]}"; do msg2 "Installing $cert" - install -Dm644 "${srcdir}/sfd_ClientesLinux_RPM64_26_02/Firma Digital/Certificados/${cert}" "${pkgdir}/etc/ca-certificates/trust-source/anchors/${cert}" + install -Dm644 "${srcdir}/${_dir}/Certificados/${cert}" "${pkgdir}/usr/share/ca-certificates/trust-source/anchors/${cert}" done } package_firma-digital-agente-gaudi() { - provides=("Agente-GAUDI") pkgdesc="Agente GAUDI para Firma Digital de Costa Rica" - install -d "${srcdir}/sfd_ClientesLinux_RPM64_26_02/Firma Digital/Agente GAUDI/opt" "${pkgdir}/opt" 2> >(read err; error "$err") - cp -r "${srcdir}/sfd_ClientesLinux_RPM64_26_02/Firma Digital/Agente GAUDI/opt/"* "${pkgdir}/opt/" 2> >(read err; error "$err") - install -d "${srcdir}/sfd_ClientesLinux_RPM64_26_02/Firma Digital/Agente GAUDI/usr" "${pkgdir}/usr" 2> >(read err; error "$err") - cp -r "${srcdir}/sfd_ClientesLinux_RPM64_26_02/Firma Digital/Agente GAUDI/usr/"* "${pkgdir}/usr/" 2> >(read err; error "$err") + # direct dependencies of the bundled Java runtime + depends=("alsa-lib" "at-spi2-core" "cairo" "fontconfig" "freetype2" "gdk-pixbuf2" "glib2" "glibc" "gtk3" "libglvnd" "libx11" "libxext" "libxi" "libxrender" "libxtst" "libxxf86vm" "pango" "zlib") + optdepends=( + "firma-digital-middleware-idopte: tarjetas Idopte" + "firma-digital-middleware-smartcard: tarjetas Athena" + ) - mkdir -p "${pkgdir}/usr/share/applications/" - install -Dm644 "${srcdir}/sfd_ClientesLinux_RPM64_26_02/Firma Digital/Agente GAUDI/opt/Agente-GAUDI/lib/Agente-GAUDI.desktop" "${pkgdir}/usr/share/applications/Agente-GAUDI.desktop" + cd "${srcdir}/${_dir}/Agente GAUDI" + install -d "${pkgdir}/opt" + cp -r opt/Agente-GAUDI "${pkgdir}/opt/" + install -Dm644 usr/share/licenses/Agente-GAUDI-*/licence.md "${pkgdir}/usr/share/licenses/${pkgname}/licence.md" + install -Dm644 opt/Agente-GAUDI/lib/Agente-GAUDI.desktop "${pkgdir}/usr/share/applications/Agente-GAUDI.desktop" } package_firma-digital-middleware-idopte() { pkgdesc="Middleware PKCS#11 Idopte para Firma Digital de Costa Rica" - depends=("aom" "at-spi2-core" "brotli" "bzip2" "cairo" "dav1d" "dbus" "e2fsprogs" "enchant" "expat" "fontconfig" "freetype2" "fribidi" "gdk-pixbuf2" "glib2" "glycin" "graphite" "gst-plugins-base-libs" "gstreamer" "gtk3" "harfbuzz" "harfbuzz-icu" "hidapi" "highway" "hyphen" "icu" "json-glib" "keyutils" "krb5" "lcms2" "libatomic" "libavif" "libcloudproviders" "libdatrie" "libdrm" "libelf" "libepoxy" "libevdev" "libffi" "libgcc" "libgcrypt" "libglvnd" "libgpg-error" "libgudev" "libidn2" "libjpeg-turbo" "libjxl" "libmanette" "libnotify" "libpng" "libpsl" "libseccomp" "libsecret" "libsoup" "libstdc++" "libtasn1" "libthai" "libunistring" "libunwind" "libwebp" "libx11" "libxau" "libxcb" "libxcomposite" "libxcursor" "libxdamage" "libxdmcp" "libxext" "libxfixes" "libxi" "libxinerama" "libxkbcommon" "libxml2" "libxrandr" "libxrender" "libxslt" "libyuv" "mesa" "openssl" "orc" "pango" "pcre2" "pcsclite" "pixman" "rav1e" "sqlite" "svt-av1" "systemd-libs" "tinysparql" "tpm2-tss" "util-linux-libs" "wayland" "webkit2gtk" "woff2" "xz" "zlib" "zstd") - provides=( - "idocachesrv" - "legacy.so" - "libcrypto.so.3" - "libidolog.so" - "libidop11.so" - "libssl.so.3" - "libt_ias.so" - "SCManager" + # direct dependencies of the shipped binaries; the rest are bundled in /usr/lib/SCMiddleware + depends=("at-spi2-core" "brotli" "bzip2" "cairo" "expat" "fontconfig" "freetype2" "gdk-pixbuf2" "glib2" "glibc" "gtk3" "harfbuzz" "libgcc" "libnotify" "libpng" "libsoup" "libstdc++" "libxml2-legacy" "pango" "pcsclite" "webkit2gtk" "zlib") + optdepends=( + "ccid: lectores de tarjetas USB" + "zenity: diálogos de selección de archivos en SCManager" + "xdg-utils: abrir documentos desde SCManager" + "python-nautilus: extensión de Nautilus" + "python-requests: extensión de Nautilus" ) + backup=("etc/idoss.conf") install=idocachesrv.install - conflicts=() msg "Installing Idopte middleware" - install -d "${srcdir}/sfd_ClientesLinux_RPM64_26_02/Firma Digital/Idopte/usr" "${pkgdir}/usr" 2> >(read err; error "$err") - cp -r "${srcdir}/sfd_ClientesLinux_RPM64_26_02/Firma Digital/Idopte/usr/"* "${pkgdir}/usr/" 2> >(read err; error "$err") + cd "${srcdir}/${_dir}/Idopte" + cp -r usr etc "${pkgdir}/" + # RPM debug links and the SysV init script (replaced by idocachesrv.service) + rm -r "${pkgdir}/usr/lib/.build-id" "${pkgdir}/etc/init.d" - install -d "${srcdir}/sfd_ClientesLinux_RPM64_26_02/Firma Digital/Idopte/etc" "${pkgdir}/etc" 2> >(read err; error "$err") - cp -r "${srcdir}/sfd_ClientesLinux_RPM64_26_02/Firma Digital/Idopte/etc/"* "${pkgdir}/etc/" 2> >(read err; error "$err") + # the RPM's %post unpacks the XML schemas here + install -d "${pkgdir}/usr/share/SCMiddleware/shema" + bsdtar -xf usr/share/SCMiddleware/xsd.bin -C "${pkgdir}/usr/share/SCMiddleware/shema" install -Dm644 "${srcdir}/idocachesrv.service" "${pkgdir}/usr/lib/systemd/system/idocachesrv.service" + msg "Creating firma digital module" + install -d "${pkgdir}/usr/share/p11-kit/modules" + echo 'module: /usr/lib/SCMiddleware/libidop11.so' > "${pkgdir}/usr/share/p11-kit/modules/firma-digital-sinpe-smartcard.module" } package_firma-digital-middleware-smartcard() { - depends=("pcsclite") + depends=("glibc" "libgcc" "libstdc++" "pcsclite") pkgdesc="Middleware PKCS#11 Smart Card para Firma Digital de Costa Rica" - provides=("libASEP11.so" "libaseLaserP11.so") + libs=("libASEP11.so" "libaseLaserP11.so") + # Agente GAUDI loads these from /usr/lib/x64-athena msg "Installing" - for item in "${provides[@]}"; do + for item in "${libs[@]}"; do msg2 "Installing $item" - install -Dm755 "${srcdir}/sfd_ClientesLinux_RPM64_26_02/Firma Digital/Librería/${item}" "${pkgdir}/usr/lib/x64-athena/${item}" + install -Dm755 "${srcdir}/${_dir}/Librería/${item}" "${pkgdir}/usr/lib/x64-athena/${item}" done - - msg "Creating firma digital module" - mkdir -p "${pkgdir}/usr/share/p11-kit/modules/" - echo -n 'module: /usr/lib/SCMiddleware/libidop11.so' > "${pkgdir}/usr/share/p11-kit/modules/firma-digital-sinpe-smartcard.module" } diff --git a/certificados.install b/certificados.install deleted file mode 100644 index 2c185b8..0000000 --- a/certificados.install +++ /dev/null @@ -1,12 +0,0 @@ -post_install() { - update-ca-trust - systemctl enable --now pcscd.socket -} - -post_update() { - post_install -} - -post_remove() { - post_install -} diff --git a/idocachesrv.install b/idocachesrv.install index bd52979..4d96c27 100644 --- a/idocachesrv.install +++ b/idocachesrv.install @@ -1,5 +1,6 @@ post_install() { - systemctl enable --now idocachesrv.service + echo "==> Para usar la tarjeta, habilite los servicios:" + echo " systemctl enable --now pcscd.socket idocachesrv.service" } pre_remove() { -- 2.56.0