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