guix-more/more/packages/groovy.scm

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-java-bootstrap")
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
       ;; Reference to plus is ambiguous
54
       ;#:jdk ,icedtea-8
55
       #:main-class "groovy.ui.GroovyMain"
56
       #:phases
57
       (modify-phases %standard-phases
58
         (add-before 'build 'generate-parser
59
           (lambda _
60
             (with-directory-excursion "src/main/org/codehaus/groovy/antlr/java"
61
               (zero? (system* "antlr" "java.g")))
62
             (with-directory-excursion "src/main/org/codehaus/groovy/antlr"
63
               (mkdir "parser")
64
               (with-directory-excursion "parser"
65
                 (zero? (system* "antlr" "../groovy.g"))))))
66
         (add-before 'build 'generate-exception-utils
67
           (lambda _
68
             (system* "javac" "-cp" (getenv "CLASSPATH")
69
                      "config/ant/src/org/codehaus/groovy/ExceptionUtilsGenerator.java")
70
             (zero? (system* "java" "-cp" (string-append (getenv "CLASSPATH")
71
                                                         ":config/ant/src")
72
                             "org.codehaus.groovy.ExceptionUtilsGenerator"
73
                             "build/classes/org/codehaus/groovy/runtime/ExceptionUtils.class")))))))
74
    (native-inputs
75
     `(("java-junit" ,java-junit)
76
       ("java-hamcrest-core" ,java-hamcrest-core)
77
       ("antlr2" ,antlr2)
78
       ("java-jmock-1" ,java-jmock-1)
79
       ("java-xmlunit-legacy" ,java-xmlunit-legacy)))
80
    (inputs
81
     `(("java-commons-cli" ,java-commons-cli)
82
       ("java-asm" ,java-asm)
83
       ("java-classpathx-servletapi" ,java-classpathx-servletapi)
84
       ("java-xstream" ,java-xstream)
85
       ("java-jansi" ,java-jansi)
86
       ("java-jline-2" ,java-jline-2)))
87
    (home-page "")
88
    (synopsis "")
89
    (description "")
90
    (license (list license:gpl2
91
                   license:cddl1.1))))
92
93
(define-public groovy-bootstrap
94
  (package
95
    (inherit groovy-java-bootstrap)
96
    (name "groovy-bootstrap")
97
    (arguments
98
     `(#:jar-name "groovy.jar"
99
       ;Requires groovy-xml and logback-classic which are circular dependencies
100
       #:tests? #f
101
       #:phases
102
       (modify-phases %standard-phases
103
         (add-before 'build 'generate-parser
104
           (lambda _
105
             (with-directory-excursion "src/main/org/codehaus/groovy/antlr/java"
106
               (zero? (system* "antlr" "java.g")))
107
             (with-directory-excursion "src/main/org/codehaus/groovy/antlr"
108
               (mkdir "parser")
109
               (with-directory-excursion "parser"
110
                 (zero? (system* "antlr" "../groovy.g"))))))
111
         (add-before 'build 'generate-exception-utils
112
           (lambda _
113
             (system* "javac" "-cp" (getenv "CLASSPATH")
114
                      "config/ant/src/org/codehaus/groovy/ExceptionUtilsGenerator.java")
115
             (zero? (system* "java" "-cp" (string-append (getenv "CLASSPATH")
116
                                                         ":config/ant/src")
117
                             "org.codehaus.groovy.ExceptionUtilsGenerator"
118
                             "target/classes/org/codehaus/groovy/runtime/ExceptionUtils.class"))))
119
         (add-before 'build 'generate-dgminfo
120
           (lambda _
121
             (mkdir-p "target/classes/org/codehaus/groovy/runtime")
122
             (mkdir-p "target/classes/META-INF")
123
             (system* "javac" "-cp" (getenv "CLASSPATH")
124
                      "src/main/org/codehaus/groovy/tools/DgmConverter.java")
125
             (zero? (system* "java" "-cp" (string-append (getenv "CLASSPATH")
126
                                                         ":src/main")
127
                             "org.codehaus.groovy.tools.DgmConverter"))))
128
         (add-before 'build 'copy-resources
129
           (lambda _
130
             (with-directory-excursion "src/main"
131
               (for-each (lambda (file)
132
                           (mkdir-p (string-append "../../target/classes/"
133
                                                   (dirname file)))
134
                           (copy-file file
135
                                      (string-append "../../target/classes/"
136
                                                     file)))
137
                  (find-files "." ".*.(txt|properties|xml|html)")))))
138
         (replace 'build
139
           (lambda _
140
             (mkdir-p "build/jar")
141
             (and
142
               (zero? (apply system* "java" "-cp" (getenv "CLASSPATH")
143
                               "org.codehaus.groovy.tools.FileSystemCompiler"
144
                               "-d" "target/classes"
145
                               "-j"; joint compilation
146
                               (find-files "src/main"
147
                                           ".*\\.(groovy|java)$")))
148
               (zero? (system* "jar" "-cf" "build/jar/groovy.jar"
149
                               "-C" "target/classes" "."))))))))
150
    (inputs
151
     `(("java-apache-ivy-bootstrap" ,java-apache-ivy-bootstrap)
152
       ,@(package-inputs groovy-java-bootstrap)))
153
    (native-inputs
154
     `(("groovy-java-bootstrap" ,groovy-java-bootstrap)
155
       ,@(package-native-inputs groovy-java-bootstrap)))))
156
157
;; Common test classes
158
(define-public groovy-tests-bootstrap
159
  (package
160
    (inherit groovy-bootstrap)
161
    (name "groovy-tests-bootstrap")
162
    (arguments
163
     `(#:jar-name "groovy-tests-bootstrap.jar"
164
       #:tests? #f; no tests
165
       #:phases
166
       (modify-phases %standard-phases
167
         (replace 'build
168
           (lambda _
169
             (mkdir-p "build/classes")
170
             (mkdir-p "build/jar")
171
             (and
172
               (zero? (apply system* "java" "-cp" (getenv "CLASSPATH")
173
                               "org.codehaus.groovy.tools.FileSystemCompiler"
174
                               "-d" "build/classes"
175
                               "-j"; joint compilation
176
                               (append
177
                                 (find-files "src/test" "TestSupport.java")
178
                                 (find-files "src/test" "HeadlessTestSupport.java")
179
                                 (find-files "src/test" "XmlAssert.java"))))
180
               (zero? (system* "jar" "-cf" "build/jar/groovy-tests-bootstrap.jar"
181
                               "-C" "build/classes" "."))))))))
182
    (inputs
183
     `(("groovy-test" ,groovy-test)
184
       ,@(package-inputs groovy-bootstrap)))
185
    (native-inputs
186
     `(("groovy-bootstrap" ,groovy-bootstrap)
187
       ,@(package-native-inputs groovy-java-bootstrap)))))
