tika: bump jdk to 17, add option to disable GUI and use minimal jdk

Upstream uses jdk 17 in their CI, too
https://github.com/apache/tika/tree/2.9.3/.github/workflows
This commit is contained in:
Sandro Jäckel 2025-04-07 01:30:38 +02:00
parent 2a9a12ff66
commit f9bca2bcab
No known key found for this signature in database
GPG key ID: 3AF5A43A3EECC2E5
2 changed files with 57 additions and 16 deletions

View file

@ -79,7 +79,10 @@ in
serviceConfig = serviceConfig =
let let
package = cfg.package.override { inherit (cfg) enableOcr; }; package = cfg.package.override {
inherit (cfg) enableOcr;
enableGui = false;
};
in in
{ {
Type = "simple"; Type = "simple";

View file

@ -2,26 +2,41 @@
lib, lib,
stdenv, stdenv,
maven, maven,
jdk8, jdk17,
jre17_minimal,
fetchFromGitHub, fetchFromGitHub,
makeWrapper, makeWrapper,
mvnDepsHash ? null, mvnDepsHash ? null,
enableGui ? true,
enableOcr ? true, enableOcr ? true,
runCommand,
tesseract, tesseract,
nixosTests, nixosTests,
}: }:
let let
mvnDepsHashes = { mvnDepsHashes = {
"x86_64-linux" = "sha256-a2EIxok7Ov2QQntu3fpagzvMAQcBjKwcd1whDNdCm2E="; "x86_64-linux" = "sha256-OTd51n6SSlFziqvvHmfyMAyQRwIzsHxFGuJ62zlX1Ec=";
"aarch64-linux" = "sha256-TUJmlnFJeYY4Pzrmd+9uKb07Tq7HYd4EnAXkbgGCFDk="; "aarch64-linux" = "sha256-tPaGLqm0jgEoz0BD/C6AG9xupovQvib/v0kB/jjqwB8=";
"x86_64-darwin" = "sha256-OTctUd4lsH6Z6H7rDYbyAcrBmzpSzFELjPBRN8zUyhY="; "x86_64-darwin" = "sha256-Rs7nTiGazUW8oJJr6fbJKelzFqd2n278sJYoMy2/0N4=";
"aarch64-darwin" = "sha256-0tNFHEaxAEqrZTTrGCIX53K9MczkqIuDABD/bB6R1KU="; "aarch64-darwin" = "sha256-gnP+G33LPRMQ6HRzeZ8cEV9oSohrlPcMwlBB4rvH7+E=";
}; };
knownMvnDepsHash = knownMvnDepsHash =
mvnDepsHashes.${stdenv.system} mvnDepsHashes.${stdenv.system}
or (lib.warn "This platform doesn't have a default mvnDepsHash value, you'll need to specify it manually" lib.fakeHash); or (lib.warn "This platform doesn't have a default mvnDepsHash value, you'll need to specify it manually" lib.fakeHash);
jdk = jre17_minimal.override {
modules = [
"java.base"
"java.desktop"
"java.logging"
"java.management"
"java.naming"
"java.sql"
];
jdk = jdk17;
};
in in
maven.buildMavenPackage rec { maven.buildMavenPackage rec {
pname = "tika"; pname = "tika";
@ -43,30 +58,53 @@ maven.buildMavenPackage rec {
"org.junit.platform:junit-platform-launcher:1.10.0" "org.junit.platform:junit-platform-launcher:1.10.0"
]; ];
mvnJdk = jdk8; mvnJdk = jdk17;
mvnHash = if mvnDepsHash != null then mvnDepsHash else knownMvnDepsHash; mvnHash = if mvnDepsHash != null then mvnDepsHash else knownMvnDepsHash;
mvnParameters = toString [ mvnParameters = toString (
[
"-DskipTests=true" # skip tests (out of memory exceptions) "-DskipTests=true" # skip tests (out of memory exceptions)
"-Dossindex.skip" # skip dependency with vulnerability (recommended by upstream) "-Dossindex.skip" # skip dependency with vulnerability (recommended by upstream)
]; ]
++ lib.optionals (!enableGui) [
"-am -pl :tika-server-standard"
]
);
nativeBuildInputs = [ makeWrapper ]; nativeBuildInputs = [ makeWrapper ];
installPhase = installPhase =
let let
binPath = lib.makeBinPath ([ jdk8.jre ] ++ lib.optionals enableOcr [ tesseract ]); flags = "--add-opens java.base/jdk.internal.ref=ALL-UNNAMED --add-opens java.base/java.nio=ALL-UNNAMED";
binPath = lib.makeBinPath (
[
(runCommand "jdk-tika"
{
nativeBuildInputs = [ makeWrapper ];
}
''
makeWrapper ${jdk}/bin/java $out/bin/java \
--add-flags "${flags}"
''
)
]
++ lib.optionals enableOcr [ tesseract ]
);
in in
'' ''
runHook preInstall runHook preInstall
# Note: using * instead of version would match multiple files # Note: using * instead of version would match multiple files
''
+ lib.optionalString enableGui ''
install -Dm644 tika-app/target/tika-app-${version}.jar $out/share/tika/tika-app.jar install -Dm644 tika-app/target/tika-app-${version}.jar $out/share/tika/tika-app.jar
makeWrapper ${jdk}/bin/java $out/bin/tika-app \
--add-flags "${flags} -jar $out/share/tika/tika-app.jar"
''
+ ''
install -Dm644 tika-server/tika-server-standard/target/tika-server-standard-${version}.jar $out/share/tika/tika-server.jar install -Dm644 tika-server/tika-server-standard/target/tika-server-standard-${version}.jar $out/share/tika/tika-server.jar
makeWrapper ${jdk}/bin/java $out/bin/tika-server \
makeWrapper ${jdk8.jre}/bin/java $out/bin/tika-app \
--add-flags "-jar $out/share/tika/tika-app.jar"
makeWrapper ${jdk8.jre}/bin/java $out/bin/tika-server \
--prefix PATH : ${binPath} \ --prefix PATH : ${binPath} \
--add-flags "-jar $out/share/tika/tika-server.jar" --add-flags "-jar $out/share/tika/tika-server.jar"