add multiple java packages, some are broken.

Julien LepillerSun Apr 09 23:32:54+0200 2017

2a10555

add multiple java packages, some are broken. Most notable contribution is the antlr3 parser. This work depneds on a patch to the ant-build-system that is not yet pushed.

README.md

3838
3939
* _pootle_: A community translation server
4040
41+
Java
42+
----
43+
44+
* _antlr3_: A parser generator
45+
* _josm_: An openstreetmap editor
46+
4147
Current work
4248
============
4349
4450
Using skia with icecat
4551
----------------------
4652
47-
Currently working on this. I have a recipe for google-gn, a tool required by
48-
skia to be built. It is contained in the chromium source code, so I may as
49-
well add chromium on the way.
53+
Currently working on this. I have skia, but it requires some tricks to actually
54+
have icecat build with it.
55+
56+
Adding gradle and groovy
57+
------------------------
58+
59+
Gradle is partially written in groovy, which itself is partially written in
60+
groovy. I currently am working on some dependencies, but I don't have a clear
61+
plan for groovy.

more/packages/java.scm

2626
  #:use-module (guix build-system ant)
2727
  #:use-module (guix build-system gnu)
2828
  #:use-module (guix build-system trivial)
29+
  #:use-module (gnu packages base)
30+
  #:use-module (gnu packages zip)
2931
  #:use-module (gnu packages java))
3032
3133
(define-public josm

7476
    (description "OSM editor.")
7577
    (license license:gpl2+)))
