Bug#584472: fop: Wrong package dependency on fontbox instead of fontbox2
Philipp Hahn
hahn at univention.de
Thu Dec 5 13:32:05 GMT 2019
Package: fop
Version: 1:2.3-2
Followup-For: Bug #584472
Dear Maintainer,
building some PDF documents fail with a stack trace due to the use of
"fontbox.jar" instead of "fontbox2.jar":
> Exception in thread "main" java.lang.NoClassDefFoundError:
> org/apache/fontbox/cff/CFFType1Font
> .....
> at org.apache.fop.cli.Main.main(Main.java:217)
> Caused by: java.lang.ClassNotFoundException:
> org.apache.fontbox.cff.CFFType1Font
> at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583)
> at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
> at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
> ... 40 more
The command to run FOP looks like this:
> + exec /usr/lib/jvm/java-11-openjdk-amd64/bin/java \
> -classpath /usr/share/java/commons-io.jar:\
> /usr/share/java/avalon-framework.jar:\
> /usr/share/java/serializer.jar:\
> /usr/share/java/xalan2.jar:\
> /usr/share/java/xml-apis.jar:\
> /usr/share/java/batik-all.jar:\
> /usr/share/java/commons-logging.jar:\
> /usr/share/java/xercesImpl.jar:\
> /usr/share/java/xmlgraphics-commons.jar:\
> /usr/share/java/xml-apis-ext.jar:\
> /usr/share/java/fontbox.jar:\
^^^^^^^^^^^^^^^^^^^^^^^^^^^
> /usr/share/fop/fop-hyph.jar:\
> /usr/share/java/fop.jar \
> -Djava.awt.headless=true \
> -Dorg.apache.commons.logging.Log=org.apache.commons.logging.impl.SimpleLog \
> -Dorg.apache.commons.logging.simplelog.defaultlog=INFO org.apache.fop.cli.Main \
> -c ../../../doc-common/fop.xconf \
> -pdf xxx.pdf -fo xxx.fo
My 'fop.xconf' looks like this, which leads to FOP finding CFFType1 fonts:
> <?xml version="1.0"?>
> <fop version="1.0">
> <renderers>
> <renderer mime="application/pdf">
> <fonts>
> <directory>/usr/share/fonts/truetype/liberation</directory>
> <auto-detect/>
^^^^^^^^^^^^^^
> </fonts>
> </renderer>
> </renderers>
> </fop>
If I remove that link (and thus the CCFType1 fonts no longer gets
found), I'm able to build my document fine.
Looking at the package dependencies I see this:
> $ dpkg -s libfop-java
> Package: libfop-java
> Source: fop
> Version: 1:2.3-2
> Depends: ..., libfontbox2-java, ...
^^^^^^^^^^^^^^^^
libfop-java does NOT depends on 'libfontbox-java', which is only
installed on my system because 'libpdfbox-java' depends on it. If I
remove the package (and recursively 'libfontbox-java', running `fop`
outputs the following warning:
> [warning] /usr/bin/fop: Unable to locate fontbox in /usr/share/java
To me this looks like the package correctly depends on fontbox2, but the
`fop` shell script wrapper is still using the previous version.
This is verified by looking at `./fop-core/pom.xml:
> <dependency>
> <groupId>org.apache.pdfbox</groupId>
> <artifactId>fontbox</artifactId>
> <version>2.0.16</version>
> </dependency>
Looking at the Debian package I also see this inconsistency:
> debian/control:18: libfontbox-java,
^
> debian/rules:34: ant ... -lib ...:/usr/share/java/fontbox2.jar:... jar-hyphenation
^
> debian/rules:36: ant ... -lib ...:/usr/share/java/fontbox2.jar:... javadocs
^
> debian/maven.rules:5:org.apache.pdfbox fontbox s/jar/bundle/ s/.*/2.x/ * *
> debian/fop.sh:54:find_jars xml-apis-ext fontbox
^
The following command fixes the `fop` script for me:
> sed -e '/find_jars/s/\<fontbox\>/&2/' -i /usr/bin/fop
The attached patch fixes the Buster package; package successfully
rebuild in my Buster pbuilder environment.
(Sid build failed due to some new Java issue.)
-- System Information:
Debian Release: 10.2
APT prefers stable-updates
APT policy: (500, 'stable-updates'), (500, 'stable')
Architecture: amd64 (x86_64)
Kernel: Linux 4.19.0-6-amd64 (SMP w/4 CPU cores)
Locale: LANG=de_DE.UTF-8, LC_CTYPE=de_DE.UTF-8 (charmap=UTF-8), LANGUAGE=de:en_US (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled
Versions of packages fop depends on:
ii default-jre-headless [java2-runtime-headless] 2:1.11-71
ii libfop-java 1:2.3-2
ii openjdk-11-jre-headless [java2-runtime-headless] 11.0.5+10-1~deb10u1
Versions of packages fop recommends:
ii libsaxon-java 1:6.5.5-12
Versions of packages fop suggests:
pn fop-doc <none>
-- no debconf information
-------------- next part --------------
diff -urN old/debian/changelog new/debian/changelog
--- old/debian/changelog 2018-11-28 09:59:21.000000000 +0100
+++ new/debian/changelog 2019-12-05 14:09:59.000000000 +0100
@@ -1,3 +1,10 @@
+fop (1:2.3-2.1) unstable; urgency=low
+
+ * NMU.
+ * Fix wrong dependeny on fontbox{'' -> 2}. Closes: #584472
+
+ -- Philipp Hahn <hahn at univention.de> Thu, 05 Dec 2019 14:09:59 +0100
+
fop (1:2.3-2) unstable; urgency=medium
[ Mathieu Malaterre ]
diff -urN old/debian/control new/debian/control
--- old/debian/control 2018-11-21 09:35:30.000000000 +0100
+++ new/debian/control 2019-12-05 14:08:46.000000000 +0100
@@ -15,7 +15,7 @@
libbuild-helper-maven-plugin-java,
libcommons-io-java,
libcommons-logging-java,
- libfontbox-java,
+ libfontbox2-java,
libmaven-antrun-plugin-java,
libmaven-assembly-plugin-java,
libmaven-javadoc-plugin-java,
diff -urN old/debian/fop.sh new/debian/fop.sh
--- old/debian/fop.sh 2018-11-15 21:43:12.000000000 +0100
+++ new/debian/fop.sh 2019-12-05 14:08:51.000000000 +0100
@@ -51,7 +51,7 @@
find_jars commons-io avalon-framework serializer xalan2 xml-apis
find_jars batik-all commons-logging xercesImpl xmlgraphics-commons
-find_jars xml-apis-ext fontbox
+find_jars xml-apis-ext fontbox2
# We load the hyphenation jar at the request of the user.
if [ "$FOP_HYPHENATION_PATH" ]; then
More information about the pkg-java-maintainers
mailing list