[Git][java-team/tika][master] 7 commits: Keep the org.codelibs groupId of jhighlight in debian/maven.rules

Emmanuel Bourg (@ebourg) gitlab at salsa.debian.org
Sat Oct 17 20:12:51 BST 2026



Emmanuel Bourg pushed to branch master at Debian Java Maintainers / tika


Commits:
40b4dc79 by Juan Manuel Méndez Rey at 2026-10-17T20:10:05+02:00
Keep the org.codelibs groupId of jhighlight in debian/maven.rules

- - - - -
097e68e6 by Juan Manuel Méndez Rey at 2026-10-17T20:10:05+02:00
Backport the POI 4.1.1 changes of the EMF, WMF and Office parsers

- - - - -
fc9c526e by Emmanuel Bourg at 2026-10-17T20:10:23+02:00
Converted debian/watch to the version 5 format

- - - - -
4a929296 by Emmanuel Bourg at 2026-10-17T20:10:23+02:00
Standards-Version updated to 4.7.4

- - - - -
fa4cfd10 by Emmanuel Bourg at 2026-10-17T20:10:23+02:00
Removed the Priority field

- - - - -
f54dc9dd by Emmanuel Bourg at 2026-10-17T21:11:23+02:00
Switch to debhelper level 13

- - - - -
e1f3bf3a by Emmanuel Bourg at 2026-10-17T21:12:25+02:00
Upload to unstable

- - - - -


7 changed files:

- debian/changelog
- − debian/compat
- debian/control
- debian/maven.rules
- + debian/patches/15-poi-4.1.1-compatibility.patch
- debian/patches/series
- debian/watch


Changes:

=====================================
debian/changelog
=====================================
@@ -1,8 +1,24 @@
-tika (1.22-3) UNRELEASED; urgency=medium
+tika (1.22-3) unstable; urgency=medium
 
+  * Team upload.
+
+  [ tony mancill ]
   * Update debian/watch for new upstream tag layout
 
