You are not logged in.
Pages: 1
Hi, I would like to request a review of the following PKGBUILD. I also have a question in the end.
# Maintainer: Sebastian Elisa Pfeifer <sebastian at sebastian minus elisa minus pfeifer dot eu>
# Upstream Bug Tracker: https://github.com/a-sit/PDF-Over/issues
pkgname="pdf-over"
pkgver=4.4.6.1
pkgrel=1
pkgdesc="A PDF signing tool for ID-Austria users."
arch=("any")
url="https://github.com/a-sit/PDF-Over"
license=("EUPL-1.2")
depends=("java-runtime-openjdk=21" "sh")
makedepends=("maven" "jdk21-openjdk")
source=(
"https://github.com/a-sit/PDF-Over/archive/refs/tags/pdf-over-${pkgver}.tar.gz"
"pdf-over"
"PDF-Over.desktop"
)
sha256sums=('17633db5a1fab728a5eee215413f06ad43be1f132d7d836abdcff68c2265b244'
'd63ab746312d7bf440a29a39381f73fbb111220a85909e664944d39610500726'
'f77f8f11ff4da5dc55cbb40bdfd9838b2a17ae96bedd2c42a11952f91a8d569c')
build() {
cd "PDF-Over-${pkgname}-${pkgver}"
mvn -B clean install -Plinux -Pci-build -Dno-native-profile
}
package() {
# Install start script
install -D --mode 755 --owner root --group root "${srcdir}/pdf-over" "${pkgdir}/usr/bin/pdf-over"
# Install Start Menu Entry
install -D --mode 644 --owner root --group root "${srcdir}/PDF-Over.desktop" "${pkgdir}/usr/share/applications/PDF-Over.desktop"
cd "PDF-Over-${pkgname}-${pkgver}/pdf-over-build"
# Install libraries
for library in lib/*.jar; do
install -D --mode 644 --owner root --group root "${library}" "${pkgdir}/usr/share/java/${pkgname}/${library##*/}"
done
# Install icons
for icon in icons/*.*; do
install -D --mode 644 --owner root --group root "${icon}" "${pkgdir}/usr/share/${pkgname}/${icon}"
done
}
pdf-over
#!/bin/sh
# SPDX-FileCopyrightText: 2025 Sebastian Elisa Pfeifer <sebastian at sebastian minus elisa minus pfeifer dot eu>
#
# SPDX-License-Identifier: 0BSD
for name in /usr/share/java/pdf-over/*.jar ; do
CP=$CP:$name
done
exec java --class-path "${CP}" at.asit.pdfover.gui.Main "$@"
PDF-Over.desktop
[Desktop Entry]
Comment=PDF-Over
Comment[en]=PDF-Over
Encoding=UTF-8
Exec=/usr/bin/pdf-over
Icon=/usr/share/pdf-over/icons/icon144x144.png
Name=PDF-Over
Name[en]=PDF-Over
shellcheck is ok:
[build@bd6f0c85ed10 ~]$ shellcheck --shell=bash --exclude=SC2034,SC2154,SC2164 PKGBUILD
[build@bd6f0c85ed10 ~]$ shellcheck --shell=sh pdf-over
namcap:
[build@bd6f0c85ed10 ~]$ namcap --info PKGBUILD
PKGBUILD (pdf-over) I: Missing Contributor tag
And here for the built package and also the question. EUPL-1.2 is a valid SPDX License Identifier. Am I still supposed to include the license file, as per the error message?
[build@bd6f0c85ed10 ~]$ namcap --info pdf-over-4.4.6.1-1-any.pkg.tar.zst
pdf-over E: Uncommon license identifiers such as 'EUPL-1.2' require license files below /usr/share/licenses/pdf-over/ or switching to common license identifiers. Found 0/1 required license files.
pdf-over I: Script link detected (sh) in file ['usr/bin/pdf-over']
pdf-over I: Soname depends as namcap sees them: depends=()
pdf-over I: Provides as namcap sees them: provides=()
pdf-over I: Dependency java-runtime detected and satisfied (found class files usr/share/java/pdf-over/activation-1.1.1.jar, usr/share/java/pdf-over/apiguardian-api-1.1.2.jar, usr/share/java/pdf-over/bcpkix-jdk18on-1.80.jar, usr/share/java/pdf-over/bcprov-jdk15on-1.70.jar, usr/share/java/pdf-over/bcprov-jdk18on-1.80.jar, usr/share/java/pdf-over/bcutil-jdk18on-1.80.jar, usr/share/java/pdf-over/cbor-0.01.02.jar, usr/share/java/pdf-over/checker-qual-2.5.6.jar, usr/share/java/pdf-over/commons-codec-1.15.jar, usr/share/java/pdf-over/commons-collections-3.2.2.jar, usr/share/java/pdf-over/commons-collections4-4.4.jar, usr/share/java/pdf-over/commons-configuration-1.10.jar, usr/share/java/pdf-over/commons-httpclient-3.1.jar, usr/share/java/pdf-over/commons-io-2.18.0.jar, usr/share/java/pdf-over/commons-lang-2.6.jar, usr/share/java/pdf-over/commons-lang3-3.17.0.jar, usr/share/java/pdf-over/commons-logging-1.0.4.jar, usr/share/java/pdf-over/core-3.5.0.jar, usr/share/java/pdf-over/error_prone_annotations-2.36.0.jar, usr/share/java/pdf-over/fontbox-2.0.34.jar, usr/share/java/pdf-over/gson-2.12.1.jar, usr/share/java/pdf-over/httpclient-4.5.14.jar, usr/share/java/pdf-over/httpclient5-5.4.3.jar, usr/share/java/pdf-over/httpcore-4.4.16.jar, usr/share/java/pdf-over/httpcore5-5.3.4.jar, usr/share/java/pdf-over/httpcore5-h2-5.3.4.jar, usr/share/java/pdf-over/httpmime-4.5.14.jar, usr/share/java/pdf-over/iaik_cms-2.15.jar, usr/share/java/pdf-over/iaik_eccelerate-3.01.jar, usr/share/java/pdf-over/iaik_eccelerate_cms-3.01.jar, usr/share/java/pdf-over/iaik_jce_full-5.63_moa.jar, usr/share/java/pdf-over/istack-commons-runtime-3.0.11.jar, usr/share/java/pdf-over/jai-imageio-core-1.4.0.jar, usr/share/java/pdf-over/jai-imageio-jpeg2000-1.4.0.jar, usr/share/java/pdf-over/jakarta.activation-1.2.2.jar, usr/share/java/pdf-over/jakarta.xml.bind-api-2.3.3.jar, usr/share/java/pdf-over/javase-3.5.0.jar, usr/share/java/pdf-over/javassist-3.29.0-GA.jar, usr/share/java/pdf-over/javax.activation-api-1.2.0.jar, usr/share/java/pdf-over/javax.jws-api-1.1.jar, usr/share/java/pdf-over/jaxb-api-2.3.1.jar, usr/share/java/pdf-over/jaxb-runtime-2.3.3.jar, usr/share/java/pdf-over/jcl-over-slf4j-1.7.36.jar, usr/share/java/pdf-over/jcommander-1.82.jar, usr/share/java/pdf-over/jna-5.12.1.jar, usr/share/java/pdf-over/jna-platform-5.12.1.jar, usr/share/java/pdf-over/jose4j-0.9.6.jar, usr/share/java/pdf-over/json-20250107.jar, usr/share/java/pdf-over/jsoup-1.19.1.jar, usr/share/java/pdf-over/jsr305-3.0.2.jar, usr/share/java/pdf-over/junit-jupiter-api-5.9.0.jar, usr/share/java/pdf-over/junit-jupiter-engine-5.9.0.jar, usr/share/java/pdf-over/junit-platform-commons-1.9.0.jar, usr/share/java/pdf-over/junit-platform-engine-1.9.0.jar, usr/share/java/pdf-over/levigo-jbig2-imageio-2.0.jar, usr/share/java/pdf-over/logback-classic-1.5.18.jar, usr/share/java/pdf-over/logback-core-1.5.18.jar, usr/share/java/pdf-over/lombok-1.18.36.jar, usr/share/java/pdf-over/metadata-extractor-2.18.0.jar, usr/share/java/pdf-over/ognl-3.3.4.jar, usr/share/java/pdf-over/opentest4j-1.2.0.jar, usr/share/java/pdf-over/pdf-as-common-4.4.2.jar, usr/share/java/pdf-over/pdf-as-lib-4.4.2.jar, usr/share/java/pdf-over/pdf-as-pdfbox-2-4.4.2.jar, usr/share/java/pdf-over/pdf-over-commons-4.4.6.1.jar, usr/share/java/pdf-over/pdf-over-gui-4.4.6.1.jar, usr/share/java/pdf-over/pdf-over-signer-4.4.6.1.jar, usr/share/java/pdf-over/pdfbox-2.0.34.jar, usr/share/java/pdf-over/pdfbox-debugger-2.0.34.jar, usr/share/java/pdf-over/pdfbox-tools-2.0.34.jar, usr/share/java/pdf-over/preflight-2.0.32.jar, usr/share/java/pdf-over/public-suffix-list-2.2.0.jar, usr/share/java/pdf-over/sigs-pades-4.4.2.jar, usr/share/java/pdf-over/slf4j-api-2.0.17.jar, usr/share/java/pdf-over/swt.jar, usr/share/java/pdf-over/txw2-2.3.3.jar, usr/share/java/pdf-over/webauthn-client-java-0.0.1.jar, usr/share/java/pdf-over/xmpbox-2.0.32.jar, usr/share/java/pdf-over/xmpcore-6.1.11.jar)
pdf-over I: Dependency bash detected and satisfied (programs ['sh'] needed in scripts ['usr/bin/pdf-over'])
pdf-over I: Depends as namcap sees them: depends=(java-runtime bash)
[build@bd6f0c85ed10 ~]$ reuse lint
# SUMMARY
* Bad licenses: 0
* Deprecated licenses: 0
* Licenses without file extension: 0
* Missing licenses: 0
* Unused licenses: 0
* Used licenses: 0BSD
* Read errors: 0
* Files with copyright information: 7 / 7
* Files with license information: 7 / 7
Congratulations! Your project is compliant with version 3.3 of the REUSE Specification :-)
Thanks!
~~ deadda7a
Offline
Firstly, you do not need to specify the owner and group in install command because the default owner and group when building package is root. So you can change the line to
install -Dm644 source destination
Secondly, it would be better if you put the icon to hicolor directory under /usr/share/icons as it is the root directory of different icon themes for most cases, not for single icon file. If you have different sizes of icon, you can write like this
for size in 16 24 32
do
install -Dm644 "icons/icon${size}x${size}.png" "${pkgdir}/usr/share/icons/hicolor/${size}x${size}/apps/${pkgname}.png"
done
and do not forget to change the Icon key in the desktop file
Icon=pdf-over
Thirdly, If you want to support an 'Open With' option in your file manager, you can add %u to the end of Exec key in the desktop file and add Mimetype to the desktop file.
[Desktop Entry]
Comment=PDF-Over
Comment[en]=PDF-Over
Encoding=UTF-8
Exec=/usr/bin/pdf-over %u
Icon=pdf-over
Name=PDF-Over
Name[en]=PDF-Over
MimeType=application/pdf;
Lastly, here is the official package guideline for Java application: https://wiki.archlinux.org/title/Java_p … guidelines
Last edited by BryanLiang (2025-09-15 12:10:38)
Offline
Hello,
thank you,
Firstly, you do not need to specify the owner and group
I did this on purpose, even if it's not necessary; I believe it is better to be explicit about some defaults. But I can change it if it's not best practice in the AUR?
I will change the icon part and add the option to open a PDF directly with pdf-over (it will need to be "/usr/bin/pdf-over -i %u" for the Exec line, but otherwise should work like that)
Lastly, here is the official package guideline for Java application
Did I do something wrong or is this a general pointer? Because I followed the guide, hence the jar files in /usr/share/java/pdf-over and the start script that differs from the upstream one.
~~ deadda7a
Offline
No, do not worry, you do nothing wrong. I just want to give you the guideline in case you haven't seen it.
Offline
Am I still supposed to include the license file, as per the error message?
Yes. Please see PKGBUILD license.
Offline
Ok, thanks to both of you
I've updated my PKGBUILD:
# Maintainer: Sebastian Elisa Pfeifer <sebastian at sebastian minus elisa minus pfeifer dot eu>
# Upstream Bug Tracker: https://github.com/a-sit/PDF-Over/issues
pkgname="pdf-over"
pkgver=4.4.6.1
pkgrel=2
pkgdesc="A PDF signing tool for ID-Austria users."
arch=("any")
url="https://github.com/a-sit/PDF-Over"
license=("LicenseRef-EUPL-1.2")
depends=("java-runtime-openjdk=21" "sh" "hicolor-icon-theme")
makedepends=("maven" "jdk21-openjdk")
source=(
"https://github.com/a-sit/PDF-Over/archive/refs/tags/pdf-over-${pkgver}.tar.gz"
"pdf-over"
"PDF-Over.desktop"
"LICENSE.upstream"
)
sha256sums=('17633db5a1fab728a5eee215413f06ad43be1f132d7d836abdcff68c2265b244'
'd63ab746312d7bf440a29a39381f73fbb111220a85909e664944d39610500726'
'b9613ba58e3647b863035d56d655161790531516dba7330c1e63f8a13917c370'
'469bc06528d42c7be84d1fdeb1396e709d3cfb3750c9d9e8a902dba8e87d51bf')
build() {
cd "PDF-Over-${pkgname}-${pkgver}"
mvn -B clean install -Plinux -Pci-build -Dno-native-profile
}
package() {
# Install start script
install -D --mode 755 "${srcdir}/pdf-over" "${pkgdir}/usr/bin/pdf-over"
# Install Start Menu Entry
install -D --mode 644 "${srcdir}/PDF-Over.desktop" "${pkgdir}/usr/share/applications/PDF-Over.desktop"
# Install License file
install -D --mode 644 LICENSE.upstream "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
cd "PDF-Over-${pkgname}-${pkgver}/pdf-over-build"
# Install libraries
for library in lib/*.jar; do
install -D --mode 644 "${library}" "${pkgdir}/usr/share/java/${pkgname}/${library##*/}"
done
# Install icons
for size in 16 24 32; do
install -D --mode 644 "icons/icon${size}x${size}.png" "${pkgdir}/usr/share/icons/hicolor/${size}x${size}/apps/${pkgname}.png"
done
}
And the Desktop Entry:
[Desktop Entry]
Type=Application
Comment=Ein Werkzeug, um PDFs mit der ID-Austria digital zu signieren.
Comment[en]=A PDF signing tool for ID-Austria users.
Exec=/usr/bin/pdf-over -i %u
Icon=pdf-over
Name=PDF-Over
Name[en]=PDF-Over
MimeType=application/pdf;
namcap doesn't complain anymore:
[build@bb895c78ec99 ~]$ namcap --info pdf-over-4.4.6.1-2-any.pkg.tar.zst
pdf-over I: Script link detected (sh) in file ['usr/bin/pdf-over']
pdf-over I: Soname depends as namcap sees them: depends=()
pdf-over I: Provides as namcap sees them: provides=()
pdf-over I: Dependency bash detected and satisfied (programs ['sh'] needed in scripts ['usr/bin/pdf-over'])
pdf-over I: Dependency hicolor-icon-theme detected and satisfied (needed for hicolor theme hierarchy)
pdf-over I: Dependency java-runtime detected and satisfied (found class files usr/share/java/pdf-over/activation-1.1.1.jar, usr/share/java/pdf-over/apiguardian-api-1.1.2.jar, usr/share/java/pdf-over/bcpkix-jdk18on-1.80.jar, usr/share/java/pdf-over/bcprov-jdk15on-1.70.jar, usr/share/java/pdf-over/bcprov-jdk18on-1.80.jar, usr/share/java/pdf-over/bcutil-jdk18on-1.80.jar, usr/share/java/pdf-over/cbor-0.01.02.jar, usr/share/java/pdf-over/checker-qual-2.5.6.jar, usr/share/java/pdf-over/commons-codec-1.15.jar, usr/share/java/pdf-over/commons-collections-3.2.2.jar, usr/share/java/pdf-over/commons-collections4-4.4.jar, usr/share/java/pdf-over/commons-configuration-1.10.jar, usr/share/java/pdf-over/commons-httpclient-3.1.jar, usr/share/java/pdf-over/commons-io-2.18.0.jar, usr/share/java/pdf-over/commons-lang-2.6.jar, usr/share/java/pdf-over/commons-lang3-3.17.0.jar, usr/share/java/pdf-over/commons-logging-1.0.4.jar, usr/share/java/pdf-over/core-3.5.0.jar, usr/share/java/pdf-over/error_prone_annotations-2.36.0.jar, usr/share/java/pdf-over/fontbox-2.0.34.jar, usr/share/java/pdf-over/gson-2.12.1.jar, usr/share/java/pdf-over/httpclient-4.5.14.jar, usr/share/java/pdf-over/httpclient5-5.4.3.jar, usr/share/java/pdf-over/httpcore-4.4.16.jar, usr/share/java/pdf-over/httpcore5-5.3.4.jar, usr/share/java/pdf-over/httpcore5-h2-5.3.4.jar, usr/share/java/pdf-over/httpmime-4.5.14.jar, usr/share/java/pdf-over/iaik_cms-2.15.jar, usr/share/java/pdf-over/iaik_eccelerate-3.01.jar, usr/share/java/pdf-over/iaik_eccelerate_cms-3.01.jar, usr/share/java/pdf-over/iaik_jce_full-5.63_moa.jar, usr/share/java/pdf-over/istack-commons-runtime-3.0.11.jar, usr/share/java/pdf-over/jai-imageio-core-1.4.0.jar, usr/share/java/pdf-over/jai-imageio-jpeg2000-1.4.0.jar, usr/share/java/pdf-over/jakarta.activation-1.2.2.jar, usr/share/java/pdf-over/jakarta.xml.bind-api-2.3.3.jar, usr/share/java/pdf-over/javase-3.5.0.jar, usr/share/java/pdf-over/javassist-3.29.0-GA.jar, usr/share/java/pdf-over/javax.activation-api-1.2.0.jar, usr/share/java/pdf-over/javax.jws-api-1.1.jar, usr/share/java/pdf-over/jaxb-api-2.3.1.jar, usr/share/java/pdf-over/jaxb-runtime-2.3.3.jar, usr/share/java/pdf-over/jcl-over-slf4j-1.7.36.jar, usr/share/java/pdf-over/jcommander-1.82.jar, usr/share/java/pdf-over/jna-5.12.1.jar, usr/share/java/pdf-over/jna-platform-5.12.1.jar, usr/share/java/pdf-over/jose4j-0.9.6.jar, usr/share/java/pdf-over/json-20250107.jar, usr/share/java/pdf-over/jsoup-1.19.1.jar, usr/share/java/pdf-over/jsr305-3.0.2.jar, usr/share/java/pdf-over/junit-jupiter-api-5.9.0.jar, usr/share/java/pdf-over/junit-jupiter-engine-5.9.0.jar, usr/share/java/pdf-over/junit-platform-commons-1.9.0.jar, usr/share/java/pdf-over/junit-platform-engine-1.9.0.jar, usr/share/java/pdf-over/levigo-jbig2-imageio-2.0.jar, usr/share/java/pdf-over/logback-classic-1.5.18.jar, usr/share/java/pdf-over/logback-core-1.5.18.jar, usr/share/java/pdf-over/lombok-1.18.36.jar, usr/share/java/pdf-over/metadata-extractor-2.18.0.jar, usr/share/java/pdf-over/ognl-3.3.4.jar, usr/share/java/pdf-over/opentest4j-1.2.0.jar, usr/share/java/pdf-over/pdf-as-common-4.4.2.jar, usr/share/java/pdf-over/pdf-as-lib-4.4.2.jar, usr/share/java/pdf-over/pdf-as-pdfbox-2-4.4.2.jar, usr/share/java/pdf-over/pdf-over-commons-4.4.6.1.jar, usr/share/java/pdf-over/pdf-over-gui-4.4.6.1.jar, usr/share/java/pdf-over/pdf-over-signer-4.4.6.1.jar, usr/share/java/pdf-over/pdfbox-2.0.34.jar, usr/share/java/pdf-over/pdfbox-debugger-2.0.34.jar, usr/share/java/pdf-over/pdfbox-tools-2.0.34.jar, usr/share/java/pdf-over/preflight-2.0.32.jar, usr/share/java/pdf-over/public-suffix-list-2.2.0.jar, usr/share/java/pdf-over/sigs-pades-4.4.2.jar, usr/share/java/pdf-over/slf4j-api-2.0.17.jar, usr/share/java/pdf-over/swt.jar, usr/share/java/pdf-over/txw2-2.3.3.jar, usr/share/java/pdf-over/webauthn-client-java-0.0.1.jar, usr/share/java/pdf-over/xmpbox-2.0.32.jar, usr/share/java/pdf-over/xmpcore-6.1.11.jar)
pdf-over I: Depends as namcap sees them: depends=(bash hicolor-icon-theme java-runtime)
~~ deadda7a
Offline
Pages: 1