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 compression)
33
  #:use-module (gnu packages java))
34
35
(define-public java-tomcat
36
  (package
37
    (name "java-tomcat")
38
    (version "8.5.16")
39
    (source (origin
40
              (method url-fetch)
41
              (uri (string-append "http://download.nextag.com/apache/tomcat/tomcat-8/v"
42
                                  version "/src/apache-tomcat-" version "-src.tar.gz"))
43
              (sha256
44
               (base32
45
                "08vc859z9f0787nhikbdsj6i441d4qk5xv17c1564hxxg6bmilqd"))))
46
    (build-system ant-build-system)
47
    (inputs
48
     `(("java-eclipse-jdt-core" ,java-eclipse-jdt-core)))
49
    (native-inputs
50
     `(("java-junit" ,java-junit)))
51
    (arguments
52
     `(#:build-target "package"
53
       ;#:test-target "test"
54
       #:tests? #f; requires downloading some files.
55
       #:phases
56
       (modify-phases %standard-phases
57
         (add-after 'unpack 'properties
58
           (lambda _
59
             (mkdir "downloads")
60
             (substitute* "build.xml"
61
               (("download-compile,") ""))
62
             (with-output-to-file "build.properties"
63
               (lambda _
64
                 (display
65
                   (string-append "base.path=" (getcwd) "/downloads\n"))))))
66
         (replace 'install
67
           (install-jars "output/build/lib")))))
68
    (home-page "https://tomcat.apache.org")
69
    (synopsis "Java Servlet, JavaServer Pages, Java Expression Language and Java
70
WebSocket")
71
    (description "Apache Tomcat is an open source implementation of the Java
72
Servlet, JavaServer Pages, Java Expression Language and Java WebSocket
73
technologies. The Java Servlet, JavaServer Pages, Java Expression Language and
74
Java WebSocket specifications are developed under the Java Community Process.")
75
    (license license:asl2.0)))
76
77
(define-public java-brotli-dec
78
  (package
79
    (name "java-brotli-dec")
80
    (version "0.6.0")
81
    (source (origin
82
              (method url-fetch)
83
              (uri (string-append "https://github.com/google/brotli/archive/v"
84
                                  version ".tar.gz"))
85
              (sha256
86
               (base32
87
                "03zfr6lw6ry643l6pbg0myg52clypxd0y0igd84dslchf3svvkb9"))))
88
    (build-system ant-build-system)
89
    (native-inputs
90
     `(("junit" ,java-junit)))
91
    (arguments
92
     `(#:jar-name "brotli-dec.jar"
93
       #:tests? #f; no test target
94
       #:source-dir "java"))
95
    (home-page "https://brotli.org")
96
    (synopsis "Lossless compression algorithm")
97
    (description "Brotli is a generic-purpose lossless compression algorithm
98
that compresses data using a combination of a modern variant of the LZ77
99
algorithm, Huffman coding and 2nd order context modeling, with a compression
100
ratio comparable to the best currently available general-purpose compression
101
methods.  It is similar in speed with deflate but offers more dense compression.")
102
    (license license:expat)))
103
104
(define-public java-commons-compress-latest
105
  (package
106
    (inherit java-commons-compress)
107
    (version "1.14")
108
    (source (origin
109
              (method url-fetch)
110
              (uri (string-append "mirror://apache/commons/compress/source/"
111
                                  "commons-compress-" version "-src.tar.gz"))
112
              (sha256
113
               (base32
114
                "1msfjbknfgx78j96fsiqk44r45plz10x9sw88flrpf3yaf4d3br1"))))
115
    (inputs
116
     `(("dec" ,java-brotli-dec)
117
       ,@(package-inputs java-commons-compress)))))
