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