You are not logged in.

#1 2025-09-15 07:31:04

deadda7a
Member
Registered: 2025-09-15
Posts: 3

PKGBUILD Review: pdf-over

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! smile


~~ deadda7a

Offline

#2 2025-09-15 12:02:25

BryanLiang
Member
Registered: 2023-04-14
Posts: 15

Re: PKGBUILD Review: pdf-over

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

#3 2025-09-15 12:32:53

deadda7a
Member
Registered: 2025-09-15
Posts: 3

Re: PKGBUILD Review: pdf-over

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? smile 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

#4 2025-09-15 12:38:04

BryanLiang
Member
Registered: 2023-04-14
Posts: 15

Re: PKGBUILD Review: pdf-over

No, do not worry, you do nothing wrong. I just want to give you the guideline in case you haven't seen it.

Offline

#5 2025-09-15 15:00:23

loqs
Member
Registered: 2014-03-06
Posts: 18,607

Re: PKGBUILD Review: pdf-over

deadda7a wrote:

Am I still supposed to include the license file, as per the error message?

Yes. Please see PKGBUILD license.

Offline

#6 2025-09-16 07:16:31

deadda7a
Member
Registered: 2025-09-15
Posts: 3

Re: PKGBUILD Review: pdf-over

Ok, thanks to both of you smile

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

Board footer

Powered by FluxBB