guix-more/more/packages/java.scm

java.scm

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