188
189
(define-public groovy-test
190
  (package
191
    (inherit groovy-bootstrap)
192
    (name "groovy-test")
193
    (arguments
194
     `(#:jar-name "groovy-test.jar"
195
       #:test-dir "subprojects/groovy-test/src/test"
196
       #:phases
197
       (modify-phases %standard-phases
198
         (replace 'build
199
           (lambda _
200
             (mkdir-p "build/classes")
201
             (mkdir-p "build/jar")
202
             (and
203
               (zero? (apply system* "java" "-cp" (getenv "CLASSPATH")
204
                               "org.codehaus.groovy.tools.FileSystemCompiler"
205
                               "-d" "build/classes"
206
                               "-j"; joint compilation
207
                               (find-files "subprojects/groovy-test/src/main"
208
                                           ".*\\.(groovy|java)$")))
209
               (zero? (system* "jar" "-cf" "build/jar/groovy-test.jar"
210
                               "-C" "build/classes" ".")))))
211
         (replace 'check
212
           (lambda _
213
             (mkdir-p "build/test-classes")
214
             (substitute* "build.xml"
215
               (("depends=\"compile-tests\"") "depends=\"\"")
216
               (("}/java") "}/groovy"))
217
             (zero? (apply system* "java" "-cp"
218
                           (string-append (getenv "CLASSPATH") ":build/classes")
219
                           "org.codehaus.groovy.tools.FileSystemCompiler"
220
                           "-d" "build/test-classes"
221
                           "-j"
222
                           (append
223
                             (find-files "subprojects/groovy-test/src/test"
224
                                         ".*\\.(groovy|java)$"))))
225
             (zero? (system* "ant" "check")))))))
226
    (native-inputs
227
     `(("groovy-bootstrap" ,groovy-bootstrap)
228
       ,@(package-native-inputs groovy-java-bootstrap)))))
229
230
(define-public groovy-xml
231
  (package
232
    (inherit groovy-bootstrap)
233
    (name "groovy-xml")
234
    (arguments
235
     `(#:jar-name "groovy-xml.jar"
236
       #:test-dir "src/test"
237
       #:phases
238
       (modify-phases %standard-phases
239
         (add-before 'configure 'chdir
240
           (lambda _
241
             (chdir "subprojects/groovy-xml")))
242
         (replace 'build
243
           (lambda _
244
             (mkdir-p "build/classes")
245
             (mkdir-p "build/jar")
246
             (and
247
               (zero? (apply system* "java" "-cp" (getenv "CLASSPATH")
248
                               "org.codehaus.groovy.tools.FileSystemCompiler"
249
                               "-d" "build/classes"
250
                               "-j"; joint compilation
251
                               (find-files "src/main"
252
                                           ".*\\.(groovy|java)$")))
253
               (zero? (system* "jar" "-cf" "build/jar/groovy-xml.jar"
254
                               "-C" "build/classes" ".")))))
255
         (replace 'check
256
           (lambda _
257
             (mkdir-p "build/test-classes")
258
             (substitute* "build.xml"
259
               (("depends=\"compile-tests\"") "depends=\"\"")
260
               (("}/java") "}/groovy"))
261
             (and
262
               (zero? (apply system* "java" "-cp"
263
                             (string-append (getenv "CLASSPATH") ":build/classes")
264
                             "org.codehaus.groovy.tools.FileSystemCompiler"
265
                             "-d" "build/test-classes"
266
                             "-j"
267
                             (append
268
                               (find-files "src/test"
269
                                           ".*\\.(groovy|java)$"))))
270
               (zero? (system* "ant" "check"))))))))
271
    (native-inputs
272
     `(("groovy-bootstrap" ,groovy-bootstrap)
273
       ("groovy-test" ,groovy-test)
274
       ("groovy-tests-bootstrap" ,groovy-tests-bootstrap)
275
       ,@(package-native-inputs groovy-java-bootstrap)))))
