From 58417cac9520d721b79fbe4524da19d0c6a36c12 Mon Sep 17 00:00:00 2001 From: Tomodachi94 Date: Wed, 26 Jun 2024 17:10:11 -0700 Subject: [PATCH 1/3] batik: move to pkgs/by-name --- .../graphics/batik/default.nix => by-name/ba/batik/package.nix} | 0 pkgs/top-level/all-packages.nix | 2 -- 2 files changed, 2 deletions(-) rename pkgs/{applications/graphics/batik/default.nix => by-name/ba/batik/package.nix} (100%) diff --git a/pkgs/applications/graphics/batik/default.nix b/pkgs/by-name/ba/batik/package.nix similarity index 100% rename from pkgs/applications/graphics/batik/default.nix rename to pkgs/by-name/ba/batik/package.nix diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index b24e0955a7c5..964509fe1f7d 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -29618,8 +29618,6 @@ with pkgs; bashSnippets = callPackage ../applications/misc/bashSnippets { }; - batik = callPackage ../applications/graphics/batik { }; - batsignal = callPackage ../applications/misc/batsignal { }; baudline = callPackage ../applications/audio/baudline { }; From 927e293094ded7e3e7fe90dd1b553332f08f3e98 Mon Sep 17 00:00:00 2001 From: Tomodachi94 Date: Wed, 26 Jun 2024 20:57:35 -0700 Subject: [PATCH 2/3] batik: format with nixfmt-rfc-style --- pkgs/by-name/ba/batik/package.nix | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/pkgs/by-name/ba/batik/package.nix b/pkgs/by-name/ba/batik/package.nix index 1ff914c2740d..8a71a24773ff 100644 --- a/pkgs/by-name/ba/batik/package.nix +++ b/pkgs/by-name/ba/batik/package.nix @@ -1,4 +1,8 @@ -{lib, stdenv, fetchurl}: +{ + lib, + stdenv, + fetchurl, +}: stdenv.mkDerivation rec { pname = "batik"; From 82b74001f0648004151428d89e9c63fc46f75a28 Mon Sep 17 00:00:00 2001 From: Tomodachi94 Date: Thu, 27 Jun 2024 23:00:58 -0700 Subject: [PATCH 3/3] batik: refactor * All JARs end up in $out/share/java, and a few wrappers for the applications are made in $out/bin (closes #50932). * stdenv -> stdenvNoCC, since no compilers are needed in any stages. * Remove the vendored Rhino JavaScript engine and replace it with our Nixpkgs one. * Add the stripJavaArchivesHook. This is hopefully a large improvement over the previous derivation (which simply copied the binary tarball into $out). --- pkgs/by-name/ba/batik/package.nix | 47 ++++++++++++++++++++++++------- 1 file changed, 37 insertions(+), 10 deletions(-) diff --git a/pkgs/by-name/ba/batik/package.nix b/pkgs/by-name/ba/batik/package.nix index 8a71a24773ff..18bdb7c37e19 100644 --- a/pkgs/by-name/ba/batik/package.nix +++ b/pkgs/by-name/ba/batik/package.nix @@ -1,18 +1,50 @@ { lib, - stdenv, + stdenvNoCC, fetchurl, + jre, + rhino, + stripJavaArchivesHook, + makeWrapper, }: -stdenv.mkDerivation rec { +stdenvNoCC.mkDerivation (finalAttrs: { pname = "batik"; version = "1.17"; src = fetchurl { - url = "mirror://apache/xmlgraphics/batik/binaries/batik-bin-${version}.tar.gz"; - sha256 = "sha256-sEJphF3grlwZCEt3gHHm4JF8RpvKKBLLvKXf2lu/dhA="; + url = "mirror://apache/xmlgraphics/batik/binaries/batik-bin-${finalAttrs.version}.tar.gz"; + hash = "sha256-sEJphF3grlwZCEt3gHHm4JF8RpvKKBLLvKXf2lu/dhA="; }; + nativeBuildInputs = [ + stripJavaArchivesHook + makeWrapper + ]; + + buildInputs = [ + jre + rhino + ]; + + patchPhase = '' + # Vendored dependencies + rm lib/rhino-*.jar + ''; + + installPhase = '' + mkdir -p $out/bin $out/share/java + cp *.jar lib/*.jar $out/share/java + chmod +x $out/share/java/*.jar + classpath="$(find $out/share/java -name '*.jar' -printf '${rhino}/share/java/js.jar:%h/%f')" + for appName in rasterizer slideshow squiggle svgpp ttf2svg; do + makeWrapper ${lib.getExe jre} $out/bin/batik-$appName \ + --add-flags "-jar $out/share/java/batik-all-${finalAttrs.version}.jar" \ + --add-flags "-classpath $classpath" \ + --add-flags "org.apache.batik.apps.$appName.Main" + done + ''; + meta = with lib; { description = "Java based toolkit for handling SVG"; homepage = "https://xmlgraphics.apache.org/batik"; @@ -20,9 +52,4 @@ stdenv.mkDerivation rec { platforms = platforms.unix; sourceProvenance = with sourceTypes; [ binaryBytecode ]; }; - - installPhase = '' - mkdir $out - cp -r * $out/ - ''; -} +})