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