276
277
(define-public groovy-templates
278
  (package
279
    (inherit groovy-bootstrap)
280
    (name "groovy-templates")
281
    (arguments
282
     `(#:jar-name "groovy-templates.jar"
283
       #:test-dir "subprojects/groovy-templates/src/test"
284
       #:tests? #f;Requires spock-framework which is a circular dependency
285
       #:phases
286
       (modify-phases %standard-phases
287
         (replace 'build
288
           (lambda _
289
             (mkdir-p "build/classes")
290
             (mkdir-p "build/jar")
291
             (and
292
               (zero? (apply system* "java" "-cp" (getenv "CLASSPATH")
293
                               "org.codehaus.groovy.tools.FileSystemCompiler"
294
                               "-d" "build/classes"
295
                               "-j"; joint compilation
296
                               (find-files "subprojects/groovy-templates/src/main"
297
                                           ".*\\.(groovy|java)$")))
298
               (zero? (system* "jar" "-cf" "build/jar/groovy-templates.jar"
299
                               "-C" "build/classes" "."))))))))
300
    (inputs
301
     `(("groovy-xml" ,groovy-xml)
302
       ,@(package-inputs groovy-bootstrap)))
303
    (native-inputs
304
     `(("groovy-bootstrap" ,groovy-bootstrap)
305
       ("groovy-test" ,groovy-test)
306
       ("groovy-tests-bootstrap" ,groovy-tests-bootstrap)
307
       ,@(package-native-inputs groovy-java-bootstrap)))))
308
309
(define-public groovy-groovydoc
310
  (package
311
    (inherit groovy-bootstrap)
312
    (name "groovy-groovydoc")
313
    (arguments
314
     `(#:jar-name "groovy-groovydoc.jar"
315
       #:test-dir "subprojects/groovy-groovydoc/src/test"
316
       #:tests? #f; Requires groovy-ant which is a circular dependency
317
       #:phases
318
       (modify-phases %standard-phases
319
         (add-before 'build 'copy-resources
320
           (lambda _
321
             (copy-recursively "subprojects/groovy-groovydoc/src/main/resources"
322
                               "build/classes")))
323
         (replace 'build
324
           (lambda _
325
             (mkdir-p "build/classes")
326
             (mkdir-p "build/jar")
327
             (and
328
               (zero? (apply system* "java" "-cp" (getenv "CLASSPATH")
329
                               "org.codehaus.groovy.tools.FileSystemCompiler"
330
                               "-d" "build/classes"
331
                               "-j"; joint compilation
332
                               (find-files "subprojects/groovy-groovydoc/src/main"
333
                                           ".*\\.(groovy|java)$")))
334
               (zero? (system* "jar" "-cf" "build/jar/groovy-groovydoc.jar"
335
                               "-C" "build/classes" "."))))))))
336
    (inputs
337
     `(("groovy-templates" ,groovy-templates)
338
       ,@(package-inputs groovy-bootstrap)))
339
    (native-inputs
340
     `(("groovy-bootstrap" ,groovy-bootstrap)
341
       ("groovy-test" ,groovy-test)
342
       ("groovy-tests-bootstrap" ,groovy-tests-bootstrap)
343
       ,@(package-native-inputs groovy-java-bootstrap)))))
344
345
(define-public groovy-ant
346
  (package
347
    (inherit groovy-bootstrap)
348
    (name "groovy-ant")
349
    (arguments
350
     `(#:jar-name "groovy-ant.jar"
351
       #:test-dir "src/test"
352
       ;; FIXME: Excluding all tests because they fail
353
       #:test-exclude (list
354
                        "**/GroovyTest.java"
355
                        "**/GroovycTest.java")
356
       #:phases
357
       (modify-phases %standard-phases
358
         (add-before 'configure 'chdir
359
           (lambda _
360
             (chdir "subprojects/groovy-ant")))
361
         (add-before 'build 'copy-resources
362
           (lambda _
363
             (copy-recursively "src/main/resources" "build/classes")))
364
         (replace 'build
365
           (lambda _
366
             (mkdir-p "build/classes")
367
             (mkdir-p "build/jar")
368
             (and
369
               (zero? (apply system* "java" "-cp" (getenv "CLASSPATH")
370
                               "org.codehaus.groovy.tools.FileSystemCompiler"
371
                               "-d" "build/classes"
372
                               "-j"; joint compilation
373
                               (find-files "src/main"
374
                                           ".*\\.(groovy|java)$")))
375
               (zero? (system* "jar" "-cf" "build/jar/groovy-ant.jar"
376
                               "-C" "build/classes" ".")))))
377
         (replace 'check
378
           (lambda _
379
             (mkdir-p "build/test-classes")
380
             (substitute* "build.xml"
381
               (("depends=\"compile-tests\"") "depends=\"\"")
382
               (("}/java") "}/groovy"))
383
             (and
384
               (zero? (apply system* "java" "-cp"
385
                             (string-append (getenv "CLASSPATH") ":build/classes")
386
                             "org.codehaus.groovy.tools.FileSystemCompiler"
387
                             "-d" "build/test-classes"
388
                             "-j"
389
                             (find-files "src/test"
390
                                         ".*\\.(groovy|java)$")))
391
               (zero? (system* "ant" "check"))))))))
392
    (inputs
393
     `(("groovy-groovydoc" ,groovy-groovydoc)
394
       ,@(package-inputs groovy-bootstrap)))
395
    (native-inputs
396
     `(("groovy-bootstrap" ,groovy-bootstrap)
397
       ("groovy-xml" ,groovy-xml)
398
       ("groovy-test" ,groovy-test)
399
       ("groovy-tests-bootstrap" ,groovy-tests-bootstrap)
400
       ,@(package-native-inputs groovy-java-bootstrap)))))
401
402
(define-public groovy-bsf
403
  (package
404
    (inherit groovy-bootstrap)
405
    (name "groovy-bsf")
406
    (arguments
407
     `(#:jar-name "groovy-bsf.jar"
408
       #:test-dir "src/test"
409
       #:test-exclude (list
410
;; exception from Groovy: org.codehaus.groovy.runtime.InvokerInvocationException:
411
;; groovy.lang.MissingMethodException: No signature of method:
412
;; java.util.ArrayList.each() is applicable for argument types:
413
;; (groovy.script.MapFromList$_doit_closure1) values:
414
;; [groovy.script.MapFromList$_doit_closure1@17e554d5]
415
                        "**/BSFTest.java")
416
       #:phases
417
       (modify-phases %standard-phases
418
         (add-before 'configure 'chdir
419
           (lambda _
420
             (chdir "subprojects/groovy-bsf")))
421
         (replace 'build
422
           (lambda _
423
             (mkdir-p "build/classes")
424
             (mkdir-p "build/jar")
425
             (and
426
               (zero? (apply system* "java" "-cp" (getenv "CLASSPATH")
427
                               "org.codehaus.groovy.tools.FileSystemCompiler"
428
                               "-d" "build/classes"
429
                               "-j"; joint compilation
430
                               (find-files "src/main"
431
                                           ".*\\.(groovy|java)$")))
432
               (zero? (system* "jar" "-cf" "build/jar/groovy-bsf.jar"
433
                               "-C" "build/classes" ".")))))
434
         (replace 'check
435
           (lambda _
436
             (mkdir-p "build/test-classes")
437
             (substitute* "build.xml"
438
               (("depends=\"compile-tests\"") "depends=\"\""))
439
             (and
440
               (zero? (apply system* "java" "-cp"
441
                             (string-append (getenv "CLASSPATH") ":build/classes")
442
                             "org.codehaus.groovy.tools.FileSystemCompiler"
443
                             "-d" "build/test-classes"
444
                             "-j"
445
                             (find-files "src/test"
446
                                         ".*\\.(groovy|java)$")))
447
               (zero? (system* "ant" "check"))))))))
448
    (inputs
449
     `(("java-commons-bsf" ,java-commons-bsf)
450
       ,@(package-inputs groovy-bootstrap)))
451
    (native-inputs
452
     `(("groovy-bootstrap" ,groovy-bootstrap)
453
       ("groovy-test" ,groovy-test)
454
       ("groovy-tests-bootstrap" ,groovy-tests-bootstrap)
455
       ("java-commons-logging-minimal" ,java-commons-logging-minimal)
456
       ,@(package-native-inputs groovy-java-bootstrap)))))
