summary refs log tree commit diff
path: root/gnu/packages/batik.scm
diff options
context:
space:
mode:
authorFrank Pursel <frank.pursel@gmail.com>2023-01-26 08:53:09 -0800
committerVagrant Cascadian <vagrant@debian.org>2023-08-28 15:36:48 -0700
commitd0c508f451d881d0c3814be4a932b6d395c1599a (patch)
treead24d5c57c2a12e94f55a45ec03305fc6092af8e /gnu/packages/batik.scm
parent900ceef580a6cb9ef7c41a5b8fa064cd46fc856c (diff)
downloadguix-d0c508f451d881d0c3814be4a932b6d395c1599a.tar.gz
gnu: Add java-libbatik.
* gnu/packages/batik.scm (java-libbatik): New variable.

Signed-off-by: Vagrant Cascadian <vagrant@debian.org>
Diffstat (limited to 'gnu/packages/batik.scm')
-rw-r--r--gnu/packages/batik.scm99
1 files changed, 98 insertions, 1 deletions
diff --git a/gnu/packages/batik.scm b/gnu/packages/batik.scm
index 7f159010a5..58f829dbd5 100644
--- a/gnu/packages/batik.scm
+++ b/gnu/packages/batik.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2018 Danny Milosavljevic <dannym@scratchpost.org>
 ;;; Copyright © 2020 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2023 Frank Pursel <frank.pursel@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -28,7 +29,103 @@
   #:use-module (gnu packages compression)
   #:use-module (gnu packages java)
   #:use-module (gnu packages java-xml)
-  #:use-module (gnu packages textutils))
+  #:use-module (gnu packages javascript)
+  #:use-module (gnu packages textutils)
+  #:use-module (gnu packages xml))
+
+(define-public java-libbatik
+  (package
+    (name "java-libbatik")
+    (version "1.16")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://dlcdn.apache.org/xmlgraphics/batik/source/batik-src-"
+                    version ".tar.gz"))
+              (sha256
+               (base32
+                "18ys0j7i861ydvimbm3a7dyvny48x5b37zfkvznlys7vcb2qz5z1"))
+              (modules '((guix build utils)))
+              (snippet '(begin
+                          ;; Identify and delete bundled jars.
+                          (format #t "~%~a~%" "Removing sourced jars")
+                          (for-each (lambda (f)
+                                      (delete-file f)
+                                      (format #t "Deleted: ~a~%" f))
+                                    (find-files "." "\\.jar$"))))))
+    (build-system ant-build-system)
+    (arguments
+     `(#:jar-name "batik.jar"
+       #:source-dir "sources/src/main/java"
+       #:test-dir "sources/src/test"
+       ;; Tests are successful -- exclusions in lieu of
+       ;; deleting duplicated util tests.
+       #:test-exclude (list "**/util/*.java")
+       #:phases (modify-phases %standard-phases
+                  (add-after 'unpack 'src-consolidation
+                    (lambda _
+                      (mkdir-p "sources")
+                      (let ((cwd (getcwd))
+                            (sub-dirs (list "anim"
+                                            "awt-util"
+                                            "bridge"
+                                            "codec"
+                                            "constants"
+                                            "css"
+                                            "dom"
+                                            "ext"
+                                            "extension"
+                                            "gui-util"
+                                            "gvt"
+                                            "i18n"
+                                            "parser"
+                                            "script"
+                                            "slideshow"
+                                            "svgbrowser"
+                                            "svg-dom"
+                                            "svggen"
+                                            "svgpp"
+                                            "svgrasterizer"
+                                            "swing"
+                                            "test"
+                                            "test-svg"
+                                            "transcoder"
+                                            "ttf2svg"
+                                            "util"
+                                            "xml"
+                                            "test-swing")))
+                        (for-each (lambda (sdir)
+                                    (copy-recursively (string-append "batik-"
+                                                                     sdir)
+                                                      "sources/")) sub-dirs))
+                      ;; Test prep
+                      (copy-recursively "test-resources" "sources")
+                      ;; Remove scripting subdirs for jpython, and jacl.
+                      (for-each (lambda (rfile)
+                                  (delete-file rfile)
+                                  (format #t "Deleted: ~s\n" rfile))
+                                (append (find-files (string-append
+                                                     "sources/src/main/java/org/"
+                                                     "apache/batik/script/jpython"))
+                                        (find-files (string-append
+                                                     "sources/src/main/java/org/"
+                                                     "apache/batik/script/jacl")))))))))
+    (native-inputs (list java-jaxen
+                         java-jdom
+                         quickjs
+                         java-jaxp
+                         java-junit
+                         java-xerces
+                         java-xmlgraphics-commons
+                         libxslt
+                         rhino))
+    (home-page "https://xmlgraphics.apache.org/batik/")
+    (synopsis "Java based toolkit for Scalable Vector Graphics")
+    (description
+     "Batik is a Java-based toolkit for applications or
+applets that want to use images in the Scalable Vector Graphics (SVG)
+format for various purposes, such as display, generation or manipulation.")
+    (license license:asl2.0)))
 
 (define-public java-w3c-smil-3.0
   (package