118
119
(define-public java-jmapviewer
120
  (package
121
    (name "java-jmapviewer")
122
    (version "2.2")
123
    (source (origin
124
              (method url-fetch)
125
              (uri (string-append "https://svn.openstreetmap.org/applications/viewer/jmapviewer/releases/"
126
                                  version "/JMapViewer-" version "-Source.zip"))
127
              (sha256
128
               (base32
129
                "00jxqc4fzy7hpdi0007f0a84aa630brvam7vxqirdk9j4za4p0d8"))))
130
    (build-system ant-build-system)
131
    (native-inputs
132
     `(("unzip" ,unzip)))
133
    (arguments
134
     `(#:build-target "pack"
135
       #:jdk ,icedtea-8
136
       #:tests? #f; No tests
137
       #:phases
138
       (modify-phases %standard-phases
139
         (add-before 'build 'clean
140
           (lambda* _
141
             (zero? (system* "ant" "clean"))))
142
         (replace 'install
143
           (lambda* (#:key outputs #:allow-other-keys)
144
             (let ((dir (string-append (assoc-ref outputs "out") "/share/java/")))
145
               (mkdir-p dir)
146
               (copy-file "JMapViewer.jar" (string-append dir "JMapViewer.jar"))))))))
147
    (home-page "https://wiki.openstreetmap.org/wiki/JMapViewer")
148
    (synopsis "")
149
    (description "")
150
    (license license:gpl2)))
151
152
(define-public java-josm
153
  (package
154
    (name "java-josm")
155
    (version "12450")
156
    (source (origin
157
              (method git-fetch)
158
              (uri (git-reference
159
                    (url "https://github.com/openstreetmap/josm.git")
160
                    (commit "61a9c27e59976805b7cce4fae5a48c8e04b19373")))
161
              ;;(uri (svn-reference
162
              ;;      (url "https://svn.openstreetmap.org/applications/editors/josm")
163
              ;;      (revision 12039)))
164
              (sha256
165
               (base32
166
                "1hab27b8s6h2b1g07pghr4nkx6rx2gx75488rwppdfc0ymzpjzrp"))
167
              (file-name (string-append name "-" version))))
168
    (build-system ant-build-system)
169
    (native-inputs
170
     `(("java-javacc" ,java-javacc)))
171
    (propagated-inputs
172
     `(("java-jmapviewer" ,java-jmapviewer)
173
       ("java-tomcat" ,java-tomcat)
174
       ("java-brotli-dec" ,java-brotli-dec)
175
       ("java-xz" ,java-xz)
176
       ("java-velocity" ,java-velocity)
177
       ("java-commons-collections" ,java-commons-collections)
178
       ("java-commons-logging-minimal" ,java-commons-logging-minimal)
179
       ("java-commons-compress" ,java-commons-compress-latest)))
180
    (arguments
181
     `(;#:build-target "dist"
182
       #:tests? #f
183
       #:jdk ,icedtea-8
184
       #:jar-name "josm.jar"
185
       #:phases
186
       (modify-phases %standard-phases
187
         (add-after 'unpack 'rm-build.xml
188
           (lambda* _
189
             (delete-file "build.xml")))
190
         (add-before 'build 'fix-revision
191
           (lambda* _
192
             (with-output-to-file "REVISION.XML"
193
               (lambda _
194
                 (display
195
                   (string-append "<info><entry><commit revision=\"" ,version "\">"
196
                                  "<date>1970-01-01 00:00:00 +0000</date>"
197
                                  "</commit></entry></info>"))))))
198
         (add-before 'build 'generate-parser
199
           (lambda* _
200
             (let* ((dir "src/org/openstreetmap/josm/gui/mappaint/mapcss")
201
                    (out (string-append dir "/parsergen"))
202
                    (file (string-append dir "/MapCSSParser.jj")))
203
               (mkdir-p "src/org/openstreetmap/josm/gui/mappaint/mapcss/parsergen")
204
               (zero? (system* "javacc" "-DEBUG_PARSER=false"
205
                               "-DEBUG_TOKEN_MANAGER=false" "-JDK_VERSION=1.8"
206
                               "-GRAMMAR_ENCODING=UTF-8"
207
                               (string-append "-OUTPUT_DIRECTORY=" out)
208
                               file)))))
209
)))
210
         ;(add-before 'build 'fix-compiler
211
         ;  (lambda* _
212
         ;    (substitute* "build.xml"
213
         ;      (("UNKNOWN") ,version)
214
         ;      (("<touch.*epsg.output.*") "<mkdir dir=\"${epsg.output}/..\" /><touch file=\"${epsg.output}\"/>\n")
215
         ;      ((".*com.google.errorprone.ErrorProneAntCompilerAdapter.*") "")
216
         ;      (("compiler=\"[^\"]*\" ") ""))))
217
         ;(replace 'install
218
         ;  (lambda* (#:key outputs inputs #:allow-other-keys)
219
         ;    (let* ((out (assoc-ref outputs "out"))
220
         ;           (bin (string-append out "/bin"))
221
         ;           (lib (string-append out "/lib/josm")))
222
         ;      (mkdir-p bin)
223
         ;      (mkdir-p lib)
224
         ;      (copy-file "dist/josm-custom.jar"
225
         ;                 (string-append lib "/josm.jar"))
226
         ;      (with-output-to-file (string-append bin "/josm")
227
         ;        (lambda _
228
         ;          (display
229
         ;            (string-append "#!/bin/sh\n"
230
         ;                           (assoc-ref inputs "jdk") "/bin/java"
231
         ;                           " -jar " lib "/josm.jar"))))
232
         ;      (chmod (string-append bin "/josm") #o755)))))))
233
    (home-page "https://josm.openstreetmap.de")
234
    (synopsis "OSM editor")
235
    (description "OSM editor.")
236
    (license license:gpl2+)))
237
238
(define-public java-commons-collections
239
  (package
240
    (inherit java-commons-collections4)
241
    (name "java-commons-collections")
242
    (version "3.2.2")
243
    (source (origin
244
              (method url-fetch)
245
              (uri (string-append "mirror://apache/commons/collections/source/"
246
                                  "commons-collections-" version "-src.tar.gz"))
247
              (sha256
248
               (base32
249
                "055r51a5lfc3z7rkxnxmnn1npvkvda7636hjpm4qk7cnfzz98387"))))
250
    (arguments
251
      (substitute-keyword-arguments (package-arguments java-commons-collections4)
252
        ((#:phases phases)
253
          `(modify-phases ,phases
254
            (add-before 'build 'add-manifest
255
              (lambda _
256
                (mkdir-p "build/conf")
257
                (call-with-output-file "build/conf/MANIFEST.MF"
258
                  (lambda (file)
259
                    (format file "Manifest-Version: 1.0\n")
260
                    (format file "Ant-Version: Apache Ant 1.9.9\n")
261
                    (format file "Created-By: 1.8.0_131-b11 (Oracle Corporation)")))))
262
            (replace 'install
263
              (install-jars "build"))))))))
264
265
(define-public java-jdom2
266
  (package
267
    (name "java-jdom")
268
    (version "2.0.6")
269
    (source (origin
270
              (method url-fetch)
271
              (uri (string-append "https://github.com/hunterhacker/jdom/archive/JDOM-"
272
                                  version ".tar.gz"))
273
              (sha256
274
               (base32
275
                "0p8n7inqq2a25wk9ljinl3ixlx1x2la9qaman8ngd75xxjb02yc1"))))
276
    (build-system ant-build-system)
277
    (arguments
278
     `(#:build-target "package"
279
       #:tests? #f; junit run with "package" target
280
       #:phases
281
       (modify-phases %standard-phases
282
         (replace 'install
283
           (install-jars "build")))))
284
    (home-page "http://jdom.org/")
285
    (synopsis "Access, manipulate, and output XML data")
286
    (description " Java-based solution for accessing, manipulating, and
287
outputting XML data from Java code.")
288
    (license license:bsd-4)))
289
290
(define-public java-jakarta-oro
291
  (package
292
    (name "java-jakarta-oro")
293
    (version "2.0.8")
294
    (source (origin
295
              (method url-fetch)
296
              (uri (string-append "https://archive.apache.org/dist/jakarta/oro/"
297
                                  "jakarta-oro-" version ".tar.gz"))
298
              (sha256
299
               (base32
300
                "0rpmnsskiwmsy8r0sckz5n5dbvh3vkxx8hpm177c754r8xy3qksc"))))
301
    (build-system ant-build-system)
302
    (arguments
303
     `(#:build-target "package"
304
       #:tests? #f; junit run with "package" target
305
       #:phases
306
       (modify-phases %standard-phases
307
         (add-after 'unpack 'remove-bin
308
           (lambda _
309
             (delete-file (string-append "jakarta-oro-" ,version ".jar"))))
310
         (replace 'install
311
           (install-jars ,(string-append "jakarta-oro-" version))))))
312
    (home-page "https://jakarta.apache.org/oro/")
313
    (synopsis "")
314
    (description "")
315
    (license license:asl2.0)))