457
458
(define-public groovy-swing
459
  (package
460
    (inherit groovy-bootstrap)
461
    (name "groovy-swing")
462
    (arguments
463
     `(#:jar-name "groovy-swing.jar"
464
       ;; FIXME: tests are not run
465
       #:test-dir "src/test"
466
       #:phases
467
       (modify-phases %standard-phases
468
         (add-before 'configure 'chdir
469
           (lambda _
470
             (chdir "subprojects/groovy-swing")))
471
         (replace 'build
472
           (lambda _
473
             (mkdir-p "build/classes")
474
             (mkdir-p "build/jar")
475
             (and
476
               (zero? (apply system* "java" "-cp" (getenv "CLASSPATH")
477
                               "org.codehaus.groovy.tools.FileSystemCompiler"
478
                               "-d" "build/classes"
479
                               "-j"; joint compilation
480
                               (find-files "src/main"
481
                                           ".*\\.(groovy|java)$")))
482
               (zero? (system* "jar" "-cf" "build/jar/groovy-swing.jar"
483
                               "-C" "build/classes" ".")))))
484
         (replace 'check
485
           (lambda _
486
             (mkdir-p "build/test-classes")
487
             (substitute* "src/test/groovy/groovy/util/GroovySwingTestCase.groovy"
488
               (("HeadlessTestSupport.headless") "isHeadless()"))
489
             (substitute* "build.xml"
490
               (("depends=\"compile-tests\"") "depends=\"\"")
491
               (("}/java") "}/groovy"))
492
             (and
493
               (zero? (apply system* "java" "-cp"
494
                             (string-append (getenv "CLASSPATH") ":build/classes")
495
                             "org.codehaus.groovy.tools.FileSystemCompiler"
496
                             "-d" "build/test-classes"
497
                             "-j"
498
                             (find-files "src/test"
499
                                         ".*\\.(groovy|java)$")))
500
               (zero? (system* "ant" "check"))))))))
501
    (native-inputs
502
     `(("groovy-bootstrap" ,groovy-bootstrap)
503
       ("groovy-test" ,groovy-test)
504
       ("groovy-tests-bootstrap" ,groovy-tests-bootstrap)
505
       ("java-commons-logging-minimal" ,java-commons-logging-minimal)
506
       ,@(package-native-inputs groovy-java-bootstrap)))))
