gnu: Add java-jline-terminal.

This is part of JLine 3.

I was able to get this working properly under Guix by providing ncurses'
infocmp, as well as ensuring the *.caps files were present in the JAR,
but similar methods didn't work for the tests; if you have Java
knowledge, I'd appreciate the help getting those tests enabled.

* gnu/packages/java.scm (java-jline-terminal): New variable.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
This commit is contained in:
Mike Gerwitz 2021-04-15 21:24:15 -04:00 committed by Ludovic Courtès
parent e28ea14693
commit 1700dfefbe
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5

View file

@ -71,6 +71,7 @@ (define-module (gnu packages java)
#:use-module (gnu packages maths)
#:use-module (gnu packages maven)
#:use-module (gnu packages maven-parent-pom)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages nss)
#:use-module (gnu packages onc-rpc)
#:use-module (gnu packages web)
@ -12503,6 +12504,63 @@ (define-public java-jline-2
("java-junit" ,java-junit)
("java-hawtjni" ,java-hawtjni)))))
(define-public java-jline-terminal
(package
(name "java-jline-terminal")
(version "3.14.1")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/jline/jline3")
(commit (string-append "jline-parent-" version))))
(file-name (git-file-name name version))
(sha256
(base32
"0ilhk9ljp0pivl1rn0bb06syshc67p6imcjhrg6vr7kv15p3w4lr"))))
(build-system ant-build-system)
(arguments
`(#:jar-name "jline-terminal.jar"
#:jdk ,openjdk11
#:tests? #f; TODO: tests fail on *.caps resource lookups
#:source-dir "terminal/src/main/java"
#:test-dir "terminal/src/test"
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'remove-build-file
(lambda _
;; Conflicts with build directory generated by ant-build-system.
(delete-file "build")))
(add-after 'unpack 'patch-paths
(lambda* (#:key inputs #:allow-other-keys)
(substitute* "terminal/src/main/java/org/jline/utils/OSUtils.java"
(("= \"infocmp\"")
(string-append "= \"" (assoc-ref inputs "ncurses")
"/bin/infocmp\""))
(("= \"(s?tty)\"" _ cmd)
(string-append "= \"" (assoc-ref inputs "coreutils")
"/bin/" cmd "\"")))))
;; Resources are not added to the JAR by ant-build-system.
(add-after 'build 'add-resources
(lambda* (#:key jar-name source-dir #:allow-other-keys)
(let ((build (string-append (getcwd) "/build")))
(with-directory-excursion
(string-append source-dir "/../resources")
(apply invoke "jar" "-uvf"
(string-append build "/jar/" jar-name)
(find-files ".")))))))))
(inputs
`(("ncurses" ,ncurses))); infocmp
(home-page "https://github.com/jline/jline3")
(synopsis "Java JLine Terminal API and implementations")
(description "JLine is a Java library for handling console input. It is
similar in functionality to BSD editline and GNU readline but with additional
features that bring it in par with ZSH line editor. People familiar with the
readline/editline capabilities for modern shells (such as bash and tcsh) will
find most of the command editing features of JLine to be familiar.
This package includes the @var{Terminal} API and implementations.")
(license license:bsd-3)))
(define-public java-xmlunit
(package
(name "java-xmlunit")