gnu: Add java-tunnelvisionlabs-antlr4-runtime.

* gnu/packages/java.scm (java-tunnelvisionlabs-antlr4-runtime): New
variable.
This commit is contained in:
Julien Lepiller 2020-09-26 21:51:18 +02:00
parent 7d26b017d8
commit ac292a1aa1
No known key found for this signature in database
GPG key ID: 53D457B2D636EE82

View file

@ -8555,6 +8555,82 @@ parse trees.")))
(description "This package contains annotations used during the build of (description "This package contains annotations used during the build of
the runtime library of ANTLR."))) the runtime library of ANTLR.")))
;; the runtime of this library requires a lexer that is generated by antlr4.
;; However, antlr4 itself requires this library at build and run-time. We
;; use antlr4@4.1, the closest version of antlr that doesn't need this
;; bootstrap process, to generate the lexer. The generated lexer is built
;; for the 4.1 runtime, which is slightly different from this runtime.
;; So, we build the runtime with antlr 4.1, with a broken xml lexer, that we
;; use to build antlr4. We then re-use this antlr4 to build the runtime, and
;; the proper, working, runtime to build antlr4 again.
(define java-tunnelvisionlabs-antlr4-runtime-bootstrap
(package
(inherit java-antlr4-runtime)
(name "java-tunnelvisionlabs-antlr4-runtime")
(version (package-version java-tunnelvisionlabs-antlr4-runtime-annotations))
(source (package-source java-tunnelvisionlabs-antlr4-runtime-annotations))
(arguments
`(#:jar-name "java-antlr4-runtime.jar"
#:source-dir "runtime/Java/src"
#:tests? #f; tests require antlr4, but antlr4 depends on this package
#:phases
(modify-phases %standard-phases
(add-before 'build 'generate-xpath-lexer
(lambda _
(invoke "antlr4" "-lib" "runtime/Java/src/org/antlr/v4/runtime/tree/xpath"
"-visitor" "-no-listener"
"-package" "org.antlr.v4.runtime.tree.xpath"
"runtime/Java/src/org/antlr/v4/runtime/tree/xpath/XPathLexer.g4")
;; Generated code is for an incompatible version of the runtime
(substitute* "runtime/Java/src/org/antlr/v4/runtime/tree/xpath/XPathLexer.java"
(("LexerATNSimulator\\(this,_ATN,_decisionToDFA,_sharedContextCache\\)")
"LexerATNSimulator(this,_ATN)"))
#t))
(add-before 'build 'copy-resources
(lambda _
(copy-recursively "runtime/Java/src/main/dot"
"build/classes")
#t)))))
(native-inputs
`(("antlr4" ,antlr4-4.1)
("java-tunnelvisionlabs-antlr4-runtime-annotations"
,java-tunnelvisionlabs-antlr4-runtime-annotations)))))
(define java-tunnelvisionlabs-antlr4-bootstrap
(package
(inherit antlr4)
(name "java-tunnelvisionlabs-antlr4")
(version (package-version java-tunnelvisionlabs-antlr4-runtime-annotations))
(source (package-source java-tunnelvisionlabs-antlr4-runtime-annotations))
(arguments
(substitute-keyword-arguments (package-arguments antlr4)
((#:test-dir _)
"tool/test:runtime-testsuite/src")
((#:phases phases)
`(modify-phases ,phases
(delete 'remove-unrelated-languages)
(delete 'remove-graphemes)
(delete 'generate-test-parsers)
(delete 'check)))))
(native-inputs '())
(inputs
`(("antlr3" ,antlr3)
("java-antlr4-runtime" ,java-tunnelvisionlabs-antlr4-runtime-bootstrap)
("java-tunnelvisionlabs-antlr4-runtime-annotations"
,java-tunnelvisionlabs-antlr4-runtime-annotations)
("java-icu4j" ,java-icu4j)
("java-jsonp-api" ,java-jsonp-api)
("java-stringtemplate" ,java-stringtemplate)
("java-treelayout" ,java-treelayout)))))
(define-public java-tunnelvisionlabs-antlr4-runtime
(package
(inherit java-tunnelvisionlabs-antlr4-runtime-bootstrap)
(native-inputs
(alist-replace
"antlr4" (list java-tunnelvisionlabs-antlr4-bootstrap)
(package-native-inputs java-tunnelvisionlabs-antlr4-runtime-bootstrap)))))
(define-public java-commons-cli-1.2 (define-public java-commons-cli-1.2
;; This is a bootstrap dependency for Maven2. ;; This is a bootstrap dependency for Maven2.
(package (package