;;; GNU Guix --- Functional package management for GNU ;;; ;;; This file is part of GNU Guix. ;;; ;;; GNU Guix is free software; you can redistribute it and/or modify it ;;; under the terms of the GNU General Public License as published by ;;; the Free Software Foundation; either version 3 of the License, or (at ;;; your option) any later version. ;;; ;;; GNU Guix is distributed in the hope that it will be useful, but ;;; WITHOUT ANY WARRANTY; without even the implied warranty of ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;;; GNU General Public License for more details. ;;; ;;; You should have received a copy of the GNU General Public License ;;; along with GNU Guix. If not, see . ;;; ;;; Copyright © 2023 Frank Pursel ;;; (define-module (gnu packages ditaa) #:use-module (gnu packages) #:use-module (gnu packages java) #:use-module (gnu packages xml) #:use-module (gnu packages javascript) #:use-module (gnu packages batik) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix git-download) #:use-module (guix build-system ant) #:use-module (guix modules) #:use-module (guix build utils) ) (define-public java-libbatik (package (name "batik") (version "1.16+dfsg") (source (origin (method url-fetch) (uri (string-append "https://deb.debian.org/debian/pool/main/b/batik/" name "_" version ".orig.tar.xz")) (sha256 (base32 "1xnmnnadp4l74dz55d3ask236lwy0iwg981851d01j2zlrgpw4p9")) )) (build-system ant-build-system) (arguments `(#:tests? #f #:jar-name (string-append ,name ".jar") #:source-dir "sources" #:phases (modify-phases %standard-phases (add-after 'unpack 'remove-prepackaged-jars (lambda _ (for-each (lambda (jarf) (delete-file jarf) (format #t "Deleted: ~s\n" jarf)) (find-files "." ".*\\.jar")) #t) ) (add-after 'remove-prepackaged-jars '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" "transcoder" "ttf2svg" "util" "xml")) ) (for-each (lambda (sdir) (copy-recursively (string-append "batik-" sdir "/src/main/java/") "sources/") ) sub-dirs) ) ;; Remove scripting subdirs for jpython, and jacl. (for-each (lambda (rfile) (delete-file rfile) (format #t "Deleted: ~s\n" rfile)) (append (find-files "sources/org/apache/batik/script/jpython" ) (find-files "sources/org/apache/batik/script/jacl" ) )) #t) ) ) ) ) (inputs (list rhino java-xmlgraphics-commons libxslt java-jaxen java-junit java-jaxp java-xerces java-jdom quickjs)) (home-page "https://xmlgraphics.apache.org/batik") (synopsis "The 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 ditaa (package (name "ditaa") (version "0.11.0") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/stathissideris/ditaa") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 (base32 "1y3g17wp1wvb05m56pp25avww2njpgh0gk0jsbsf25scj7hyyj26")))) (build-system ant-build-system) (inputs (list java-libbatik java-commons-cli java-w3c-svg `(,icedtea "jdk") java-junit)) (arguments `(#:build-target "release-all" #:phases (modify-phases %standard-phases ;; Ant's buildfile and build tree need to be modified ;; to provide access to the guix builds of the ;; batik and the java-commons-cli ;; jar files. Also some of the source requires java7. (add-after 'unpack 'remove-prepackaged-jars (lambda _ (for-each (lambda (jarf) (delete-file jarf) (format #t "Deleted: ~s\n" jarf)) (find-files "." ".*\\.jar")) #t)) (add-before 'build 'build-prep (lambda* (#:key inputs outputs #:allow-other-keys) (let* ((batik-jar (search-input-file inputs "share/java/batik.jar")) (commons-cli-jar (search-input-file inputs "lib/m2/commons-cli/commons-cli/1.4/commons-cli-1.4.jar"))) (mkdir-p "lib") (copy-file batik-jar "./lib/batik.jar") (copy-file commons-cli-jar "./lib/commons-cli.jar")) (with-directory-excursion "build" (substitute* "release.xml" (("source=\"1.6\"") "source=\"7\"") (("") (string-append "" "\n" "")))) #t)) (replace 'build (lambda* _ (setenv "ANT_OPTS" (string-append "-Dversion.string=" ,version)) (with-directory-excursion "build" (invoke "ant" "-f" "release.xml" "release-jar")) #t)) (replace 'check (lambda* (#:key tests? #:allow-other-keys) (if tests? (begin (setenv "ANT_OPTS" (string-append "-Dversion.string=" ,version)) (mkdir-p "tests/testlib") (with-directory-excursion "build" (invoke "ant" "-f" "release.xml" "generate-test-images") (invoke "ant" "test"))) #f))) (replace 'install (lambda* (#:key inputs outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) (lib (string-append out "/lib")) (bin (string-append out "/bin")) (bash (search-input-file inputs "bin/bash")) (java (search-input-file inputs "bin/java")) (jre (search-input-directory inputs "jre")) (ditaa (string-append out "/bin/ditaa")) (jar-name (string-append ,name ,version ".jar"))) (with-directory-excursion "releases" (install-file jar-name lib)) (mkdir-p bin) (with-output-to-file ditaa (lambda () (display (string-append "#!" bash "\n" "JAVA_HOME=" jre " " java " -jar " out "/lib/" jar-name " $@")))) (chmod ditaa #o755)) #t)) (add-after 'install 'install-docs (lambda* (#:key outputs #:allow-other-keys) (let ((doc (string-append (assoc-ref outputs "out") "/share/doc/"))) (for-each (lambda (filen) (install-file filen doc)) (find-files "." ".*README\\.md"))) #t))))) (home-page "https://github.com/stathissideris/ditaa") (synopsis "Create graphics from ascii art") (description "ditaa is a small command-line utility that converts diagrams drawn using ascii art ('drawings' that contain characters that resemble lines like | / - ), into proper bitmap graphics.") (license license:lgpl3)))