507
508
(define-public groovy-console
509
  (package
510
    (inherit groovy-bootstrap)
511
    (name "groovy-console")
512
    (arguments
513
     `(#:jar-name "groovy-console.jar"
514
       ;; FIXME: tests are not run
515
       #:test-dir "src/test"
516
       #:phases
517
       (modify-phases %standard-phases
518
         (add-before 'configure 'chdir
519
           (lambda _
520
             (chdir "subprojects/groovy-console")))
521
         (add-before 'build 'copy-resources
522
           (lambda _
523
             (copy-recursively "src/main/resources" "build/classes")))
524
         (replace 'build
525
           (lambda _
526
             (mkdir-p "build/classes")
527
             (mkdir-p "build/jar")
528
             (and
529
               (zero? (apply system* "java" "-cp" (getenv "CLASSPATH")
530
                               "org.codehaus.groovy.tools.FileSystemCompiler"
531
                               "-d" "build/classes"
532
                               "-j"; joint compilation
533
                               (find-files "src/main"
534
                                           ".*\\.(groovy|java)$")))
535
               (zero? (system* "jar" "-cf" "build/jar/groovy-console.jar"
536
                               "-C" "build/classes" ".")))))
537
         (replace 'check
538
           (lambda _
539
             (mkdir-p "build/test-classes")
540
             (substitute* "build.xml"
541
               (("depends=\"compile-tests\"") "depends=\"\"")
542
               (("}/java") "}/groovy"))
543
             (substitute*
544
               "../groovy-swing/src/test/groovy/groovy/util/GroovySwingTestCase.groovy"
545
               (("HeadlessTestSupport.headless") "isHeadless()"))
546
             (and
547
               (zero? (apply system* "java" "-cp"
548
                             (string-append (getenv "CLASSPATH") ":build/classes")
549
                             "org.codehaus.groovy.tools.FileSystemCompiler"
550
                             "-d" "build/test-classes"
551
                             "-j"
552
                             (append
553
                               (find-files "../groovy-swing/src/test"
554
                                           ".*\\.(groovy|java)$")
555
                               (find-files "src/test"
556
                                           ".*\\.(groovy|java)$"))))
557
               (zero? (system* "ant" "check"))))))))
558
    (inputs
559
     `(("groovy-swing" ,groovy-swing)
560
       ("groovy-templates" ,groovy-templates)
561
       ,@(package-inputs groovy-bootstrap)))
562
    (native-inputs
563
     `(("groovy-bootstrap" ,groovy-bootstrap)
564
       ("groovy-test" ,groovy-test)
565
       ("groovy-tests-bootstrap" ,groovy-tests-bootstrap)
566
       ("java-commons-logging-minimal" ,java-commons-logging-minimal)
567
       ,@(package-native-inputs groovy-java-bootstrap)))))
568
569
(define-public groovy-docgenerator
570
  (package
571
    (inherit groovy-bootstrap)
572
    (name "groovy-docgenerator")
573
    (arguments
574
     `(#:jar-name "groovy-docgenerator.jar"
575
       #:tests? #f; No tests
576
       #:phases
577
       (modify-phases %standard-phases
578
         (add-before 'configure 'chdir
579
           (lambda _
580
             (chdir "subprojects/groovy-docgenerator")))
581
         (add-before 'build 'copy-resources
582
           (lambda _
583
             (copy-recursively "src/main/resources" "build/classes")))
584
         (replace 'build
585
           (lambda _
586
             (mkdir-p "build/classes")
587
             (mkdir-p "build/jar")
588
             (and
589
               (zero? (apply system* "java" "-cp" (getenv "CLASSPATH")
590
                               "org.codehaus.groovy.tools.FileSystemCompiler"
591
                               "-d" "build/classes"
592
                               "-j"; joint compilation
593
                               (find-files "src/main"
594
                                           ".*\\.(groovy|java)$")))
595
               (zero? (system* "jar" "-cf" "build/jar/groovy-docgenerator.jar"
596
                               "-C" "build/classes" "."))))))))
597
    (inputs
598
     `(("groovy-templates" ,groovy-templates)
599
       ("groovy-swing" ,groovy-swing)
600
       ("java-qdox-1.12" ,java-qdox-1.12)
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
       ,@(package-native-inputs groovy-java-bootstrap)))))
607
608
(define-public groovy-groovysh
609
  (package
610
    (inherit groovy-bootstrap)
611
    (name "groovy-groovysh")
612
    (arguments
613
     `(#:jar-name "groovy-groovysh.jar"
614
       #:test-dir "src/test"
615
       #:jdk ,icedtea-8
616
       #:phases
617
       (modify-phases %standard-phases
618
         (add-before 'configure 'chdir
619
           (lambda _
620
             (chdir "subprojects/groovy-groovysh")))
621
         (add-before 'build 'copy-resources
622
           (lambda _
623
             (copy-recursively "src/main/resources" "build/classes")))
624
         (replace 'build
625
           (lambda _
626
             (mkdir-p "build/classes")
627
             (mkdir-p "build/jar")
628
             (and
629
               (zero? (apply system* "java" "-cp" (getenv "CLASSPATH")
630
                               "org.codehaus.groovy.tools.FileSystemCompiler"
631
                               "-d" "build/classes"
632
                               "-j"; joint compilation
633
                               (find-files "src/main"
634
                                           ".*\\.(groovy|java)$")))
635
               (zero? (system* "jar" "-cf" "build/jar/groovy-groovysh.jar"
636
                               "-C" "build/classes" ".")))))
637
         (replace 'check
638
           (lambda _
639
             (mkdir-p "build/test-classes")
640
             (substitute* "build.xml"
641
               (("depends=\"compile-tests\"") "depends=\"\"")
642
               (("}/java") "}/groovy"))
643
             (and
644
               (zero? (apply system* "java" "-cp"
645
                             (string-append (getenv "CLASSPATH") ":build/classes")
646
                             "org.codehaus.groovy.tools.FileSystemCompiler"
647
                             "-d" "build/test-classes"
648
                             "-j"
649
                             (append
650
                               (find-files "src/test"
651
                                           ".*\\.(groovy|java)$"))))
652
               (zero? (system* "ant" "check"))))))))
653
    (inputs
654
     `(("groovy-xml" ,groovy-xml)
655
       ("groovy-console" ,groovy-console)
656
       ,@(package-inputs groovy-bootstrap)))
657
    (native-inputs
658
     `(("groovy-bootstrap" ,groovy-bootstrap)
659
       ("groovy-test" ,groovy-test)
660
       ("groovy-tests-bootstrap" ,groovy-tests-bootstrap)
661
       ,@(package-native-inputs groovy-java-bootstrap)))))