7678
79+
(define-public java-icu4j
80+
  (package
81+
    (name "java-icu4j")
82+
    (version "58.2")
83+
    (source (origin
84+
              (method url-fetch)
85+
              (uri (string-append 
86+
                     "http://download.icu-project.org/files/icu4j/" version
87+
                     "/icu4j-"
88+
                     (string-map (lambda (x) (if (char=? x #\.) #\_ x)) version)
89+
                     ".tgz"))
90+
              (sha256
91+
               (base32
92+
                "1mvqjlc3cbaraa0bv0vyl44xf0x6n81inqsh69bl7f88iycfpns9"))))
93+
    (build-system ant-build-system)
94+
    (arguments
95+
     `(#:tests? #f ; Requires java-ivy that we don't have yet.
96+
       #:phases
97+
       (modify-phases %standard-phases
98+
         ;; icu4j archive contains its sources directly at the top, not in
99+
         ;; a subdirectory as usual.
100+
         (add-after 'unpack 'chdir
101+
           (lambda _
102+
             (chdir "..")))
103+
         (replace 'install
104+
           (lambda* (#:key outputs #:allow-other-keys)
105+
             (let ((share (string-append (assoc-ref outputs "out") "/share/java")))
106+
               (mkdir-p share)
107+
               (copy-file "icu4j-charset.jar" (string-append share "/icu4j-charset.jar"))
108+
               (copy-file "icu4j.jar" (string-append share "/icu4j.jar"))))))))
109+
    (home-page "http://site.icu-project.org/")
110+
    (synopsis "")
111+
    (description "")
112+
    (license license:x11)))
113+
114+
(define-public java-treelayout
115+
  (package
116+
    (name "java-treelayout")
117+
    (version "1.0.3")
118+
    (source (origin
119+
              (method url-fetch)
120+
              (uri (string-append 
121+
                     "https://github.com/abego/treelayout/archive/v" version
122+
                     ".tar.gz"))
123+
              (file-name (string-append name "-" version ".tar.gz"))
124+
              (sha256
125+
               (base32
126+
                "0djdw7j66lqjx8bx9zja0hsx10c6nsj3z0z20jmavwfr6bpp0345"))))
127+
    (build-system ant-build-system)
128+
    (arguments
129+
     `(#:jar-name (string-append ,name "-" ,version ".jar")
130+
       #:tests? #f
131+
       #:phases
132+
       (modify-phases %standard-phases
133+
         ;; icu4j archive contains its sources directly at the top, not in
134+
         ;; a subdirectory as usual.
135+
         (add-after 'unpack 'chdir
136+
           (lambda _
137+
             (chdir "org.abego.treelayout"))))))
138+
    (inputs
139+
     `(("junit" ,java-junit)))
140+
    (home-page "http://treelayout.sourceforge.net")
141+
    (synopsis "")
142+
    (description "")
143+
    (license license:bsd-3)))
144+
77145
(define-public java-commons-cli
78146
  (package
79147
    (name "java-commons-cli")

120188
    (description "")
121189
    (license license:asl2.0)))
122190
191+
(define-public java-jsr305
192+
  (package
193+
    (name "java-jsr305")
194+
    (version "3.0.2")
195+
    (source (origin
196+
              (method git-fetch)
197+
              (uri (git-reference
198+
                     (url "https://github.com/amaembo/jsr-305.git")
199+
                     (commit "d7734b13c61492982784560ed5b4f4bd6cf9bb2c")))
200+
              (file-name (string-append name "-" version))
201+
              (sha256
202+
               (base32
203+
                "1wk159136pgc6i54drbq2whazfmdilvfqlxj3k19s9dfwbayf621"))))
204+
    (build-system ant-build-system)
205+
    (arguments
206+
     `(#:jar-name (string-append ,name "-" ,version ".jar")
207+
       #:src-dir "ri/src/main/java"
208+
       #:tests? #f))
209+
    (home-page "https://github.com/amaembo/jsr-305")
210+
    (synopsis "")
211+
    (description "")
212+
    (license license:bsd-3)))
213+
214+
(define-public java-checker-framework
215+
  (package
216+
    (name "java-checker-framework")
217+
    (version "2.1.10")
218+
    (source (origin
219+
              (method url-fetch)
220+
              (uri (string-append "https://github.com/typetools/checker-framework/"
221+
                                  "archive/checker-framework-" version ".tar.gz"))
222+
              (file-name (string-append name "-" version ".tar.gz"))
223+
              (sha256
224+
               (base32
225+
                "1infq1hr53zi9bd81v90rn3iripbinb3w145m3xblq8yvnfrxy20"))))
226+
    (build-system ant-build-system)
227+
    (arguments
228+
     `(#:jar-name (string-append ,name "-" ,version ".jar")
229+
       #:src-dir "dataflow/src:javacutil/src"
230+
       #:jdk ,icedtea-8
231+
       #:tests? #f))
232+
    (home-page "https://checkerframework.org")
233+
    (synopsis "")
234+
    (description "")
235+
    (license license:gpl2))); with classpath exception
236+
237+
(define-public java-javapoet
238+
  (package
239+
    (name "java-javapoet")
240+
    (version "1.8.0")
241+
    (source (origin
242+
              (method url-fetch)
243+
              (uri (string-append "https://github.com/square/javapoet/archive/javapoet-"
244+
                                  version ".tar.gz"))
245+
              (file-name (string-append name "-" version ".tar.gz"))
246+
              (sha256
247+
               (base32
248+
                "0xpjbh8wcyj9yd9hb936ia5g6l2q1jlyqjvwcc290cwjrz7crb93"))))
249+
    (build-system ant-build-system)
250+
    (arguments
251+
     `(#:jar-name (string-append ,name "-" ,version ".jar")
252+
       #:src-dir "src/main/java"
253+
       #:jdk ,icedtea-8
254+
       #:tests? #f))
255+
    (home-page "https://github.com/square/javapoet")
256+
    (synopsis "")
257+
    (description "")
258+
    (license license:asl2.0)))
259+
260+
(define-public java-auto-value
261+
  (package
262+
    (name "java-auto-value")
263+
    (version "1.4.1")
264+
    (source (origin
265+
              (method url-fetch)
266+
              (uri (string-append "https://github.com/google/auto/archive/auto-value-"
267+
                                  version ".tar.gz"))
268+
              (file-name (string-append name "-" version ".tar.gz"))
269+
              (sha256
270+
               (base32
271+
                "1qd59bwa56bynsdxfbgm40i7ndrj599wflza214kzigk16nprc1m"))))
272+
    (build-system ant-build-system)
273+
    (arguments
274+
     `(#:jar-name (string-append ,name "-" ,version ".jar")
275+
       #:src-dir "value/src/main/java:common/src/main/java:service/src/main/java"
276+
       #:jdk ,icedtea-8
277+
       #:tests? #f))
278+
    (inputs
279+
     `(("guava" ,java-guava)
280+
       ("javapoet" ,java-javapoet)))
281+
    (home-page "https://github.com/google/auto/tree/master/value")
282+
    (synopsis "")
283+
    (description "")
284+
    (license license:asl2.0)))
285+
286+
;; https://github.com/KengoTODA/java-diff-utils ?
287+
;; com.sun.tools.javac.code.Scope.LookupKind.NON_RECURSIVE
288+
;; com.sun.source.tree.PackageTree
289+
;; com.sun.tools.javac.tree.JCTree.JCPackageDecl
290+
(define-public java-error-prone
291+
  (package
292+
    (name "java-error-prone")
293+
    (version "2.0.19")
294+
    (source (origin
295+
              (method url-fetch)
296+
              (uri (string-append "https://github.com/google/error-prone/archive/v"
297+
                                  version ".tar.gz"))
298+
              (file-name (string-append name "-" version ".tar.gz"))
299+
              (patches (search-patches "java-error-prone-add-build.xml.patch"))
300+
              (sha256
301+
               (base32
302+
                "00igy7a6aylswxdcklj9021g2s8bvsvrysagqyd8cibm4pimxrnk"))))
303+
    (build-system ant-build-system)
304+
    (arguments
305+
     `(#:tests? #f
306+
       #:jdk ,icedtea-8
307+
       #:phases
308+
       (modify-phases %standard-phases
309+
         (add-before 'build 'copy-internal
310+
           (lambda _
311+
             (mkdir-p "ant/src/main/java/com/google/errorprone/internal")
312+
             (copy-file
313+
               "core/src/main/java/com/google/errorprone/internal/NonDelegatingClassLoader.java"
314+
               "ant/src/main/java/com/google/errorprone/internal/NonDelegatingClassLoader.java"))))))
315+
    (inputs
316+
     `(("java-jsr305" ,java-jsr305)
317+
       ("java-auto-value" ,java-auto-value)
318+
       ("java-checker-framework" ,java-checker-framework)
319+
       ("java-guava" ,java-guava)))
320+
    (home-page "https://github.com/google/guava")
321+
    (synopsis "")
322+
    (description "")
323+
    (license license:asl2.0)))
324+
325+
(define-public java-error-prone-annotations
326+
  (package
327+
    (inherit java-error-prone)
328+
    (name "java-error-prone-annotations")
329+
    (version "2.0.19")
330+
    (arguments
331+
     `(#:tests? #f
332+
       #:jar-name (string-append ,name "-" ,version ".jar")
333+
       #:src-dir "annotations/src"))
334+
    (inputs
335+
     `(("java-jsr305" ,java-jsr305)))))
336+
337+
(define-public java-j2objc
338+
  (package
339+
    (name "java-j2objc")
340+
    (version "1.3.1")
341+
    (source (origin
342+
              (method url-fetch)
343+
              (uri (string-append "https://github.com/google/j2objc/archive/"
344+
                                  version ".tar.gz"))
345+
              (file-name (string-append name "-" version ".tar.gz"))
346+
              (patches (search-patches "java-j2objc-add-build.xml.patch"))
347+
              (sha256
348+
               (base32
349+
                "0d5spbr1whw2afg6mknyr7ifm6xivn3bbvnzjxva2zzkyq944hv0"))))
350+
    (build-system ant-build-system)
351+
    (arguments
352+
     `(#:tests? #f))
353+
    (home-page "http://j2objc.org")
354+
    (synopsis "")
355+
    (description "")
356+
    (license license:asl2.0)))
357+
358+
(define-public java-j2objc-annotations
359+
  (package
360+
    (inherit java-j2objc)
361+
    (name "java-j2objc-annotations")
362+
    (version "1.3.1")
363+
    (arguments
364+
     `(#:tests? #f
365+
       #:jar-name (string-append ,name "-" ,version ".jar")
366+
       #:src-dir "annotations/src/main/java"))))
367+
368+
(define-public java-animal-sniffer
369+
  (package
370+
    (name "java-animal-sniffer")
371+
    (version "1.15")
372+
    (source (origin
373+
              (method url-fetch)
374+
              (uri (string-append "https://github.com/mojohaus/animal-sniffer/"
375+
                                  "archive/animal-sniffer-parent-"
376+
                                  version ".tar.gz"))
377+
              (patches (search-patches "java-animal-sniffer-add-build.xml.patch"))
378+
              (file-name (string-append name "-" version ".tar.gz"))
379+
              (sha256
380+
               (base32
381+
                "1350yl003y1fjzdwis0dg5jhi5kggk2sxnkv9821z5janw4p986m"))))
382+
    (build-system ant-build-system)
383+
    (arguments
384+
     `(#:tests? #f))
385+
    (home-page "http://www.mojohaus.org/animal-sniffer")
386+
    (synopsis "")
387+
    (description "")
388+
    (license license:asl2.0)))
389+
390+
(define-public java-animal-sniffer-annotations
391+
  (package
392+
    (inherit java-animal-sniffer)
393+
    (name "java-animal-sniffer-annotations")
394+
    (version "1.15")
395+
    (arguments
396+
     `(#:tests? #f
397+
       #:jar-name (string-append ,name "-" ,version ".jar")
398+
       #:src-dir "animal-sniffer-annotations/src/main/java"))))
399+
400+
(define-public java-guava
401+
  (package
402+
    (name "java-guava")
403+
    (version "20.0")
404+
    (source (origin
405+
              (method url-fetch)
406+
              (uri (string-append "https://github.com/google/guava/archive/v"
407+
                                  version ".tar.gz"))
408+
              (file-name (string-append name "-" version ".tar.gz"))
409+
              (sha256
410+
               (base32
411+
                "1kasavj973iblj1fj35gzbywhkljrnbjpymgqyqaibbbmmbzff8s"))))
412+
    (build-system ant-build-system)
413+
    (arguments
414+
     `(#:jar-name (string-append ,name "-" ,version ".jar")
415+
       #:src-dir "guava/src"
416+
       #:tests? #f))
417+
    (inputs
418+
     `(("java-jsr305" ,java-jsr305)
419+
       ("java-j2objc-annotations" ,java-j2objc-annotations)
420+
       ("java-animal-sniffer-annotations" ,java-animal-sniffer-annotations)
421+
       ("java-error-prone-annotations" ,java-error-prone-annotations)))
422+
    (home-page "https://github.com/google/guava")
423+
    (synopsis "")
424+
    (description "")
425+
    (license license:asl2.0)))
426+
427+
(define-public java-joda-convert
428+
  (package
429+
    (name "java-joda-convert")
430+
    (version "1.8.1")
431+
    (source (origin
432+
              (method url-fetch)
433+
              (uri (string-append "https://github.com/JodaOrg/joda-convert/archive/v"
434+
                                  version ".tar.gz"))
435+
              (file-name (string-append name "-" version ".tar.gz"))
436+
              (sha256
437+
               (base32
438+
                "1di9chp0pgvd2gxsmdaxhldwns9a2ss9705jmn97mdd69cg5zcnc"))))
439+
    (build-system ant-build-system)
440+
    (arguments
441+
     `(#:jar-name (string-append ,name "-" ,version ".jar")
442+
       #:src-dir "src/main/java"
443+
       #:tests? #f))
444+
    (inputs
445+
     `(("java-google-collect" ,java-google-collect)))
446+
    (native-inputs
447+
     `(("junit" ,java-junit)))
448+
    (home-page "")
449+
    (synopsis "")
450+
    (description "")
451+
    (license license:asl2.0)))
452+
453+
(define-public java-joda-time
454+
  (package
455+
    (name "java-joda-time")
456+
    (version "2.9.9")
457+
    (source (origin
458+
              (method url-fetch)
459+
              (uri (string-append "https://github.com/JodaOrg/joda-time/archive/v"
460+
                                  version ".tar.gz"))
461+
              (file-name (string-append name "-" version ".tar.gz"))
462+
              (sha256
463+
               (base32
464+
                "1i9x91mi7yg2pasl0k3912f1pg46n37sps6rdb0v1gs8hj9ppwc1"))))
465+
    (build-system ant-build-system)
466+
    (arguments
467+
     `(#:jar-name (string-append ,name "-" ,version ".jar")
468+
       #:src-dir "src/main/java"
469+
       #:tests? #f))
470+
    (inputs
471+
     `(("java-joda-convert" ,java-joda-convert)))
472+
    (native-inputs
473+
     `(("junit" ,java-junit)))
474+
    (home-page "")
475+
    (synopsis "")
476+
    (description "")
477+
    (license license:asl2.0)))
478+
479+
(define-public java-xstream
480+
  (package
481+
    (name "java-xstream")
482+
    (version "1.4.9")
483+
    (source (origin
484+
              (method url-fetch)
485+
              (uri (string-append "https://repo1.maven.org/maven2/com/thoughtworks"
486+
                                  "/xstream/xstream-distribution/" version
487+
                                  "/xstream-distribution-" version "-src.zip"))
488+
              (file-name (string-append name "-" version ".zip"))
489+
              (sha256
490+
               (base32
491+
                "1cq9j9h839wc6pkrgd9bd7y94a3zrj1j741i134izqs9xx2b54fi"))))
492+
    (build-system ant-build-system)
493+
    (arguments
494+
     `(#:jar-name (string-append ,name "-" ,version ".jar")
495+
       #:tests? #f
496+
       #:src-dir "xstream/src/java"))
497+
    (native-inputs
498+
     `(("unzip" ,unzip)))
499+
    (home-page "https://x-stream.github.io")
500+
    (synopsis "")
501+
    (description "")
502+
    (license license:x11)))
503+
504+
(define-public java-jsonp
505+
  (package
506+
    (name "java-jsonp")
507+
    (version "1.0.4")
508+
    (source (origin
509+
              (method git-fetch)
510+
              (uri (git-reference
511+
                     (url "git://java.net/jsonp~git")
512+
                     (commit "a586e706aea82dc80fb05bdf59f2a25150ee1801")))
513+
              (file-name (string-append name "-" version))
514+
              (sha256
515+
               (base32
516+
                "01r4syivcywpvxkr1hn0az9316pr7qpnx154zzzw0nijfmdlbw7n"))))
517+
    (build-system ant-build-system)
518+
    (arguments
519+
     `(#:jar-name (string-append ,name "-" ,version ".jar")
520+
       #:tests? #f
521+
       #:src-dir "api/src"))
522+
    (home-page "https://jsonp.java.net")
523+
    (synopsis "")
524+
    (description "")
525+
    (license (list license:gpl2
526+
                   ;; actually CDDL 1.1
527+
                   license:cddl1.0))))
528+
123529
;; Can only be built with gradle.
124530
(define-public groovy
125531
  (package

141547
     `(("junit" ,java-junit)))
142548
    (inputs
143549
     `(("commons-cli" ,java-commons-cli)
550+
       ("antlr" ,antlr3)
144551
       ("asm" ,java-asm)))
145552
    (home-page "")
146553
    (synopsis "")
147554
    (description "")
148555
    (license license:asl2.0)))
149556
150-
;; requires jline, commons-cli, javax.servlet, org.fusesource.jansi, org.livetribe,
151-
;;   com.thoughtworks.xstream, org.apache.ivy, bsf, org.apache.ant, junit,
152-
;;   asm, antlr
557+
;; requires jline, javax.servlet, org.fusesource.jansi, org.livetribe,
558+
;;   com.thoughtworks.xstream, org.apache.ivy, bsf
559+
;;   antlr
153560
(define-public groovy-1.8.9
154561
  (package
155562
    (inherit groovy)

162569
              (file-name (string-append name "-" version ".tar.gz"))
163570
              (sha256
164571
               (base32
165-
                "16z3jv5yw11wwwzbs6x41g83gqazhngg30ys2kpy7cpfm3rsqi71"))))))
166-
    ;(arguments
167-
    ; `(#:build-target "createJars"))))
572+
                "16z3jv5yw11wwwzbs6x41g83gqazhngg30ys2kpy7cpfm3rsqi71"))))
573+
    (arguments
574+
     `(#:jar-name (string-append ,name "-" ,version ".jar")
575+
       #:tests? #f
576+
       #:src-dir "src/main"))))
577+
578+
579+
;; antlr2 is used to generate some java files in other packages. This is an old
580+
;; package, it is not maintained anymore. It also contains the definition
581+
;; for CommonTree and maybe other classes, so it is still required by more
582+
;; recent antlr versions.
583+
;;
584+
;; antlr3.5 requires an antlr3 generator and ST4. Unfortunately, ST4 requires
585+
;; an antlr3 generator. We use antlr3-3.1 that can be built with ST3 and antlr2
586+
;; to build the intermediate antlr3-3.3 that requires only an antlr3 generator.
587+
;; This intermediate antlr3 is used to build a version of ST4 that do not depend
588+
;; on recent antlr3. Then this version is used to build the latest antlr3,
589+
;; which is used to build the latest ST4, which is used as a dependency of the
590+
;; latest antlr3.
591+
;;
592+
;; Then we can use the latest versions of ST4 and antlr3 to build antlr4.
593+
(define-public antlr2
594+
  (package
595+
    (name "antlr2")
596+
    (version "2.7.7")
597+
    (source (origin
598+
              (method url-fetch)
599+
              (uri (string-append "http://www.antlr2.org/download/antlr-"
600+
                                  version ".tar.gz"))
601+
              (sha256
602+
               (base32
603+
                "1ffvcwdw73id0dk6pj2mlxjvbg0662qacx4ylayqcxgg381fnfl5"))
604+
              (modules '((guix build utils)))
605+
              (snippet
606+
               '(begin
607+
                  (delete-file "antlr.jar")
608+
                  (substitute* "configure"
609+
                    (("/bin/sh") "sh"))))))
610+
    (build-system gnu-build-system)
611+
    (arguments
612+
     `(#:tests? #f
613+
       #:phases
614+
       (modify-phases %standard-phases
615+
         (add-after 'configure 'fix-bin-ls
616+
           (lambda _
617+
             (for-each (lambda (file)
618+
                         (substitute* file
619+
                          (("/bin/ls") "ls")))
620+
               (find-files "Makefile")))))))
621+
    (native-inputs
622+
     `(("which" ,which)
623+
       ("java" ,icedtea "jdk")))
624+
    (inputs
625+
     `(("java" ,icedtea)))
626+
    (home-page "http://www.antlr2.org")
627+
    (synopsis "")
628+
    (description "")
629+
    (license license:public-domain)))
168630
169-
;; requires groovy 2.4.7.
170-
(define-public gradle
631+
(define-public stringtemplate3
171632
  (package
172-
    (name "gradle")
173-
    (version "3.4.1")
633+
    (name "stringtemplate3")
634+
    (version "3.2.1")
174635
    (source (origin
175636
              (method url-fetch)
176-
              (uri (string-append "https://github.com/gradle/gradle/archive/v"
637+
              (uri (string-append "https://github.com/antlr/website-st4/raw/"
638+
                                  "gh-pages/download/stringtemplate-"
639+
                                  version ".tar.gz"))
640+
              (sha256
641+
               (base32
642+
                "086yj68np1vqhkj7483diz3km6s6y4gmwqswa7524a0ca6vxn2is"))))
643+
    (build-system ant-build-system)
644+
    (arguments
645+
     `(#:jar-name "stringtemplate-3.2.1.jar"
646+
       #:tests? #f
647+
       #:phases
648+
       (modify-phases %standard-phases
649+
         (add-before 'build 'generate-grammar
650+
           (lambda _
651+
             (let ((dir "src/org/antlr/stringtemplate/language/"))
652+
               (for-each (lambda (file)
653+
                           (display file)
654+
                           (newline)
655+
                           (system* "antlr" "-o" dir (string-append dir file)))
656+
                         '("template.g" "angle.bracket.template.g" "action.g"
657+
                           "eval.g" "group.g" "interface.g"))))))))
658+
    (native-inputs
659+
     `(("antlr" ,antlr2)))
660+
    (home-page "http://www.stringtemplate.org")
661+
    (synopsis "")
662+
    (description "")
663+
    (license license:bsd-3)))
664+
665+
(define-public antlr3-temp
666+
  (package
667+
    (name "antlr3-temp")
668+
    (version "3.5.2")
669+
    (source (origin
670+
              (method url-fetch)
671+
              (uri (string-append "https://github.com/antlr/antlr3/archive/"
177672
                                  version ".tar.gz"))
178673
              (file-name (string-append name "-" version ".tar.gz"))
179674
              (sha256
180-
               (base32 "0fq30k51mkixg31z3d4fjq3zbnyjml4i530px6n1n947mqk3rgyl"))))
675+
               (base32
676+
                "07zff5frmjd53rnqdx31h0pmswz1lv0p2lp28cspfszh25ysz6sj"))))
181677
    (build-system ant-build-system)
182678
    (arguments
183-
     `(#:phases
679+
     `(#:jar-name (string-append ,name "-" ,version ".jar")
680+
       #:src-dir "tool/src/main/java:runtime/Java/src/main/java:tool/src/main/antlr3"
681+
       #:tests? #f
682+
       #:phases
184683
       (modify-phases %standard-phases
185-
         (replace 'build
186-
           (lambda* _
187-
             (system* "sh" "-x" "gradlew" "prBuild" "-x" "integTest" "--continue"
188-
                      "--stacktrace"))))))
189-
             ;(system* "sh" "-x" "travisci_build.sh"))))))
190-
    (home-page "")
191-
    (synopsis "Build system")
192-
    (description "Build system")
193-
    (license license:asl2.0)))
684+
         (add-after 'install 'bin-install
685+
           (lambda* (#:key inputs outputs #:allow-other-keys)
686+
             (let ((jar (string-append (assoc-ref outputs "out") "/share/java"))
687+
                   (bin (string-append (assoc-ref outputs "out") "/bin")))
688+
               (mkdir-p bin)
689+
               (with-output-to-file (string-append bin "/antlr3")
690+
                 (lambda _
691+
                   (display
692+
                     (string-append "#!/bin/sh\n"
693+
                                    "java -cp " jar "/" ,name "-" ,version ".jar:"
694+
                                    (string-concatenate
695+
                                      (find-files (assoc-ref inputs "stringtemplate")
696+
                                                  ".*\\.jar"))
697+
                                    ":"
698+
                                    (string-concatenate
699+
                                      (find-files (assoc-ref inputs "stringtemplate4")
700+
                                                  ".*\\.jar"))
701+
                                    ":"
702+
                                    (string-concatenate
703+
                                      (find-files (string-append (assoc-ref inputs "antlr") "/lib")
704+
                                                  ".*\\.jar"))
705+
                                    " org.antlr.Tool $*"))))
706+
               (chmod (string-append bin "/antlr3") #o755))))
707+
         (add-before 'build 'generate-grammar
708+
           (lambda _
709+
             (chdir "tool/src/main/antlr3/org/antlr/grammar/v3/")
710+
             (for-each (lambda (file)
711+
                         (display file)
712+
                         (newline)
713+
                         (system* "antlr3" file))
714+
                       '("ANTLR.g" "ANTLRTreePrinter.g" "ActionAnalysis.g"
715+
                         "AssignTokenTypesWalker.g"
716+
                         "ActionTranslator.g" "TreeToNFAConverter.g"
717+
                         "ANTLRv3.g" "ANTLRv3Tree.g" "LeftRecursiveRuleWalker.g"
718+
                         "CodeGenTreeWalker.g" "DefineGrammarItemsWalker.g"))
719+
             (chdir "../../../../../../../..")
720+
             (system* "antlr" "-o" "tool/src/main/java/org/antlr/tool"
721+
                      "tool/src/main/java/org/antlr/tool/serialize.g")
722+
             (substitute* "tool/src/main/java/org/antlr/tool/LeftRecursiveRuleAnalyzer.java"
723+
               (("import org.antlr.grammar.v3.\\*;") "import org.antlr.grammar.v3.*;
724+
import org.antlr.grammar.v3.ANTLRTreePrinter;"))
725+
             (substitute* "tool/src/main/java/org/antlr/tool/ErrorManager.java"
726+
               (("case NO_SUCH_ATTRIBUTE_PASS_THROUGH:") ""))
727+
             (substitute* "tool/src/main/antlr3/org/antlr/grammar/v3/ANTLRParser.java"
728+
               (("public Object getTree") "public GrammarAST getTree"))
729+
             (substitute* "tool/src/main/antlr3/org/antlr/grammar/v3/ANTLRv3Parser.java"
730+
               (("public Object getTree") "public CommonTree getTree"))))
731+
         (add-before 'build 'fix-build-xml
732+
           (lambda _
733+
             (substitute* "build.xml"
734+
               (("<exec") "<copy todir=\"${classes.dir}\">
735+
<fileset dir=\"tool/src/main/resources\">
736+
<include name=\"**/*.stg\"/>
737+
<include name=\"**/*.st\"/>
738+
<include name=\"**/*.sti\"/>
739+
<include name=\"**/STLexer.tokens\"/>
740+
</fileset>
741+
</copy><exec")))))))
742+
    (native-inputs
743+
     `(("antlr" ,antlr2)
744+
       ("antlr3" ,antlr3-3.3)))
745+
    (inputs
746+
     `(("junit" ,java-junit)))
747+
    (propagated-inputs
748+
     `(("stringtemplate" ,stringtemplate3)
749+
       ("antlr" ,antlr2)
750+
       ("stringtemplate4" ,stringtemplate4-4.0.6)))
751+
    (home-page "http://www.stringtemplate.org")
752+
    (synopsis "")
753+
    (description "")
754+
    (license license:bsd-3)))
755+
756+
(define-public antlr3
757+
  (package
758+
    (inherit antlr3-temp)
759+
    (name "antlr3")
760+
    (native-inputs
761+
     `(("antlr" ,antlr2)
762+
       ("antlr3" ,antlr3-temp)))
763+
    (inputs
764+
     `(("junit" ,java-junit)
765+
       ("stringtemplate" ,stringtemplate3)
766+
       ("stringtemplate4" ,stringtemplate4)))))
767+
768+
(define-public antlr3-3.3
769+
  (package
770+
    (name "antlr3")
771+
    (version "3.3")
772+
    (source (origin
773+
              (method url-fetch)
774+
              (uri (string-append "https://github.com/antlr/website-antlr3/raw/"
775+
                                  "gh-pages/download/antlr-"
776+
                                  version ".tar.gz"))
777+
              (sha256
778+
               (base32
779+
                "0qgg5vgsm4l1d6dj9pfbaa25dpv2ry2gny8ajy4vvgvfklw97b3m"))))
780+
    (build-system ant-build-system)
781+
    (arguments
782+
     `(#:jar-name (string-append ,name "-" ,version ".jar")
783+
       #:src-dir "tool/src/main/java:runtime/Java/src/main/java:tool/src/main/antlr2:tool/src/main/antlr3"
784+
       #:tests? #f
785+
       #:phases
786+
       (modify-phases %standard-phases
787+
         (add-after 'install 'bin-install
788+
           (lambda* (#:key inputs outputs #:allow-other-keys)
789+
             (let ((jar (string-append (assoc-ref outputs "out") "/share/java"))
790+
                   (bin (string-append (assoc-ref outputs "out") "/bin")))
791+
               (mkdir-p bin)
792+
               (with-output-to-file (string-append bin "/antlr3")
793+
                 (lambda _
794+
                   (display
795+
                     (string-append "#!/bin/sh\n"
796+
                                    "java -cp " jar "/antlr3-3.3.jar:"
797+
                                    (string-concatenate
798+
                                      (find-files (assoc-ref inputs "stringtemplate")
799+
                                                  ".*\\.jar"))
800+
                                    ":"
801+
                                    (string-concatenate
802+
                                      (find-files (string-append (assoc-ref inputs "antlr") "/lib")
803+
                                                  ".*\\.jar"))
804+
                                    " org.antlr.Tool $*"))))
805+
               (chmod (string-append bin "/antlr3") #o755))))
806+
         (add-before 'build 'generate-grammar
807+
           (lambda _
808+
             (let ((dir "tool/src/main/antlr2/org/antlr/grammar/v2/"))
809+
               (for-each (lambda (file)
810+
                           (display file)
811+
                           (newline)
812+
                           (system* "antlr" "-o" dir (string-append dir file)))
813+
                         '("antlr.g" "antlr.print.g" "assign.types.g"
814+
                           "buildnfa.g" "codegen.g" "define.g")))
815+
             (chdir "tool/src/main/antlr3/org/antlr/grammar/v3/")
816+
             (for-each (lambda (file)
817+
                         (display file)
818+
                         (newline)
819+
                         (system* "antlr3" file))
820+
                       '("ActionAnalysis.g" "ActionTranslator.g" "ANTLRv3.g"
821+
                         "ANTLRv3Tree.g"))
822+
             (chdir "../../../../../../../..")
823+
             (substitute* "tool/src/main/java/org/antlr/tool/Grammar.java"
824+
               (("import org.antlr.grammar.v2.\\*;")
825+
                "import org.antlr.grammar.v2.*;\n
826+
import org.antlr.grammar.v2.TreeToNFAConverter;\n
827+
import org.antlr.grammar.v2.DefineGrammarItemsWalker;\n
828+
import org.antlr.grammar.v2.ANTLRTreePrinter;"))))
829+
         (add-before 'build 'fix-build-xml
830+
           (lambda _
831+
             (substitute* "build.xml"
832+
               (("<exec") "<copy todir=\"${classes.dir}\">
833+
<fileset dir=\"tool/src/main/resources\">
834+
<include name=\"**/*.stg\"/>
835+
<include name=\"**/*.st\"/>
836+
<include name=\"**/*.sti\"/>
837+
<include name=\"**/STLexer.tokens\"/>
838+
</fileset>
839+
</copy><exec")))))))
840+
    (native-inputs
841+
     `(("antlr" ,antlr2)
842+
       ("antlr3" ,antlr3-3.1)))
843+
    (inputs
844+
     `(("junit" ,java-junit)))
845+
    (propagated-inputs
846+
     `(("stringtemplate" ,stringtemplate3)
847+
       ("antlr" ,antlr2)
848+
       ("antlr3" ,antlr3-3.1)))
849+
    (home-page "http://www.stringtemplate.org")
850+
    (synopsis "")
851+
    (description "")
852+
    (license license:bsd-3)))
853+
854+
(define-public antlr3-3.1
855+
  (package
856+
    (name "antlr3-3.1")
857+
    (version "3.1")
858+
    (source (origin
859+
              (method url-fetch)
860+
              (uri (string-append "https://github.com/antlr/website-antlr3/raw/"
861+
                                  "gh-pages/download/antlr-"
862+
                                  version ".tar.gz"))
863+
              (sha256
864+
               (base32
865+
                "0sfimc9cpbgrihz4giyygc8afgpma2c93yqpwb951giriri6x66z"))))
866+
    (build-system ant-build-system)
867+
    (arguments
868+
     `(#:jar-name (string-append ,name "-" ,version ".jar")
869+
       #:src-dir "src:runtime/Java/src"
870+
       #:tests? #f
871+
       #:phases
872+
       (modify-phases %standard-phases
873+
         (add-after 'install 'bin-install
874+
           (lambda* (#:key inputs outputs #:allow-other-keys)
875+
             (let ((jar (string-append (assoc-ref outputs "out") "/share/java"))
876+
                   (bin (string-append (assoc-ref outputs "out") "/bin")))
877+
               (mkdir-p bin)
878+
               (with-output-to-file (string-append bin "/antlr3")
879+
                 (lambda _
880+
                   (display
881+
                     (string-append "#!/bin/sh\n"
882+
                                    "java -cp " jar "/antlr3-3.1-3.1.jar:"
883+
                                    (string-concatenate
884+
                                      (find-files (assoc-ref inputs "stringtemplate")
885+
                                                  ".*\\.jar"))
886+
                                    ":"
887+
                                    (string-concatenate
888+
                                      (find-files (string-append (assoc-ref inputs "antlr") "/lib")
889+
                                                  ".*\\.jar"))
890+
                                    " org.antlr.Tool $*"))))
891+
               (chmod (string-append bin "/antlr3") #o755))))
892+
         (add-before 'build 'generate-grammar
893+
           (lambda _
894+
             (let ((dir "src/org/antlr/tool/"))
895+
               (for-each (lambda (file)
896+
                           (display file)
897+
                           (newline)
898+
                           (system* "antlr" "-o" dir (string-append dir file)))
899+
                         '("antlr.g" "antlr.print.g" "assign.types.g"
900+
                           "buildnfa.g" "define.g")))
901+
             (format #t "codegen.g\n")
902+
             (system* "antlr" "-o" "src/org/antlr/codegen"
903+
                      "src/org/antlr/codegen/codegen.g")))
904+
         (add-before 'build 'fix-build-xml
905+
           (lambda _
906+
             (substitute* "build.xml"
907+
               (("<exec") "<copy todir=\"${classes.dir}\">
908+
<fileset dir=\"src\">
909+
<include name=\"**/*.stg\"/>
910+
<include name=\"**/*.st\"/>
911+
<include name=\"**/*.sti\"/>
912+
<include name=\"**/STLexer.tokens\"/>
913+
</fileset>
914+
</copy><exec")))))))
915+
    (native-inputs
916+
     `(("antlr" ,antlr2)))
917+
    (inputs
918+
     `(("junit" ,java-junit)))
919+
    (propagated-inputs
920+
     `(("stringtemplate" ,stringtemplate3)))
921+
    (home-page "http://www.stringtemplate.org")
922+
    (synopsis "")
923+
    (description "")
924+
    (license license:bsd-3)))
194925
195-
;; Requires gradle.
196-
(define-public android-anysoft-keyboard
926+
(define-public stringtemplate4-4.0.6
197927
  (package
198-
    (name "android-anysoft-keyboard")
199-
    (version "1.8-r9")
928+
    (name "stringtemplate4")
929+
    (version "4.0.6")
200930
    (source (origin
201931
              (method url-fetch)
202-
              (uri (string-append "https://github.com/AnySoftKeyboard/"
203-
                                  "AnySoftKeyboard/archive/" version ".tar.gz"))
932+
              (uri (string-append "https://github.com/antlr/stringtemplate4/archive/ST-"
933+
                                  version ".tar.gz"))
204934
              (file-name (string-append name "-" version ".tar.gz"))
205935
              (sha256
206936
               (base32
207-
                "1mrin9mw1rs23d25v8yx4jprx7j05zir6756sqvk4myxbkcp8mag"))))
937+
                "0hjmh1ahdsh3w825i67mli9l4nncc4l6hdbf9ma91jvlj590sljp"))))
208938
    (build-system ant-build-system)
209-
    (home-page "https://anysoftkeyboard.github.io/")
210-
    (synopsis "Alternative on-screen keyboard for multiple languages")
211-
    (description "Alternative on-screen keyboard for multiple languages.")
212-
    (license license:asl2.0)))
939+
    (arguments
940+
     `(#:tests? #f
941+
       #:jar-name (string-append ,name "-" ,version ".jar")
942+
       #:phases
943+
       (modify-phases %standard-phases
944+
         (add-before 'build 'generate-grammar
945+
           (lambda* (#:key inputs #:allow-other-keys)
946+
             (chdir "src/org/stringtemplate/v4/compiler/")
947+
             (for-each (lambda (file)
948+
                         (display file)
949+
                         (newline)
950+
                         (system* "antlr3" file))
951+
                       '("STParser.g" "Group.g" "CodeGenerator.g"))
952+
             (chdir "../../../../.."))))))
953+
    (inputs
954+
     `(("antlr3" ,antlr3-3.3)
955+
       ("antlr2" ,antlr2)
956+
       ("stringtemplate" ,stringtemplate3)))
957+
    (home-page "http://www.stringtemplate.org")
958+
    (synopsis "")
959+
    (description "")
960+
    (license license:bsd-3)))
961+
962+
(define-public stringtemplate4
963+
  (package
964+
    (inherit stringtemplate4-4.0.6)
965+
    (name "stringtemplate4")
966+
    (version "4.0.8")
967+
    (source (origin
968+
              (method url-fetch)
969+
              (uri (string-append "https://github.com/antlr/stringtemplate4/archive/"
970+
                                  version ".tar.gz"))
971+
              (file-name (string-append name "-" version ".tar.gz"))
972+
              (sha256
973+
               (base32
974+
                "1pri8hqa95rfdkjy55icl5q1m09zwp5k67ib14abas39s4v3w087"))))
975+
    (inputs
976+
     `(("antlr3" ,antlr3-temp)
977+
       ("antlr2" ,antlr2)
978+
       ("stringtemplate" ,stringtemplate3)))))
979+
980+
;; javax.json.*
981+
;; org.abego.treelayout.*
982+
;; com.ibm.icu.* 
983+
(define-public antlr4
984+
  (package
985+
    (name "antlr4")
986+
    (version "4.7")
987+
    (source (origin
988+
              (method url-fetch)
989+
              (uri (string-append "https://github.com/antlr/antlr4/archive/"
990+
                                  version ".tar.gz"))
991+
              (file-name (string-append name "-" version ".tar.gz"))
992+
              (sha256
993+
               (base32
994+
                "0y7lzkvx9wbbmwg45mb4icx7i66z6894qfygrbbs26sr5xxyml9h"))))
995+
    (build-system ant-build-system)
996+
    (arguments
997+
     `(#:jar-name (string-append ,name "-" ,version ".jar")
998+
       #:src-dir "runtime/Java/src:tool/src"
999+
       #:phases
1000+
       (modify-phases %standard-phases
1001+
         (add-before 'build 'generate-grammar
1002+
           (lambda* (#:key inputs #:allow-other-keys)
1003+
             (chdir "tool/src/org/antlr/v4/parse")
1004+
             (for-each (lambda (file)
1005+
                         (format #t "~a\n" file)
1006+
                         (system* "antlr3" file))
1007+
                       '("ANTLRLexer.g" "ANTLRParser.g" "BlockSetTransformer.g"
1008+
                         "GrammarTreeVisitor.g" "ATNBuilder.g"
1009+
                         "ActionSplitter.g" "LeftRecursiveRuleWalker.g"))
1010+
             (chdir "../codegen")
1011+
             (copy-file "../parse/ANTLRParser.tokens" "ANTLRParser.tokens")
1012+
             (format #t "SourceGenTriggers.g\n")
1013+
             (system* "antlr3" "SourceGenTriggers.g")
1014+
             (chdir "../../../../../.."))))))
1015+
    (inputs
1016+
     `(("antlr3" ,antlr3)
1017+
       ("icu4j" ,java-icu4j)
1018+
       ("java-jsonp" ,java-jsonp)
1019+
       ("treelayout" ,java-treelayout)
1020+
       ("stringtemplate4" ,stringtemplate4)))
1021+
    (home-page "https://antlr.org")
1022+
    (synopsis "")
1023+
    (description "")
1024+
    (license license:bsd-3)))
1025+
    
1026+
1027+
;; requires groovy 2.4.7.
1028+
;(define-public gradle
1029+
;  (package
1030+
;    (name "gradle")
1031+
;    (version "3.4.1")
1032+
;    (source (origin
1033+
;              (method url-fetch)
1034+
;              (uri (string-append "https://github.com/gradle/gradle/archive/v"
1035+
;                                  version ".tar.gz"))
1036+
;              (file-name (string-append name "-" version ".tar.gz"))
1037+
;              (sha256
1038+
;               (base32 "0fq30k51mkixg31z3d4fjq3zbnyjml4i530px6n1n947mqk3rgyl"))))
1039+
;    (build-system ant-build-system)
1040+
;    (arguments
1041+
;     `(#:phases
1042+
;       (modify-phases %standard-phases
1043+
;         (replace 'build
1044+
;           (lambda* _
1045+
;             (system* "sh" "-x" "gradlew" "prBuild" "-x" "integTest" "--continue"
1046+
;                      "--stacktrace"))))))
1047+
;             ;(system* "sh" "-x" "travisci_build.sh"))))))
1048+
;    (home-page "")
1049+
;    (synopsis "Build system")
1050+
;    (description "Build system")
1051+
;    (license license:asl2.0)))
1052+
;
1053+
;;; Requires gradle.
1054+
;(define-public android-anysoft-keyboard
1055+
;  (package
1056+
;    (name "android-anysoft-keyboard")
1057+
;    (version "1.8-r9")
1058+
;    (source (origin
1059+
;              (method url-fetch)
1060+
;              (uri (string-append "https://github.com/AnySoftKeyboard/"
1061+
;                                  "AnySoftKeyboard/archive/" version ".tar.gz"))
1062+
;              (file-name (string-append name "-" version ".tar.gz"))
1063+
;              (sha256
1064+
;               (base32
1065+
;                "1mrin9mw1rs23d25v8yx4jprx7j05zir6756sqvk4myxbkcp8mag"))))
1066+
;    (build-system ant-build-system)
1067+
;    (home-page "https://anysoftkeyboard.github.io/")
1068+
;    (synopsis "Alternative on-screen keyboard for multiple languages")
1069+
;    (description "Alternative on-screen keyboard for multiple languages.")
1070+
;    (license license:asl2.0)))