guix-more/more/packages/java.scm

java.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 java)
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 git-download)
25
  #:use-module (guix svn-download)
26
  #:use-module (guix utils)
27
  #:use-module (guix build-system ant)
28
  #:use-module (guix build-system gnu)
29
  #:use-module (guix build-system trivial)
30
  #:use-module (gnu packages autotools)
31
  #:use-module (gnu packages base)
32
  #:use-module (gnu packages zip)
33
  #:use-module (gnu packages java))
34
35
(define-public josm
36
  (package
37
    (name "josm")
38
    (version "12039")
39
    (source (origin
40
              (method svn-fetch)
41
              ;;(uri (git-reference
42
              ;;      (url "https://github.com/openstreetmap/josm.git")
43
              ;;      (commit version)))
44
              (uri (svn-reference
45
                    (url "https://svn.openstreetmap.org/applications/editors/josm")
46
                    (revision 12039)))
47
              (sha256
48
               (base32
49
                ;;"17ih97kf6g6ly8gz6dbc3jzh22gamra4anbwcsxivhq7dw5z3a6n"))
50
                "1sq35askhvg85ghj7q34adxny7dwacz7xx6sbc1l5g0khcck7vql"))
51
              (file-name (string-append name "-" version))))
52
    (build-system ant-build-system)
53
    (arguments
54
     `(#:build-target "dist"
55
       #:tests? #f
56
       #:jdk ,icedtea-8
57
       #:phases
58
       (modify-phases %standard-phases
59
         (add-before 'build 'fix-compiler
60
           (lambda* _
61
             (with-output-to-file "REVISION.XML"
62
               (lambda _
63
                 (display
64
                   (string-append "<info><entry><commit revision=\"" ,version "\">"
65
                                  "<date>1970-01-01 00:00:00 +0000</date>"
66
                                  "</commit></entry></info>"))))
67
             (substitute* "build.xml"
68
               (("UNKNOWN") ,version)
69
               (("<touch.*epsg.output.*") "<mkdir dir=\"${epsg.output}/..\" /><touch file=\"${epsg.output}\"/>\n")
70
               ((".*com.google.errorprone.ErrorProneAntCompilerAdapter.*") "")
71
               (("compiler=\"[^\"]*\" ") ""))))
72
         (replace 'install
73
           (lambda* (#:key outputs inputs #:allow-other-keys)
74
             (let* ((out (assoc-ref outputs "out"))
75
                    (bin (string-append out "/bin"))
76
                    (lib (string-append out "/lib/josm")))
77
               (mkdir-p bin)
78
               (mkdir-p lib)
79
               (copy-file "dist/josm-custom.jar"
80
                          (string-append lib "/josm.jar"))
81
               (with-output-to-file (string-append bin "/josm")
82
                 (lambda _
83
                   (display
84
                     (string-append "#!/bin/sh\n"
85
                                    (assoc-ref inputs "jdk") "/bin/java"
86
                                    " -jar " lib "/josm.jar"))))
87
               (chmod (string-append bin "/josm") #o755)))))))
88
    (home-page "https://josm.openstreetmap.de")
89
    (synopsis "OSM editor")
90
    (description "OSM editor.")
91
    (license license:gpl2+)))
92
93
(define-public java-icu4j
94
  (package
95
    (name "java-icu4j")
96
    (version "58.2")
97
    (source (origin
98
              (method url-fetch)
99
              (uri (string-append
100
                     "http://download.icu-project.org/files/icu4j/" version
101
                     "/icu4j-"
102
                     (string-map (lambda (x) (if (char=? x #\.) #\_ x)) version)
103
                     ".tgz"))
104
              (sha256
105
               (base32
106
                "1mvqjlc3cbaraa0bv0vyl44xf0x6n81inqsh69bl7f88iycfpns9"))))
107
    (build-system ant-build-system)
108
    (arguments
109
     `(#:tests? #f ; Requires java-ivy that we don't have yet.
110
       #:phases
111
       (modify-phases %standard-phases
112
         ;; icu4j archive contains its sources directly at the top, not in
113
         ;; a subdirectory as usual.
114
         (add-after 'unpack 'chdir
115
           (lambda _
116
             (chdir "..")))
117
         (replace 'install
118
           (lambda* (#:key outputs #:allow-other-keys)
119
             (let ((share (string-append (assoc-ref outputs "out") "/share/java")))
120
               (mkdir-p share)
121
               (copy-file "icu4j-charset.jar" (string-append share "/icu4j-charset.jar"))
122
               (copy-file "icu4j.jar" (string-append share "/icu4j.jar"))))))))
123
    (home-page "http://site.icu-project.org/")
124
    (synopsis "")
125
    (description "")
126
    (license license:x11)))