662
663
(define-public groovy-jmx
664
  (package
665
    (inherit groovy-bootstrap)
666
    (name "groovy-jmx")
667
    (arguments
668
     `(#:jar-name "groovy-jmx.jar"
669
       #:test-dir "src/test"
670
       #:jdk ,icedtea-8
671
       #:phases
672
       (modify-phases %standard-phases
673
         (add-before 'configure 'chdir
674
           (lambda _
675
             (chdir "subprojects/groovy-jmx")))
676
         (replace 'build
677
           (lambda _
678
             (mkdir-p "build/classes")
679
             (mkdir-p "build/jar")
680
             (and
681
               (zero? (apply system* "java" "-cp" (getenv "CLASSPATH")
682
                               "org.codehaus.groovy.tools.FileSystemCompiler"
683
                               "-d" "build/classes"
684
                               "-j"; joint compilation
685
                               (find-files "src/main"
686
                                           ".*\\.(groovy|java)$")))
687
               (zero? (system* "jar" "-cf" "build/jar/groovy-jmx.jar"
688
                               "-C" "build/classes" ".")))))
689
         (replace 'check
690
           (lambda _
691
             (mkdir-p "build/test-classes")
692
             (substitute* "build.xml"
693
               (("depends=\"compile-tests\"") "depends=\"\"")
694
               (("}/java") "}/groovy"))
695
             (and
696
               (zero? (apply system* "java" "-cp"
697
                             (string-append (getenv "CLASSPATH") ":build/classes")
698
                             "org.codehaus.groovy.tools.FileSystemCompiler"
699
                             "-d" "build/test-classes"
700
                             "-j"
701
                             (append
702
                               (find-files "src/test"
703
                                           ".*\\.(groovy|java)$"))))
704
               (zero? (system* "ant" "check"))))))))
705
    (native-inputs
706
     `(("groovy-bootstrap" ,groovy-bootstrap)
707
       ("groovy-test" ,groovy-test)
708
       ("groovy-tests-bootstrap" ,groovy-tests-bootstrap)
709
       ,@(package-native-inputs groovy-java-bootstrap)))))
710
711
(define-public groovy-json
712
  (package
713
    (inherit groovy-bootstrap)
714
    (name "groovy-json")
715
    (arguments
716
     `(#:jar-name "groovy-json.jar"
717
       #:test-dir "src/test"
718
       #:jdk ,icedtea-8
719
       #:phases
720
       (modify-phases %standard-phases
721
         (add-before 'configure 'chdir
722
           (lambda _
723
             (chdir "subprojects/groovy-json")))
724
         (replace 'build
725
           (lambda _
726
             (mkdir-p "build/classes")
727
             (mkdir-p "build/jar")
728
             (and
729
               (zero? (apply system* "java" "-cp" (getenv "CLASSPATH")
730
                               "org.codehaus.groovy.tools.FileSystemCompiler"
731
                               "-d" "build/classes"
732
                               "-j"; joint compilation
733
                               (find-files "src/main"
734
                                           ".*\\.(groovy|java)$")))
735
               (zero? (system* "jar" "-cf" "build/jar/groovy-json.jar"
736
                               "-C" "build/classes" ".")))))
737
         (replace 'check
738
           (lambda _
739
             (mkdir-p "build/test-classes")
740
             (substitute* "build.xml"
741
               (("depends=\"compile-tests\"") "depends=\"\"")
742
               (("}/java") "}/groovy"))
743
             (and
744
               (zero? (apply system* "java" "-cp"
745
                             (string-append (getenv "CLASSPATH") ":build/classes")
746
                             "org.codehaus.groovy.tools.FileSystemCompiler"
747
                             "-d" "build/test-classes"
748
                             "-j"
749
                             (append
750
                               (find-files "src/test"
751
                                           ".*\\.(groovy|java)$"))))
752
               (zero? (system* "ant" "check"))))))))
753
    (native-inputs
754
     `(("groovy-bootstrap" ,groovy-bootstrap)
755
       ("groovy-test" ,groovy-test)
756
       ("groovy-tests-bootstrap" ,groovy-tests-bootstrap)
757
       ,@(package-native-inputs groovy-java-bootstrap)))))
758
759
(define-public groovy-jsr223
760
  (package
761
    (inherit groovy-bootstrap)
762
    (name "groovy-jsr223")
763
    (arguments
764
     `(#:jar-name "groovy-jsr223.jar"
765
       #:test-dir "src/test"
766
       #:jdk ,icedtea-8
767
       #:phases
768
       (modify-phases %standard-phases
769
         (add-before 'configure 'chdir
770
           (lambda _
771
             (chdir "subprojects/groovy-jsr223")))
772
         (add-before 'build 'copy-resources
773
           (lambda _
774
             (copy-recursively "src/main/resources" "build/classes")))
775
         (replace 'build
776
           (lambda _
777
             (mkdir-p "build/classes")
778
             (mkdir-p "build/jar")
779
             (and
780
               (zero? (apply system* "java" "-cp" (getenv "CLASSPATH")
781
                               "org.codehaus.groovy.tools.FileSystemCompiler"
782
                               "-d" "build/classes"
783
                               "-j"; joint compilation
784
                               (find-files "src/main"
785
                                           ".*\\.(groovy|java)$")))
786
               (zero? (system* "jar" "-cf" "build/jar/groovy-jsr223.jar"
787
                               "-C" "build/classes" ".")))))
788
         (replace 'check
789
           (lambda _
790
             (mkdir-p "build/test-classes")
791
             (substitute* "build.xml"
792
               (("depends=\"compile-tests\"") "depends=\"\"")
793
               (("}/java") "}/groovy"))
794
             (and
795
               (zero? (apply system* "java" "-cp"
796
                             (string-append (getenv "CLASSPATH") ":build/classes")
797
                             "org.codehaus.groovy.tools.FileSystemCompiler"
798
                             "-d" "build/test-classes"
799
                             "-j"
800
                             (append
801
                               (find-files "src/test"
802
                                           ".*\\.(groovy|java)$"))))
803
               (zero? (system* "ant" "check"))))))))
804
    (native-inputs
805
     `(("groovy-bootstrap" ,groovy-bootstrap)
806
       ("groovy-test" ,groovy-test)
807
       ("groovy-tests-bootstrap" ,groovy-tests-bootstrap)
808
       ,@(package-native-inputs groovy-java-bootstrap)))))
