gnu: ruby-pandoc-ruby: Use pandoc instead of ghc-pandoc.
[jackhill/guix/guix.git] / gnu / packages / groovy.scm
1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2018 Julien Lepiller <julien@lepiller.eu>
3 ;;; Copyright © 2019 Tobias Geerinck-Rice <me@tobias.gr>
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)
24 #:use-module (guix git-download)
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
33 (name "java-groovy-bootstrap")
34 (version "2.4.15")
35 (source
36 (origin
37 (method git-fetch)
38 (uri (git-reference
39 (url "https://github.com/apache/groovy")
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
46 (base32 "1q4cplimr18j93zz92kgq8b6wdv0p9svr7cdr47q8b2mbjpd0x3j"))
47 (patches
48 (search-patches "groovy-add-exceptionutilsgenerator.patch"))))
49 (build-system ant-build-system)
50 (arguments
51 `(#:jar-name "groovy.jar"
52 #:source-dir "src/main:subprojects/groovy-test/src/main/java"
53 #:test-dir "src/test"
54 #:tests? #f
55 #:jdk ,icedtea-8
56 #:main-class "groovy.ui.GroovyMain"
57 #:phases
58 (modify-phases %standard-phases
59 (add-before 'build 'fix-java8
60 ;; Fix "Reference to plus is ambiguous"
61 (lambda _
62 (substitute* "src/main/org/codehaus/groovy/runtime/DefaultGroovyMethods.java"
63 (("toList\\(left\\)")
64 "(List<T>)toList(left)"))
65 #t))
66 (add-before 'build 'generate-parsers
67 (lambda _
68 (with-directory-excursion "src/main/org/codehaus/groovy/antlr/java"
69 (invoke "antlr" "java.g"))
70 (with-directory-excursion "src/main/org/codehaus/groovy/antlr"
71 (mkdir "parser")
72 (with-directory-excursion "parser"
73 (invoke "antlr" "../groovy.g")))
74 #t))
75 (add-before 'build 'generate-exception-utils
76 (lambda _
77 (invoke "javac" "-cp" (getenv "CLASSPATH")
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")
83 #t)))))
84 (native-inputs
85 `(("java-junit" ,java-junit)
86 ("java-hamcrest-core" ,java-hamcrest-core)
87 ("antlr2" ,antlr2)
88 ("java-jmock-1" ,java-jmock-1)
89 ("java-xmlunit-legacy" ,java-xmlunit-legacy)))
90 (inputs
91 `(("java-commons-cli" ,java-commons-cli)
92 ("java-asm" ,java-asm)
93 ("java-classpathx-servletapi" ,java-classpathx-servletapi)
94 ("java-xstream" ,java-xstream)
95 ("java-jansi" ,java-jansi)
96 ("java-jline-2" ,java-jline-2)))
97 (home-page "http://groovy-lang.org/")
98 (synopsis "Groovy's java bootstrap")
99 (description "This package contains the java bootstrap that is used to build
100 groovy submodules.")
101 (license license:asl2.0)))
102
103 (define groovy-bootstrap
104 (package
105 (inherit java-groovy-bootstrap)
106 (name "groovy-bootstrap")
107 (arguments
108 `(#:jar-name "groovy.jar"
109 #:jdk ,icedtea-8
110 ;Requires groovy-xml and logback-classic which are circular dependencies
111 #:tests? #f
112 #:phases
113 (modify-phases %standard-phases
114 (add-before 'build 'fix-java8
115 ;; Fix "Reference to plus is ambiguous"
116 (lambda _
117 (substitute* "src/main/org/codehaus/groovy/runtime/DefaultGroovyMethods.java"
118 (("toList\\(left\\)")
119 "(List<T>)toList(left)"))
120 #t))
121 (add-before 'build 'generate-parser
122 (lambda _
123 (with-directory-excursion "src/main/org/codehaus/groovy/antlr/java"
124 (invoke "antlr" "java.g"))
125 (with-directory-excursion "src/main/org/codehaus/groovy/antlr"
126 (mkdir "parser")
127 (with-directory-excursion "parser"
128 (invoke "antlr" "../groovy.g")))
129 #t))
130 (add-before 'build 'generate-exception-utils
131 (lambda _
132 (invoke "javac" "-cp" (getenv "CLASSPATH")
133 "config/ant/src/org/codehaus/groovy/ExceptionUtilsGenerator.java")
134 (invoke "java" "-cp" (string-append (getenv "CLASSPATH")
135 ":config/ant/src")
136 "org.codehaus.groovy.ExceptionUtilsGenerator"
137 "target/classes/org/codehaus/groovy/runtime/ExceptionUtils.class")
138 #t))
139 (add-before 'build 'generate-dgminfo
140 (lambda _
141 (mkdir-p "target/classes/org/codehaus/groovy/runtime")
142 (mkdir-p "target/classes/META-INF")
143 (invoke "javac" "-cp" (getenv "CLASSPATH")
144 "src/main/org/codehaus/groovy/tools/DgmConverter.java")
145 (invoke "java" "-cp" (string-append (getenv "CLASSPATH")
146 ":src/main")
147 "org.codehaus.groovy.tools.DgmConverter")
148 #t))
149 (add-before 'build 'copy-resources
150 (lambda _
151 (with-directory-excursion "src/main"
152 (for-each (lambda (file)
153 (mkdir-p (string-append "../../target/classes/"
154 (dirname file)))
155 (copy-file file
156 (string-append "../../target/classes/"
157 file)))
158 (find-files "." ".*.(txt|properties|xml|html)")))
159 #t))
160 (replace 'build
161 (lambda _
162 (mkdir-p "build/jar")
163 (apply invoke "java" "-cp" (getenv "CLASSPATH")
164 "org.codehaus.groovy.tools.FileSystemCompiler"
165 "-d" "target/classes"
166 "-j"; joint compilation
167 (find-files "src/main"
168 ".*\\.(groovy|java)$"))
169 (invoke "jar" "-cf" "build/jar/groovy.jar"
170 "-C" "target/classes" ".")
171 #t)))))
172 (inputs
173 `(("java-apache-ivy" ,java-apache-ivy)
174 ,@(package-inputs java-groovy-bootstrap)))
175 (native-inputs
176 `(("java-groovy-bootstrap" ,java-groovy-bootstrap)
177 ,@(package-native-inputs java-groovy-bootstrap)))
178 (synopsis "Groovy compiler")
179 (description "This package contains the first version of the Groovy compiler.
180 Although already usable, it doesn't contain the groovy library yet. This package
181 is used to build the groovy submodules written in groovy.")))
182
183 (define groovy-tests-bootstrap
184 (package
185 (inherit groovy-bootstrap)
186 (name "groovy-tests-bootstrap")
187 (arguments
188 `(#:jar-name "groovy-tests-bootstrap.jar"
189 #:jdk ,icedtea-8
190 #:tests? #f; no tests
191 #:phases
192 (modify-phases %standard-phases
193 (replace 'build
194 (lambda _
195 (mkdir-p "build/classes")
196 (mkdir-p "build/jar")
197 (apply invoke "java" "-cp" (getenv "CLASSPATH")
198 "org.codehaus.groovy.tools.FileSystemCompiler"
199 "-d" "build/classes"
200 "-j"; joint compilation
201 (append
202 (find-files "src/test" "TestSupport.java")
203 (find-files "src/test" "HeadlessTestSupport.java")
204 (find-files "src/test" "XmlAssert.java")))
205 (invoke "jar" "-cf" "build/jar/groovy-tests-bootstrap.jar"
206 "-C" "build/classes" ".")
207 #t)))))
208 (inputs
209 `(("groovy-test" ,groovy-test)
210 ,@(package-inputs groovy-bootstrap)))
211 (native-inputs
212 `(("groovy-bootstrap" ,groovy-bootstrap)
213 ,@(package-native-inputs java-groovy-bootstrap)))
214 (synopsis "Groovy test classes")
215 (description "This package contains three classes required for testing
216 other groovy submodules.")))
217
218 (define groovy-test
219 (package
220 (inherit groovy-bootstrap)
221 (name "groovy-test")
222 (arguments
223 `(#:jar-name "groovy-test.jar"
224 #:jdk ,icedtea-8
225 #:test-dir "subprojects/groovy-test/src/test"
226 #:phases
227 (modify-phases %standard-phases
228 (replace 'build
229 (lambda _
230 (mkdir-p "build/classes")
231 (mkdir-p "build/jar")
232 (apply invoke "java" "-cp" (getenv "CLASSPATH")
233 "org.codehaus.groovy.tools.FileSystemCompiler"
234 "-d" "build/classes" "-j"; joint compilation
235 (find-files "subprojects/groovy-test/src/main"
236 ".*\\.(groovy|java)$"))
237 (invoke "jar" "-cf" "build/jar/groovy-test.jar"
238 "-C" "build/classes" ".")
239 #t))
240 (replace 'check
241 (lambda _
242 (mkdir-p "build/test-classes")
243 (substitute* "build.xml"
244 (("depends=\"compile-tests\"") "depends=\"\"")
245 (("}/java") "}/groovy"))
246 (apply invoke "java" "-cp"
247 (string-append (getenv "CLASSPATH") ":build/classes")
248 "org.codehaus.groovy.tools.FileSystemCompiler"
249 "-d" "build/test-classes" "-j"
250 (append (find-files "subprojects/groovy-test/src/test"
251 ".*\\.(groovy|java)$")))
252 (invoke "ant" "check")
253 #t)))))
254 (native-inputs
255 `(("groovy-bootstrap" ,groovy-bootstrap)
256 ,@(package-native-inputs java-groovy-bootstrap)))
257 (synopsis "Groovy test submodule")
258 (description "This package contains the test submodules used to test
259 other groovy submodules.")))
260
261 (define groovy-xml
262 (package
263 (inherit groovy-bootstrap)
264 (name "groovy-xml")
265 (arguments
266 `(#:jar-name "groovy-xml.jar"
267 #:jdk ,icedtea-8
268 #:test-dir "src/test"
269 #:phases
270 (modify-phases %standard-phases
271 (add-before 'configure 'chdir
272 (lambda _
273 (chdir "subprojects/groovy-xml")
274 #t))
275 (replace 'build
276 (lambda _
277 (mkdir-p "build/classes")
278 (mkdir-p "build/jar")
279 (apply invoke "java" "-cp" (getenv "CLASSPATH")
280 "org.codehaus.groovy.tools.FileSystemCompiler"
281 "-d" "build/classes" "-j"; joint compilation
282 (find-files "src/main" ".*\\.(groovy|java)$"))
283 (invoke "jar" "-cf" "build/jar/groovy-xml.jar"
284 "-C" "build/classes" ".")
285 #t))
286 (replace 'check
287 (lambda _
288 (mkdir-p "build/test-classes")
289 (substitute* "build.xml"
290 (("depends=\"compile-tests\"") "depends=\"\"")
291 (("}/java") "}/groovy"))
292 (apply invoke "java" "-cp"
293 (string-append (getenv "CLASSPATH") ":build/classes")
294 "org.codehaus.groovy.tools.FileSystemCompiler"
295 "-d" "build/test-classes" "-j"
296 (append (find-files "src/test" ".*\\.(groovy|java)$")))
297 (invoke "ant" "check")
298 #t)))))
299 (native-inputs
300 `(("groovy-bootstrap" ,groovy-bootstrap)
301 ("groovy-test" ,groovy-test)
302 ("groovy-tests-bootstrap" ,groovy-tests-bootstrap)
303 ,@(package-native-inputs java-groovy-bootstrap)))
304 (synopsis "Groovy XML")
305 (description "This package contains XML-related utilities for groovy.")))
306
307 (define groovy-templates
308 (package
309 (inherit groovy-bootstrap)
310 (name "groovy-templates")
311 (arguments
312 `(#:jar-name "groovy-templates.jar"
313 #:jdk ,icedtea-8
314 #:test-dir "subprojects/groovy-templates/src/test"
315 #:tests? #f;Requires spock-framework which is a circular dependency
316 #:phases
317 (modify-phases %standard-phases
318 (replace 'build
319 (lambda _
320 (mkdir-p "build/classes")
321 (mkdir-p "build/jar")
322 (apply invoke "java" "-cp" (getenv "CLASSPATH")
323 "org.codehaus.groovy.tools.FileSystemCompiler"
324 "-d" "build/classes" "-j"; joint compilation
325 (find-files "subprojects/groovy-templates/src/main"
326 ".*\\.(groovy|java)$"))
327 (invoke "jar" "-cf" "build/jar/groovy-templates.jar"
328 "-C" "build/classes" ".")
329 #t)))))
330 (inputs
331 `(("groovy-xml" ,groovy-xml)
332 ,@(package-inputs groovy-bootstrap)))
333 (native-inputs
334 `(("groovy-bootstrap" ,groovy-bootstrap)
335 ("groovy-test" ,groovy-test)
336 ("groovy-tests-bootstrap" ,groovy-tests-bootstrap)
337 ,@(package-native-inputs java-groovy-bootstrap)))
338 (synopsis "Groovy template engine")
339 (description "This package contains a template framework which is
340 well-suited to applications where the text to be generated follows the form of
341 a static template.")))
342
343 (define groovy-groovydoc
344 (package
345 (inherit groovy-bootstrap)
346 (name "groovy-groovydoc")
347 (arguments
348 `(#:jar-name "groovy-groovydoc.jar"
349 #:jdk ,icedtea-8
350 #:test-dir "subprojects/groovy-groovydoc/src/test"
351 #:tests? #f; Requires groovy-ant which is a circular dependency
352 #:phases
353 (modify-phases %standard-phases
354 (add-before 'build 'copy-resources
355 (lambda _
356 (copy-recursively "subprojects/groovy-groovydoc/src/main/resources"
357 "build/classes")
358 #t))
359 (replace 'build
360 (lambda _
361 (mkdir-p "build/classes")
362 (mkdir-p "build/jar")
363 (apply invoke "java" "-cp" (getenv "CLASSPATH")
364 "org.codehaus.groovy.tools.FileSystemCompiler"
365 "-d" "build/classes"
366 "-j"; joint compilation
367 (find-files "subprojects/groovy-groovydoc/src/main"
368 ".*\\.(groovy|java)$"))
369 (invoke "jar" "-cf" "build/jar/groovy-groovydoc.jar"
370 "-C" "build/classes" ".")
371 #t)))))
372 (inputs
373 `(("groovy-templates" ,groovy-templates)
374 ,@(package-inputs groovy-bootstrap)))
375 (native-inputs
376 `(("groovy-bootstrap" ,groovy-bootstrap)
377 ("groovy-test" ,groovy-test)
378 ("groovy-tests-bootstrap" ,groovy-tests-bootstrap)
379 ,@(package-native-inputs java-groovy-bootstrap)))
380 (synopsis "Groovy documentation generation")
381 (description "This package contains the groovy documentation generator,
382 similar to javadoc.")))
383
384 (define groovy-ant
385 (package
386 (inherit groovy-bootstrap)
387 (name "groovy-ant")
388 (arguments
389 `(#:jar-name "groovy-ant.jar"
390 #:jdk ,icedtea-8
391 #:test-dir "src/test"
392 ;; FIXME: Excluding all tests because they fail
393 #:test-exclude (list
394 "**/GroovyTest.java"
395 "**/GroovycTest.java")
396 #:phases
397 (modify-phases %standard-phases
398 (add-before 'configure 'chdir
399 (lambda _
400 (chdir "subprojects/groovy-ant")
401 #t))
402 (add-before 'build 'copy-resources
403 (lambda _
404 (copy-recursively "src/main/resources" "build/classes")
405 #t))
406 (replace 'build
407 (lambda _
408 (mkdir-p "build/classes")
409 (mkdir-p "build/jar")
410 (apply invoke "java" "-cp" (getenv "CLASSPATH")
411 "org.codehaus.groovy.tools.FileSystemCompiler"
412 "-d" "build/classes" "-j"; joint compilation
413 (find-files "src/main" ".*\\.(groovy|java)$"))
414 (invoke "jar" "-cf" "build/jar/groovy-ant.jar"
415 "-C" "build/classes" ".")
416 #t))
417 (replace 'check
418 (lambda _
419 (mkdir-p "build/test-classes")
420 (substitute* "build.xml"
421 (("depends=\"compile-tests\"") "depends=\"\"")
422 (("}/java") "}/groovy"))
423 (apply invoke "java" "-cp"
424 (string-append (getenv "CLASSPATH") ":build/classes")
425 "org.codehaus.groovy.tools.FileSystemCompiler"
426 "-d" "build/test-classes" "-j"
427 (find-files "src/test" ".*\\.(groovy|java)$"))
428 (invoke "ant" "check")
429 #t)))))
430 (inputs
431 `(("groovy-groovydoc" ,groovy-groovydoc)
432 ,@(package-inputs groovy-bootstrap)))
433 (native-inputs
434 `(("groovy-bootstrap" ,groovy-bootstrap)
435 ("groovy-xml" ,groovy-xml)
436 ("groovy-test" ,groovy-test)
437 ("groovy-tests-bootstrap" ,groovy-tests-bootstrap)
438 ,@(package-native-inputs java-groovy-bootstrap)))
439 (synopsis "Groovy ant tasks")
440 (description "This package contains groovy-related ant tasks definitions.")))
441
442 (define groovy-bsf
443 (package
444 (inherit groovy-bootstrap)
445 (name "groovy-bsf")
446 (arguments
447 `(#:jar-name "groovy-bsf.jar"
448 #:jdk ,icedtea-8
449 #:test-dir "src/test"
450 #:test-exclude (list
451 ;; exception from Groovy: org.codehaus.groovy.runtime.InvokerInvocationException:
452 ;; groovy.lang.MissingMethodException: No signature of method:
453 ;; java.util.ArrayList.each() is applicable for argument types:
454 ;; (groovy.script.MapFromList$_doit_closure1) values:
455 ;; [groovy.script.MapFromList$_doit_closure1@17e554d5]
456 "**/BSFTest.java")
457 #:phases
458 (modify-phases %standard-phases
459 (add-before 'configure 'chdir
460 (lambda _
461 (chdir "subprojects/groovy-bsf")
462 #t))
463 (replace 'build
464 (lambda _
465 (mkdir-p "build/classes")
466 (mkdir-p "build/jar")
467 (apply invoke "java" "-cp" (getenv "CLASSPATH")
468 "org.codehaus.groovy.tools.FileSystemCompiler"
469 "-d" "build/classes" "-j"; joint compilation
470 (find-files "src/main" ".*\\.(groovy|java)$"))
471 (invoke "jar" "-cf" "build/jar/groovy-bsf.jar"
472 "-C" "build/classes" ".")
473 #t))
474 (replace 'check
475 (lambda _
476 (mkdir-p "build/test-classes")
477 (substitute* "build.xml"
478 (("depends=\"compile-tests\"") "depends=\"\""))
479 (apply invoke "java" "-cp"
480 (string-append (getenv "CLASSPATH") ":build/classes")
481 "org.codehaus.groovy.tools.FileSystemCompiler"
482 "-d" "build/test-classes" "-j"
483 (find-files "src/test" ".*\\.(groovy|java)$"))
484 (invoke "ant" "check")
485 #t)))))
486 (inputs
487 `(("java-commons-bsf" ,java-commons-bsf)
488 ,@(package-inputs groovy-bootstrap)))
489 (native-inputs
490 `(("groovy-bootstrap" ,groovy-bootstrap)
491 ("groovy-test" ,groovy-test)
492 ("groovy-tests-bootstrap" ,groovy-tests-bootstrap)
493 ("java-commons-logging-minimal" ,java-commons-logging-minimal)
494 ,@(package-native-inputs java-groovy-bootstrap)))
495 (synopsis "Groovy BSF engine")
496 (description "This package defines the BSF engine for using Groovy inside
497 any @dfn{Bean Scripting Framework} (BSF) application.")))
498
499 (define groovy-swing
500 (package
501 (inherit groovy-bootstrap)
502 (name "groovy-swing")
503 (arguments
504 `(#:jar-name "groovy-swing.jar"
505 #:jdk ,icedtea-8
506 ;; FIXME: tests are not run
507 #:test-dir "src/test"
508 #:phases
509 (modify-phases %standard-phases
510 (add-before 'configure 'chdir
511 (lambda _
512 (chdir "subprojects/groovy-swing")
513 #t))
514 (replace 'build
515 (lambda _
516 (mkdir-p "build/classes")
517 (mkdir-p "build/jar")
518 (apply invoke "java" "-cp" (getenv "CLASSPATH")
519 "org.codehaus.groovy.tools.FileSystemCompiler"
520 "-d" "build/classes" "-j"; joint compilation
521 (find-files "src/main" ".*\\.(groovy|java)$"))
522 (invoke "jar" "-cf" "build/jar/groovy-swing.jar"
523 "-C" "build/classes" ".")
524 #t))
525 (replace 'check
526 (lambda _
527 (mkdir-p "build/test-classes")
528 (substitute* "src/test/groovy/groovy/util/GroovySwingTestCase.groovy"
529 (("HeadlessTestSupport.headless") "isHeadless()"))
530 (substitute* "build.xml"
531 (("depends=\"compile-tests\"") "depends=\"\"")
532 (("}/java") "}/groovy"))
533 (apply invoke "java" "-cp"
534 (string-append (getenv "CLASSPATH") ":build/classes")
535 "org.codehaus.groovy.tools.FileSystemCompiler"
536 "-d" "build/test-classes" "-j"
537 (find-files "src/test" ".*\\.(groovy|java)$"))
538 (invoke "ant" "check")
539 #t)))))
540 (native-inputs
541 `(("groovy-bootstrap" ,groovy-bootstrap)
542 ("groovy-test" ,groovy-test)
543 ("groovy-tests-bootstrap" ,groovy-tests-bootstrap)
544 ("java-commons-logging-minimal" ,java-commons-logging-minimal)
545 ,@(package-native-inputs java-groovy-bootstrap)))
546 (synopsis "Groovy graphical library")
547 (description "This package contains the groovy bindings to Java Swing, a
548 library used to build graphical interfaces.")))
549
550 (define groovy-console
551 (package
552 (inherit groovy-bootstrap)
553 (name "groovy-console")
554 (arguments
555 `(#:jar-name "groovy-console.jar"
556 #:jdk ,icedtea-8
557 ;; FIXME: tests are not run
558 #:test-dir "src/test"
559 #:phases
560 (modify-phases %standard-phases
561 (add-before 'configure 'chdir
562 (lambda _
563 (chdir "subprojects/groovy-console")
564 #t))
565 (add-before 'build 'copy-resources
566 (lambda _
567 (copy-recursively "src/main/resources" "build/classes")
568 #t))
569 (replace 'build
570 (lambda _
571 (mkdir-p "build/classes")
572 (mkdir-p "build/jar")
573 (apply invoke "java" "-cp" (getenv "CLASSPATH")
574 "org.codehaus.groovy.tools.FileSystemCompiler"
575 "-d" "build/classes" "-j"; joint compilation
576 (find-files "src/main" ".*\\.(groovy|java)$"))
577 (invoke "jar" "-cf" "build/jar/groovy-console.jar"
578 "-C" "build/classes" ".")
579 #t))
580 (replace 'check
581 (lambda _
582 (mkdir-p "build/test-classes")
583 (substitute* "build.xml"
584 (("depends=\"compile-tests\"") "depends=\"\"")
585 (("}/java") "}/groovy"))
586 (substitute*
587 "../groovy-swing/src/test/groovy/groovy/util/GroovySwingTestCase.groovy"
588 (("HeadlessTestSupport.headless") "isHeadless()"))
589 (apply invoke "java" "-cp"
590 (string-append (getenv "CLASSPATH") ":build/classes")
591 "org.codehaus.groovy.tools.FileSystemCompiler"
592 "-d" "build/test-classes" "-j"
593 (append
594 (find-files "../groovy-swing/src/test" ".*\\.(groovy|java)$")
595 (find-files "src/test" ".*\\.(groovy|java)$")))
596 (invoke "ant" "check")
597 #t)))))
598 (inputs
599 `(("groovy-swing" ,groovy-swing)
600 ("groovy-templates" ,groovy-templates)
601 ,@(package-inputs groovy-bootstrap)))
602 (native-inputs
603 `(("groovy-bootstrap" ,groovy-bootstrap)
604 ("groovy-test" ,groovy-test)
605 ("groovy-tests-bootstrap" ,groovy-tests-bootstrap)
606 ("java-commons-logging-minimal" ,java-commons-logging-minimal)
607 ,@(package-native-inputs java-groovy-bootstrap)))
608 (synopsis "Groovy graphical interface")
609 (description "This package contains a graphical interface to run groovy.")))
610
611 (define groovy-docgenerator
612 (package
613 (inherit groovy-bootstrap)
614 (name "groovy-docgenerator")
615 (arguments
616 `(#:jar-name "groovy-docgenerator.jar"
617 #:jdk ,icedtea-8
618 #:tests? #f; No tests
619 #:phases
620 (modify-phases %standard-phases
621 (add-before 'configure 'chdir
622 (lambda _
623 (chdir "subprojects/groovy-docgenerator")
624 #t))
625 (add-before 'build 'copy-resources
626 (lambda _
627 (copy-recursively "src/main/resources" "build/classes")
628 #t))
629 (replace 'build
630 (lambda _
631 (mkdir-p "build/classes")
632 (mkdir-p "build/jar")
633 (apply invoke "java" "-cp" (getenv "CLASSPATH")
634 "org.codehaus.groovy.tools.FileSystemCompiler"
635 "-d" "build/classes" "-j"; joint compilation
636 (find-files "src/main" ".*\\.(groovy|java)$"))
637 (invoke "jar" "-cf" "build/jar/groovy-docgenerator.jar"
638 "-C" "build/classes" ".")
639 #t)))))
640 (inputs
641 `(("groovy-templates" ,groovy-templates)
642 ("groovy-swing" ,groovy-swing)
643 ("java-qdox-1.12" ,java-qdox-1.12)
644 ,@(package-inputs groovy-bootstrap)))
645 (native-inputs
646 `(("groovy-bootstrap" ,groovy-bootstrap)
647 ("groovy-test" ,groovy-test)
648 ("groovy-tests-bootstrap" ,groovy-tests-bootstrap)
649 ,@(package-native-inputs java-groovy-bootstrap)))
650 (synopsis "Groovy documentation generation")
651 (description "This package contains a command line tool to generate
652 documentation for groovy applications.")))
653
654 (define groovy-groovysh
655 (package
656 (inherit groovy-bootstrap)
657 (name "groovy-groovysh")
658 (arguments
659 `(#:jar-name "groovy-groovysh.jar"
660 #:test-dir "src/test"
661 #:jdk ,icedtea-8
662 #:phases
663 (modify-phases %standard-phases
664 (add-before 'configure 'chdir
665 (lambda _
666 (chdir "subprojects/groovy-groovysh")
667 #t))
668 (add-before 'build 'copy-resources
669 (lambda _
670 (copy-recursively "src/main/resources" "build/classes")
671 #t))
672 (replace 'build
673 (lambda _
674 (mkdir-p "build/classes")
675 (mkdir-p "build/jar")
676 (apply invoke "java" "-cp" (getenv "CLASSPATH")
677 "org.codehaus.groovy.tools.FileSystemCompiler"
678 "-d" "build/classes" "-j"; joint compilation
679 (find-files "src/main" ".*\\.(groovy|java)$"))
680 (invoke "jar" "-cf" "build/jar/groovy-groovysh.jar"
681 "-C" "build/classes" ".")
682 #t))
683 (replace 'check
684 (lambda _
685 (mkdir-p "build/test-classes")
686 (substitute* "build.xml"
687 (("depends=\"compile-tests\"") "depends=\"\"")
688 (("}/java") "}/groovy"))
689 (apply invoke "java" "-cp"
690 (string-append (getenv "CLASSPATH") ":build/classes")
691 "org.codehaus.groovy.tools.FileSystemCompiler"
692 "-d" "build/test-classes" "-j"
693 (append (find-files "src/test" ".*\\.(groovy|java)$")))
694 (invoke "ant" "check")
695 #t)))))
696 (inputs
697 `(("groovy-xml" ,groovy-xml)
698 ("groovy-console" ,groovy-console)
699 ,@(package-inputs groovy-bootstrap)))
700 (native-inputs
701 `(("groovy-bootstrap" ,groovy-bootstrap)
702 ("groovy-test" ,groovy-test)
703 ("groovy-tests-bootstrap" ,groovy-tests-bootstrap)
704 ,@(package-native-inputs java-groovy-bootstrap)))
705 (synopsis "Groovy REPL")
706 (description "This package contains the Groovy REPL.")))
707
708 (define groovy-jmx
709 (package
710 (inherit groovy-bootstrap)
711 (name "groovy-jmx")
712 (arguments
713 `(#:jar-name "groovy-jmx.jar"
714 #:test-dir "src/test"
715 #:jdk ,icedtea-8
716 #:phases
717 (modify-phases %standard-phases
718 (add-before 'configure 'chdir
719 (lambda _
720 (chdir "subprojects/groovy-jmx")
721 #t))
722 (replace 'build
723 (lambda _
724 (mkdir-p "build/classes")
725 (mkdir-p "build/jar")
726 (apply invoke "java" "-cp" (getenv "CLASSPATH")
727 "org.codehaus.groovy.tools.FileSystemCompiler"
728 "-d" "build/classes" "-j"; joint compilation
729 (find-files "src/main" ".*\\.(groovy|java)$"))
730 (invoke "jar" "-cf" "build/jar/groovy-jmx.jar"
731 "-C" "build/classes" ".")
732 #t))
733 (replace 'check
734 (lambda _
735 (mkdir-p "build/test-classes")
736 (substitute* "build.xml"
737 (("depends=\"compile-tests\"") "depends=\"\"")
738 (("}/java") "}/groovy"))
739 (apply invoke "java" "-cp"
740 (string-append (getenv "CLASSPATH") ":build/classes")
741 "org.codehaus.groovy.tools.FileSystemCompiler"
742 "-d" "build/test-classes" "-j"
743 (append (find-files "src/test" ".*\\.(groovy|java)$")))
744 (invoke "ant" "check")
745 #t)))))
746 (native-inputs
747 `(("groovy-bootstrap" ,groovy-bootstrap)
748 ("groovy-test" ,groovy-test)
749 ("groovy-tests-bootstrap" ,groovy-tests-bootstrap)
750 ,@(package-native-inputs java-groovy-bootstrap)))
751 (synopsis "Groovy JMX extension")
752 (description "This package contains the JMX extension of Groovy, for
753 management and monitoring of JVM-based solutions.")))
754
755 (define groovy-json
756 (package
757 (inherit groovy-bootstrap)
758 (name "groovy-json")
759 (arguments
760 `(#:jar-name "groovy-json.jar"
761 #:test-dir "src/test"
762 #:jdk ,icedtea-8
763 #:phases
764 (modify-phases %standard-phases
765 (add-before 'configure 'chdir
766 (lambda _
767 (chdir "subprojects/groovy-json")
768 #t))
769 (replace 'build
770 (lambda _
771 (mkdir-p "build/classes")
772 (mkdir-p "build/jar")
773 (apply invoke "java" "-cp" (getenv "CLASSPATH")
774 "org.codehaus.groovy.tools.FileSystemCompiler"
775 "-d" "build/classes" "-j"; joint compilation
776 (find-files "src/main" ".*\\.(groovy|java)$"))
777 (invoke "jar" "-cf" "build/jar/groovy-json.jar"
778 "-C" "build/classes" ".")
779 #t))
780 (replace 'check
781 (lambda _
782 (mkdir-p "build/test-classes")
783 (substitute* "build.xml"
784 (("depends=\"compile-tests\"") "depends=\"\"")
785 (("}/java") "}/groovy"))
786 (apply invoke "java" "-cp"
787 (string-append (getenv "CLASSPATH") ":build/classes")
788 "org.codehaus.groovy.tools.FileSystemCompiler"
789 "-d" "build/test-classes" "-j"
790 (append (find-files "src/test" ".*\\.(groovy|java)$")))
791 (invoke "ant" "check")
792 #t)))))
793 (native-inputs
794 `(("groovy-bootstrap" ,groovy-bootstrap)
795 ("groovy-test" ,groovy-test)
796 ("groovy-tests-bootstrap" ,groovy-tests-bootstrap)
797 ,@(package-native-inputs java-groovy-bootstrap)))
798 (synopsis "Groovy JSON")
799 (description "This package contains JSON-related utilities for groovy.")))
800
801 (define groovy-jsr223
802 (package
803 (inherit groovy-bootstrap)
804 (name "groovy-jsr223")
805 (arguments
806 `(#:jar-name "groovy-jsr223.jar"
807 #:test-dir "src/test"
808 #:jdk ,icedtea-8
809 #:phases
810 (modify-phases %standard-phases
811 (add-before 'configure 'chdir
812 (lambda _
813 (chdir "subprojects/groovy-jsr223")
814 #t))
815 (add-before 'build 'copy-resources
816 (lambda _
817 (copy-recursively "src/main/resources" "build/classes")
818 #t))
819 (replace 'build
820 (lambda _
821 (mkdir-p "build/classes")
822 (mkdir-p "build/jar")
823 (apply invoke "java" "-cp" (getenv "CLASSPATH")
824 "org.codehaus.groovy.tools.FileSystemCompiler"
825 "-d" "build/classes" "-j"; joint compilation
826 (find-files "src/main" ".*\\.(groovy|java)$"))
827 (invoke "jar" "-cf" "build/jar/groovy-jsr223.jar"
828 "-C" "build/classes" ".")
829 #t))
830 (replace 'check
831 (lambda _
832 (mkdir-p "build/test-classes")
833 (substitute* "build.xml"
834 (("depends=\"compile-tests\"") "depends=\"\"")
835 (("}/java") "}/groovy"))
836 (apply invoke "java" "-cp"
837 (string-append (getenv "CLASSPATH") ":build/classes")
838 "org.codehaus.groovy.tools.FileSystemCompiler"
839 "-d" "build/test-classes" "-j"
840 (append (find-files "src/test" ".*\\.(groovy|java)$")))
841 (invoke "ant" "check")
842 #t)))))
843 (native-inputs
844 `(("groovy-bootstrap" ,groovy-bootstrap)
845 ("groovy-test" ,groovy-test)
846 ("groovy-tests-bootstrap" ,groovy-tests-bootstrap)
847 ,@(package-native-inputs java-groovy-bootstrap)))
848 (synopsis "Groovy's own JSR223 implementation")
849 (description "This package contains Groovy's own JSR223 implementation. This
850 module is used for interaction between Groovy and Java code.")))
851
852 (define groovy-nio
853 (package
854 (inherit groovy-bootstrap)
855 (name "groovy-nio")
856 (arguments
857 `(#:jar-name "groovy-nio.jar"
858 #:test-dir "src/test"
859 #:jdk ,icedtea-8
860 #:tests? #f; Requires spock-framework
861 #:phases
862 (modify-phases %standard-phases
863 (add-before 'configure 'chdir
864 (lambda _
865 (chdir "subprojects/groovy-nio")
866 #t))
867 (replace 'build
868 (lambda _
869 (mkdir-p "build/classes")
870 (mkdir-p "build/jar")
871 (apply invoke "java" "-cp" (getenv "CLASSPATH")
872 "org.codehaus.groovy.tools.FileSystemCompiler"
873 "-d" "build/classes" "-j"; joint compilation
874 (find-files "src/main" ".*\\.(groovy|java)$"))
875 (invoke "jar" "-cf" "build/jar/groovy-nio.jar"
876 "-C" "build/classes" ".")
877 #t)))))
878 (native-inputs
879 `(("groovy-bootstrap" ,groovy-bootstrap)
880 ("groovy-test" ,groovy-test)
881 ("groovy-tests-bootstrap" ,groovy-tests-bootstrap)
882 ,@(package-native-inputs java-groovy-bootstrap)))
883 (synopsis "Groovy input-output library")
884 (description "This package implements an input/output library that extends
885 the functionality of the common library of Java.")))
886
887 (define groovy-servlet
888 (package
889 (inherit groovy-bootstrap)
890 (name "groovy-servlet")
891 (arguments
892 `(#:jar-name "groovy-servlet.jar"
893 #:test-dir "src/test"
894 #:jdk ,icedtea-8
895 #:phases
896 (modify-phases %standard-phases
897 (add-before 'configure 'chdir
898 (lambda _
899 (chdir "subprojects/groovy-servlet")
900 #t))
901 (replace 'build
902 (lambda _
903 (mkdir-p "build/classes")
904 (mkdir-p "build/jar")
905 (apply invoke "java" "-cp" (getenv "CLASSPATH")
906 "org.codehaus.groovy.tools.FileSystemCompiler"
907 "-d" "build/classes"
908 "-j"; joint compilation
909 (find-files "src/main" ".*\\.(groovy|java)$"))
910 (invoke "jar" "-cf" "build/jar/groovy-servlet.jar"
911 "-C" "build/classes" ".")
912 #t))
913 (replace 'check
914 (lambda _
915 (mkdir-p "build/test-classes")
916 (substitute* "build.xml"
917 (("depends=\"compile-tests\"") "depends=\"\"")
918 (("}/java") "}/groovy"))
919 (apply invoke "java" "-cp"
920 (string-append (getenv "CLASSPATH") ":build/classes")
921 "org.codehaus.groovy.tools.FileSystemCompiler"
922 "-d" "build/test-classes"
923 "-j"
924 (append (find-files "src/test" ".*\\.(groovy|java)$")))
925 (invoke "ant" "check")
926 #t)))))
927 (inputs
928 `(("groovy-templates" ,groovy-templates)
929 ("groovy-xml" ,groovy-xml)
930 ,@(package-inputs groovy-bootstrap)))
931 (native-inputs
932 `(("groovy-bootstrap" ,groovy-bootstrap)
933 ("groovy-json" ,groovy-json)
934 ("groovy-test" ,groovy-test)
935 ("groovy-tests-bootstrap" ,groovy-tests-bootstrap)
936 ,@(package-native-inputs java-groovy-bootstrap)))
937 (synopsis "Groovy's servlet implementation")
938 (description "This package contains a library to create groovlets, Groovy's
939 version of Java servlets.")))
940
941 (define groovy-sql
942 (package
943 (inherit groovy-bootstrap)
944 (name "groovy-sql")
945 (arguments
946 `(#:jar-name "groovy-sql.jar"
947 #:test-dir "src/test"
948 #:tests? #f;TODO: Requires hsqldb
949 #:jdk ,icedtea-8
950 #:phases
951 (modify-phases %standard-phases
952 (add-before 'configure 'chdir
953 (lambda _
954 (chdir "subprojects/groovy-sql")
955 #t))
956 (replace 'build
957 (lambda _
958 (mkdir-p "build/classes")
959 (mkdir-p "build/jar")
960 (apply invoke "java" "-cp" (getenv "CLASSPATH")
961 "org.codehaus.groovy.tools.FileSystemCompiler"
962 "-d" "build/classes" "-j"; joint compilation
963 (find-files "src/main"
964 ".*\\.(groovy|java)$"))
965 (invoke "jar" "-cf" "build/jar/groovy-sql.jar"
966 "-C" "build/classes" ".")
967 #t)))))
968 (native-inputs
969 `(("groovy-bootstrap" ,groovy-bootstrap)
970 ("groovy-test" ,groovy-test)
971 ("groovy-tests-bootstrap" ,groovy-tests-bootstrap)
972 ,@(package-native-inputs java-groovy-bootstrap)))
973 (synopsis "Groovy SQL library")
974 (description "This package contains a facade over Java's normal JDBC APIs
975 providing greatly simplified resource management and result set handling.")))
976
977 (define groovy-testng
978 (package
979 (inherit groovy-bootstrap)
980 (name "groovy-testng")
981 (arguments
982 `(#:jar-name "groovy-testng.jar"
983 #:tests? #f; No tests
984 #:jdk ,icedtea-8
985 #:phases
986 (modify-phases %standard-phases
987 (add-before 'configure 'chdir
988 (lambda _
989 (chdir "subprojects/groovy-testng")
990 #t))
991 (add-before 'build 'copy-resources
992 (lambda _
993 (copy-recursively "src/main/resources" "build/classes")
994 #t))
995 (replace 'build
996 (lambda _
997 (mkdir-p "build/classes")
998 (mkdir-p "build/jar")
999 (apply invoke "java" "-cp" (getenv "CLASSPATH")
1000 "org.codehaus.groovy.tools.FileSystemCompiler"
1001 "-d" "build/classes"
1002 "-j"; joint compilation
1003 (find-files "src/main" ".*\\.(groovy|java)$"))
1004 (invoke "jar" "-cf" "build/jar/groovy-testng.jar"
1005 "-C" "build/classes" ".")
1006 #t)))))
1007 (native-inputs
1008 `(("groovy-bootstrap" ,groovy-bootstrap)
1009 ("groovy-test" ,groovy-test)
1010 ("groovy-tests-bootstrap" ,groovy-tests-bootstrap)
1011 ,@(package-native-inputs java-groovy-bootstrap)))
1012 (synopsis "Groovy testing framework")
1013 (description "This package contains integration code for running TestNG
1014 tests in Groovy.")))
1015
1016 (define groovy-macro
1017 (package
1018 (inherit groovy-bootstrap)
1019 (name "groovy-macro")
1020 (arguments
1021 `(#:jar-name "groovy-macro.jar"
1022 #:test-dir "src/test"
1023 #:jdk ,icedtea-8
1024 #:phases
1025 (modify-phases %standard-phases
1026 (add-before 'configure 'chdir
1027 (lambda _
1028 (chdir "subprojects/groovy-macro")
1029 #t))
1030 (replace 'build
1031 (lambda _
1032 (mkdir-p "build/classes")
1033 (mkdir-p "build/jar")
1034 (apply invoke "java" "-cp" (getenv "CLASSPATH")
1035 "org.codehaus.groovy.tools.FileSystemCompiler"
1036 "-d" "build/classes" "-j"; joint compilation
1037 (find-files "src/main" ".*\\.(groovy|java)$"))
1038 (invoke "jar" "-cf" "build/jar/groovy-macro.jar"
1039 "-C" "build/classes" ".")
1040 #t))
1041 (replace 'check
1042 (lambda _
1043 (mkdir-p "build/test-classes")
1044 (substitute* "build.xml"
1045 (("depends=\"compile-tests\"") "depends=\"\"")
1046 (("}/java") "}/groovy"))
1047 (apply invoke "java" "-cp"
1048 (string-append (getenv "CLASSPATH") ":build/classes")
1049 "org.codehaus.groovy.tools.FileSystemCompiler"
1050 "-d" "build/test-classes" "-j"
1051 (append (find-files "src/test" ".*\\.(groovy|java)$")))
1052 (invoke "ant" "check")
1053 #t)))))
1054 (inputs
1055 `(("groovy-templates" ,groovy-templates)
1056 ("groovy-xml" ,groovy-xml)
1057 ,@(package-inputs groovy-bootstrap)))
1058 (native-inputs
1059 `(("groovy-bootstrap" ,groovy-bootstrap)
1060 ("groovy-json" ,groovy-json)
1061 ("groovy-test" ,groovy-test)
1062 ("groovy-tests-bootstrap" ,groovy-tests-bootstrap)
1063 ,@(package-native-inputs java-groovy-bootstrap)))
1064 (synopsis "Groovy macro processor")
1065 (description "This package contains a high-level library to create macro
1066 and modify groovy's @dfn{Abstract Syntax Tree} (AST).")))
1067
1068 (define-public groovy
1069 (package
1070 (inherit groovy-bootstrap)
1071 (name "groovy")
1072 (arguments
1073 `(#:tests? #f; No tests
1074 #:jdk ,icedtea-8
1075 #:phases
1076 (modify-phases %standard-phases
1077 (delete 'configure)
1078 (delete 'build)
1079 (replace 'install
1080 (lambda* (#:key outputs inputs #:allow-other-keys)
1081 (let* ((out (assoc-ref outputs "out"))
1082 (out-bin (string-append out "/bin"))
1083 (out-lib (string-append out "/lib")))
1084 (with-directory-excursion "src/bin"
1085 (substitute* "startGroovy"
1086 (("\"\\\\\"") "\"")
1087 (("\\\\\"\"") "\"")
1088 (("\\\\\\$") "$")
1089 (("@GROOVYJAR@") "groovy.jar")
1090 (("MAX_FD=\"maximum\"")
1091 (string-append
1092 "MAX_FD=\"maximum\"\nJAVAHOME="
1093 (assoc-ref inputs "jdk"))))
1094 ;; Groovy uses class loading. It's not enough to put the class
1095 ;; in the loader's classpath, as it causes breakages:
1096 ;; the compiler would give this error:
1097 ;; "Prohibited package name: java.lang"
1098 ;; So we symlink dependencies in this package's output. The
1099 ;; starter class (in groovy-bootstrap) is where the class loader
1100 ;; will look for dependencies, so we put it there too.
1101 (mkdir-p out-lib)
1102 (for-each
1103 (lambda (input)
1104 (for-each
1105 (lambda (jar)
1106 (symlink jar (string-append out-lib "/" (basename jar))))
1107 (find-files (assoc-ref inputs input) ".*.jar")))
1108 '("groovy-bootstrap" "groovy-ant" "groovy-bsf"
1109 "groovy-console" "groovy-docgenerator"
1110 "groovy-groovydoc" "groovy-groovysh"
1111 "groovy-jmx" "groovy-json" "groovy-jsr223"
1112 "groovy-nio" "groovy-servlet" "groovy-sql"
1113 "groovy-swing" "groovy-templates" "groovy-testng"
1114 "groovy-xml" "java-commons-cli" "java-asm"
1115 "java-classpathx-servletapi" "java-xstream"
1116 "java-jansi" "java-jline-2"))
1117 ;; antlr.jar is present twice in antlr2. Symlink doesn't like
1118 ;; it, so we symlink it here.
1119 (symlink (string-append (assoc-ref inputs "antlr2") "/lib/antlr.jar")
1120 (string-append out-lib "/antlr.jar"))
1121 (for-each
1122 (lambda (tool)
1123 (install-file tool out-bin)
1124 (chmod (string-append out-bin "/" tool) #o755))
1125 '("grape" "groovy" "groovyc" "groovyConsole" "groovydoc"
1126 "groovysh" "java2groovy" "startGroovy")))
1127 (install-file "src/conf/groovy-starter.conf"
1128 (string-append out "/conf"))
1129 #t))))))
1130 (inputs
1131 `(("groovy-bootstrap" ,groovy-bootstrap)
1132 ("groovy-ant" ,groovy-ant)
1133 ("groovy-bsf" ,groovy-bsf)
1134 ("groovy-console" ,groovy-console)
1135 ("groovy-docgenerator" ,groovy-docgenerator)
1136 ("groovy-groovydoc" ,groovy-groovydoc)
1137 ("groovy-groovysh" ,groovy-groovysh)
1138 ("groovy-jmx" ,groovy-jmx)
1139 ("groovy-json" ,groovy-json)
1140 ("groovy-jsr223" ,groovy-jsr223)
1141 ("groovy-nio" ,groovy-nio)
1142 ("groovy-servlet" ,groovy-servlet)
1143 ("groovy-sql" ,groovy-sql)
1144 ("groovy-swing" ,groovy-swing)
1145 ("groovy-templates" ,groovy-templates)
1146 ("groovy-testng" ,groovy-testng)
1147 ("groovy-xml" ,groovy-xml)
1148 ("java-commons-cli" ,java-commons-cli)
1149 ("java-asm" ,java-asm)
1150 ("java-classpathx-servletapi" ,java-classpathx-servletapi)
1151 ("java-xstream" ,java-xstream)
1152 ("java-jansi" ,java-jansi)
1153 ("java-jline-2" ,java-jline-2)
1154 ("antlr2" ,antlr2)))
1155 (synopsis "Programming language for the JVM")
1156 (description "Apache Groovy is a powerful, optionally typed and dynamic
1157 language, with static-typing and static compilation capabilities, for the Java
1158 platform. It integrates smoothly with any Java program, and immediately
1159 delivers to your application powerful features, including scripting
1160 capabilities, Domain-Specific Language authoring, runtime and compile-time
1161 meta-programming and functional programming.")))