- -- tony mancill <tmancill at debian.org>  Wed, 14 Apr 2021 07:49:24 -0700
+  [ Juan Manuel Méndez Rey ]
+  * Keep the org.codelibs groupId of jhighlight in debian/maven.rules,
+    as libjhighlight-java 1.1.0 installs it (Closes: #1109169).
+  * 15-poi-4.1.1-compatibility.patch: backport the parser changes of
+    upstream's POI 4.1.1 upgrade, to build with libapache-poi-java 4.1.1
+    (Closes: #1011492).
+
+  [ Emmanuel Bourg ]
+  * Converted debian/watch to the version 5 format
+  * Standards-Version updated to 4.7.4
+  * Removed the Priority field
+  * Switch to debhelper level 13
+
+ -- Emmanuel Bourg <ebourg at apache.org>  Sat, 17 Oct 2026 21:12:05 +0200
 
 tika (1.22-2) unstable; urgency=medium
 


=====================================
debian/compat deleted
=====================================
@@ -1 +0,0 @@
-11


=====================================
debian/control
=====================================
@@ -1,11 +1,10 @@
 Source: tika
 Section: java
-Priority: optional
 Maintainer: Debian Java Maintainers <pkg-java-maintainers at lists.alioth.debian.org>
 Uploaders: Emmanuel Bourg <ebourg at apache.org>
 Build-Depends:
  bnd (>= 2.1.0),
- debhelper (>= 11),
+ debhelper-compat (= 13),
  default-jdk,
  libandroid-json-org-java,
  libapache-mime4j-java (>= 0.8.1),
@@ -42,7 +41,7 @@ Build-Depends:
  libvorbis-java (>= 0.8-3~),
  libxmpcore-java,
  maven-debian-helper (>= 2.0)
-Standards-Version: 4.4.0
+Standards-Version: 4.7.4
 Vcs-Git: https://salsa.debian.org/java-team/tika.git
 Vcs-Browser: https://salsa.debian.org/java-team/tika
 Homepage: http://tika.apache.org


=====================================
debian/maven.rules
=====================================
@@ -3,7 +3,7 @@ com.fasterxml.jackson.core jackson-annotations * s/.*/2.x/ * *
 com.fasterxml.jackson.core jackson-core * s/.*/2.x/ * *
 com.fasterxml.jackson.core jackson-databind * s/.*/2.x/ * *
 s/com.github.openjson/org.json/ s/openjson/json/ * s/.*/debian/ * *
-s/org.codelibs/com.uwyn/ jhighlight * s/.*/debian/ * *
+org.codelibs jhighlight * s/.*/debian/ * *
 org.bouncycastle s/bcmail-jdk15/bcmail/ * s/.*/debian/ * *
 org.bouncycastle s/bcmail-jdk15on/bcmail/ * s/.*/debian/ * *
 org.bouncycastle s/bcprov-jdk15/bcprov/ * s/.*/debian/ * *


=====================================
debian/patches/15-poi-4.1.1-compatibility.patch
=====================================
@@ -0,0 +1,173 @@
+Description: Build with Apache POI 4.1.1
+ Debian has libapache-poi-java 4.1.1, where the EMF/WMF records were
+ reworked (org.apache.poi.hemf.record.emf, HemfPicture, getWmfRecordType)
+ and NPOIFSFileSystem is gone. This takes the parser changes of upstream's
+ POI 4.1.1 upgrade for EMFParser.java and OfficeParser.java as they are.
+ For WMFParser.java only the getRecordType() -> getWmfRecordType() renames
+ are taken; the extra ArrayIndexOutOfBoundsException handling of that
+ commit does not apply to 1.22 and is not needed to build.
+Author: tallison <tallison at apache.org>
+Origin: backport, https://github.com/apache/tika/commit/07ef8500cf9489b23f6b38f4f98392a254c23352
+Bug: https://issues.apache.org/jira/browse/TIKA-2851
+Bug-Debian: https://bugs.debian.org/1011492
+Applied-Upstream: 1.23
+Backported-by: Juan Manuel Méndez Rey <juan.mendezr at proton.me>
+Last-Update: 2026-10-03
+---
+diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/microsoft/EMFParser.java b/tika-parsers/src/main/java/org/apache/tika/parser/microsoft/EMFParser.java
+index 6c967e3..6f28648 100644
+--- a/tika-parsers/src/main/java/org/apache/tika/parser/microsoft/EMFParser.java
++++ b/tika-parsers/src/main/java/org/apache/tika/parser/microsoft/EMFParser.java
+@@ -22,13 +22,11 @@ import java.io.InputStream;
+ import java.util.Collections;
+ import java.util.Set;
+ 
+-import org.apache.poi.hemf.extractor.HemfExtractor;
+-import org.apache.poi.hemf.record.AbstractHemfComment;
+-import org.apache.poi.hemf.record.HemfCommentPublic;
+-import org.apache.poi.hemf.record.HemfCommentRecord;
+-import org.apache.poi.hemf.record.HemfRecord;
+-import org.apache.poi.hemf.record.HemfRecordType;
+-import org.apache.poi.hemf.record.HemfText;
++import org.apache.poi.hemf.record.emf.HemfComment;
++import org.apache.poi.hemf.record.emf.HemfRecord;
++import org.apache.poi.hemf.record.emf.HemfRecordType;
++import org.apache.poi.hemf.record.emf.HemfText;
++import org.apache.poi.hemf.usermodel.HemfPicture;
+ import org.apache.poi.util.RecordFormatException;
+ import org.apache.tika.exception.TikaException;
+ import org.apache.tika.extractor.EmbeddedDocumentExtractor;
+@@ -74,41 +72,46 @@ public class EMFParser extends AbstractParser {
+         XHTMLContentHandler xhtml = new XHTMLContentHandler(handler, metadata);
+         xhtml.startDocument();
+         try {
+-            HemfExtractor ex = new HemfExtractor(stream);
+-            long lastY = -1;
+-            long lastX = -1;
++            HemfPicture ex = new HemfPicture(stream);
++            double lastY = -1;
++            double lastX = -1;
+             long fudgeFactorX = 1000;//derive this from the font or frame/bounds information
+             StringBuilder buffer = new StringBuilder();
+             for (HemfRecord record : ex) {
+-                if (record.getRecordType() == HemfRecordType.comment) {
+-                    AbstractHemfComment comment = ((HemfCommentRecord) record).getComment();
+-                    if (comment instanceof HemfCommentPublic.MultiFormats) {
++                if (record.getEmfRecordType() == HemfRecordType.comment) {
++                    HemfComment.EmfCommentData commentData = ((HemfComment.EmfComment) record).getCommentData();
++                    if (commentData instanceof HemfComment.EmfCommentDataMultiformats) {
+                         if (embeddedDocumentExtractor == null) {
+                             embeddedDocumentExtractor = EmbeddedDocumentUtil.getEmbeddedDocumentExtractor(context);
+                         }
+-                        handleMultiFormats((HemfCommentPublic.MultiFormats)comment, xhtml, embeddedDocumentExtractor);
+-                    } else if (comment instanceof  HemfCommentPublic.WindowsMetafile) {
++                        handleMultiFormats(
++                                (HemfComment.EmfCommentDataMultiformats)commentData, xhtml, embeddedDocumentExtractor);
++                    } else if (commentData instanceof HemfComment.EmfCommentDataWMF) {
+                         if (embeddedDocumentExtractor == null) {
+                             embeddedDocumentExtractor = EmbeddedDocumentUtil.getEmbeddedDocumentExtractor(context);
+                         }
+-                        handleWMF((HemfCommentPublic.WindowsMetafile)comment, xhtml, embeddedDocumentExtractor);
++                        handleWMF(((HemfComment.EmfCommentDataWMF) commentData).getWMFData(),
++                                xhtml, embeddedDocumentExtractor);
+                     }
+-                } else if (record.getRecordType().equals(HemfRecordType.exttextoutw)) {
+-                    HemfText.ExtTextOutW extTextOutW = (HemfText.ExtTextOutW) record;
+-                    if (lastY > -1 && lastY != extTextOutW.getY()) {
++                } else if (record.getEmfRecordType().equals(HemfRecordType.extTextOutW)) {
++
++                    HemfText.EmfExtTextOutW extTextOutW = (HemfText.EmfExtTextOutW) record;
++                    //change equality to delta diff;
++
++                    if (lastY > -1 && lastY != extTextOutW.getReference().getY()) {
+                         xhtml.startElement("p");
+                         xhtml.characters(buffer.toString());
+                         xhtml.endElement("p");
+                         buffer.setLength(0);
+                         lastX = -1;
+                     }
+-                    if (lastX > -1 && extTextOutW.getX() - lastX > fudgeFactorX) {
++                    if (lastX > -1 && extTextOutW.getReference().getX() - lastX > fudgeFactorX) {
+                         buffer.append(" ");
+                     }
+                     String txt = extTextOutW.getText();
+                     buffer.append(txt);
+-                    lastY = extTextOutW.getY();
+-                    lastX = extTextOutW.getX();
++                    lastY = extTextOutW.getReference().getY();
++                    lastX = extTextOutW.getReference().getX();
+                 }
+             }
+             if (buffer.length() > 0) {
+@@ -124,12 +127,12 @@ public class EMFParser extends AbstractParser {
+         xhtml.endDocument();
+     }
+ 
+-    private void handleWMF(HemfCommentPublic.WindowsMetafile comment, ContentHandler contentHandler,
++    private void handleWMF(byte[] bytes, ContentHandler contentHandler,
+                            EmbeddedDocumentExtractor embeddedDocumentExtractor) throws IOException, SAXException, TikaException {
+         Metadata embeddedMetadata = new Metadata();
+         embeddedMetadata.set(Metadata.CONTENT_TYPE, WMF_MEDIA_TYPE.toString());
+         if (embeddedDocumentExtractor.shouldParseEmbedded(embeddedMetadata)) {
+-            try (InputStream is = TikaInputStream.get(comment.getWmfInputStream())) {
++            try (InputStream is = TikaInputStream.get(bytes)) {
+                 embeddedDocumentExtractor.parseEmbedded(is,
+                         new EmbeddedContentHandler(contentHandler), embeddedMetadata, false);
+ 
+@@ -139,11 +142,13 @@ public class EMFParser extends AbstractParser {
+ 
+     }
+ 
+-    private void handleMultiFormats(HemfCommentPublic.MultiFormats comment, ContentHandler handler,
++    private void handleMultiFormats(HemfComment.EmfCommentDataMultiformats commentData, ContentHandler handler,
+                                     EmbeddedDocumentExtractor embeddedDocumentExtractor) throws IOException, TikaException, SAXException {
+-        for (HemfCommentPublic.HemfMultiFormatsData data :
+-                ((HemfCommentPublic.MultiFormats) comment).getData()) {
+-            handleEmbedded(data.getData(), embeddedDocumentExtractor, handler);
++
++        for (HemfComment.EmfCommentDataFormat dataFormat :
++                commentData.getFormats()) {
++            //is this right?!
++            handleEmbedded(dataFormat.getRawData(), embeddedDocumentExtractor, handler);
+         }
+     }
+ 
+diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/microsoft/OfficeParser.java b/tika-parsers/src/main/java/org/apache/tika/parser/microsoft/OfficeParser.java
+index 756b7fd..95e7ba0 100644
+--- a/tika-parsers/src/main/java/org/apache/tika/parser/microsoft/OfficeParser.java
++++ b/tika-parsers/src/main/java/org/apache/tika/parser/microsoft/OfficeParser.java
+@@ -137,7 +137,7 @@ public class OfficeParser extends AbstractOfficeParser {
+ 
+                 //We might consider not bothering to check for macros in root,
+                 //if we know we're processing ppt based on content-type identified in metadata
+-                extractMacros(root.getNFileSystem(), xhtml,
++                extractMacros(root.getFileSystem(), xhtml,
+                             EmbeddedDocumentUtil.getEmbeddedDocumentExtractor(context));
+ 
+             }
+diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/microsoft/WMFParser.java b/tika-parsers/src/main/java/org/apache/tika/parser/microsoft/WMFParser.java
+index 5343751..82020a9 100644
+--- a/tika-parsers/src/main/java/org/apache/tika/parser/microsoft/WMFParser.java
++++ b/tika-parsers/src/main/java/org/apache/tika/parser/microsoft/WMFParser.java
+@@ -69,18 +69,18 @@ public class WMFParser extends AbstractParser {
+                 //this is pure hackery for specifying the font
+                 //TODO: do what Graphics does by maintaining the stack, etc.!
+                 //This fix should be done within POI
+-                if (record.getRecordType().equals(HwmfRecordType.createFontIndirect)) {
++                if (record.getWmfRecordType().equals(HwmfRecordType.createFontIndirect)) {
+                     HwmfFont font = ((HwmfText.WmfCreateFontIndirect) record).getFont();
+                     charset = (font.getCharset() == null || font.getCharset().getCharset() == null)
+                             ? LocaleUtil.CHARSET_1252 :
+                             font.getCharset().getCharset();
+                 }
+-                if (record.getRecordType().equals(HwmfRecordType.extTextOut)) {
++                if (record.getWmfRecordType().equals(HwmfRecordType.extTextOut)) {
+                     HwmfText.WmfExtTextOut textOut = (HwmfText.WmfExtTextOut) record;
+                     xhtml.startElement("p");
+                     xhtml.characters(textOut.getText(charset));
+                     xhtml.endElement("p");
+-                } else if (record.getRecordType().equals(HwmfRecordType.textOut)) {
++                } else if (record.getWmfRecordType().equals(HwmfRecordType.textOut)) {
+                     HwmfText.WmfTextOut textOut = (HwmfText.WmfTextOut) record;
+                     xhtml.startElement("p");
+                     xhtml.characters(textOut.getText(charset));


=====================================
debian/patches/series
=====================================
@@ -7,3 +7,4 @@
 12-json-compatibility.patch
 13-missing-dependencies.patch
 14-CVE-2020-1950_CVE-2020-1951.patch
+15-poi-4.1.1-compatibility.patch


=====================================
debian/watch
=====================================
@@ -1,3 +1,6 @@
-version=4
-opts="repack,compression=xz" \
-https://github.com/apache/tika/tags .*/([\d\.]+).tar.gz
+Version: 5
+Template: GitHub
+Owner: apache
+Project: tika
+Repack: yes
+Compression: xz



View it on GitLab: https://salsa.debian.org/java-team/tika/-/compare/13469f2c4eef5bfcccf8bc161f0bf3b3e7300ee9...e1f3bf3aa9a79042543b755ec7aaa6ba2c12f4f1

-- 
View it on GitLab: https://salsa.debian.org/java-team/tika/-/compare/13469f2c4eef5bfcccf8bc161f0bf3b3e7300ee9...e1f3bf3aa9a79042543b755ec7aaa6ba2c12f4f1
You're receiving this email because of your account on salsa.debian.org. Manage all notifications: https://salsa.debian.org/-/profile/notifications | Help: https://salsa.debian.org/help


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/pkg-java-commits/attachments/20261017/6471800d/attachment.htm>


More information about the pkg-java-commits mailing list