809
810
(define-public groovy-nio
811
  (package
812
    (inherit groovy-bootstrap)
813
    (name "groovy-nio")
814
    (arguments
815
     `(#:jar-name "groovy-nio.jar"
816
       #:test-dir "src/test"
817
       #:jdk ,icedtea-8
818
       #:tests? #f; Requires spock-framework
819
       #:phases
820
       (modify-phases %standard-phases
821
         (add-before 'configure 'chdir
822
           (lambda _
823
             (chdir "subprojects/groovy-nio")))
824
         (replace 'build
825
           (lambda _
826
             (mkdir-p "build/classes")
827
             (mkdir-p "build/jar")
828
             (and
829
               (zero? (apply system* "java" "-cp" (getenv "CLASSPATH")
830
                               "org.codehaus.groovy.tools.FileSystemCompiler"
831
                               "-d" "build/classes"
832
                               "-j"; joint compilation
833
                               (find-files "src/main"
834
                                           ".*\\.(groovy|java)$")))
835
               (zero? (system* "jar" "-cf" "build/jar/groovy-nio.jar"
836
                               "-C" "build/classes" "."))))))))
837
    (native-inputs
838
     `(("groovy-bootstrap" ,groovy-bootstrap)
839
       ("groovy-test" ,groovy-test)
840
       ("groovy-tests-bootstrap" ,groovy-tests-bootstrap)
841
       ,@(package-native-inputs groovy-java-bootstrap)))))
