gnu: icecat: Update to 78.10.0-guix0-preview1 [security fixes].
[jackhill/guix/guix.git] / gnu / packages / groovy.scm
CommitLineData
fdc9170b
JL
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2018 Julien Lepiller <julien@lepiller.eu>
ef6a5fcc 3;;; Copyright © 2019 Tobias Geerinck-Rice <me@tobias.gr>
fdc9170b
JL
4;;;
5;;; This file is part of GNU Guix.
6;;;
7;;; GNU Guix is free software; you can redistribute it and/or modify it
8;;; under the terms of the GNU General Public License as published by
9;;; the Free Software Foundation; either version 3 of the License, or (at
10;;; your option) any later version.
11;;;
12;;; GNU Guix is distributed in the hope that it will be useful, but
13;;; WITHOUT ANY WARRANTY; without even the implied warranty of
14;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15;;; GNU General Public License for more details.
16;;;
17;;; You should have received a copy of the GNU General Public License
18;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
19
20(define-module (gnu packages groovy)
21 #:use-module ((guix licenses) #:prefix license:)
22 #:use-module (guix packages)
23 #:use-module (guix download)
ef6a5fcc 24 #:use-module (guix git-download)
fdc9170b
JL
25 #:use-module (guix utils)
26 #:use-module (guix build-system ant)
27 #:use-module (gnu packages)
28 #:use-module (gnu packages java)
29 #:use-module (gnu packages xml))
30
31(define java-groovy-bootstrap
32 (package
b0192c85 33 (name "java-groovy-bootstrap")
417cf544 34 (version "3.0.5")
ef6a5fcc
TGR
35 (source
36 (origin
37 (method git-fetch)
38 (uri (git-reference
b0e7b699 39 (url "https://github.com/apache/groovy")
ef6a5fcc
TGR
40 (commit (string-append
41 "GROOVY_"
42 (string-map (lambda (x) (if (eq? x #\.) #\_ x))
43 version)))))
44 (file-name (git-file-name name version))
45 (sha256
417cf544 46 (base32 "00556qxjmcn3a3xhfy6n0zw3d69mnw72vzm2rb6n4ihzkk7579nm"))
ef6a5fcc
TGR
47 (patches
48 (search-patches "groovy-add-exceptionutilsgenerator.patch"))))
fdc9170b
JL
49 (build-system ant-build-system)
50 (arguments
51 `(#:jar-name "groovy.jar"
417cf544 52 #:source-dir "src/main/java:src/main/antlr2:subprojects/parser-antlr4/src/main/java:src/antlr"
fdc9170b
JL
53 #:test-dir "src/test"
54 #:tests? #f
417cf544 55 #:jdk ,openjdk9
fdc9170b
JL
56 #:main-class "groovy.ui.GroovyMain"
57 #:phases
58 (modify-phases %standard-phases
fdc9170b
JL
59 (add-before 'build 'generate-parsers
60 (lambda _
417cf544 61 (with-directory-excursion "src/main/antlr2/org/codehaus/groovy/antlr/java"
fdc9170b 62 (invoke "antlr" "java.g"))
417cf544 63 (with-directory-excursion "src/main/antlr2/org/codehaus/groovy/antlr"
fdc9170b
JL
64 (mkdir "parser")
65 (with-directory-excursion "parser"
66 (invoke "antlr" "../groovy.g")))
417cf544
JL
67 (invoke "antlr4" "-lib" "src/antlr"
68 "-package" "org.apache.groovy.parser.antlr4"
69 "-visitor" "-no-listener" "src/antlr/GroovyLexer.g4")
70 (invoke "antlr4" "-lib" "src/antlr"
71 "-package" "org.apache.groovy.parser.antlr4"
72 "-visitor" "-no-listener" "src/antlr/GroovyParser.g4")
fdc9170b
JL
73 #t))
74 (add-before 'build 'generate-exception-utils
75 (lambda _
76 (invoke "javac" "-cp" (getenv "CLASSPATH")
417cf544 77 "-source" "1.8" "-target" "1.8"
fdc9170b
JL
78 "config/ant/src/org/codehaus/groovy/ExceptionUtilsGenerator.java")
79 (invoke "java" "-cp" (string-append (getenv "CLASSPATH")
80 ":config/ant/src")
81 "org.codehaus.groovy.ExceptionUtilsGenerator"
82 "build/classes/org/codehaus/groovy/runtime/ExceptionUtils.class")
417cf544
JL
83 #t))
84 (add-before 'build 'set-source-level
85 (lambda _
86 (substitute* "build.xml"
87 (("<javac") "<javac source=\"1.8\" target=\"1.8\""))
fdc9170b
JL
88 #t)))))
89 (native-inputs
417cf544
JL
90 `(("antlr2" ,antlr2)
91 ("antlr4" ,java-tunnelvisionlabs-antlr4)
92 ("java-jsr305" ,java-jsr305)
93 ("java-junit" ,java-junit)
fdc9170b 94 ("java-hamcrest-core" ,java-hamcrest-core)
fdc9170b
JL
95 ("java-jmock-1" ,java-jmock-1)
96 ("java-xmlunit-legacy" ,java-xmlunit-legacy)))
97 (inputs
417cf544
JL
98 `(("java-antlr4-runtime" ,java-tunnelvisionlabs-antlr4-runtime)
99 ("java-antlr4-runtime-annotations"
100 ,java-tunnelvisionlabs-antlr4-runtime-annotations)
101 ("java-asm" ,java-asm-8)
102 ("java-asm-util" ,java-asm-util-8)
fdc9170b 103 ("java-classpathx-servletapi" ,java-classpathx-servletapi)
417cf544 104 ("java-commons-cli" ,java-commons-cli)
fdc9170b 105 ("java-jansi" ,java-jansi)
417cf544
JL
106 ("java-jline-2" ,java-jline-2)
107 ("java-picocli" ,java-picocli)
108 ("java-xstream" ,java-xstream)))
fdc9170b
JL
109 (home-page "http://groovy-lang.org/")
110 (synopsis "Groovy's java bootstrap")
111 (description "This package contains the java bootstrap that is used to build
112groovy submodules.")
113 (license license:asl2.0)))
b0192c85
JL
114
115(define groovy-bootstrap
116 (package
117 (inherit java-groovy-bootstrap)
118 (name "groovy-bootstrap")
119 (arguments
120 `(#:jar-name "groovy.jar"
417cf544 121 #:jdk ,openjdk9
b0192c85
JL
122 ;Requires groovy-xml and logback-classic which are circular dependencies
123 #:tests? #f
124 #:phases
125 (modify-phases %standard-phases
b0192c85
JL
126 (add-before 'build 'generate-parser
127 (lambda _
417cf544 128 (with-directory-excursion "src/main/antlr2/org/codehaus/groovy/antlr/java"
b0192c85 129 (invoke "antlr" "java.g"))
417cf544 130 (with-directory-excursion "src/main/antlr2/org/codehaus/groovy/antlr"
b0192c85
JL
131 (mkdir "parser")
132 (with-directory-excursion "parser"
133 (invoke "antlr" "../groovy.g")))
417cf544
JL
134 (invoke "antlr4" "-lib" "src/antlr"
135 "-package" "org.apache.groovy.parser.antlr4"
136 "-visitor" "-no-listener" "src/antlr/GroovyLexer.g4")
137 (invoke "antlr4" "-lib" "src/antlr"
138 "-package" "org.apache.groovy.parser.antlr4"
139 "-visitor" "-no-listener" "src/antlr/GroovyParser.g4")
b0192c85
JL
140 #t))
141 (add-before 'build 'generate-exception-utils
142 (lambda _
143 (invoke "javac" "-cp" (getenv "CLASSPATH")
144 "config/ant/src/org/codehaus/groovy/ExceptionUtilsGenerator.java")
145 (invoke "java" "-cp" (string-append (getenv "CLASSPATH")
146 ":config/ant/src")
147 "org.codehaus.groovy.ExceptionUtilsGenerator"
148 "target/classes/org/codehaus/groovy/runtime/ExceptionUtils.class")
149 #t))
150 (add-before 'build 'generate-dgminfo
151 (lambda _
152 (mkdir-p "target/classes/org/codehaus/groovy/runtime")
153 (mkdir-p "target/classes/META-INF")
154 (invoke "javac" "-cp" (getenv "CLASSPATH")
417cf544 155 "src/main/java/org/codehaus/groovy/tools/DgmConverter.java")
b0192c85 156 (invoke "java" "-cp" (string-append (getenv "CLASSPATH")
417cf544 157 ":src/main/java")
b0192c85
JL
158 "org.codehaus.groovy.tools.DgmConverter")
159 #t))
160 (add-before 'build 'copy-resources
161 (lambda _
417cf544 162 (with-directory-excursion "src/main/java"
b0192c85 163 (for-each (lambda (file)
417cf544 164 (mkdir-p (string-append "../../../target/classes/"
b0192c85
JL
165 (dirname file)))
166 (copy-file file
417cf544 167 (string-append "../../../target/classes/"
b0192c85
JL
168 file)))
169 (find-files "." ".*.(txt|properties|xml|html)")))
170 #t))
171 (replace 'build
172 (lambda _
173 (mkdir-p "build/jar")
174 (apply invoke "java" "-cp" (getenv "CLASSPATH")
175 "org.codehaus.groovy.tools.FileSystemCompiler"
417cf544 176 "-cp" (getenv "CLASSPATH")
b0192c85
JL
177 "-d" "target/classes"
178 "-j"; joint compilation
179 (find-files "src/main"
180 ".*\\.(groovy|java)$"))
181 (invoke "jar" "-cf" "build/jar/groovy.jar"
182 "-C" "target/classes" ".")
183 #t)))))
184 (inputs
185 `(("java-apache-ivy" ,java-apache-ivy)
186 ,@(package-inputs java-groovy-bootstrap)))
187 (native-inputs
188 `(("java-groovy-bootstrap" ,java-groovy-bootstrap)
189 ,@(package-native-inputs java-groovy-bootstrap)))
190 (synopsis "Groovy compiler")
191 (description "This package contains the first version of the Groovy compiler.
192Although already usable, it doesn't contain the groovy library yet. This package
193is used to build the groovy submodules written in groovy.")))
a3f253a4
JL
194
195(define groovy-tests-bootstrap
196 (package
197 (inherit groovy-bootstrap)
198 (name "groovy-tests-bootstrap")
199 (arguments
200 `(#:jar-name "groovy-tests-bootstrap.jar"
417cf544 201 #:jdk ,openjdk9
a3f253a4
JL
202 #:tests? #f; no tests
203 #:phases
204 (modify-phases %standard-phases
205 (replace 'build
206 (lambda _
207 (mkdir-p "build/classes")
208 (mkdir-p "build/jar")
209 (apply invoke "java" "-cp" (getenv "CLASSPATH")
210 "org.codehaus.groovy.tools.FileSystemCompiler"
417cf544 211 "-cp" (getenv "CLASSPATH")
a3f253a4
JL
212 "-d" "build/classes"
213 "-j"; joint compilation
214 (append
215 (find-files "src/test" "TestSupport.java")
216 (find-files "src/test" "HeadlessTestSupport.java")
417cf544 217 (find-files "src/test" "AstAssert.groovy")
a3f253a4
JL
218 (find-files "src/test" "XmlAssert.java")))
219 (invoke "jar" "-cf" "build/jar/groovy-tests-bootstrap.jar"
220 "-C" "build/classes" ".")
221 #t)))))
222 (inputs
223 `(("groovy-test" ,groovy-test)
417cf544 224 ("groovy-parser-antlr4" ,groovy-parser-antlr4)
a3f253a4
JL
225 ,@(package-inputs groovy-bootstrap)))
226 (native-inputs
227 `(("groovy-bootstrap" ,groovy-bootstrap)
228 ,@(package-native-inputs java-groovy-bootstrap)))
229 (synopsis "Groovy test classes")
230 (description "This package contains three classes required for testing
231other groovy submodules.")))
6f077852 232
417cf544 233(define (groovy-subproject name)
6f077852
JL
234 (package
235 (inherit groovy-bootstrap)
417cf544 236 (name name)
6f077852 237 (arguments
417cf544
JL
238 `(#:jar-name ,(string-append name ".jar")
239 #:test-dir ,(string-append name "/src/test")
240 #:test-include (list "**/*Test.java" "**/*.groovy")
241 #:jdk ,openjdk9
6f077852
JL
242 #:phases
243 (modify-phases %standard-phases
244 (replace 'build
245 (lambda _
246 (mkdir-p "build/classes")
247 (mkdir-p "build/jar")
248 (apply invoke "java" "-cp" (getenv "CLASSPATH")
249 "org.codehaus.groovy.tools.FileSystemCompiler"
417cf544
JL
250 "-cp" (getenv "CLASSPATH")
251 "-d" "build/classes" "-j"
252 (append
253 (find-files ,(string-append "subprojects/" name "/src/main/java")
254 ".*\\.(groovy|java)$")
255 (find-files ,(string-append "subprojects/" name "/src/main/groovy")
256 ".*\\.(groovy|java)$")))
257 (invoke "jar" "-cf" ,(string-append "build/jar/" name ".jar")
6f077852
JL
258 "-C" "build/classes" ".")
259 #t))
417cf544 260 (add-before 'build 'copy-resources
e0e4bae2 261 (lambda _
417cf544
JL
262 (let ((resource-dir ,(string-append "subprojects/" name
263 "/src/main/resources")))
264 (when (file-exists? resource-dir)
265 (copy-recursively resource-dir "build/classes")))
e0e4bae2
JL
266 #t))
267 (replace 'check
417cf544
JL
268 (lambda* (#:key tests? #:allow-other-keys)
269 (when tests?
270 (mkdir-p "build/test-classes")
271 (substitute* "build.xml"
272 (("depends=\"compile-tests\"") "depends=\"\"")
273 (("}/java") "}/"))
274 (apply invoke "java" "-cp"
275 (string-append (getenv "CLASSPATH") ":build/classes")
276 "org.codehaus.groovy.tools.FileSystemCompiler" "-cp"
277 (string-append (getenv "CLASSPATH") ":build/classes")
278 "-d" "build/test-classes" "-j"
279 (append
280 (find-files ,(string-append "subprojects/" name "/src/test/java")
281 ".*\\.(groovy|java)$")
282 (find-files ,(string-append "subprojects/" name "/src/test/groovy")
283 ".*\\.(groovy|java)$")))
284 (invoke "ant" "check"))
285 #t)))))))
286
287(define groovy-parser-antlr4
288 (let ((base (groovy-subproject "parser-antlr4")))
289 (package
290 (inherit base)
291 (name "groovy-parser-antlr4")
292 (arguments
293 `(#:tests? #f
294 ,@(substitute-keyword-arguments (package-arguments base)
295 ((#:phases phases)
296 `(modify-phases ,phases
297 (add-before 'build 'generate-parser
298 (lambda _
299 (invoke "antlr4" "-lib" "src/antlr"
300 "-package" "org.apache.groovy.parser.antlr4"
301 "-visitor" "-no-listener" "src/antlr/GroovyLexer.g4")
302 (invoke "antlr4" "-lib" "src/antlr"
303 "-package" "org.apache.groovy.parser.antlr4"
304 "-visitor" "-no-listener" "src/antlr/GroovyParser.g4")
305 (for-each
306 (lambda (file)
307 (install-file file
308 "subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4"))
309 (find-files "src/antlr" ".*.java$"))
310 #t)))))))
311 (native-inputs
312 `(("groovy-bootstrap" ,groovy-bootstrap)
313 ,@(package-native-inputs java-groovy-bootstrap)))
314 (synopsis "Groovy antlr4 parser submodule")
315 (description "This package contains the new parser Parrot for Groovy, which
316is based on Antlr4. The new parser can parse Groovy source code and construct
317the related AST, which is almost identical to the one generated by the old
318parser. Currently all features of Groovy are available."))))
319
320(define groovy-test
321 (let ((base (groovy-subproject "groovy-test")))
322 (package
323 (inherit base)
324 (arguments
325 `(;#:tests? #f
326 ,@(package-arguments base)))
327 (synopsis "Groovy test submodule")
328 (description "This package contains the test submodules used to test
329other groovy submodules."))))
330
331(define groovy-xml
332 (let ((base (groovy-subproject "groovy-xml")))
333 (package
334 (inherit base)
335 (native-inputs
336 `(("groovy-test" ,groovy-test)
337 ("groovy-tests-bootstrap" ,groovy-tests-bootstrap)
338 ,@(package-native-inputs base)))
339 (inputs
340 `(("groovy-parser-antlr4" ,groovy-parser-antlr4)
341 ,@(package-inputs base)))
342 (synopsis "Groovy XML")
343 (description "This package contains XML-related utilities for groovy."))))
19ff61f4
JL
344
345(define groovy-templates
417cf544
JL
346 (let ((base (groovy-subproject "groovy-templates")))
347 (package
348 (inherit base)
349 (arguments
350 `(#:tests? #f;Requires spock-framework which is a circular dependency
351 ,@(substitute-keyword-arguments (package-arguments base)
352 ((#:phases phases)
353 `(modify-phases ,phases
354 ;; These annotations are used for QA, but do not affect build output.
355 ;; They require findbugs, which we don't have yet.
356 (add-before 'build 'remove-annotation
357 (lambda _
358 (substitute* '("subprojects/groovy-templates/src/main/groovy/groovy/text/StreamingTemplateEngine.java"
359 "subprojects/groovy-templates/src/main/groovy/groovy/text/TemplateEngine.java")
360 (("import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;") "")
361 (("@SuppressFBWarnings.*") ""))
362 #t)))))))
363 (inputs
364 `(("groovy-xml" ,groovy-xml)
365 ,@(package-inputs base)))
366 (native-inputs
367 `(("groovy-bootstrap" ,groovy-bootstrap)
368 ("groovy-test" ,groovy-test)
369 ("groovy-tests-bootstrap" ,groovy-tests-bootstrap)
370 ,@(package-native-inputs base)))
371 (synopsis "Groovy template engine")
372 (description "This package contains a template framework which is
19ff61f4 373well-suited to applications where the text to be generated follows the form of
417cf544 374a static template."))))
f14a1978
JL
375
376(define groovy-groovydoc
417cf544
JL
377 (let ((base (groovy-subproject "groovy-groovydoc")))
378 (package
379 (inherit base)
380 (arguments
381 `(#:tests? #f; Requires groovy-ant which is a circular dependency
382 ,@(package-arguments base)))
383 (inputs
384 `(("groovy-templates" ,groovy-templates)
385 ("groovy-parser-antlr4" ,groovy-parser-antlr4)
386 ("java-javaparser" ,java-javaparser)
387 ,@(package-inputs groovy-bootstrap)))
388 (native-inputs
389 `(("groovy-bootstrap" ,groovy-bootstrap)
390 ("groovy-test" ,groovy-test)
391 ("groovy-tests-bootstrap" ,groovy-tests-bootstrap)
392 ,@(package-native-inputs java-groovy-bootstrap)))
393 (synopsis "Groovy documentation generation")
394 (description "This package contains the groovy documentation generator,
395similar to javadoc."))))
b869c5ce
JL
396
397(define groovy-ant
417cf544
JL
398 (let ((base (groovy-subproject "groovy-ant")))
399 (package
400 (inherit base)
401 (arguments
402 `(;#:tests? #f;Requires spock-framework which is a circular dependency
403 #:ant ,ant/java8; ant is actually a dependency of this package, and we need 1.10
404 ,@(substitute-keyword-arguments (package-arguments base)
405 ((#:phases phases)
406 `(modify-phases ,phases
407 ;; These annotations are used for QA, but do not affect build output.
408 ;; They require findbugs, which we don't have yet.
409 (add-before 'build 'remove-annotation
410 (lambda _
411 (substitute* (find-files "subprojects/groovy-ant"
412 ".*.java$")
413 (("import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;") "")
414 (("@SuppressFBWarnings.*") ""))
415 #t)))))))
416 (inputs
417 `(("groovy-groovydoc" ,groovy-groovydoc)
418 ("java-asm-tree" ,java-asm-tree-8)
419 ("java-asm-analysis" ,java-asm-analysis-8)
420 ,@(package-inputs base)))
421 (native-inputs
422 `(("ant-junit" ,ant-junit)
423 ("groovy-bootstrap" ,groovy-bootstrap)
424 ("groovy-xml" ,groovy-xml)
425 ("groovy-test" ,groovy-test)
426 ("groovy-tests-bootstrap" ,groovy-tests-bootstrap)
427 ,@(package-native-inputs base)))
428 (synopsis "Groovy ant tasks")
429 (description "This package contains groovy-related ant tasks definitions."))))
430
431(define groovy-astbuilder
432 (let ((base (groovy-subproject "groovy-astbuilder")))
433 (package
434 (inherit base)
435 (arguments
436 (substitute-keyword-arguments (package-arguments base)
437 ((#:phases phases)
438 `(modify-phases ,phases
439 (delete 'copy-resources)
440 (add-after 'build 'copy-resources
441 (lambda _
442 (copy-recursively
443 "subprojects/groovy-astbuilder/src/main/resources"
444 "build/classes")
445 (substitute* "build.xml"
446 (("depends=\"compile,") "depends=\""))
447 (invoke "ant" "jar")
448 #t))))))
449 (inputs
450 `(("groovy-bootstrap" ,groovy-bootstrap)
451 ,@(package-inputs base)))
452 (native-inputs
453 `(("groovy-test" ,groovy-test)
454 ("groovy-tests-bootstrap" ,groovy-tests-bootstrap)
455 ,@(package-native-inputs base)))
456 (synopsis "Transformation to capture ASTBuilder from code statements")
457 (description "This package contains an AST transformation for use with
458ASTBuilder when building \"from string\" Groovy statements."))))
5b46d3f6
JL
459
460(define groovy-bsf
417cf544
JL
461 (let ((base (groovy-subproject "groovy-bsf")))
462 (package
463 (inherit base)
464 (arguments
465 `(#:test-exclude (list
5b46d3f6
JL
466;; exception from Groovy: org.codehaus.groovy.runtime.InvokerInvocationException:
467;; groovy.lang.MissingMethodException: No signature of method:
468;; java.util.ArrayList.each() is applicable for argument types:
469;; (groovy.script.MapFromList$_doit_closure1) values:
470;; [groovy.script.MapFromList$_doit_closure1@17e554d5]
471 "**/BSFTest.java")
417cf544
JL
472 ,@(package-arguments base)))
473 (inputs
474 `(("java-commons-bsf" ,java-commons-bsf)
475 ,@(package-inputs base)))
476 (native-inputs
477 `(("groovy-bootstrap" ,groovy-bootstrap)
478 ("groovy-test" ,groovy-test)
479 ("groovy-tests-bootstrap" ,groovy-tests-bootstrap)
480 ("java-commons-logging-minimal" ,java-commons-logging-minimal)
481 ,@(package-native-inputs base)))
482 (synopsis "Groovy BSF engine")
483 (description "This package defines the BSF engine for using Groovy inside
484any @dfn{Bean Scripting Framework} (BSF) application."))))
485
486(define groovy-cli-commons
487 (let ((base (groovy-subproject "groovy-cli-commons")))
488 (package
489 (inherit base)
490 (inputs
491 `(("groovy-bootstrap" ,groovy-bootstrap)
492 ,@(package-inputs base)))
493 (native-inputs
494 `(("groovy-test" ,groovy-test)
495 ,@(package-native-inputs base)))
496 (synopsis "Groovy CLI common classes")
497 (description "This package defines common classes for dealing with
498command-line arguments in Groovy."))))
499
500(define groovy-cli-picocli
501 (let ((base (groovy-subproject "groovy-cli-picocli")))
502 (package
503 (inherit base)
504 (inputs
505 `(("groovy-bootstrap" ,groovy-bootstrap)
506 ("java-picocli" ,java-picocli)
507 ,@(package-inputs base)))
508 (native-inputs
509 `(("groovy-test" ,groovy-test)
510 ,@(package-native-inputs base)))
511 (synopsis "Groovy CLI classes that use picocli")
512 (description "This package defines classes for dealing with command-line
513arguments in Groovy using the picocli library."))))
b221e8e2
JL
514
515(define groovy-swing
417cf544
JL
516 (let ((base (groovy-subproject "groovy-swing")))
517 (package
518 (inherit base)
519 (arguments
520 (substitute-keyword-arguments (package-arguments base)
521 ((#:phases phases)
522 `(modify-phases ,phases
523 (add-before 'check 'fix-test
524 (lambda _
525 (substitute*
526 "subprojects/groovy-swing/src/test/groovy/groovy/swing/GroovySwingTestCase.groovy"
527 (("HeadlessTestSupport.headless") "isHeadless()"))
528 #t))))))
529 (native-inputs
530 `(("groovy-bootstrap" ,groovy-bootstrap)
531 ("groovy-test" ,groovy-test)
532 ("groovy-tests-bootstrap" ,groovy-tests-bootstrap)
533 ("java-commons-logging-minimal" ,java-commons-logging-minimal)
534 ,@(package-native-inputs base)))
535 (synopsis "Groovy graphical library")
536 (description "This package contains the groovy bindings to Java Swing, a
537library used to build graphical interfaces."))))
136987cf
JL
538
539(define groovy-console
417cf544
JL
540 (let ((base (groovy-subproject "groovy-console")))
541 (package
542 (inherit base)
543 (arguments
544 (substitute-keyword-arguments (package-arguments base)
545 ((#:phases phases)
546 `(modify-phases ,phases
547 (add-before 'check 'build-swing
548 (lambda _
549 (substitute*
550 "subprojects/groovy-swing/src/test/groovy/groovy/swing/GroovySwingTestCase.groovy"
551 (("HeadlessTestSupport.headless") "isHeadless()"))
552 (mkdir-p "build/test-classes")
553 (apply invoke "java" "-cp"
554 (string-append (getenv "CLASSPATH") ":build/classes")
555 "org.codehaus.groovy.tools.FileSystemCompiler" "-cp"
556 (string-append (getenv "CLASSPATH") ":build/classes")
557 "-d" "build/test-classes" "-j"
558 (append
559 (find-files "subprojects/groovy-swing/src/test/java"
560 ".*\\.(groovy|java)$")
561 (find-files "subprojects/groovy-swing/src/test/groovy"
562 ".*\\.(groovy|java)$")))
563 #t))))))
564 (inputs
565 `(("groovy-swing" ,groovy-swing)
566 ("groovy-templates" ,groovy-templates)
567 ,@(package-inputs base)))
568 (native-inputs
569 `(("groovy-bootstrap" ,groovy-bootstrap)
570 ("groovy-test" ,groovy-test)
571 ("groovy-tests-bootstrap" ,groovy-tests-bootstrap)
572 ("java-commons-logging-minimal" ,java-commons-logging-minimal)
573 ,@(package-native-inputs base)))
574 (synopsis "Groovy graphical interface")
575 (description "This package contains a graphical interface to run groovy."))))
576
577(define groovy-datetime
578 (let ((base (groovy-subproject "groovy-datetime")))
579 (package
580 (inherit base)
581 (native-inputs
582 `(("groovy-test" ,groovy-test)
583 ,@(package-native-inputs base)))
584 (synopsis "Date/Time API for Groovy")
585 (description "This package defines new Groovy methods which appear on
586normal JDK Date/Time API (@code{java.time}) classes inside the Groovy
587environment."))))
588
589(define groovy-dateutil
590 (let ((base (groovy-subproject "groovy-dateutil")))
591 (package
592 (inherit base)
593 (native-inputs
594 `(("groovy-test" ,groovy-test)
595 ,@(package-native-inputs base)))
596 (synopsis "Date and Calendar API for Groovy")
597 (description "This package defines new groovy methods which appear on
598normal JDK Date and Calendar classes inside the Groovy environment."))))
a6494dcf
JL
599
600(define groovy-docgenerator
417cf544
JL
601 (let ((base (groovy-subproject "groovy-docgenerator")))
602 (package
603 (inherit base)
604 (arguments
605 `(#:tests? #f; No tests
606 ,@(package-arguments base)))
607 (inputs
608 `(("groovy-templates" ,groovy-templates)
609 ("groovy-swing" ,groovy-swing)
610 ("java-qdox-1.12" ,java-qdox-1.12)
611 ,@(package-inputs base)))
612 (native-inputs
613 `(("groovy-bootstrap" ,groovy-bootstrap)
614 ("groovy-test" ,groovy-test)
615 ("groovy-tests-bootstrap" ,groovy-tests-bootstrap)
616 ,@(package-native-inputs base)))
617 (synopsis "Groovy documentation generation")
618 (description "This package contains a command line tool to generate
619documentation for groovy applications."))))
dabce250
JL
620
621(define groovy-groovysh
417cf544
JL
622 (let ((base (groovy-subproject "groovy-groovysh")))
623 (package
624 (inherit base)
625 (inputs
626 `(("groovy-xml" ,groovy-xml)
627 ("groovy-console" ,groovy-console)
628 ,@(package-inputs base)))
629 (native-inputs
630 `(("groovy-bootstrap" ,groovy-bootstrap)
631 ("groovy-test" ,groovy-test)
632 ("groovy-tests-bootstrap" ,groovy-tests-bootstrap)
633 ,@(package-native-inputs base)))
634 (synopsis "Groovy REPL")
635 (description "This package contains the Groovy REPL."))))
0280865c
JL
636
637(define groovy-jmx
417cf544
JL
638 (let ((base (groovy-subproject "groovy-jmx")))
639 (package
640 (inherit base)
641 (native-inputs
642 `(("groovy-bootstrap" ,groovy-bootstrap)
643 ("groovy-test" ,groovy-test)
644 ("groovy-tests-bootstrap" ,groovy-tests-bootstrap)
645 ,@(package-native-inputs base)))
646 (synopsis "Groovy JMX extension")
647 (description "This package contains the JMX extension of Groovy, for
648management and monitoring of JVM-based solutions."))))
dae9335c
JL
649
650(define groovy-json
417cf544
JL
651 (let ((base (groovy-subproject "groovy-json")))
652 (package
653 (inherit base)
654 (native-inputs
655 `(("groovy-bootstrap" ,groovy-bootstrap)
656 ("groovy-test" ,groovy-test)
657 ("groovy-tests-bootstrap" ,groovy-tests-bootstrap)
658 ,@(package-native-inputs base)))
659 (synopsis "Groovy JSON")
660 (description "This package contains JSON-related utilities for groovy."))))
3537fb61
JL
661
662(define groovy-jsr223
417cf544
JL
663 (let ((base (groovy-subproject "groovy-jsr223")))
664 (package
665 (inherit base)
666 (native-inputs
667 `(("groovy-bootstrap" ,groovy-bootstrap)
668 ("groovy-test" ,groovy-test)
669 ("groovy-tests-bootstrap" ,groovy-tests-bootstrap)
670 ,@(package-native-inputs base)))
671 (synopsis "Groovy's own JSR223 implementation")
672 (description "This package contains Groovy's own JSR223 implementation. This
673module is used for interaction between Groovy and Java code."))))
4ab3b0c5
JL
674
675(define groovy-nio
417cf544
JL
676 (let ((base (groovy-subproject "groovy-nio")))
677 (package
678 (inherit base)
679 (arguments
680 `(#:tests? #f; Require spock-framework
681 ,@(package-arguments base)))
682 (synopsis "Groovy input-output library")
683 (description "This package implements an input/output library that extends
684the functionality of the common library of Java."))))
107ebf7b
JL
685
686(define groovy-servlet
417cf544
JL
687 (let ((base (groovy-subproject "groovy-servlet")))
688 (package
689 (inherit base)
690 (inputs
691 `(("groovy-templates" ,groovy-templates)
692 ("groovy-xml" ,groovy-xml)
693 ,@(package-inputs base)))
694 (native-inputs
695 `(("groovy-bootstrap" ,groovy-bootstrap)
696 ("groovy-json" ,groovy-json)
697 ("groovy-test" ,groovy-test)
698 ("groovy-tests-bootstrap" ,groovy-tests-bootstrap)
699 ,@(package-native-inputs base)))
700 (synopsis "Groovy's servlet implementation")
701 (description "This package contains a library to create groovlets, Groovy's
702version of Java servlets."))))
2af51fd0
JL
703
704(define groovy-sql
417cf544
JL
705 (let ((base (groovy-subproject "groovy-sql")))
706 (package
707 (inherit base)
708 (arguments
709 `(#:tests? #f;TODO: Requires hsqldb
710 ,@(package-arguments base)))
711 (synopsis "Groovy SQL library")
712 (description "This package contains a facade over Java's normal JDBC APIs
713providing greatly simplified resource management and result set handling."))))
dc51a0a8
JL
714
715(define groovy-testng
417cf544
JL
716 (let ((base (groovy-subproject "groovy-testng")))
717 (package
718 (inherit base)
719 (native-inputs
720 `(("groovy-bootstrap" ,groovy-bootstrap)
721 ("groovy-test" ,groovy-test)
722 ("groovy-tests-bootstrap" ,groovy-tests-bootstrap)
723 ,@(package-native-inputs base)))
724 (synopsis "Groovy testing framework")
725 (description "This package contains integration code for running TestNG
726tests in Groovy."))))
88da2d2f
JL
727
728(define groovy-macro
417cf544
JL
729 (let ((base (groovy-subproject "groovy-macro")))
730 (package
731 (inherit base)
732 (arguments
733 (substitute-keyword-arguments (package-arguments base)
734 ((#:phases phases)
735 `(modify-phases ,phases
736 (delete 'copy-resources)
737 (add-after 'build 'copy-resources
738 (lambda _
739 (copy-recursively "subprojects/groovy-macro/src/main/resources"
740 "build/classes")
741 (substitute* "build.xml"
742 (("depends=\"compile,") "depends=\""))
743 (invoke "ant" "jar")
744 #t))))))
745 (inputs
746 `(("groovy-templates" ,groovy-templates)
747 ("groovy-xml" ,groovy-xml)
748 ,@(package-inputs base)))
749 (native-inputs
750 `(("groovy-bootstrap" ,groovy-bootstrap)
751 ("groovy-json" ,groovy-json)
752 ("groovy-test" ,groovy-test)
753 ("groovy-tests-bootstrap" ,groovy-tests-bootstrap)
754 ,@(package-native-inputs base)))
755 (synopsis "Groovy macro processor")
756 (description "This package contains a high-level library to create macro
757and modify groovy's @dfn{Abstract Syntax Tree} (AST)."))))
758
759(define groovy-yaml
760 (let ((base (groovy-subproject "groovy-yaml")))
761 (package
762 (inherit base)
763 (inputs
764 `(("groovy-json" ,groovy-json)
765 ("java-fasterxml-jackson-annotations" ,java-fasterxml-jackson-annotations)
766 ("java-fasterxml-jackson-core" ,java-fasterxml-jackson-core)
767 ("java-fasterxml-jackson-databind" ,java-fasterxml-jackson-databind)
768 ("java-fasterxml-jackson-dataformat-yaml" ,java-fasterxml-jackson-dataformat-yaml)
769 ,@(package-inputs base)))
770 (native-inputs
771 `(("groovy-test" ,groovy-test)
772 ,@(package-native-inputs base)))
773 (synopsis "Groovy YAML")
774 (description "This package contains YAML-related utilities for groovy."))))
22103f16
JL
775
776(define-public groovy
777 (package
778 (inherit groovy-bootstrap)
779 (name "groovy")
780 (arguments
781 `(#:tests? #f; No tests
417cf544 782 #:jdk ,openjdk9
22103f16
JL
783 #:phases
784 (modify-phases %standard-phases
785 (delete 'configure)
786 (delete 'build)
787 (replace 'install
788 (lambda* (#:key outputs inputs #:allow-other-keys)
789 (let* ((out (assoc-ref outputs "out"))
790 (out-bin (string-append out "/bin"))
791 (out-lib (string-append out "/lib")))
792 (with-directory-excursion "src/bin"
793 (substitute* "startGroovy"
794 (("\"\\\\\"") "\"")
795 (("\\\\\"\"") "\"")
796 (("\\\\\\$") "$")
797 (("@GROOVYJAR@") "groovy.jar")
798 (("MAX_FD=\"maximum\"")
799 (string-append
417cf544 800 "MAX_FD=\"maximum\"\nJAVA_HOME="
22103f16
JL
801 (assoc-ref inputs "jdk"))))
802 ;; Groovy uses class loading. It's not enough to put the class
803 ;; in the loader's classpath, as it causes breakages:
804 ;; the compiler would give this error:
805 ;; "Prohibited package name: java.lang"
806 ;; So we symlink dependencies in this package's output. The
807 ;; starter class (in groovy-bootstrap) is where the class loader
808 ;; will look for dependencies, so we put it there too.
809 (mkdir-p out-lib)
810 (for-each
811 (lambda (input)
812 (for-each
813 (lambda (jar)
814 (symlink jar (string-append out-lib "/" (basename jar))))
815 (find-files (assoc-ref inputs input) ".*.jar")))
417cf544
JL
816 '("groovy-bootstrap" "groovy-ant" "groovy-astbuilder"
817 "groovy-bsf" "groovy-cli-commons" "groovy-cli-picocli"
818 "groovy-console" "groovy-datetime" "groovy-dateutil"
819 "groovy-docgenerator" "groovy-groovydoc" "groovy-groovysh"
820 "groovy-jmx" "groovy-json" "groovy-jsr223" "groovy-nio"
821 "groovy-parser-antlr4" "groovy-servlet" "groovy-sql"
22103f16 822 "groovy-swing" "groovy-templates" "groovy-testng"
417cf544
JL
823 "groovy-xml" "groovy-yaml" "java-commons-cli"
824 "java-tunnelvisionlabs-antlr4-runtime" "java-asm"
825 "java-asm-analysis" "java-asm-tree" "java-asm-util"
826 "java-classpathx-servletapi" "java-xstream" "java-picocli"
22103f16
JL
827 "java-jansi" "java-jline-2"))
828 ;; antlr.jar is present twice in antlr2. Symlink doesn't like
829 ;; it, so we symlink it here.
830 (symlink (string-append (assoc-ref inputs "antlr2") "/lib/antlr.jar")
831 (string-append out-lib "/antlr.jar"))
832 (for-each
833 (lambda (tool)
834 (install-file tool out-bin)
835 (chmod (string-append out-bin "/" tool) #o755))
836 '("grape" "groovy" "groovyc" "groovyConsole" "groovydoc"
837 "groovysh" "java2groovy" "startGroovy")))
838 (install-file "src/conf/groovy-starter.conf"
839 (string-append out "/conf"))
840 #t))))))
841 (inputs
842 `(("groovy-bootstrap" ,groovy-bootstrap)
843 ("groovy-ant" ,groovy-ant)
417cf544 844 ("groovy-astbuilder" ,groovy-astbuilder)
22103f16 845 ("groovy-bsf" ,groovy-bsf)
417cf544
JL
846 ("groovy-cli-commons" ,groovy-cli-commons)
847 ("groovy-cli-picocli" ,groovy-cli-picocli)
22103f16 848 ("groovy-console" ,groovy-console)
417cf544
JL
849 ("groovy-datetime" ,groovy-datetime)
850 ("groovy-dateutil" ,groovy-dateutil)
22103f16
JL
851 ("groovy-docgenerator" ,groovy-docgenerator)
852 ("groovy-groovydoc" ,groovy-groovydoc)
853 ("groovy-groovysh" ,groovy-groovysh)
854 ("groovy-jmx" ,groovy-jmx)
855 ("groovy-json" ,groovy-json)
856 ("groovy-jsr223" ,groovy-jsr223)
857 ("groovy-nio" ,groovy-nio)
417cf544 858 ("groovy-parser-antlr4" ,groovy-parser-antlr4)
22103f16
JL
859 ("groovy-servlet" ,groovy-servlet)
860 ("groovy-sql" ,groovy-sql)
861 ("groovy-swing" ,groovy-swing)
862 ("groovy-templates" ,groovy-templates)
863 ("groovy-testng" ,groovy-testng)
697a9d0d 864 ("groovy-xml" ,groovy-xml)
417cf544
JL
865 ("groovy-yaml" ,groovy-yaml)
866 ("java-tunnelvisionlabs-antlr4-runtime"
867 ,java-tunnelvisionlabs-antlr4-runtime)
22103f16 868 ("java-commons-cli" ,java-commons-cli)
417cf544
JL
869 ("java-asm" ,java-asm-8)
870 ("java-asm-analysis" ,java-asm-analysis-8)
871 ("java-asm-tree" ,java-asm-tree-8)
872 ("java-asm-util" ,java-asm-util-8)
22103f16 873 ("java-classpathx-servletapi" ,java-classpathx-servletapi)
417cf544 874 ("java-picocli" ,java-picocli)
22103f16
JL
875 ("java-jansi" ,java-jansi)
876 ("java-jline-2" ,java-jline-2)
417cf544 877 ("java-xstream" ,java-xstream)
22103f16
JL
878 ("antlr2" ,antlr2)))
879 (synopsis "Programming language for the JVM")
880 (description "Apache Groovy is a powerful, optionally typed and dynamic
881language, with static-typing and static compilation capabilities, for the Java
882platform. It integrates smoothly with any Java program, and immediately
883delivers to your application powerful features, including scripting
884capabilities, Domain-Specific Language authoring, runtime and compile-time
885meta-programming and functional programming.")))