diff mbox

gnu: Add plantuml.

Message ID 20161024131225.24436-1-theodoros.for@openmailbox.org
State New
Headers show

Commit Message

Theodoros Foradis Oct. 24, 2016, 1:12 p.m. UTC
* gnu/packages/plantuml.scm: New file.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add it.
---
 gnu/local.mk              |  1 +
 gnu/packages/plantuml.scm | 87 +++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 88 insertions(+)
 create mode 100644 gnu/packages/plantuml.scm

Comments

Efraim Flashner Oct. 27, 2016, 10:13 a.m. UTC | #1
I don't java, so I haven't tried it out, so my comments are mostly
cosmetic on the package definition.

On Mon, Oct 24, 2016 at 04:12:25PM +0300, Theodoros Foradis wrote:
> +
> +(define-public plantuml
> +  (package
> +    (name "plantuml")
> +    (version "8048")
> +    (source (origin
> +              (method url-fetch)
> +              (uri (string-append
> +                    "https://downloads.sourceforge.net/project/plantuml/plantuml-"
> +                    version ".tar.gz"))

this should be of the mirror://sourceforge type

> +              (sha256
> +               (base32
> +                "1vipxd6p7isb1k1qqh4hrpfcj27hx1nll2yp0rfwpvps1w2d936i"))))
> +    (build-system ant-build-system)
> +    (arguments
> +     `(#:tests? #f ; no tests
> +       #:build-target "dist"
> +       #:phases
> +       (modify-phases %standard-phases
> +         (add-before 'build 'delete-extra-from-cp
> +                     (lambda _
> +                       (substitute* "build.xml"
> +                         (("1.6") "1.7"))
> +                       (substitute* "build.xml"
> +                         (("<attribute name=\"Class-Path\"") "<!--"))
> +                       (substitute* "build.xml"
> +                         (("j2v8_macosx_x86_64-3.1.7.jar\" />") "-->"))))

                return #t
                also, since they're all for the same set (build.xml),
                you can take out the duplicate substitute* lines

> +         (add-before 'install 'gen-install
> +                  (lambda* (#:key outputs #:allow-other-keys)
> +                    (mkdir-p "build/jar")
> +                    (system* "mv" "plantuml.jar" "build/jar")
> +                    ((@@ (guix build ant-build-system) default-build.xml)
> +                     "plantuml.jar"
> +                     (string-append (assoc-ref outputs "out")
> +                                    "/share/java"))))
> +         (add-after 'install 'make-wrapper
> +                    (lambda* (#:key inputs outputs #:allow-other-keys)
> +                      (let* ((out (assoc-ref outputs "out"))
> +                             (wrapper (string-append out "/bin/plantuml")))
> +                        (mkdir-p (string-append out "/bin"))
> +                        (with-output-to-file wrapper
> +                          (lambda _
> +                            (display
> +                             (string-append
> +                              "#!" (assoc-ref inputs "bash") "/bin/sh\n\n"
> +                              (assoc-ref inputs "jre") "/bin/java -jar "
> +                              out "/share/java/plantuml.jar \"$@\"\n"))))
> +                        (chmod wrapper #o555)))))))
> +    (inputs
> +     `(("graphviz" ,graphviz)
> +       ("bash" ,bash)
> +       ("jre" ,icedtea "out")))
> +    (home-page "http://plantuml.com/")
> +    (synopsis "Draw UML diagrams from simple textual description")
> +    (description
> +     "Plantuml is a tool to generate sequence, usecase, class, activity,
> +component, state, deployment and object UML diagrams, using a simple and
> +human readable text description.  Contains salt, a tool that can design simple
> +graphical interfaces.")
> +    (license license:gpl3+)))
> -- 
> 2.10.1
> 
>
Marius Bakke Oct. 27, 2016, 10:21 a.m. UTC | #2
Theodoros Foradis <theodoros.for@openmailbox.org> writes:

> * gnu/packages/plantuml.scm: New file.
> * gnu/local.mk (GNU_SYSTEM_MODULES): Add it.
> ---
>  gnu/local.mk              |  1 +
>  gnu/packages/plantuml.scm | 87 +++++++++++++++++++++++++++++++++++++++++++++++
>  2 files changed, 88 insertions(+)
>  create mode 100644 gnu/packages/plantuml.scm

Please add it to "uml.scm" instead, so that we can use it for other UML
related packages.
Theodoros Foradis Oct. 27, 2016, 11:18 a.m. UTC | #3
Efraim Flashner writes:

> I don't java, so I haven't tried it out, so my comments are mostly
> cosmetic on the package definition.
>
> On Mon, Oct 24, 2016 at 04:12:25PM +0300, Theodoros Foradis wrote:
>> +
>> +(define-public plantuml
>> +  (package
>> +    (name "plantuml")
>> +    (version "8048")
>> +    (source (origin
>> +              (method url-fetch)
>> +              (uri (string-append
>> +                    "https://downloads.sourceforge.net/project/plantuml/plantuml-"
>> +                    version ".tar.gz"))
>
> this should be of the mirror://sourceforge type
>

fixed

>> +              (sha256
>> +               (base32
>> +                "1vipxd6p7isb1k1qqh4hrpfcj27hx1nll2yp0rfwpvps1w2d936i"))))
>> +    (build-system ant-build-system)
>> +    (arguments
>> +     `(#:tests? #f ; no tests
>> +       #:build-target "dist"
>> +       #:phases
>> +       (modify-phases %standard-phases
>> +         (add-before 'build 'delete-extra-from-cp
>> +                     (lambda _
>> +                       (substitute* "build.xml"
>> +                         (("1.6") "1.7"))
>> +                       (substitute* "build.xml"
>> +                         (("<attribute name=\"Class-Path\"") "<!--"))
>> +                       (substitute* "build.xml"
>> +                         (("j2v8_macosx_x86_64-3.1.7.jar\" />") "-->"))))
>
>                 return #t
>                 also, since they're all for the same set (build.xml),
>                 you can take out the duplicate substitute* lines
>

done

>> +         (add-before 'install 'gen-install
>> +                  (lambda* (#:key outputs #:allow-other-keys)
>> +                    (mkdir-p "build/jar")
>> +                    (system* "mv" "plantuml.jar" "build/jar")
>> +                    ((@@ (guix build ant-build-system) default-build.xml)
>> +                     "plantuml.jar"
>> +                     (string-append (assoc-ref outputs "out")
>> +                                    "/share/java"))))
>> +         (add-after 'install 'make-wrapper
>> +                    (lambda* (#:key inputs outputs #:allow-other-keys)
>> +                      (let* ((out (assoc-ref outputs "out"))
>> +                             (wrapper (string-append out "/bin/plantuml")))
>> +                        (mkdir-p (string-append out "/bin"))
>> +                        (with-output-to-file wrapper
>> +                          (lambda _
>> +                            (display
>> +                             (string-append
>> +                              "#!" (assoc-ref inputs "bash") "/bin/sh\n\n"
>> +                              (assoc-ref inputs "jre") "/bin/java -jar "
>> +                              out "/share/java/plantuml.jar \"$@\"\n"))))
>> +                        (chmod wrapper #o555)))))))
>> +    (inputs
>> +     `(("graphviz" ,graphviz)
>> +       ("bash" ,bash)
>> +       ("jre" ,icedtea "out")))
>> +    (home-page "http://plantuml.com/")
>> +    (synopsis "Draw UML diagrams from simple textual description")
>> +    (description
>> +     "Plantuml is a tool to generate sequence, usecase, class, activity,
>> +component, state, deployment and object UML diagrams, using a simple and
>> +human readable text description.  Contains salt, a tool that can design simple
>> +graphical interfaces.")
>> +    (license license:gpl3+)))
>> -- 
>> 2.10.1
>> 
>> 

Also, I took Marius Bakke's advice, and added it to "uml.scm" instead.

Thanks for your input.
diff mbox

Patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 0d400e9..678acfd 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -292,6 +292,7 @@  GNU_SYSTEM_MODULES =				\
   %D%/packages/perl.scm				\
   %D%/packages/photo.scm			\
   %D%/packages/pkg-config.scm			\
+  %D%/packages/plantuml.scm			\
   %D%/packages/plotutils.scm			\
   %D%/packages/polkit.scm			\
   %D%/packages/popt.scm				\
diff --git a/gnu/packages/plantuml.scm b/gnu/packages/plantuml.scm
new file mode 100644
index 0000000..11c5f72
--- /dev/null
+++ b/gnu/packages/plantuml.scm
@@ -0,0 +1,87 @@ 
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2016 Theodoros Foradis <theodoros.for@openmailbox.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages plantuml)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix utils)
+  #:use-module (guix build-system ant)
+  #:use-module (gnu packages bash)
+  #:use-module (gnu packages graphviz)
+  #:use-module (gnu packages java))
+
+(define-public plantuml
+  (package
+    (name "plantuml")
+    (version "8048")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://downloads.sourceforge.net/project/plantuml/plantuml-"
+                    version ".tar.gz"))
+              (sha256
+               (base32
+                "1vipxd6p7isb1k1qqh4hrpfcj27hx1nll2yp0rfwpvps1w2d936i"))))
+    (build-system ant-build-system)
+    (arguments
+     `(#:tests? #f ; no tests
+       #:build-target "dist"
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'delete-extra-from-cp
+                     (lambda _
+                       (substitute* "build.xml"
+                         (("1.6") "1.7"))
+                       (substitute* "build.xml"
+                         (("<attribute name=\"Class-Path\"") "<!--"))
+                       (substitute* "build.xml"
+                         (("j2v8_macosx_x86_64-3.1.7.jar\" />") "-->"))))
+         (add-before 'install 'gen-install
+                  (lambda* (#:key outputs #:allow-other-keys)
+                    (mkdir-p "build/jar")
+                    (system* "mv" "plantuml.jar" "build/jar")
+                    ((@@ (guix build ant-build-system) default-build.xml)
+                     "plantuml.jar"
+                     (string-append (assoc-ref outputs "out")
+                                    "/share/java"))))
+         (add-after 'install 'make-wrapper
+                    (lambda* (#:key inputs outputs #:allow-other-keys)
+                      (let* ((out (assoc-ref outputs "out"))
+                             (wrapper (string-append out "/bin/plantuml")))
+                        (mkdir-p (string-append out "/bin"))
+                        (with-output-to-file wrapper
+                          (lambda _
+                            (display
+                             (string-append
+                              "#!" (assoc-ref inputs "bash") "/bin/sh\n\n"
+                              (assoc-ref inputs "jre") "/bin/java -jar "
+                              out "/share/java/plantuml.jar \"$@\"\n"))))
+                        (chmod wrapper #o555)))))))
+    (inputs
+     `(("graphviz" ,graphviz)
+       ("bash" ,bash)
+       ("jre" ,icedtea "out")))
+    (home-page "http://plantuml.com/")
+    (synopsis "Draw UML diagrams from simple textual description")
+    (description
+     "Plantuml is a tool to generate sequence, usecase, class, activity,
+component, state, deployment and object UML diagrams, using a simple and
+human readable text description.  Contains salt, a tool that can design simple
+graphical interfaces.")
+    (license license:gpl3+)))