316
317
(define-public java-jdom
318
  (package
319
    (name "java-jdom")
320
    (version "1.1.3")
321
    (source (origin
322
              (method url-fetch)
323
              (uri (string-append "http://jdom.org/dist/binary/archive/jdom-"
324
                                  version ".tar.gz"))
325
              (sha256
326
               (base32
327
                "07wdpm3jwwc9q38kmdw40fvbmv6jzjrkrf8m0zqs58f79a672wfl"))))
328
    (build-system ant-build-system)
329
    (arguments
330
     `(#:build-target "package"
331
       #:tests? #f; junit run with "package" target
332
       #:phases
333
       (modify-phases %standard-phases
334
         (replace 'install
335
           (install-jars "build")))))
336
    (home-page "http://jdom.org/")
337
    (synopsis "Access, manipulate, and output XML data")
338
    (description " Java-based solution for accessing, manipulating, and
339
outputting XML data from Java code.")
340
    (license license:bsd-4)))
341
342
(define-public java-commons-logging
343
  (package
344
    (inherit java-commons-logging-minimal)
345
    (arguments
346
     `(#:tests? #f ; avoid dependency on logging frameworks
347
       #:jar-name "commons-logging.jar"
348
       #:phases
349
       (modify-phases %standard-phases
350
         (add-after 'unpack 'delete-adapters-and-tests
351
           (lambda _
352
             ;; Delete all adapters except for NoOpLog, SimpleLog, and
353
             ;; LogFactoryImpl.  NoOpLog is required to build; LogFactoryImpl
354
             ;; is used by applications; SimpleLog is the only actually usable
355
             ;; implementation that does not depend on another logging
356
             ;; framework.
357
             (for-each
358
              (lambda (file)
359
                (delete-file (string-append
360
                              "src/main/java/org/apache/commons/logging/impl/" file)))
361
              (list "Jdk13LumberjackLogger.java"
362
                    "WeakHashtable.java"
363
                    "Log4JLogger.java"
364
                    "ServletContextCleaner.java"
365
                    "Jdk14Logger.java"
366
                    "AvalonLogger.java"
367
                    "LogKitLogger.java"))
368
             (delete-file-recursively "src/test")
369
             #t)))))
370
    (inputs
371
     `(("log4j" ,java-log4j-api)
372
       ,@(package-inputs java-commons-logging-minimal)))))
373
374
(define-public java-velocity
375
  (package
376
    (name "java-velocity")
377
    (version "1.7")
378
    (source (origin
379
              (method url-fetch)
380
              (uri (string-append "mirror://apache/velocity/engine/"
381
                                  version "/velocity-" version ".tar.gz"))
382
              (sha256
383
               (base32
384
                "0rk7s04hkrr2k3glccx0yrglzqzj4qbipcrxhglk46yhx92vravc"))))
385
    (build-system ant-build-system)
386
    (arguments
387
     `(#:source-dir "src/java"
388
       #:phases
389
       (modify-phases %standard-phases
390
         (add-before 'build 'prepare
391
           (lambda* (#:key inputs #:allow-other-keys)
392
             (delete-file-recursively "lib")
393
             (mkdir-p "bin/lib")
394
             ;; Don't download anything
395
             (substitute* "build/build.xml"
396
               ((".*download.xml.*") ""))
397
             (chdir "build"))))))
398
    (native-inputs
399
     `(("javacc" ,java-javacc)
400
       ("antlr" ,antlr2)))
401
    (propagated-inputs
402
     `(("java-commons-collections" ,java-commons-collections)
403
       ("java-jakarta-oro" ,java-jakarta-oro)
404
       ("java-jdom" ,java-jdom)
405
       ("java-tomcat" ,java-tomcat)
406
       ("java-log4j-api" ,java-log4j-api)
407
       ("java-commons-logging-minimal" ,java-commons-logging)
408
       ("java-commons-lang" ,java-commons-lang)))
409
    (home-page "https://velocity.apache.org/")
410
    (synopsis "")
411
    (description "")
412
    (license license:asl2.0)))
413
414
(define-public java-commons-jcs
415
  (package
416
    (name "java-commons-jcs")
417
    (version "2.1")
418
    (source (origin
419
              (method url-fetch)
420
              (uri (string-append "mirror://apache/commons/jcs/source/"
421
                                  "commons-jcs-dist-" version "-src.tar.gz"))
422
              (sha256
423
               (base32
424
                "17l78mpxx1qkgp213b91sl69wawv6xzgllr479mygbg76ygwpffv"))))
425
    (build-system ant-build-system)
426
    (arguments
427
     `(#:jar-name "commons-jcs.jar"
428
       #:source-dir "commons-jcs-core/src/main/java"))
429
    (propagated-inputs
430
     `(("java-commons-logging-minimal" ,java-commons-logging-minimal)
431
       ("java-velocity" ,java-velocity)))
432
    (home-page "https://commons.apache.org/proper/commons-jcs/")
433
    (synopsis "")
434
    (description "")
435
    (license license:asl2.0)))
436
437
(define-public java-javacc
438
  (package
439
    (name "java-javacc")
440
    (version "7.0.2")
441
    (source (origin
442
              (method url-fetch)
443
              (uri (string-append "https://github.com/javacc/javacc/archive/release_"
444
                                  (string-map (lambda (x) (if (eq? x #\.) #\_ x)) version)
445
                                  ".tar.gz"))
446
              (sha256
447
               (base32
448
                "0yf93993nlsk5kijazddi5621x4y2bwq3vl46j8h8f7di2z9jv2h"))))
449
    (build-system ant-build-system)
450
    (arguments
451
     `(#:test-target "unittest"
452
       #:phases
453
       (modify-phases %standard-phases
454
         (add-after 'unpack 'remove-binaries
455
           (lambda* _
456
             ;; Note: we cannot remove bootstrap/javacc.jar because no version of javacc comes with no bootstrap
457
             (delete-file-recursively "lib")))
458
         ;    (let* ((out (assoc-ref outputs "out"))
459
         ;           (bin (string-append out "/bin"))
460
         ;           (lib (string-append out "/lib/josm")))
461
         ;      (mkdir-p bin)
462
         ;      (mkdir-p lib)
463
         ;      (copy-file "dist/josm-custom.jar"
464
         ;                 (string-append lib "/josm.jar"))
465
         (replace 'install
466
           (lambda* (#:key outputs inputs #:allow-other-keys)
467
             (let* ((out (assoc-ref outputs "out"))
468
                    (dir (string-append out "/share/java"))
469
                    (bin (string-append out "/bin")))
470
               (mkdir-p dir)
471
               (mkdir-p bin)
472
               (copy-file "target/javacc.jar" (string-append dir "/javacc.jar"))
473
               (with-output-to-file (string-append bin "/javacc")
474
                 (lambda _
475
                   (display
476
                     (string-append "#!/bin/sh\n"
477
                                    (assoc-ref inputs "jdk") "/bin/java"
478
                                    " -cp " dir "/javacc.jar" " javacc" " $*"))))
479
               (chmod (string-append bin "/javacc") #o755)))))))
480
    (native-inputs
481
     `(("junit" ,java-junit)))
482
    (home-page "https://javacc.org")
483
    (synopsis "")
484
    (description "")
485
    (license license:bsd-3)))
486
    
487
488
(define-public java-icu4j
489
  (package
490
    (name "java-icu4j")
491
    (version "58.2")
492
    (source (origin
493
              (method url-fetch)
494
              (uri (string-append
495
                     "http://download.icu-project.org/files/icu4j/" version
496
                     "/icu4j-"
497
                     (string-map (lambda (x) (if (char=? x #\.) #\_ x)) version)
498
                     ".tgz"))
499
              (sha256
500
               (base32
501
                "1mvqjlc3cbaraa0bv0vyl44xf0x6n81inqsh69bl7f88iycfpns9"))))
502
    (build-system ant-build-system)
503
    (arguments
504
     `(#:tests? #f ; Requires java-ivy that we don't have yet.
505
       #:phases
506
       (modify-phases %standard-phases
507
         ;; icu4j archive contains its sources directly at the top, not in
508
         ;; a subdirectory as usual.
509
         (add-after 'unpack 'chdir
510
           (lambda _
511
             (chdir "..")))
512
         (replace 'install
513
           (lambda* (#:key outputs #:allow-other-keys)
514
             (let ((share (string-append (assoc-ref outputs "out") "/share/java")))
515
               (mkdir-p share)
516
               (copy-file "icu4j-charset.jar" (string-append share "/icu4j-charset.jar"))
517
               (copy-file "icu4j.jar" (string-append share "/icu4j.jar"))))))))
518
    (home-page "http://site.icu-project.org/")
519
    (synopsis "")
520
    (description "")
521
    (license license:x11)))
522
523
(define-public java-treelayout
524
  (package
525
    (name "java-treelayout")
526
    (version "1.0.3")
527
    (source (origin
528
              (method url-fetch)
529
              (uri (string-append
530
                     "https://github.com/abego/treelayout/archive/v" version
531
                     ".tar.gz"))
532
              (file-name (string-append name "-" version ".tar.gz"))
533
              (sha256
534
               (base32
535
                "0djdw7j66lqjx8bx9zja0hsx10c6nsj3z0z20jmavwfr6bpp0345"))))
536
    (build-system ant-build-system)
537
    (arguments
538
     `(#:jar-name (string-append ,name "-" ,version ".jar")
539
       #:tests? #f
540
       #:phases
541
       (modify-phases %standard-phases
542
         ;; icu4j archive contains its sources directly at the top, not in
543
         ;; a subdirectory as usual.
544
         (add-after 'unpack 'chdir
545
           (lambda _
546
             (chdir "org.abego.treelayout"))))))
547
    (inputs
548
     `(("junit" ,java-junit)))
549
    (home-page "http://treelayout.sourceforge.net")
550
    (synopsis "")
551
    (description "")
552
    (license license:bsd-3)))
553
554
; propose update
555
(define-public java-commons-cli
556
  (package
557
    (name "java-commons-cli")
558
    (version "1.4")
559
    (source (origin
560
              (method url-fetch)
561
              (uri (string-append "http://mirrors.ircam.fr/pub/apache/commons/"
562
                                  "cli/source/commons-cli-" version "-src.tar.gz"))
563
              (file-name (string-append name "-" version ".tar.gz"))
564
              (sha256
565
               (base32
566
                "05hgi2z01fqz374y719gl1dxzqvzci5af071zm7vxrjg9vczipm1"))))
567
    (build-system ant-build-system)
568
    (arguments
569
     `(#:jar-name "commons-cli-1.4.jar"
570
       #:tests? #f))
571
    (native-inputs
572
     `(("junit" ,java-junit)))
573
    (home-page "https://commons.apache.org/proper/commons-cli")
574
    (synopsis "Java API for parsing command line options passed to programs")
575
    (description "Apache Commons CLI library provides an API for parsing command
576
line options passed to programs. It's also able to print help messages detailing
577
the options available for a command line tool.")
578
    (license license:asl2.0)))
579
580
; propose update
581
(define-public java-jsr305
582
  (package
583
    (name "java-jsr305")
584
    (version "3.0.2")
585
    (source (origin
586
              (method git-fetch)
587
              (uri (git-reference
588
                     (url "https://github.com/amaembo/jsr-305.git")
589
                     (commit "d7734b13c61492982784560ed5b4f4bd6cf9bb2c")))
590
              (file-name (string-append name "-" version))
591
              (sha256
592
               (base32
593
                "1wk159136pgc6i54drbq2whazfmdilvfqlxj3k19s9dfwbayf621"))))
594
    (build-system ant-build-system)
595
    (arguments
596
     `(#:jar-name (string-append ,name "-" ,version ".jar")
597
       #:source-dir "ri/src/main/java"
598
       #:tests? #f))
599
    (home-page "https://github.com/amaembo/jsr-305")
600
    (synopsis "")
601
    (description "")
602
    (license license:bsd-3)))
603
604
(define-public java-checker-framework
605
  (package
606
    (name "java-checker-framework")
607
    (version "2.1.10")
608
    (source (origin
609
              (method url-fetch)
610
              (uri (string-append "https://github.com/typetools/checker-framework/"
611
                                  "archive/checker-framework-" version ".tar.gz"))
612
              (file-name (string-append name "-" version ".tar.gz"))
613
              (sha256
614
               (base32
615
                "1infq1hr53zi9bd81v90rn3iripbinb3w145m3xblq8yvnfrxy20"))))
616
    (build-system ant-build-system)
617
    (arguments
618
     `(#:jar-name (string-append ,name "-" ,version ".jar")
619
       #:source-dir "dataflow/src:javacutil/src"
620
       #:jdk ,icedtea-8
621
       #:tests? #f))
622
    (home-page "https://checkerframework.org")
623
    (synopsis "")
624
    (description "")
625
    (license license:gpl2))); with classpath exception
626
627
(define-public java-javapoet
628
  (package
629
    (name "java-javapoet")
630
    (version "1.8.0")
631
    (source (origin
632
              (method url-fetch)
633
              (uri (string-append "https://github.com/square/javapoet/archive/javapoet-"
634
                                  version ".tar.gz"))
635
              (file-name (string-append name "-" version ".tar.gz"))
636
              (sha256
637
               (base32
638
                "0xpjbh8wcyj9yd9hb936ia5g6l2q1jlyqjvwcc290cwjrz7crb93"))))
639
    (build-system ant-build-system)
640
    (arguments
641
     `(#:jar-name (string-append ,name "-" ,version ".jar")
642
       #:source-dir "src/main/java"
643
       #:jdk ,icedtea-8
644
       #:tests? #f))
645
    (home-page "https://github.com/square/javapoet")
646
    (synopsis "")
647
    (description "")
648
    (license license:asl2.0)))
649
650
(define-public java-auto-value
651
  (package
652
    (name "java-auto-value")
653
    (version "1.4.1")
654
    (source (origin
655
              (method url-fetch)
656
              (uri (string-append "https://github.com/google/auto/archive/auto-value-"
657
                                  version ".tar.gz"))
658
              (file-name (string-append name "-" version ".tar.gz"))
659
              (sha256
660
               (base32
661
                "1qd59bwa56bynsdxfbgm40i7ndrj599wflza214kzigk16nprc1m"))))
662
    (build-system ant-build-system)
663
    (arguments
664
     `(#:jar-name (string-append ,name "-" ,version ".jar")
665
       #:source-dir "value/src/main/java:common/src/main/java:service/src/main/java"
666
       #:jdk ,icedtea-8
667
       #:tests? #f))
668
    (inputs
669
     `(("guava" ,java-guava)
670
       ("javapoet" ,java-javapoet)))
671
    (home-page "https://github.com/google/auto/tree/master/value")
672
    (synopsis "")
673
    (description "")
674
    (license license:asl2.0)))
675
676
(define-public java-diff-utils
677
  (package
678
    (name "java-diff-utils")
679
    (version "1.5.0")
680
    (source (origin
681
              (method url-fetch)
682
              (uri (string-append "https://github.com/KengoTODA/java-diff-utils/archive/"
683
                                  "diffutils-" version ".tar.gz"))
684
              (file-name (string-append name "-" version ".tar.gz"))
685
              (sha256
686
               (base32
687
                "107bkk542cgpk8sqgc41j0ljarb6zs9p59m3phvvv9rln6rwnmjc"))))
688
    (arguments
689
     `(#:build-target "all"
690
       #:tests? #f; I don't know how to run src/test
691
       #:phases
692
       (modify-phases %standard-phases
693
         (add-before 'configure 'fix-build.xml
694
           (lambda _
695
             (substitute* "build.xml"
696
               (("1.5") "1.7")
697
               (("1.3.0-SNAPSHOT") ,version))))
698
         (replace 'install
699
           (lambda* (#:key outputs #:allow-other-keys)
700
             (mkdir-p (string-append (assoc-ref outputs "out") "/share/java"))
701
             (with-directory-excursion "dist"
702
               (for-each (lambda (file)
703
                           (copy-file file
704
                                      (string-append (assoc-ref outputs "out")
705
                                                     "/share/java/" file)))
706
                 (find-files "." ".*.jar"))))))))
707
    (propagated-inputs
708
     `(("guava" ,java-guava)
709
       ("java-jsr305" ,java-jsr305)))
710
    (native-inputs
711
     `(("junit" ,java-junit)))
712
    (build-system ant-build-system)
713
    (home-page "https://github.com/KengoTODA/java-diff-utils")
714
    (synopsis "")
715
    (description "")
716
    (license license:asl2.0)))
717
    
718
719
;; com.sun.tools.javac.code.Scope.LookupKind.NON_RECURSIVE
720
;; com.sun.source.tree.PackageTree
721
;; com.sun.tools.javac.tree.JCTree.JCPackageDecl
722
723
;; TODO: error-prone depends on java9 at least from version 2.0.13 which is the
724
;; earliest version that guava can use.
725
;; Fortunately, java7 can be used for -annotations.
726
(define-public java-error-prone
727
  (package
728
    (name "java-error-prone")
729
    (version "2.0.19")
730
    (source (origin
731
              (method url-fetch)
732
              (uri (string-append "https://github.com/google/error-prone/archive/v"
733
                                  version ".tar.gz"))
734
              (file-name (string-append name "-" version ".tar.gz"))
735
              (sha256
736
               (base32
737
                "00igy7a6aylswxdcklj9021g2s8bvsvrysagqyd8cibm4pimxrnk"))))
738
    (build-system ant-build-system)
739
    (arguments
740
     `(#:tests? #f
741
       #:jar-name "error-prone.jar"
742
       #:source-dir "check_api/src/main/java"
743
       #:phases
744
       (modify-phases %standard-phases
745
         (add-before 'build 'copy-internal
746
           (lambda _
747
             (mkdir-p "ant/src/main/java/com/google/errorprone/internal")
748
             (copy-file
749
               "core/src/main/java/com/google/errorprone/internal/NonDelegatingClassLoader.java"
750
               "ant/src/main/java/com/google/errorprone/internal/NonDelegatingClassLoader.java"))))))
751
    (propagated-inputs '())
752
    (home-page "https://github.com/google/guava")
753
    (synopsis "")
754
    (description "")
755
    (license license:asl2.0)))
756
757
;(define-public java-error-prone-check-api
758
;  (package
759
;    (inherit java-error-prone)
760
;    (name "java-error-prone-check-api")
761
;    (version (package-version java-error-prone))
762
;    (arguments
763
;     `(#:tests? #f
764
;       #:jdk ,icedtea-8
765
;       #:jar-name (string-append ,name "-" ,version ".jar")
766
;       #:source-dir "check_api/src/main/java"))
767
;    (propagated-inputs
768
;     `(("java-error-prone-annotations" ,java-error-prone-annotations)
769
;       ("java-error-prone-annotation" ,java-error-prone-annotation)
770
;       ("java-jsr305" ,java-jsr305)
771
;       ("java-diff-utils" ,java-diff-utils)
772
;       ("java-auto-value" ,java-auto-value)
773
;       ("java-checker-framework" ,java-checker-framework)
774
;       ("java-guava" ,java-guava)))))
775
776
;(define-public java-error-prone-core
777
;  (package
778
;    (inherit java-error-prone)
779
;    (name "java-error-prone-core")
780
;    (version (package-version java-error-prone))
781
;    (arguments
782
;     `(#:tests? #f
783
;       #:jdk ,icedtea-8
784
;       #:jar-name (string-append ,name "-" ,version ".jar")
785
;       #:source-dir "core/src/main/java"))
786
;    (propagated-inputs
787
;     `(("java-error-prone-annotations" ,java-error-prone-annotations)
788
;       ("java-error-prone-annotation" ,java-error-prone-annotation)
789
;       ("java-jsr305" ,java-jsr305)
790
;       ("java-auto-value" ,java-auto-value)
791
;       ("java-checker-framework" ,java-checker-framework)
792
;       ("java-guava" ,java-guava)))))
793
794
(define-public java-error-prone-annotation
795
  (package
796
    (inherit java-error-prone)
797
    (name "java-error-prone-annotation")
798
    (version (package-version java-error-prone))
799
    (arguments
800
     `(#:tests? #f
801
       #:jar-name (string-append ,name "-" ,version ".jar")
802
       #:source-dir "annotation/src/main/java"))
803
    (propagated-inputs
804
     `(("java-jsr305" ,java-jsr305)
805
       ("java-guava" ,java-guava)))))
806
807
(define-public java-error-prone-annotations
808
  (package
809
    (inherit java-error-prone)
810
    (name "java-error-prone-annotations")
811
    (version (package-version java-error-prone))
812
    (arguments
813
     `(#:tests? #f
814
       #:jar-name (string-append ,name "-" ,version ".jar")
815
       #:source-dir "annotations/src/main/java"))
816
    (propagated-inputs
817
     `(("java-jsr305" ,java-jsr305)))))
818
819
;; Java-j2objc is for OS X, but the annotations sub-project is used by other
820
;; packages here, such as guava.
821
(define-public java-j2objc-annotations
822
  (package
823
    (name "java-j2objc-annotations")
824
    (version "1.3.1")
825
    (source (origin
826
              (method url-fetch)
827
              (uri (string-append "https://github.com/google/j2objc/archive/"
828
                                  version ".tar.gz"))
829
              (file-name (string-append name "-" version ".tar.gz"))
830
              (sha256
831
               (base32
832
                "0d5spbr1whw2afg6mknyr7ifm6xivn3bbvnzjxva2zzkyq944hv0"))))
833
    (build-system ant-build-system)
834
    (arguments
835
     `(#:tests? #f
836
       #:jar-name (string-append ,name "-" ,version ".jar")
837
       #:source-dir "annotations/src/main/java"))
838
    (synopsis "")
839
    (description "")
840
    (home-page "https://github.com/google/j2objc")
841
    (license license:asl2.0)))
842
843
;; TODO: animal-sniffer-enforcer-rule and animal-sniffer-maven-plugin depend
844
;; on maven.
845
(define-public java-animal-sniffer
846
  (package
847
    (name "java-animal-sniffer")
848
    (version "1.15")
849
    (source (origin
850
              (method url-fetch)
851
              (uri (string-append "https://github.com/mojohaus/animal-sniffer/"
852
                                  "archive/animal-sniffer-parent-"
853
                                  version ".tar.gz"))
854
              (file-name (string-append name "-" version ".tar.gz"))
855
              (sha256
856
               (base32
857
                "1350yl003y1fjzdwis0dg5jhi5kggk2sxnkv9821z5janw4p986m"))))
858
    (build-system ant-build-system)
859
    (propagated-inputs
860
     `(("asm" ,java-asm)))
861
    (arguments
862
     `(#:tests? #f
863
       #:jar-name (string-append ,name "-" ,version ".jar")
864
       #:source-dir "animal-sniffer/src/main/java"))
865
    (home-page "http://www.mojohaus.org/animal-sniffer")
866
    (synopsis "")
867
    (description "")
868
    (license license:asl2.0)))
869
870
(define-public java-animal-sniffer-annotations
871
  (package
872
    (inherit java-animal-sniffer)
873
    (name "java-animal-sniffer-annotations")
874
    (version (package-version java-animal-sniffer))
875
    (propagated-inputs '())
876
    (arguments
877
     `(#:tests? #f
878
       #:jar-name (string-append ,name "-" ,version ".jar")
879
       #:source-dir "animal-sniffer-annotations/src/main/java"))))
880
881
(define-public java-animal-sniffer-ant-tasks
882
  (package
883
    (inherit java-animal-sniffer)
884
    (name "java-animal-sniffer-ant-tasks")
885
    (version (package-version java-animal-sniffer))
886
    (propagated-inputs
887
     `(("animal-sniffer" ,java-animal-sniffer)))
888
    (arguments
889
     `(#:tests? #f
890
       #:jar-name (string-append ,name "-" ,version ".jar")
891
       #:source-dir "animal-sniffer-ant-tasks/src/main/java"))))
892
893
(define-public java-boot-classpath-detector
894
  (package
895
    (inherit java-animal-sniffer)
896
    (name "java-boot-classpath-detector")
897
    (version (package-version java-animal-sniffer))
898
    (propagated-inputs '())
899
    (arguments
900
     `(#:tests? #f
901
       #:jar-name (string-append ,name "-" ,version ".jar")
902
       #:source-dir "java-boot-classpath-detector/src/main/java"))))
903
904
(define-public java-guava
905
  (package
906
    (name "java-guava")
907
    (version "20.0")
908
    (source (origin
909
              (method url-fetch)
910
              (uri (string-append "https://github.com/google/guava/archive/v"
911
                                  version ".tar.gz"))
912
              (file-name (string-append name "-" version ".tar.gz"))
913
              (sha256
914
               (base32
915
                "1kasavj973iblj1fj35gzbywhkljrnbjpymgqyqaibbbmmbzff8s"))))
916
    (build-system ant-build-system)
917
    (arguments
918
     `(#:jar-name (string-append ,name "-" ,version ".jar")
919
       #:source-dir "guava/src"
920
       #:tests? #f))
921
    (inputs
922
     `(("java-jsr305" ,java-jsr305)
923
       ("java-j2objc-annotations" ,java-j2objc-annotations)
924
       ("java-animal-sniffer-annotations" ,java-animal-sniffer-annotations)
925
       ("java-error-prone-annotations" ,java-error-prone-annotations)))
926
    (home-page "https://github.com/google/guava")
927
    (synopsis "")
928
    (description "")
929
    (license license:asl2.0)))
930
931
(define-public java-joda-convert
932
  (package
933
    (name "java-joda-convert")
934
    (version "1.8.1")
935
    (source (origin
936
              (method url-fetch)
937
              (uri (string-append "https://github.com/JodaOrg/joda-convert/archive/v"
938
                                  version ".tar.gz"))
939
              (file-name (string-append name "-" version ".tar.gz"))
940
              (sha256
941
               (base32
942
                "1di9chp0pgvd2gxsmdaxhldwns9a2ss9705jmn97mdd69cg5zcnc"))))
943
    (build-system ant-build-system)
944
    (arguments
945
     `(#:jar-name (string-append ,name "-" ,version ".jar")
946
       #:source-dir "src/main/java"
947
       #:tests? #f))
948
    (inputs
949
     `(("java-google-collect" ,java-google-collect)))
950
    (native-inputs
951
     `(("junit" ,java-junit)))
952
    (home-page "")
953
    (synopsis "")
954
    (description "")
955
    (license license:asl2.0)))
956
957
(define-public java-joda-time
958
  (package
959
    (name "java-joda-time")
960
    (version "2.9.9")
961
    (source (origin
962
              (method url-fetch)
963
              (uri (string-append "https://github.com/JodaOrg/joda-time/archive/v"
964
                                  version ".tar.gz"))
965
              (file-name (string-append name "-" version ".tar.gz"))
966
              (sha256
967
               (base32
968
                "1i9x91mi7yg2pasl0k3912f1pg46n37sps6rdb0v1gs8hj9ppwc1"))))
969
    (build-system ant-build-system)
970
    (arguments
971
     `(#:jar-name (string-append ,name "-" ,version ".jar")
972
       #:source-dir "src/main/java"
973
       #:tests? #f))
974
    (inputs
975
     `(("java-joda-convert" ,java-joda-convert)))
976
    (native-inputs
977
     `(("junit" ,java-junit)))
978
    (home-page "")
979
    (synopsis "")
980
    (description "")
981
    (license license:asl2.0)))
982
983
(define-public java-xstream
984
  (package
985
    (name "java-xstream")
986
    (version "1.4.9")
987
    (source (origin
988
              (method url-fetch)
989
              (uri (string-append "https://repo1.maven.org/maven2/com/thoughtworks"
990
                                  "/xstream/xstream-distribution/" version
991
                                  "/xstream-distribution-" version "-src.zip"))
992
              (file-name (string-append name "-" version ".zip"))
993
              (sha256
994
               (base32
995
                "1cq9j9h839wc6pkrgd9bd7y94a3zrj1j741i134izqs9xx2b54fi"))))
996
    (build-system ant-build-system)
997
    (arguments
998
     `(#:jar-name (string-append ,name "-" ,version ".jar")
999
       #:tests? #f
1000
       #:source-dir "xstream/src/java"))
1001
    (native-inputs
1002
     `(("unzip" ,unzip)))
1003
    (home-page "https://x-stream.github.io")
1004
    (synopsis "")
1005
    (description "")
1006
    (license license:x11)))
1007
1008
;; vanished from the face of the earth :/
1009
(define-public java-jsonp
1010
  (package
1011
    (name "java-jsonp")
1012
    (version "1.0.4")
1013
    (source (origin
1014
              (method git-fetch)
1015
              (uri (git-reference
1016
                     (url "git://java.net/jsonp~git")
1017
                     (commit "a586e706aea82dc80fb05bdf59f2a25150ee1801")))
1018
              (file-name (string-append name "-" version))
1019
              (sha256
1020
               (base32
1021
                "01r4syivcywpvxkr1hn0az9316pr7qpnx154zzzw0nijfmdlbw7n"))))
1022
    (build-system ant-build-system)
1023
    (arguments
1024
     `(#:jar-name (string-append ,name "-" ,version ".jar")
1025
       #:tests? #f
1026
       #:source-dir "api/src"))
1027
    (home-page "https://jsonp.java.net")
1028
    (synopsis "")
1029
    (description "")
1030
    (license (list license:gpl2
1031
                   ;; actually CDDL 1.1
1032
                   license:cddl1.0))))
1033
1034
;; Can only be built with gradle.
1035
(define-public groovy
1036
  (package
1037
    (name "groovy")
1038
    (version "2.4.10")
1039
    (source (origin
1040
              (method url-fetch)
1041
              (uri (string-append "https://github.com/apache/groovy/archive/GROOVY_"
1042
                                  "2_4_10.tar.gz"))
1043
              (file-name (string-append name "-" version ".tar.gz"))
1044
              (sha256
1045
               (base32
1046
                "0wapzqwpx4bh2fsqpzf3haakjz6wvfjx1vd9a4spavhlrjqk2pbb"))))
1047
    (build-system ant-build-system)
1048
    (arguments
1049
     `(#:jar-name "groovy.jar"
1050
       #:tests? #f))
1051
    (native-inputs
1052
     `(("junit" ,java-junit)))
1053
    (inputs
1054
     `(("commons-cli" ,java-commons-cli)
1055
       ("antlr" ,antlr3)
1056
       ("asm" ,java-asm)))
1057
    (home-page "")
1058
    (synopsis "")
1059
    (description "")
1060
    (license (list license:gpl2
1061
                   ;; actually CDDL 1.1
1062
                   license:cddl1.0))))
1063
1064
;; requires jline, javax.servlet, org.fusesource.jansi, org.livetribe,
1065
;;   com.thoughtworks.xstream, org.apache.ivy, bsf
1066
;;   antlr
1067
(define-public groovy-1.8.9
1068
  (package
1069
    (inherit groovy)
1070
    (name "groovy")
1071
    (version "1.8.9")
1072
    (source (origin
1073
              (method url-fetch)
1074
              (uri (string-append "https://github.com/apache/groovy/archive/GROOVY_"
1075
                                  "1_8_9.tar.gz"))
1076
              (file-name (string-append name "-" version ".tar.gz"))
1077
              (sha256
1078
               (base32
1079
                "16z3jv5yw11wwwzbs6x41g83gqazhngg30ys2kpy7cpfm3rsqi71"))))
1080
    (arguments
1081
     `(#:jar-name (string-append ,name "-" ,version ".jar")
1082
       #:tests? #f
1083
       #:source-dir "src/main"))))
1084
1085
1086
(define-public antlr3-3.4
1087
  (package
1088
    (name "antlr3")
1089
    (version "3.4")
1090
    (source (origin
1091
              (method url-fetch)
1092
              (uri (string-append "https://github.com/antlr/website-antlr3/raw/"
1093
                                  "gh-pages/download/antlr-"
1094
                                  version ".tar.gz"))
1095
              (sha256
1096
               (base32
1097
                "1cwfswpk3jlzl1dhc6b6586srza8q0bbzwlxcq136p29v62fjrb3"))))
1098
    (build-system ant-build-system)
1099
    (arguments
1100
     `(#:jar-name (string-append ,name "-" ,version ".jar")
1101
       #:source-dir "tool/src/main/java:runtime/Java/src/main/java:tool/src/main/antlr3"
1102
       #:tests? #f
1103
       #:phases
1104
       (modify-phases %standard-phases
1105
         (add-after 'install 'bin-install
1106
           (lambda* (#:key inputs outputs #:allow-other-keys)
1107
             (let ((jar (string-append (assoc-ref outputs "out") "/share/java"))
1108
                   (bin (string-append (assoc-ref outputs "out") "/bin")))
1109
               (mkdir-p bin)
1110
               (with-output-to-file (string-append bin "/antlr3")
1111
                 (lambda _
1112
                   (display
1113
                     (string-append "#!/bin/sh\n"
1114
                                    "java -cp " jar "/antlr3-3.3.jar:"
1115
                                    (string-concatenate
1116
                                      (find-files (assoc-ref inputs "stringtemplate")
1117
                                                  ".*\\.jar"))
1118
                                    ":"
1119
                                    (string-concatenate
1120
                                      (find-files (string-append (assoc-ref inputs "antlr") "/lib")
1121
                                                  ".*\\.jar"))
1122
                                    " org.antlr.Tool $*"))))
1123
               (chmod (string-append bin "/antlr3") #o755))))
1124
         (add-before 'build 'generate-grammar
1125
           (lambda _
1126
             (chdir "tool/src/main/antlr3/org/antlr/grammar/v3/")
1127
             (for-each (lambda (file)
1128
                         (display file)
1129
                         (newline)
1130
                         (system* "antlr3" file))
1131
                       '("ActionAnalysis.g" "ActionTranslator.g" "ANTLR.g"
1132
                         "ANTLRTreePrinter.g" "ANTLRv3.g" "ANTLRv3Tree.g"
1133
                         "AssignTokenTypesWalker.g" "CodeGenTreeWalker.g"
1134
                         "DefineGrammarItemsWalker.g" "LeftRecursiveRuleWalker.g"
1135
                         "TreeToNFAConverter.g"))
1136
             (chdir "../../../../../../../..")
1137
             (system* "antlr" "-o" "tool/src/main/java/org/antlr/tool"
1138
                      "tool/src/main/java/org/antlr/tool/serialize.g")
1139
             (substitute* "tool/src/main/java/org/antlr/tool/LeftRecursiveRuleAnalyzer.java"
1140
               (("import org.antlr.grammar.v3.\\*;") "import org.antlr.grammar.v3.*;
1141
import org.antlr.grammar.v3.ANTLRTreePrinter;"))
1142
             (substitute* "tool/src/main/java/org/antlr/tool/Grammar.java"
1143
               (("import org.antlr.grammar.v3.\\*;")
1144
                "import org.antlr.grammar.v3.*;\n
1145
import org.antlr.grammar.v3.TreeToNFAConverter;\n
1146
import org.antlr.grammar.v3.DefineGrammarItemsWalker;\n
1147
import org.antlr.grammar.v3.ANTLRTreePrinter;"))
1148
             (substitute* "tool/src/main/java/org/antlr/tool/ErrorManager.java"
1149
               (("case NO_SUCH_ATTRIBUTE_PASS_THROUGH:") ""))
1150
             (substitute* "tool/src/main/antlr3/org/antlr/grammar/v3/ANTLRParser.java"
1151
               (("public Object getTree") "public GrammarAST getTree"))
1152
             (substitute* "tool/src/main/antlr3/org/antlr/grammar/v3/ANTLRv3Parser.java"
1153
               (("public Object getTree") "public CommonTree getTree"))))
1154
         (add-before 'build 'fix-build-xml
1155
           (lambda _
1156
             (substitute* "build.xml"
1157
               (("<exec") "<copy todir=\"${classes.dir}\">
1158
<fileset dir=\"tool/src/main/resources\">
1159
<include name=\"**/*.stg\"/>
1160
<include name=\"**/*.st\"/>
1161
<include name=\"**/*.sti\"/>
1162
<include name=\"**/STLexer.tokens\"/>
1163
</fileset>
1164
</copy><exec")))))))
1165
    (native-inputs
1166
     `(("antlr" ,antlr2)
1167
       ("antlr3" ,antlr3-3.3)))
1168
    (inputs
1169
     `(("junit" ,java-junit)))
1170
    (propagated-inputs
1171
     `(("stringtemplate" ,stringtemplate3)
1172
       ("stringtemplate4" ,stringtemplate4)
1173
       ("antlr" ,antlr2)
1174
       ("antlr3" ,antlr3-3.1)))
1175
    (home-page "http://www.stringtemplate.org")
1176
    (synopsis "")
1177
    (description "")
1178
    (license license:bsd-3)))
1179
1180
(define-public libantlr3c
1181
  (package
1182
    (inherit antlr3)
1183
    (name "libantlr3c")
1184
    (build-system gnu-build-system)
1185
    (native-inputs
1186
     `(("autoconf" ,autoconf)
1187
       ("automake" ,automake)
1188
       ("libtool" ,libtool)))
1189
    (propagated-inputs
1190
     `(("antlr" ,antlr3)))
1191
    (arguments
1192
     `(#:configure-flags (list "--enable-64bit" "--disable-static")
1193
       #:phases
1194
       (modify-phases %standard-phases
1195
         (add-before 'configure 'autoreconf
1196
           (lambda _
1197
             (chdir "runtime/C")
1198
             (system* "libtoolize")
1199
             (system* "autoreconf" "-fiv"))))))))
1200
1201
(define-public java-json
1202
  (package
1203
    (name "java-json")
1204
    (version "1.1.0-M2")
1205
    (source (origin
1206
              (method url-fetch)
1207
              (uri (string-append "https://repo1.maven.org/maven2/javax/json/"
1208
                                  "javax.json-api/" version "/javax.json-api-"
1209
                                  version "-sources.jar"))
1210
              (file-name (string-append name "-" version ".jar"))
1211
              (sha256
1212
               (base32
1213
                "0gam8w52xjbmfc1inviyajk36jnj3lg4bzwhw05iq52kadycy6v0"))))
1214
    (build-system ant-build-system)
1215
    (arguments
1216
     `(#:jar-name (string-append ,name "-" ,version ".jar")
1217
       #:tests? #f
1218
       #:jdk ,icedtea-8
1219
       #:source-dir "src"
1220
       #:phases
1221
       (modify-phases %standard-phases
1222
         (add-after 'unpack 'remove-module-info
1223
           (lambda _
1224
             (format #t "~a\n" (getcwd))
1225
             (delete-file "src/module-info.java"))))))
1226
    (home-page "")
1227
    (synopsis "")
1228
    (description "")
1229
    (license license:asl2.0)))
1230
1231
;; We still need one file to be generated with ST4.
1232
;; tool/src/org/antlr/v4/unicode/UnicodeDataTemplateController.java
1233
;; See https://github.com/kevinbirch/string-template-maven-plugin
1234
;; We should take this and adapt to get a standalone tool.
1235
(define-public java-antlr4
1236
  (package
1237
    (name "java-antlr4")
1238
    (version "4.7")
1239
    (source (origin
1240
              (method url-fetch)
1241
              (uri (string-append "https://github.com/antlr/antlr4/archive/"
1242
                                  version ".tar.gz"))
1243
              (file-name (string-append name "-" version ".tar.gz"))
1244
              (sha256
1245
               (base32
1246
                "0y7lzkvx9wbbmwg45mb4icx7i66z6894qfygrbbs26sr5xxyml9h"))))
1247
    (build-system ant-build-system)
1248
    (arguments
1249
     `(#:jar-name (string-append ,name "-" ,version ".jar")
1250
       #:source-dir "runtime/Java/src:tool/src"
1251
       #:jdk ,icedtea-8
1252
       #:tests? #f
1253
       #:phases
1254
       (modify-phases %standard-phases
1255
         (add-before 'build 'generate-grammar
1256
           (lambda* (#:key inputs #:allow-other-keys)
1257
             (with-directory-excursion "tool/src/org/antlr/v4/parse"
1258
               (for-each (lambda (file)
1259
                           (format #t "~a\n" file)
1260
                           (system* "antlr3" file))
1261
                         '("ANTLRLexer.g" "ANTLRParser.g" "BlockSetTransformer.g"
1262
                           "GrammarTreeVisitor.g" "ATNBuilder.g"
1263
                           "ActionSplitter.g" "LeftRecursiveRuleWalker.g")))
1264
             (with-directory-excursion "tool/src/org/antlr/v4/codegen"
1265
               (copy-file "../parse/ANTLRParser.tokens" "ANTLRParser.tokens")
1266
               (format #t "SourceGenTriggers.g\n")
1267
               (system* "antlr3" "SourceGenTriggers.g")))))))
1268
    (inputs
1269
     `(("antlr3" ,antlr3)
1270
       ("icu4j" ,java-icu4j)
1271
       ("java-json" ,java-json)
1272
       ("treelayout" ,java-treelayout)
1273
       ("stringtemplate4" ,stringtemplate4)))
1274
    (home-page "https://antlr.org")
1275
    (synopsis "")
1276
    (description "")
1277
    (license license:bsd-3)))
1278
1279
;; requires groovy 2.4.7.
1280
;(define-public gradle
1281
;  (package
1282
;    (name "gradle")
1283
;    (version "3.4.1")
1284
;    (source (origin
1285
;              (method url-fetch)
1286
;              (uri (string-append "https://github.com/gradle/gradle/archive/v"
1287
;                                  version ".tar.gz"))
1288
;              (file-name (string-append name "-" version ".tar.gz"))
1289
;              (sha256
1290
;               (base32 "0fq30k51mkixg31z3d4fjq3zbnyjml4i530px6n1n947mqk3rgyl"))))
1291
;    (build-system ant-build-system)
1292
;    (arguments
1293
;     `(#:phases
1294
;       (modify-phases %standard-phases
1295
;         (replace 'build
1296
;           (lambda* _
1297
;             (system* "sh" "-x" "gradlew" "prBuild" "-x" "integTest" "--continue"
1298
;                      "--stacktrace"))))))
1299
;             ;(system* "sh" "-x" "travisci_build.sh"))))))
1300
;    (home-page "")
1301
;    (synopsis "Build system")
1302
;    (description "Build system")
1303
;    (license license:asl2.0)))
1304
;
1305
;;; Requires gradle.
1306
;(define-public android-anysoft-keyboard
1307
;  (package
1308
;    (name "android-anysoft-keyboard")
1309
;    (version "1.8-r9")
1310
;    (source (origin
1311
;              (method url-fetch)
1312
;              (uri (string-append "https://github.com/AnySoftKeyboard/"
1313
;                                  "AnySoftKeyboard/archive/" version ".tar.gz"))
1314
;              (file-name (string-append name "-" version ".tar.gz"))
1315
;              (sha256
1316
;               (base32
1317
;                "1mrin9mw1rs23d25v8yx4jprx7j05zir6756sqvk4myxbkcp8mag"))))
1318
;    (build-system ant-build-system)
1319
;    (home-page "https://anysoftkeyboard.github.io/")
1320
;    (synopsis "Alternative on-screen keyboard for multiple languages")
1321
;    (description "Alternative on-screen keyboard for multiple languages.")
1322
;    (license license:asl2.0)))
1323