groovy.scm
1 | ;;; GNU Guix --- Functional package management for GNU |
2 | ;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu> |
3 | ;;; |
4 | ;;; This file is part of GNU Guix. |
5 | ;;; |
6 | ;;; GNU Guix is free software; you can redistribute it and/or modify it |
7 | ;;; under the terms of the GNU General Public License as published by |
8 | ;;; the Free Software Foundation; either version 3 of the License, or (at |
9 | ;;; your option) any later version. |
10 | ;;; |
11 | ;;; GNU Guix is distributed in the hope that it will be useful, but |
12 | ;;; WITHOUT ANY WARRANTY; without even the implied warranty of |
13 | ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
14 | ;;; GNU General Public License for more details. |
15 | ;;; |
16 | ;;; You should have received a copy of the GNU General Public License |
17 | ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. |
18 | |
19 | (define-module (more packages groovy) |
20 | #:use-module ((guix licenses) #:prefix license:) |
21 | #:use-module (gnu packages) |
22 | #:use-module (guix packages) |
23 | #:use-module (guix download) |
24 | #:use-module (guix utils) |
25 | #:use-module (guix build-system ant) |
26 | #:use-module (gnu packages java) |
27 | #:use-module (gnu packages web) |
28 | #:use-module (gnu packages xml) |
29 | #:use-module (more packages java)) |
30 | |
31 | ;; This package contains the java bootstrap that is used to build groovy submodules. |
32 | (define-public groovy-java-bootstrap |
33 | (package |
34 | (name "groovy") |
35 | (version "2.4.13") |
36 | (source (origin |
37 | (method url-fetch) |
38 | (uri (string-append "https://github.com/apache/groovy/archive/GROOVY_" |
39 | "2_4_13.tar.gz")) |
40 | (file-name (string-append name "-" version ".tar.gz")) |
41 | (sha256 |
42 | (base32 |
43 | "0qf1l029ilhnldmd194aybk3053apya3vfd33d3m80n2zh2wnbc1")) |
44 | (patches |
45 | (search-patches |
46 | "groovy-Add-exceptionutilsgenerator.patch")))) |
47 | (build-system ant-build-system) |
48 | (arguments |
49 | `(#:jar-name "groovy.jar" |
50 | #:source-dir "src/main:subprojects/groovy-test/src/main/java" |
51 | #:test-dir "src/test" |
52 | #:tests? #f |
53 | #:main-class "groovy.ui.GroovyMain" |
54 | #:phases |
55 | (modify-phases %standard-phases |
56 | (add-before 'build 'generate-parser |
57 | (lambda _ |
58 | (with-directory-excursion "src/main/org/codehaus/groovy/antlr/java" |
59 | (zero? (system* "antlr" "java.g"))) |
60 | (with-directory-excursion "src/main/org/codehaus/groovy/antlr" |
61 | (mkdir "parser") |
62 | (with-directory-excursion "parser" |
63 | (zero? (system* "antlr" "../groovy.g")))))) |
64 | (add-before 'build 'generate-exception-utils |
65 | (lambda _ |
66 | (system* "javac" "-cp" (getenv "CLASSPATH") |
67 | "config/ant/src/org/codehaus/groovy/ExceptionUtilsGenerator.java") |
68 | (zero? (system* "java" "-cp" (string-append (getenv "CLASSPATH") |
69 | ":config/ant/src") |
70 | "org.codehaus.groovy.ExceptionUtilsGenerator" |
71 | "build/classes/org/codehaus/groovy/runtime/ExceptionUtils.class")))) |
72 | (add-after 'install 'install-sh |
73 | (lambda* (#:key outputs #:allow-other-keys) |
74 | (substitute* "src/bin/startGroovy" |
75 | ((" -classpath .*") |
76 | (string-append " -classpath " (getenv "CLASSPATH") ":" |
77 | (assoc-ref outputs "out") "/share/java/groovy.jar \\"))) |
78 | (let ((bin (string-append (assoc-ref outputs "out") "/bin"))) |
79 | (for-each (lambda (script) |
80 | (install-file (string-append "src/bin/" script) bin) |
81 | (chmod (string-append bin "/" script) #o755)) |
82 | '("grape" "groovy" "groovyc" "groovyConsole" "groovydoc" |
83 | "groovysh" "java2groovy" "startGroovy"))) |
84 | (install-file "src/conf/groovy-starter.conf" |
85 | (string-append (assoc-ref outputs "out") "/conf")) |
86 | #t)) |
87 | (add-before 'check 'add-groovy-classes |
88 | (lambda _ |
89 | (substitute* "build.xml" |
90 | (("a") "a"))))))) |
91 | (native-inputs |
92 | `(("java-junit" ,java-junit) |
93 | ("antlr2" ,antlr2) |
94 | ("java-jmock-1" ,java-jmock-1) |
95 | ("java-xmlunit-legacy" ,java-xmlunit-legacy))) |
96 | (inputs |
97 | `(("java-commons-cli" ,java-commons-cli) |
98 | ("java-asm" ,java-asm) |
99 | ("java-tomcat" ,java-tomcat) |
100 | ("java-xstream" ,java-xstream) |
101 | ("java-jansi" ,java-jansi) |
102 | ("java-jline" ,java-jline))) |
103 | (home-page "") |
104 | (synopsis "") |
105 | (description "") |
106 | (license (list license:gpl2 |
107 | license:cddl1.1)))) |
108 | |
109 | (define-public groovy-templates |
110 | (package |
111 | (inherit groovy-java-bootstrap) |
112 | (name "groovy-templates") |
113 | (arguments |
114 | `(#:jar-name "groovy-templates.jar" |
115 | #:phases |
116 | (modify-phases %standard-phases |
117 | (replace 'build |
118 | (lambda _ |
119 | (mkdir-p "build/classes") |
120 | (zero? (system* "java" "-cp" (getenv "CLASSPATH") |
121 | "org.codehaus.groovy.tools.FileSystemCompiler" |
122 | "-d" "build/classes" |
123 | "-j"; joint compilation |
124 | (find-files "subprojects/groovy-templates/src/main" |
125 | ".*\\.(groovy|java)$"))))) |
126 | (replace 'check |
127 | (lambda _ |
128 | (mkdir-p "build/test-classes") |
129 | (zero? (system* "java" "-cp" (getenv "CLASSPATH") |
130 | "org.codehaus.groovy.tools.FileSystemCompiler" |
131 | "-d" "build/test-classes" |
132 | "-j" |
133 | (find-files "subprojects/groovy-templates/src/test" |
134 | ".*\\.(groovy|java)$")))))))) |
135 | (native-inputs |
136 | `(("groovy-java-bootstrap" ,groovy-java-bootstrap) |
137 | ,@(package-native-inputs groovy-java-bootstrap))))) |
138 | |
139 |