842
843
(define-public groovy-servlet
844
  (package
845
    (inherit groovy-bootstrap)
846
    (name "groovy-servlet")
847
    (arguments
848
     `(#:jar-name "groovy-jsr223.jar"
849
       #:test-dir "src/test"
850
       #:jdk ,icedtea-8
851
       #:phases
852
       (modify-phases %standard-phases
853
         (add-before 'configure 'chdir
854
           (lambda _
855
             (chdir "subprojects/groovy-servlet")))
856
         (replace 'build
857
           (lambda _
858
             (mkdir-p "build/classes")
859
             (mkdir-p "build/jar")
860
             (and
861
               (zero? (apply system* "java" "-cp" (getenv "CLASSPATH")
862
                               "org.codehaus.groovy.tools.FileSystemCompiler"
863
                               "-d" "build/classes"
864
                               "-j"; joint compilation
865
                               (find-files "src/main"
866
                                           ".*\\.(groovy|java)$")))
867
               (zero? (system* "jar" "-cf" "build/jar/groovy-servlet.jar"
868
                               "-C" "build/classes" ".")))))
869
         (replace 'check
870
           (lambda _
871
             (mkdir-p "build/test-classes")
872
             (substitute* "build.xml"
873
               (("depends=\"compile-tests\"") "depends=\"\"")
874
               (("}/java") "}/groovy"))
875
             (and
876
               (zero? (apply system* "java" "-cp"
877
                             (string-append (getenv "CLASSPATH") ":build/classes")
878
                             "org.codehaus.groovy.tools.FileSystemCompiler"
879
                             "-d" "build/test-classes"
880
                             "-j"
881
                             (append
882
                               (find-files "src/test"
883
                                           ".*\\.(groovy|java)$"))))
884
               (zero? (system* "ant" "check"))))))))
885
    (inputs
886
     `(("groovy-templates" ,groovy-templates)
887
       ("groovy-xml" ,groovy-xml)
888
       ,@(package-inputs groovy-bootstrap)))
889
    (native-inputs
890
     `(("groovy-bootstrap" ,groovy-bootstrap)
891
       ("groovy-json" ,groovy-json)
892
       ("groovy-test" ,groovy-test)
893
       ("groovy-tests-bootstrap" ,groovy-tests-bootstrap)
894
       ,@(package-native-inputs groovy-java-bootstrap)))))
895
896
(define-public groovy-sql
897
  (package
898
    (inherit groovy-bootstrap)
899
    (name "groovy-sql")
900
    (arguments
901
     `(#:jar-name "groovy-sql.jar"
902
       #:test-dir "src/test"
903
       #:tests? #f;TODO: Requires hsqldb
904
       #:jdk ,icedtea-8
905
       #:phases
906
       (modify-phases %standard-phases
907
         (add-before 'configure 'chdir
908
           (lambda _
909
             (chdir "subprojects/groovy-sql")))
910
         (replace 'build
911
           (lambda _
912
             (mkdir-p "build/classes")
913
             (mkdir-p "build/jar")
914
             (and
915
               (zero? (apply system* "java" "-cp" (getenv "CLASSPATH")
916
                               "org.codehaus.groovy.tools.FileSystemCompiler"
917
                               "-d" "build/classes"
918
                               "-j"; joint compilation
919
                               (find-files "src/main"
920
                                           ".*\\.(groovy|java)$")))
921
               (zero? (system* "jar" "-cf" "build/jar/groovy-sql.jar"
922
                               "-C" "build/classes" "."))))))))
923
    (native-inputs
924
     `(("groovy-bootstrap" ,groovy-bootstrap)
925
       ("groovy-test" ,groovy-test)
926
       ("groovy-tests-bootstrap" ,groovy-tests-bootstrap)
927
       ,@(package-native-inputs groovy-java-bootstrap)))))
928
929
(define-public groovy-testng
930
  (package
931
    (inherit groovy-bootstrap)
932
    (name "groovy-testng")
933
    (arguments
934
     `(#:jar-name "groovy-testng.jar"
935
       #:tests? #f; No tests
936
       #:jdk ,icedtea-8
937
       #:phases
938
       (modify-phases %standard-phases
939
         (add-before 'configure 'chdir
940
           (lambda _
941
             (chdir "subprojects/groovy-testng")))
942
         (add-before 'build 'copy-resources
943
           (lambda _
944
             (copy-recursively "src/main/resources" "build/classes")))
945
         (replace 'build
946
           (lambda _
947
             (mkdir-p "build/classes")
948
             (mkdir-p "build/jar")
949
             (and
950
               (zero? (apply system* "java" "-cp" (getenv "CLASSPATH")
951
                               "org.codehaus.groovy.tools.FileSystemCompiler"
952
                               "-d" "build/classes"
953
                               "-j"; joint compilation
954
                               (find-files "src/main"
955
                                           ".*\\.(groovy|java)$")))
956
               (zero? (system* "jar" "-cf" "build/jar/groovy-testng.jar"
957
                               "-C" "build/classes" "."))))))))
958
    (native-inputs
959
     `(("groovy-bootstrap" ,groovy-bootstrap)
960
       ("groovy-test" ,groovy-test)
961
       ("groovy-tests-bootstrap" ,groovy-tests-bootstrap)
962
       ,@(package-native-inputs groovy-java-bootstrap)))))
963
964
(define-public groovy
965
  (package
966
    (inherit groovy-bootstrap)
967
    (name "groovy")
968
    (arguments
969
     `(#:tests? #f; No tests
970
       #:phases
971
       (modify-phases %standard-phases
972
         (delete 'configure)
973
         (delete 'build)
974
         (replace 'install
975
           (lambda* (#:key outputs inputs #:allow-other-keys)
976
             (let* ((out (assoc-ref outputs "out"))
977
                    (out-bin (string-append out "/bin")))
978
               (with-directory-excursion "src/bin"
979
                 (substitute* "startGroovy"
980
                   (("\"\\\\\"") "\"")
981
                   (("\\\\\"\"") "\"")
982
                   (("\\\\\\$") "$")
983
                   (("STARTER_CLASSPATH=.*")
984
                    (string-append
985
                      "STARTER_CLASSPATH="
986
                      (string-join
987
                        (apply append
988
                          (map (lambda (input)
989
                                 (find-files (assoc-ref inputs input) ".*.jar"))
990
                               '("groovy-bootstrap" "groovy-ant" "groovy-bsf"
991
                                 "groovy-console" "groovy-docgenerator"
992
                                 "groovy-groovydoc" "groovy-groovysh"
993
                                 "groovy-jmx" "groovy-json" "groovy-jsr223"
994
                                 "groovy-nio" "groovy-servlet" "groovy-sql"
995
                                 "groovy-swing" "groovy-templates" "groovy-testng"
996
                                 "java-commons-cli" "java-asm"
997
                                 "java-classpathx-servletapi" "java-xstream"
998
                                 "java-jansi" "java-jline-2" "antlr2")))
999
                        ":"))))
1000
                 (for-each
1001
                   (lambda (tool)
1002
                     (install-file tool out-bin)
1003
                     (chmod (string-append out-bin "/" tool) #o755))
1004
                   '("grape" "groovy" "groovyc" "groovyConsole" "groovydoc"
1005
                     "groovysh" "java2groovy" "startGroovy")))
1006
               (install-file "src/conf/groovy-starter.conf"
1007
                             (string-append out "/conf"))))))))
1008
    (inputs
1009
     `(("groovy-bootstrap" ,groovy-bootstrap)
1010
       ("groovy-ant" ,groovy-ant)
1011
       ("groovy-bsf" ,groovy-bsf)
1012
       ("groovy-console" ,groovy-console)
1013
       ("groovy-docgenerator" ,groovy-docgenerator)
1014
       ("groovy-groovydoc" ,groovy-groovydoc)
1015
       ("groovy-groovysh" ,groovy-groovysh)
1016
       ("groovy-jmx" ,groovy-jmx)
1017
       ("groovy-json" ,groovy-json)
1018
       ("groovy-jsr223" ,groovy-jsr223)
1019
       ("groovy-nio" ,groovy-nio)
1020
       ("groovy-servlet" ,groovy-servlet)
1021
       ("groovy-sql" ,groovy-sql)
1022
       ("groovy-swing" ,groovy-swing)
1023
       ("groovy-templates" ,groovy-templates)
1024
       ("groovy-testng" ,groovy-testng)
1025
       ("java-commons-cli" ,java-commons-cli)
1026
       ("java-asm" ,java-asm)
1027
       ("java-classpathx-servletapi" ,java-classpathx-servletapi)
1028
       ("java-xstream" ,java-xstream)
1029
       ("java-jansi" ,java-jansi)
1030
       ("java-jline-2" ,java-jline-2)
1031
       ("antlr2" ,antlr2)))))
1032