127
128
(define-public java-treelayout
129
  (package
130
    (name "java-treelayout")
131
    (version "1.0.3")
132
    (source (origin
133
              (method url-fetch)
134
              (uri (string-append
135
                     "https://github.com/abego/treelayout/archive/v" version
136
                     ".tar.gz"))
137
              (file-name (string-append name "-" version ".tar.gz"))
138
              (sha256
139
               (base32
140
                "0djdw7j66lqjx8bx9zja0hsx10c6nsj3z0z20jmavwfr6bpp0345"))))
141
    (build-system ant-build-system)
142
    (arguments
143
     `(#:jar-name (string-append ,name "-" ,version ".jar")
144
       #:tests? #f
145
       #:phases
146
       (modify-phases %standard-phases
147
         ;; icu4j archive contains its sources directly at the top, not in
148
         ;; a subdirectory as usual.
149
         (add-after 'unpack 'chdir
150
           (lambda _
151
             (chdir "org.abego.treelayout"))))))
152
    (inputs
153
     `(("junit" ,java-junit)))
154
    (home-page "http://treelayout.sourceforge.net")
155
    (synopsis "")
156
    (description "")
157
    (license license:bsd-3)))
158
159
; propose update
160
(define-public java-commons-cli
161
  (package
162
    (name "java-commons-cli")
163
    (version "1.4")
164
    (source (origin
165
              (method url-fetch)
166
              (uri (string-append "http://mirrors.ircam.fr/pub/apache/commons/"
167
                                  "cli/source/commons-cli-" version "-src.tar.gz"))
168
              (file-name (string-append name "-" version ".tar.gz"))
169
              (sha256
170
               (base32
171
                "05hgi2z01fqz374y719gl1dxzqvzci5af071zm7vxrjg9vczipm1"))))
172
    (build-system ant-build-system)
173
    (arguments
174
     `(#:jar-name "commons-cli-1.4.jar"
175
       #:tests? #f))
176
    (native-inputs
177
     `(("junit" ,java-junit)))
178
    (home-page "https://commons.apache.org/proper/commons-cli")
179
    (synopsis "Java API for parsing command line options passed to programs")
180
    (description "Apache Commons CLI library provides an API for parsing command
181
line options passed to programs. It's also able to print help messages detailing
182
the options available for a command line tool.")
183
    (license license:asl2.0)))
184
185
; propose update
186
(define-public java-jsr305
187
  (package
188
    (name "java-jsr305")
189
    (version "3.0.2")
190
    (source (origin
191
              (method git-fetch)
192
              (uri (git-reference
193
                     (url "https://github.com/amaembo/jsr-305.git")
194
                     (commit "d7734b13c61492982784560ed5b4f4bd6cf9bb2c")))
195
              (file-name (string-append name "-" version))
196
              (sha256
197
               (base32
198
                "1wk159136pgc6i54drbq2whazfmdilvfqlxj3k19s9dfwbayf621"))))
199
    (build-system ant-build-system)
200
    (arguments
201
     `(#:jar-name (string-append ,name "-" ,version ".jar")
202
       #:src-dir "ri/src/main/java"
203
       #:tests? #f))
204
    (home-page "https://github.com/amaembo/jsr-305")
205
    (synopsis "")
206
    (description "")
207
    (license license:bsd-3)))
208
209
(define-public java-checker-framework
210
  (package
211
    (name "java-checker-framework")
212
    (version "2.1.10")
213
    (source (origin
214
              (method url-fetch)
215
              (uri (string-append "https://github.com/typetools/checker-framework/"
216
                                  "archive/checker-framework-" version ".tar.gz"))
217
              (file-name (string-append name "-" version ".tar.gz"))
218
              (sha256
219
               (base32
220
                "1infq1hr53zi9bd81v90rn3iripbinb3w145m3xblq8yvnfrxy20"))))
221
    (build-system ant-build-system)
222
    (arguments
223
     `(#:jar-name (string-append ,name "-" ,version ".jar")
224
       #:src-dir "dataflow/src:javacutil/src"
225
       #:jdk ,icedtea-8
226
       #:tests? #f))
227
    (home-page "https://checkerframework.org")
228
    (synopsis "")
229
    (description "")
230
    (license license:gpl2))); with classpath exception
231
232
(define-public java-javapoet
233
  (package
234
    (name "java-javapoet")
235
    (version "1.8.0")
236
    (source (origin
237
              (method url-fetch)
238
              (uri (string-append "https://github.com/square/javapoet/archive/javapoet-"
239
                                  version ".tar.gz"))
240
              (file-name (string-append name "-" version ".tar.gz"))
241
              (sha256
242
               (base32
243
                "0xpjbh8wcyj9yd9hb936ia5g6l2q1jlyqjvwcc290cwjrz7crb93"))))
244
    (build-system ant-build-system)
245
    (arguments
246
     `(#:jar-name (string-append ,name "-" ,version ".jar")
247
       #:src-dir "src/main/java"
248
       #:jdk ,icedtea-8
249
       #:tests? #f))
250
    (home-page "https://github.com/square/javapoet")
251
    (synopsis "")
252
    (description "")
253
    (license license:asl2.0)))
254
255
(define-public java-auto-value
256
  (package
257
    (name "java-auto-value")
258
    (version "1.4.1")
259
    (source (origin
260
              (method url-fetch)
261
              (uri (string-append "https://github.com/google/auto/archive/auto-value-"
262
                                  version ".tar.gz"))
263
              (file-name (string-append name "-" version ".tar.gz"))
264
              (sha256
265
               (base32
266
                "1qd59bwa56bynsdxfbgm40i7ndrj599wflza214kzigk16nprc1m"))))
267
    (build-system ant-build-system)
268
    (arguments
269
     `(#:jar-name (string-append ,name "-" ,version ".jar")
270
       #:src-dir "value/src/main/java:common/src/main/java:service/src/main/java"
271
       #:jdk ,icedtea-8
272
       #:tests? #f))
273
    (inputs
274
     `(("guava" ,java-guava)
275
       ("javapoet" ,java-javapoet)))
276
    (home-page "https://github.com/google/auto/tree/master/value")
277
    (synopsis "")
278
    (description "")
279
    (license license:asl2.0)))
280
281
;; https://github.com/KengoTODA/java-diff-utils ?
282
;; com.sun.tools.javac.code.Scope.LookupKind.NON_RECURSIVE
283
;; com.sun.source.tree.PackageTree
284
;; com.sun.tools.javac.tree.JCTree.JCPackageDecl
285
(define-public java-error-prone
286
  (package
287
    (name "java-error-prone")
288
    (version "2.0.19")
289
    (source (origin
290
              (method url-fetch)
291
              (uri (string-append "https://github.com/google/error-prone/archive/v"
292
                                  version ".tar.gz"))
293
              (file-name (string-append name "-" version ".tar.gz"))
294
              (patches (search-patches "java-error-prone-add-build.xml.patch"))
295
              (sha256
296
               (base32
297
                "00igy7a6aylswxdcklj9021g2s8bvsvrysagqyd8cibm4pimxrnk"))))
298
    (build-system ant-build-system)
299
    (arguments
300
     `(#:tests? #f
301
       #:jdk ,icedtea-8
302
       #:phases
303
       (modify-phases %standard-phases
304
         (add-before 'build 'copy-internal
305
           (lambda _
306
             (mkdir-p "ant/src/main/java/com/google/errorprone/internal")
307
             (copy-file
308
               "core/src/main/java/com/google/errorprone/internal/NonDelegatingClassLoader.java"
309
               "ant/src/main/java/com/google/errorprone/internal/NonDelegatingClassLoader.java"))))))
310
    (inputs
311
     `(("java-jsr305" ,java-jsr305)
312
       ("java-auto-value" ,java-auto-value)
313
       ("java-checker-framework" ,java-checker-framework)
314
       ("java-guava" ,java-guava)))
315
    (home-page "https://github.com/google/guava")
316
    (synopsis "")
317
    (description "")
318
    (license license:asl2.0)))
319
320
(define-public java-error-prone-annotations
321
  (package
322
    (inherit java-error-prone)
323
    (name "java-error-prone-annotations")
324
    (version "2.0.19")
325
    (arguments
326
     `(#:tests? #f
327
       #:jar-name (string-append ,name "-" ,version ".jar")
328
       #:src-dir "annotations/src"))
329
    (inputs
330
     `(("java-jsr305" ,java-jsr305)))))
331
332
(define-public java-j2objc
333
  (package
334
    (name "java-j2objc")
335
    (version "1.3.1")
336
    (source (origin
337
              (method url-fetch)
338
              (uri (string-append "https://github.com/google/j2objc/archive/"
339
                                  version ".tar.gz"))
340
              (file-name (string-append name "-" version ".tar.gz"))
341
              (patches (search-patches "java-j2objc-add-build.xml.patch"))
342
              (sha256
343
               (base32
344
                "0d5spbr1whw2afg6mknyr7ifm6xivn3bbvnzjxva2zzkyq944hv0"))))
345
    (build-system ant-build-system)
346
    (arguments
347
     `(#:tests? #f))
348
    (home-page "http://j2objc.org")
349
    (synopsis "")
350
    (description "")
351
    (license license:asl2.0)))
352
353
(define-public java-j2objc-annotations
354
  (package
355
    (inherit java-j2objc)
356
    (name "java-j2objc-annotations")
357
    (version "1.3.1")
358
    (arguments
359
     `(#:tests? #f
360
       #:jar-name (string-append ,name "-" ,version ".jar")
361
       #:src-dir "annotations/src/main/java"))))
362
363
(define-public java-animal-sniffer
364
  (package
365
    (name "java-animal-sniffer")
366
    (version "1.15")
367
    (source (origin
368
              (method url-fetch)
369
              (uri (string-append "https://github.com/mojohaus/animal-sniffer/"
370
                                  "archive/animal-sniffer-parent-"
371
                                  version ".tar.gz"))
372
              (patches (search-patches "java-animal-sniffer-add-build.xml.patch"))
373
              (file-name (string-append name "-" version ".tar.gz"))
374
              (sha256
375
               (base32
376
                "1350yl003y1fjzdwis0dg5jhi5kggk2sxnkv9821z5janw4p986m"))))
377
    (build-system ant-build-system)
378
    (propagated-inputs
379
     `(("asm" ,java-asm)))
380
    (arguments
381
     `(#:tests? #f
382
       #:phases
383
       (modify-phases %standard-phases
384
         (replace 'build
385
           (lambda* (#:key outputs #:allow-other-keys)
386
             (default-build.xml "animal-sniffer.jar"
387
                                (string-append (assoc-ref outputs "out")
388
                                      "/share/java")))))))
389
    (home-page "http://www.mojohaus.org/animal-sniffer")
390
    (synopsis "")
391
    (description "")
392
    (license license:asl2.0)))
393
394
(define-public java-animal-sniffer-annotations
395
  (package
396
    (inherit java-animal-sniffer)
397
    (name "java-animal-sniffer-annotations")
398
    (version "1.15")
399
    (arguments
400
     `(#:tests? #f
401
       #:jar-name (string-append ,name "-" ,version ".jar")
402
       #:src-dir "animal-sniffer-annotations/src/main/java"))))
403
404
(define-public java-guava
405
  (package
406
    (name "java-guava")
407
    (version "20.0")
408
    (source (origin
409
              (method url-fetch)
410
              (uri (string-append "https://github.com/google/guava/archive/v"
411
                                  version ".tar.gz"))
412
              (file-name (string-append name "-" version ".tar.gz"))
413
              (sha256
414
               (base32
415
                "1kasavj973iblj1fj35gzbywhkljrnbjpymgqyqaibbbmmbzff8s"))))
416
    (build-system ant-build-system)
417
    (arguments
418
     `(#:jar-name (string-append ,name "-" ,version ".jar")
419
       #:src-dir "guava/src"
420
       #:tests? #f))
421
    (inputs
422
     `(("java-jsr305" ,java-jsr305)
423
       ("java-j2objc-annotations" ,java-j2objc-annotations)
424
       ("java-animal-sniffer-annotations" ,java-animal-sniffer-annotations)
425
       ("java-error-prone-annotations" ,java-error-prone-annotations)))
426
    (home-page "https://github.com/google/guava")
427
    (synopsis "")
428
    (description "")
429
    (license license:asl2.0)))
430
431
(define-public java-joda-convert
432
  (package
433
    (name "java-joda-convert")
434
    (version "1.8.1")
435
    (source (origin
436
              (method url-fetch)
437
              (uri (string-append "https://github.com/JodaOrg/joda-convert/archive/v"
438
                                  version ".tar.gz"))
439
              (file-name (string-append name "-" version ".tar.gz"))
440
              (sha256
441
               (base32
442
                "1di9chp0pgvd2gxsmdaxhldwns9a2ss9705jmn97mdd69cg5zcnc"))))
443
    (build-system ant-build-system)
444
    (arguments
445
     `(#:jar-name (string-append ,name "-" ,version ".jar")
446
       #:src-dir "src/main/java"
447
       #:tests? #f))
448
    (inputs
449
     `(("java-google-collect" ,java-google-collect)))
450
    (native-inputs
451
     `(("junit" ,java-junit)))
452
    (home-page "")
453
    (synopsis "")
454
    (description "")
455
    (license license:asl2.0)))
456
457
(define-public java-joda-time
458
  (package
459
    (name "java-joda-time")
460
    (version "2.9.9")
461
    (source (origin
462
              (method url-fetch)
463
              (uri (string-append "https://github.com/JodaOrg/joda-time/archive/v"
464
                                  version ".tar.gz"))
465
              (file-name (string-append name "-" version ".tar.gz"))
466
              (sha256
467
               (base32
468
                "1i9x91mi7yg2pasl0k3912f1pg46n37sps6rdb0v1gs8hj9ppwc1"))))
469
    (build-system ant-build-system)
470
    (arguments
471
     `(#:jar-name (string-append ,name "-" ,version ".jar")
472
       #:src-dir "src/main/java"
473
       #:tests? #f))
474
    (inputs
475
     `(("java-joda-convert" ,java-joda-convert)))
476
    (native-inputs
477
     `(("junit" ,java-junit)))
478
    (home-page "")
479
    (synopsis "")
480
    (description "")
481
    (license license:asl2.0)))
482
483
(define-public java-xstream
484
  (package
485
    (name "java-xstream")
486
    (version "1.4.9")
487
    (source (origin
488
              (method url-fetch)
489
              (uri (string-append "https://repo1.maven.org/maven2/com/thoughtworks"
490
                                  "/xstream/xstream-distribution/" version
491
                                  "/xstream-distribution-" version "-src.zip"))
492
              (file-name (string-append name "-" version ".zip"))
493
              (sha256
494
               (base32
495
                "1cq9j9h839wc6pkrgd9bd7y94a3zrj1j741i134izqs9xx2b54fi"))))
496
    (build-system ant-build-system)
497
    (arguments
498
     `(#:jar-name (string-append ,name "-" ,version ".jar")
499
       #:tests? #f
500
       #:src-dir "xstream/src/java"))
501
    (native-inputs
502
     `(("unzip" ,unzip)))
503
    (home-page "https://x-stream.github.io")
504
    (synopsis "")
505
    (description "")
506
    (license license:x11)))
507
508
(define-public java-jsonp
509
  (package
510
    (name "java-jsonp")
511
    (version "1.0.4")
512
    (source (origin
513
              (method git-fetch)
514
              (uri (git-reference
515
                     (url "git://java.net/jsonp~git")
516
                     (commit "a586e706aea82dc80fb05bdf59f2a25150ee1801")))
517
              (file-name (string-append name "-" version))
518
              (sha256
519
               (base32
520
                "01r4syivcywpvxkr1hn0az9316pr7qpnx154zzzw0nijfmdlbw7n"))))
521
    (build-system ant-build-system)
522
    (arguments
523
     `(#:jar-name (string-append ,name "-" ,version ".jar")
524
       #:tests? #f
525
       #:src-dir "api/src"))
526
    (home-page "https://jsonp.java.net")
527
    (synopsis "")
528
    (description "")
529
    (license (list license:gpl2
530
                   ;; actually CDDL 1.1
531
                   license:cddl1.0))))
532
533
;; Can only be built with gradle.
534
(define-public groovy
535
  (package
536
    (name "groovy")
537
    (version "2.4.10")
538
    (source (origin
539
              (method url-fetch)
540
              (uri (string-append "https://github.com/apache/groovy/archive/GROOVY_"
541
                                  "2_4_10.tar.gz"))
542
              (file-name (string-append name "-" version ".tar.gz"))
543
              (sha256
544
               (base32
545
                "0wapzqwpx4bh2fsqpzf3haakjz6wvfjx1vd9a4spavhlrjqk2pbb"))))
546
    (build-system ant-build-system)
547
    (arguments
548
     `(#:jar-name "groovy.jar"
549
       #:tests? #f))
550
    (native-inputs
551
     `(("junit" ,java-junit)))
552
    (inputs
553
     `(("commons-cli" ,java-commons-cli)
554
       ("antlr" ,antlr3)
555
       ("asm" ,java-asm)))
556
    (home-page "")
557
    (synopsis "")
558
    (description "")
559
    (license license:asl2.0)))
560
561
;; requires jline, javax.servlet, org.fusesource.jansi, org.livetribe,
562
;;   com.thoughtworks.xstream, org.apache.ivy, bsf
563
;;   antlr
564
(define-public groovy-1.8.9
565
  (package
566
    (inherit groovy)
567
    (name "groovy")
568
    (version "1.8.9")
569
    (source (origin
570
              (method url-fetch)
571
              (uri (string-append "https://github.com/apache/groovy/archive/GROOVY_"
572
                                  "1_8_9.tar.gz"))
573
              (file-name (string-append name "-" version ".tar.gz"))
574
              (sha256
575
               (base32
576
                "16z3jv5yw11wwwzbs6x41g83gqazhngg30ys2kpy7cpfm3rsqi71"))))
577
    (arguments
578
     `(#:jar-name (string-append ,name "-" ,version ".jar")
579
       #:tests? #f
580
       #:src-dir "src/main"))))
581
582
583
(define-public antlr3-3.4
584
  (package
585
    (name "antlr3")
586
    (version "3.4")
587
    (source (origin
588
              (method url-fetch)
589
              (uri (string-append "https://github.com/antlr/website-antlr3/raw/"
590
                                  "gh-pages/download/antlr-"
591
                                  version ".tar.gz"))
592
              (sha256
593
               (base32
594
                "1cwfswpk3jlzl1dhc6b6586srza8q0bbzwlxcq136p29v62fjrb3"))))
595
    (build-system ant-build-system)
596
    (arguments
597
     `(#:jar-name (string-append ,name "-" ,version ".jar")
598
       #:src-dir "tool/src/main/java:runtime/Java/src/main/java:tool/src/main/antlr3"
599
       #:tests? #f
600
       #:phases
601
       (modify-phases %standard-phases
602
         (add-after 'install 'bin-install
603
           (lambda* (#:key inputs outputs #:allow-other-keys)
604
             (let ((jar (string-append (assoc-ref outputs "out") "/share/java"))
605
                   (bin (string-append (assoc-ref outputs "out") "/bin")))
606
               (mkdir-p bin)
607
               (with-output-to-file (string-append bin "/antlr3")
608
                 (lambda _
609
                   (display
610
                     (string-append "#!/bin/sh\n"
611
                                    "java -cp " jar "/antlr3-3.3.jar:"
612
                                    (string-concatenate
613
                                      (find-files (assoc-ref inputs "stringtemplate")
614
                                                  ".*\\.jar"))
615
                                    ":"
616
                                    (string-concatenate
617
                                      (find-files (string-append (assoc-ref inputs "antlr") "/lib")
618
                                                  ".*\\.jar"))
619
                                    " org.antlr.Tool $*"))))
620
               (chmod (string-append bin "/antlr3") #o755))))
621
         (add-before 'build 'generate-grammar
622
           (lambda _
623
             (chdir "tool/src/main/antlr3/org/antlr/grammar/v3/")
624
             (for-each (lambda (file)
625
                         (display file)
626
                         (newline)
627
                         (system* "antlr3" file))
628
                       '("ActionAnalysis.g" "ActionTranslator.g" "ANTLR.g"
629
                         "ANTLRTreePrinter.g" "ANTLRv3.g" "ANTLRv3Tree.g"
630
                         "AssignTokenTypesWalker.g" "CodeGenTreeWalker.g"
631
                         "DefineGrammarItemsWalker.g" "LeftRecursiveRuleWalker.g"
632
                         "TreeToNFAConverter.g"))
633
             (chdir "../../../../../../../..")
634
             (system* "antlr" "-o" "tool/src/main/java/org/antlr/tool"
635
                      "tool/src/main/java/org/antlr/tool/serialize.g")
636
             (substitute* "tool/src/main/java/org/antlr/tool/LeftRecursiveRuleAnalyzer.java"
637
               (("import org.antlr.grammar.v3.\\*;") "import org.antlr.grammar.v3.*;
638
import org.antlr.grammar.v3.ANTLRTreePrinter;"))
639
             (substitute* "tool/src/main/java/org/antlr/tool/Grammar.java"
640
               (("import org.antlr.grammar.v3.\\*;")
641
                "import org.antlr.grammar.v3.*;\n
642
import org.antlr.grammar.v3.TreeToNFAConverter;\n
643
import org.antlr.grammar.v3.DefineGrammarItemsWalker;\n
644
import org.antlr.grammar.v3.ANTLRTreePrinter;"))
645
             (substitute* "tool/src/main/java/org/antlr/tool/ErrorManager.java"
646
               (("case NO_SUCH_ATTRIBUTE_PASS_THROUGH:") ""))
647
             (substitute* "tool/src/main/antlr3/org/antlr/grammar/v3/ANTLRParser.java"
648
               (("public Object getTree") "public GrammarAST getTree"))
649
             (substitute* "tool/src/main/antlr3/org/antlr/grammar/v3/ANTLRv3Parser.java"
650
               (("public Object getTree") "public CommonTree getTree"))))
651
         (add-before 'build 'fix-build-xml
652
           (lambda _
653
             (substitute* "build.xml"
654
               (("<exec") "<copy todir=\"${classes.dir}\">
655
<fileset dir=\"tool/src/main/resources\">
656
<include name=\"**/*.stg\"/>
657
<include name=\"**/*.st\"/>
658
<include name=\"**/*.sti\"/>
659
<include name=\"**/STLexer.tokens\"/>
660
</fileset>
661
</copy><exec")))))))
662
    (native-inputs
663
     `(("antlr" ,antlr2)
664
       ("antlr3" ,antlr3-3.3)))
665
    (inputs
666
     `(("junit" ,java-junit)))
667
    (propagated-inputs
668
     `(("stringtemplate" ,stringtemplate3)
669
       ("stringtemplate4" ,stringtemplate4)
670
       ("antlr" ,antlr2)
671
       ("antlr3" ,antlr3-3.1)))
672
    (home-page "http://www.stringtemplate.org")
673
    (synopsis "")
674
    (description "")
675
    (license license:bsd-3)))
676
677
(define-public libantlr3c
678
  (package
679
    (inherit antlr3)
680
    (name "libantlr3c")
681
    (build-system gnu-build-system)
682
    (native-inputs
683
     `(("autoconf" ,autoconf)
684
       ("automake" ,automake)
685
       ("libtool" ,libtool)))
686
    (propagated-inputs
687
     `(("antlr" ,antlr3)))
688
    (arguments
689
     `(#:configure-flags (list "--enable-64bit" "--disable-static")
690
       #:phases
691
       (modify-phases %standard-phases
692
         (add-before 'configure 'autoreconf
693
           (lambda _
694
             (chdir "runtime/C")
695
             (system* "libtoolize")
696
             (system* "autoreconf" "-fiv"))))))))
697
698
;; javax.json.*
699
;; org.abego.treelayout.*
700
;; com.ibm.icu.*
701
(define-public antlr4
702
  (package
703
    (name "antlr4")
704
    (version "4.7")
705
    (source (origin
706
              (method url-fetch)
707
              (uri (string-append "https://github.com/antlr/antlr4/archive/"
708
                                  version ".tar.gz"))
709
              (file-name (string-append name "-" version ".tar.gz"))
710
              (sha256
711
               (base32
712
                "0y7lzkvx9wbbmwg45mb4icx7i66z6894qfygrbbs26sr5xxyml9h"))))
713
    (build-system ant-build-system)
714
    (arguments
715
     `(#:jar-name (string-append ,name "-" ,version ".jar")
716
       #:src-dir "runtime/Java/src:tool/src"
717
       #:phases
718
       (modify-phases %standard-phases
719
         (add-before 'build 'generate-grammar
720
           (lambda* (#:key inputs #:allow-other-keys)
721
             (chdir "tool/src/org/antlr/v4/parse")
722
             (for-each (lambda (file)
723
                         (format #t "~a\n" file)
724
                         (system* "antlr3" file))
725
                       '("ANTLRLexer.g" "ANTLRParser.g" "BlockSetTransformer.g"
726
                         "GrammarTreeVisitor.g" "ATNBuilder.g"
727
                         "ActionSplitter.g" "LeftRecursiveRuleWalker.g"))
728
             (chdir "../codegen")
729
             (copy-file "../parse/ANTLRParser.tokens" "ANTLRParser.tokens")
730
             (format #t "SourceGenTriggers.g\n")
731
             (system* "antlr3" "SourceGenTriggers.g")
732
             (chdir "../../../../../.."))))))
733
    (inputs
734
     `(("antlr3" ,antlr3)
735
       ("icu4j" ,java-icu4j)
736
       ("java-jsonp" ,java-jsonp)
737
       ("treelayout" ,java-treelayout)
738
       ("stringtemplate4" ,stringtemplate4)))
739
    (home-page "https://antlr.org")
740
    (synopsis "")
741
    (description "")
742
    (license license:bsd-3)))
743
744
745
;; requires groovy 2.4.7.
746
;(define-public gradle
747
;  (package
748
;    (name "gradle")
749
;    (version "3.4.1")
750
;    (source (origin
751
;              (method url-fetch)
752
;              (uri (string-append "https://github.com/gradle/gradle/archive/v"
753
;                                  version ".tar.gz"))
754
;              (file-name (string-append name "-" version ".tar.gz"))
755
;              (sha256
756
;               (base32 "0fq30k51mkixg31z3d4fjq3zbnyjml4i530px6n1n947mqk3rgyl"))))
757
;    (build-system ant-build-system)
758
;    (arguments
759
;     `(#:phases
760
;       (modify-phases %standard-phases
761
;         (replace 'build
762
;           (lambda* _
763
;             (system* "sh" "-x" "gradlew" "prBuild" "-x" "integTest" "--continue"
764
;                      "--stacktrace"))))))
765
;             ;(system* "sh" "-x" "travisci_build.sh"))))))
766
;    (home-page "")
767
;    (synopsis "Build system")
768
;    (description "Build system")
769
;    (license license:asl2.0)))
770
;
771
;;; Requires gradle.
772
;(define-public android-anysoft-keyboard
773
;  (package
774
;    (name "android-anysoft-keyboard")
775
;    (version "1.8-r9")
776
;    (source (origin
777
;              (method url-fetch)
778
;              (uri (string-append "https://github.com/AnySoftKeyboard/"
779
;                                  "AnySoftKeyboard/archive/" version ".tar.gz"))
780
;              (file-name (string-append name "-" version ".tar.gz"))
781
;              (sha256
782
;               (base32
783
;                "1mrin9mw1rs23d25v8yx4jprx7j05zir6756sqvk4myxbkcp8mag"))))
784
;    (build-system ant-build-system)
785
;    (home-page "https://anysoftkeyboard.github.io/")
786
;    (synopsis "Alternative on-screen keyboard for multiple languages")
787
;    (description "Alternative on-screen keyboard for multiple languages.")
788
;    (license license:asl2.0)))
789