diff options
Diffstat (limited to 'gnu/packages/groovy.scm')
| -rw-r--r-- | gnu/packages/groovy.scm | 1404 | 
1 files changed, 564 insertions, 840 deletions
| diff --git a/gnu/packages/groovy.scm b/gnu/packages/groovy.scm index e21c4e3775..c44a17b59e 100644 --- a/gnu/packages/groovy.scm +++ b/gnu/packages/groovy.scm @@ -31,7 +31,7 @@  (define java-groovy-bootstrap    (package      (name "java-groovy-bootstrap") -    (version "2.4.15") +    (version "3.0.5")      (source       (origin         (method git-fetch) @@ -43,57 +43,69 @@                                    version)))))         (file-name (git-file-name name version))         (sha256 -        (base32 "1q4cplimr18j93zz92kgq8b6wdv0p9svr7cdr47q8b2mbjpd0x3j")) +        (base32 "00556qxjmcn3a3xhfy6n0zw3d69mnw72vzm2rb6n4ihzkk7579nm"))         (patches          (search-patches "groovy-add-exceptionutilsgenerator.patch"))))      (build-system ant-build-system)      (arguments       `(#:jar-name "groovy.jar" -       #:source-dir "src/main:subprojects/groovy-test/src/main/java" +       #:source-dir "src/main/java:src/main/antlr2:subprojects/parser-antlr4/src/main/java:src/antlr"         #:test-dir "src/test"         #:tests? #f -       #:jdk ,icedtea-8 +       #:jdk ,openjdk9         #:main-class "groovy.ui.GroovyMain"         #:phases         (modify-phases %standard-phases -         (add-before 'build 'fix-java8 -           ;; Fix "Reference to plus is ambiguous" -           (lambda _ -             (substitute* "src/main/org/codehaus/groovy/runtime/DefaultGroovyMethods.java" -               (("toList\\(left\\)") -                "(List<T>)toList(left)")) -             #t))           (add-before 'build 'generate-parsers             (lambda _ -             (with-directory-excursion "src/main/org/codehaus/groovy/antlr/java" +             (with-directory-excursion "src/main/antlr2/org/codehaus/groovy/antlr/java"                 (invoke "antlr" "java.g")) -             (with-directory-excursion "src/main/org/codehaus/groovy/antlr" +             (with-directory-excursion "src/main/antlr2/org/codehaus/groovy/antlr"                 (mkdir "parser")                 (with-directory-excursion "parser"                   (invoke "antlr" "../groovy.g"))) +             (invoke "antlr4" "-lib" "src/antlr" +                     "-package" "org.apache.groovy.parser.antlr4" +                     "-visitor" "-no-listener" "src/antlr/GroovyLexer.g4") +             (invoke "antlr4" "-lib" "src/antlr" +                     "-package" "org.apache.groovy.parser.antlr4" +                     "-visitor" "-no-listener" "src/antlr/GroovyParser.g4")               #t))           (add-before 'build 'generate-exception-utils             (lambda _               (invoke "javac" "-cp" (getenv "CLASSPATH") +                     "-source" "1.8" "-target" "1.8"                       "config/ant/src/org/codehaus/groovy/ExceptionUtilsGenerator.java")               (invoke "java" "-cp" (string-append (getenv "CLASSPATH")                                                   ":config/ant/src")                       "org.codehaus.groovy.ExceptionUtilsGenerator"                       "build/classes/org/codehaus/groovy/runtime/ExceptionUtils.class") +             #t)) +         (add-before 'build 'set-source-level +           (lambda _ +             (substitute* "build.xml" +               (("<javac") "<javac source=\"1.8\" target=\"1.8\""))               #t)))))      (native-inputs -     `(("java-junit" ,java-junit) +     `(("antlr2" ,antlr2) +       ("antlr4" ,java-tunnelvisionlabs-antlr4) +       ("java-jsr305" ,java-jsr305) +       ("java-junit" ,java-junit)         ("java-hamcrest-core" ,java-hamcrest-core) -       ("antlr2" ,antlr2)         ("java-jmock-1" ,java-jmock-1)         ("java-xmlunit-legacy" ,java-xmlunit-legacy)))      (inputs -     `(("java-commons-cli" ,java-commons-cli) -       ("java-asm" ,java-asm) +     `(("java-antlr4-runtime" ,java-tunnelvisionlabs-antlr4-runtime) +       ("java-antlr4-runtime-annotations" +        ,java-tunnelvisionlabs-antlr4-runtime-annotations) +       ("java-asm" ,java-asm-8) +       ("java-asm-util" ,java-asm-util-8)         ("java-classpathx-servletapi" ,java-classpathx-servletapi) -       ("java-xstream" ,java-xstream) +       ("java-commons-cli" ,java-commons-cli)         ("java-jansi" ,java-jansi) -       ("java-jline-2" ,java-jline-2))) +       ("java-jline-2" ,java-jline-2) +       ("java-picocli" ,java-picocli) +       ("java-xstream" ,java-xstream)))      (home-page "http://groovy-lang.org/")      (synopsis "Groovy's java bootstrap")      (description "This package contains the java bootstrap that is used to build @@ -106,26 +118,25 @@ groovy submodules.")      (name "groovy-bootstrap")      (arguments       `(#:jar-name "groovy.jar" -       #:jdk ,icedtea-8 +       #:jdk ,openjdk9         ;Requires groovy-xml and logback-classic which are circular dependencies         #:tests? #f         #:phases         (modify-phases %standard-phases -         (add-before 'build 'fix-java8 -           ;; Fix "Reference to plus is ambiguous" -           (lambda _ -             (substitute* "src/main/org/codehaus/groovy/runtime/DefaultGroovyMethods.java" -               (("toList\\(left\\)") -                "(List<T>)toList(left)")) -             #t))           (add-before 'build 'generate-parser             (lambda _ -             (with-directory-excursion "src/main/org/codehaus/groovy/antlr/java" +             (with-directory-excursion "src/main/antlr2/org/codehaus/groovy/antlr/java"                 (invoke "antlr" "java.g")) -             (with-directory-excursion "src/main/org/codehaus/groovy/antlr" +             (with-directory-excursion "src/main/antlr2/org/codehaus/groovy/antlr"                 (mkdir "parser")                 (with-directory-excursion "parser"                   (invoke "antlr" "../groovy.g"))) +             (invoke "antlr4" "-lib" "src/antlr" +                     "-package" "org.apache.groovy.parser.antlr4" +                     "-visitor" "-no-listener" "src/antlr/GroovyLexer.g4") +             (invoke "antlr4" "-lib" "src/antlr" +                     "-package" "org.apache.groovy.parser.antlr4" +                     "-visitor" "-no-listener" "src/antlr/GroovyParser.g4")               #t))           (add-before 'build 'generate-exception-utils             (lambda _ @@ -141,19 +152,19 @@ groovy submodules.")               (mkdir-p "target/classes/org/codehaus/groovy/runtime")               (mkdir-p "target/classes/META-INF")               (invoke "javac" "-cp" (getenv "CLASSPATH") -                     "src/main/org/codehaus/groovy/tools/DgmConverter.java") +                     "src/main/java/org/codehaus/groovy/tools/DgmConverter.java")               (invoke "java" "-cp" (string-append (getenv "CLASSPATH") -                                                 ":src/main") +                                                 ":src/main/java")                       "org.codehaus.groovy.tools.DgmConverter")               #t))           (add-before 'build 'copy-resources             (lambda _ -             (with-directory-excursion "src/main" +             (with-directory-excursion "src/main/java"                 (for-each (lambda (file) -                           (mkdir-p (string-append "../../target/classes/" +                           (mkdir-p (string-append "../../../target/classes/"                                                     (dirname file)))                             (copy-file file -                                      (string-append "../../target/classes/" +                                      (string-append "../../../target/classes/"                                                       file)))                    (find-files "." ".*.(txt|properties|xml|html)")))               #t)) @@ -162,6 +173,7 @@ groovy submodules.")               (mkdir-p "build/jar")               (apply invoke "java" "-cp" (getenv "CLASSPATH")                             "org.codehaus.groovy.tools.FileSystemCompiler" +                           "-cp" (getenv "CLASSPATH")                             "-d" "target/classes"                             "-j"; joint compilation                             (find-files "src/main" @@ -186,7 +198,7 @@ is used to build the groovy submodules written in groovy.")))      (name "groovy-tests-bootstrap")      (arguments       `(#:jar-name "groovy-tests-bootstrap.jar" -       #:jdk ,icedtea-8 +       #:jdk ,openjdk9         #:tests? #f; no tests         #:phases         (modify-phases %standard-phases @@ -196,17 +208,20 @@ is used to build the groovy submodules written in groovy.")))               (mkdir-p "build/jar")               (apply invoke "java" "-cp" (getenv "CLASSPATH")                      "org.codehaus.groovy.tools.FileSystemCompiler" +                    "-cp" (getenv "CLASSPATH")                      "-d" "build/classes"                      "-j"; joint compilation                      (append                        (find-files "src/test" "TestSupport.java")                        (find-files "src/test" "HeadlessTestSupport.java") +                      (find-files "src/test" "AstAssert.groovy")                        (find-files "src/test" "XmlAssert.java")))               (invoke "jar" "-cf" "build/jar/groovy-tests-bootstrap.jar"                       "-C" "build/classes" ".")               #t)))))      (inputs       `(("groovy-test" ,groovy-test) +       ("groovy-parser-antlr4" ,groovy-parser-antlr4)         ,@(package-inputs groovy-bootstrap)))      (native-inputs       `(("groovy-bootstrap" ,groovy-bootstrap) @@ -215,14 +230,15 @@ is used to build the groovy submodules written in groovy.")))      (description "This package contains three classes required for testing  other groovy submodules."))) -(define groovy-test +(define (groovy-subproject name)    (package      (inherit groovy-bootstrap) -    (name "groovy-test") +    (name name)      (arguments -     `(#:jar-name "groovy-test.jar" -       #:jdk ,icedtea-8 -       #:test-dir "subprojects/groovy-test/src/test" +     `(#:jar-name ,(string-append name ".jar") +       #:test-dir ,(string-append name "/src/test") +       #:test-include (list "**/*Test.java" "**/*.groovy") +       #:jdk ,openjdk9         #:phases         (modify-phases %standard-phases           (replace 'build @@ -231,839 +247,531 @@ other groovy submodules.")))               (mkdir-p "build/jar")               (apply invoke "java" "-cp" (getenv "CLASSPATH")                      "org.codehaus.groovy.tools.FileSystemCompiler" -                    "-d" "build/classes" "-j"; joint compilation -                    (find-files "subprojects/groovy-test/src/main" -                                ".*\\.(groovy|java)$")) -             (invoke "jar" "-cf" "build/jar/groovy-test.jar" +                    "-cp" (getenv "CLASSPATH") +                    "-d" "build/classes" "-j" +                    (append +                      (find-files ,(string-append "subprojects/" name "/src/main/java") +                        ".*\\.(groovy|java)$") +                      (find-files ,(string-append "subprojects/" name "/src/main/groovy") +                        ".*\\.(groovy|java)$"))) +             (invoke "jar" "-cf" ,(string-append "build/jar/" name ".jar")                       "-C" "build/classes" ".")               #t)) -         (replace 'check -           (lambda _ -             (mkdir-p "build/test-classes") -             (substitute* "build.xml" -               (("depends=\"compile-tests\"") "depends=\"\"") -               (("}/java") "}/groovy")) -             (apply invoke "java" "-cp" -                    (string-append (getenv "CLASSPATH") ":build/classes") -                    "org.codehaus.groovy.tools.FileSystemCompiler" -                    "-d" "build/test-classes" "-j" -                    (append (find-files "subprojects/groovy-test/src/test" -                                        ".*\\.(groovy|java)$"))) -             (invoke "ant" "check") -             #t))))) -    (native-inputs -     `(("groovy-bootstrap" ,groovy-bootstrap) -       ,@(package-native-inputs java-groovy-bootstrap))) -    (synopsis "Groovy test submodule") -    (description "This package contains the test submodules used to test -other groovy submodules."))) - -(define groovy-xml -  (package -    (inherit groovy-bootstrap) -    (name "groovy-xml") -    (arguments -     `(#:jar-name "groovy-xml.jar" -       #:jdk ,icedtea-8 -       #:test-dir "src/test" -       #:phases -       (modify-phases %standard-phases -         (add-before 'configure 'chdir -           (lambda _ -             (chdir "subprojects/groovy-xml") -             #t)) -         (replace 'build +         (add-before 'build 'copy-resources             (lambda _ -             (mkdir-p "build/classes") -             (mkdir-p "build/jar") -             (apply invoke "java" "-cp" (getenv "CLASSPATH") -                    "org.codehaus.groovy.tools.FileSystemCompiler" -                    "-d" "build/classes" "-j"; joint compilation -                    (find-files "src/main" ".*\\.(groovy|java)$")) -             (invoke "jar" "-cf" "build/jar/groovy-xml.jar" -                     "-C" "build/classes" ".") +             (let ((resource-dir ,(string-append "subprojects/" name +                                                 "/src/main/resources"))) +               (when (file-exists? resource-dir) +                 (copy-recursively resource-dir "build/classes")))               #t))           (replace 'check -           (lambda _ -             (mkdir-p "build/test-classes") -             (substitute* "build.xml" -               (("depends=\"compile-tests\"") "depends=\"\"") -               (("}/java") "}/groovy")) -             (apply invoke "java" "-cp" -                    (string-append (getenv "CLASSPATH") ":build/classes") -                    "org.codehaus.groovy.tools.FileSystemCompiler" -                    "-d" "build/test-classes" "-j" -                    (append (find-files "src/test" ".*\\.(groovy|java)$"))) -             (invoke "ant" "check") -             #t))))) -    (native-inputs -     `(("groovy-bootstrap" ,groovy-bootstrap) -       ("groovy-test" ,groovy-test) -       ("groovy-tests-bootstrap" ,groovy-tests-bootstrap) -       ,@(package-native-inputs java-groovy-bootstrap))) -    (synopsis "Groovy XML") -    (description "This package contains XML-related utilities for groovy."))) +           (lambda* (#:key tests? #:allow-other-keys) +             (when tests? +               (mkdir-p "build/test-classes") +               (substitute* "build.xml" +                 (("depends=\"compile-tests\"") "depends=\"\"") +                 (("}/java") "}/")) +               (apply invoke "java" "-cp" +                      (string-append (getenv "CLASSPATH") ":build/classes") +                      "org.codehaus.groovy.tools.FileSystemCompiler" "-cp" +                      (string-append (getenv "CLASSPATH") ":build/classes") +                      "-d" "build/test-classes" "-j" +                      (append +                        (find-files ,(string-append "subprojects/" name "/src/test/java") +                                    ".*\\.(groovy|java)$") +                        (find-files ,(string-append "subprojects/" name "/src/test/groovy") +                                    ".*\\.(groovy|java)$"))) +               (invoke "ant" "check")) +             #t))))))) + +(define groovy-parser-antlr4 +  (let ((base (groovy-subproject "parser-antlr4"))) +    (package +      (inherit base) +      (name "groovy-parser-antlr4") +      (arguments +       `(#:tests? #f +         ,@(substitute-keyword-arguments (package-arguments base) +            ((#:phases phases) +             `(modify-phases ,phases +                (add-before 'build 'generate-parser +                  (lambda _ +                    (invoke "antlr4" "-lib" "src/antlr" +                            "-package" "org.apache.groovy.parser.antlr4" +                            "-visitor" "-no-listener" "src/antlr/GroovyLexer.g4") +                    (invoke "antlr4" "-lib" "src/antlr" +                            "-package" "org.apache.groovy.parser.antlr4" +                            "-visitor" "-no-listener" "src/antlr/GroovyParser.g4") +                    (for-each +                      (lambda (file) +                        (install-file file +                                      "subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4")) +                      (find-files "src/antlr" ".*.java$")) +                    #t))))))) +      (native-inputs +       `(("groovy-bootstrap" ,groovy-bootstrap) +         ,@(package-native-inputs java-groovy-bootstrap))) +      (synopsis "Groovy antlr4 parser submodule") +      (description "This package contains the new parser Parrot for Groovy, which +is based on Antlr4.  The new parser can parse Groovy source code and construct +the related AST, which is almost identical to the one generated by the old +parser.  Currently all features of Groovy are available.")))) + +(define groovy-test +  (let ((base (groovy-subproject "groovy-test"))) +    (package +      (inherit base) +      (arguments +        `(;#:tests? #f +          ,@(package-arguments base))) +      (synopsis "Groovy test submodule") +      (description "This package contains the test submodules used to test +other groovy submodules.")))) + +(define groovy-xml +  (let ((base (groovy-subproject "groovy-xml"))) +    (package +      (inherit base) +      (native-inputs +       `(("groovy-test" ,groovy-test) +         ("groovy-tests-bootstrap" ,groovy-tests-bootstrap) +         ,@(package-native-inputs base))) +      (inputs +       `(("groovy-parser-antlr4" ,groovy-parser-antlr4) +         ,@(package-inputs base))) +      (synopsis "Groovy XML") +      (description "This package contains XML-related utilities for groovy."))))  (define groovy-templates -  (package -    (inherit groovy-bootstrap) -    (name "groovy-templates") -    (arguments -     `(#:jar-name "groovy-templates.jar" -       #:jdk ,icedtea-8 -       #:test-dir "subprojects/groovy-templates/src/test" -       #:tests? #f;Requires spock-framework which is a circular dependency -       #:phases -       (modify-phases %standard-phases -         (replace 'build -           (lambda _ -             (mkdir-p "build/classes") -             (mkdir-p "build/jar") -             (apply invoke "java" "-cp" (getenv "CLASSPATH") -                    "org.codehaus.groovy.tools.FileSystemCompiler" -                    "-d" "build/classes" "-j"; joint compilation -                    (find-files "subprojects/groovy-templates/src/main" -                                ".*\\.(groovy|java)$")) -             (invoke "jar" "-cf" "build/jar/groovy-templates.jar" -                     "-C" "build/classes" ".") -             #t))))) -    (inputs -     `(("groovy-xml" ,groovy-xml) -       ,@(package-inputs groovy-bootstrap))) -    (native-inputs -     `(("groovy-bootstrap" ,groovy-bootstrap) -       ("groovy-test" ,groovy-test) -       ("groovy-tests-bootstrap" ,groovy-tests-bootstrap) -       ,@(package-native-inputs java-groovy-bootstrap))) -    (synopsis "Groovy template engine") -    (description "This package contains a template framework which is +  (let ((base (groovy-subproject "groovy-templates"))) +    (package +      (inherit base) +      (arguments +       `(#:tests? #f;Requires spock-framework which is a circular dependency +         ,@(substitute-keyword-arguments (package-arguments base) +             ((#:phases phases) +              `(modify-phases ,phases +                 ;; These annotations are used for QA, but do not affect build output. +                 ;; They require findbugs, which we don't have yet. +                 (add-before 'build 'remove-annotation +                   (lambda _ +                     (substitute* '("subprojects/groovy-templates/src/main/groovy/groovy/text/StreamingTemplateEngine.java" +                                    "subprojects/groovy-templates/src/main/groovy/groovy/text/TemplateEngine.java") +                       (("import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;") "") +                       (("@SuppressFBWarnings.*") "")) +                     #t))))))) +      (inputs +       `(("groovy-xml" ,groovy-xml) +         ,@(package-inputs base))) +      (native-inputs +       `(("groovy-bootstrap" ,groovy-bootstrap) +         ("groovy-test" ,groovy-test) +         ("groovy-tests-bootstrap" ,groovy-tests-bootstrap) +         ,@(package-native-inputs base))) +      (synopsis "Groovy template engine") +      (description "This package contains a template framework which is  well-suited to applications where the text to be generated follows the form of -a static template."))) +a static template."))))  (define groovy-groovydoc -  (package -    (inherit groovy-bootstrap) -    (name "groovy-groovydoc") -    (arguments -     `(#:jar-name "groovy-groovydoc.jar" -       #:jdk ,icedtea-8 -       #:test-dir "subprojects/groovy-groovydoc/src/test" -       #:tests? #f; Requires groovy-ant which is a circular dependency -       #:phases -       (modify-phases %standard-phases -         (add-before 'build 'copy-resources -           (lambda _ -             (copy-recursively "subprojects/groovy-groovydoc/src/main/resources" -                               "build/classes") -             #t)) -         (replace 'build -           (lambda _ -             (mkdir-p "build/classes") -             (mkdir-p "build/jar") -             (apply invoke "java" "-cp" (getenv "CLASSPATH") -                    "org.codehaus.groovy.tools.FileSystemCompiler" -                    "-d" "build/classes" -                    "-j"; joint compilation -                    (find-files "subprojects/groovy-groovydoc/src/main" -                                ".*\\.(groovy|java)$")) -             (invoke "jar" "-cf" "build/jar/groovy-groovydoc.jar" -                     "-C" "build/classes" ".") -             #t))))) -    (inputs -     `(("groovy-templates" ,groovy-templates) -       ,@(package-inputs groovy-bootstrap))) -    (native-inputs -     `(("groovy-bootstrap" ,groovy-bootstrap) -       ("groovy-test" ,groovy-test) -       ("groovy-tests-bootstrap" ,groovy-tests-bootstrap) -       ,@(package-native-inputs java-groovy-bootstrap))) -    (synopsis "Groovy documentation generation") -    (description "This package contains the groovy documentation generator, -similar to javadoc."))) +  (let ((base (groovy-subproject "groovy-groovydoc"))) +    (package +      (inherit base) +      (arguments +       `(#:tests? #f; Requires groovy-ant which is a circular dependency +         ,@(package-arguments base))) +      (inputs +       `(("groovy-templates" ,groovy-templates) +         ("groovy-parser-antlr4" ,groovy-parser-antlr4) +         ("java-javaparser" ,java-javaparser) +         ,@(package-inputs groovy-bootstrap))) +      (native-inputs +       `(("groovy-bootstrap" ,groovy-bootstrap) +         ("groovy-test" ,groovy-test) +         ("groovy-tests-bootstrap" ,groovy-tests-bootstrap) +         ,@(package-native-inputs java-groovy-bootstrap))) +      (synopsis "Groovy documentation generation") +      (description "This package contains the groovy documentation generator, +similar to javadoc."))))  (define groovy-ant -  (package -    (inherit groovy-bootstrap) -    (name "groovy-ant") -    (arguments -     `(#:jar-name "groovy-ant.jar" -       #:jdk ,icedtea-8 -       #:test-dir "src/test" -       ;; FIXME: Excluding all tests because they fail -       #:test-exclude (list -                        "**/GroovyTest.java" -                        "**/GroovycTest.java") -       #:phases -       (modify-phases %standard-phases -         (add-before 'configure 'chdir -           (lambda _ -             (chdir "subprojects/groovy-ant") -             #t)) -         (add-before 'build 'copy-resources -           (lambda _ -             (copy-recursively "src/main/resources" "build/classes") -             #t)) -         (replace 'build -           (lambda _ -             (mkdir-p "build/classes") -             (mkdir-p "build/jar") -             (apply invoke "java" "-cp" (getenv "CLASSPATH") -                    "org.codehaus.groovy.tools.FileSystemCompiler" -                    "-d" "build/classes" "-j"; joint compilation -                    (find-files "src/main" ".*\\.(groovy|java)$")) -             (invoke "jar" "-cf" "build/jar/groovy-ant.jar" -                     "-C" "build/classes" ".") -             #t)) -         (replace 'check -           (lambda _ -             (mkdir-p "build/test-classes") -             (substitute* "build.xml" -               (("depends=\"compile-tests\"") "depends=\"\"") -               (("}/java") "}/groovy")) -             (apply invoke "java" "-cp" -                    (string-append (getenv "CLASSPATH") ":build/classes") -                    "org.codehaus.groovy.tools.FileSystemCompiler" -                    "-d" "build/test-classes" "-j" -                    (find-files "src/test" ".*\\.(groovy|java)$")) -             (invoke "ant" "check") -             #t))))) -    (inputs -     `(("groovy-groovydoc" ,groovy-groovydoc) -       ,@(package-inputs groovy-bootstrap))) -    (native-inputs -     `(("groovy-bootstrap" ,groovy-bootstrap) -       ("groovy-xml" ,groovy-xml) -       ("groovy-test" ,groovy-test) -       ("groovy-tests-bootstrap" ,groovy-tests-bootstrap) -       ,@(package-native-inputs java-groovy-bootstrap))) -    (synopsis "Groovy ant tasks") -    (description "This package contains groovy-related ant tasks definitions."))) +  (let ((base (groovy-subproject "groovy-ant"))) +    (package +      (inherit base) +      (arguments +       `(;#:tests? #f;Requires spock-framework which is a circular dependency +         #:ant ,ant/java8; ant is actually a dependency of this package, and we need 1.10 +         ,@(substitute-keyword-arguments (package-arguments base) +             ((#:phases phases) +              `(modify-phases ,phases +                 ;; These annotations are used for QA, but do not affect build output. +                 ;; They require findbugs, which we don't have yet. +                 (add-before 'build 'remove-annotation +                   (lambda _ +                     (substitute* (find-files "subprojects/groovy-ant" +                                              ".*.java$") +                       (("import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;") "") +                       (("@SuppressFBWarnings.*") "")) +                     #t))))))) +      (inputs +       `(("groovy-groovydoc" ,groovy-groovydoc) +         ("java-asm-tree" ,java-asm-tree-8) +         ("java-asm-analysis" ,java-asm-analysis-8) +         ,@(package-inputs base))) +      (native-inputs +       `(("ant-junit" ,ant-junit) +         ("groovy-bootstrap" ,groovy-bootstrap) +         ("groovy-xml" ,groovy-xml) +         ("groovy-test" ,groovy-test) +         ("groovy-tests-bootstrap" ,groovy-tests-bootstrap) +         ,@(package-native-inputs base))) +      (synopsis "Groovy ant tasks") +      (description "This package contains groovy-related ant tasks definitions.")))) + +(define groovy-astbuilder +  (let ((base (groovy-subproject "groovy-astbuilder"))) +    (package +      (inherit base) +      (arguments +       (substitute-keyword-arguments (package-arguments base) +         ((#:phases phases) +          `(modify-phases ,phases +             (delete 'copy-resources) +             (add-after 'build 'copy-resources +               (lambda _ +                 (copy-recursively +                   "subprojects/groovy-astbuilder/src/main/resources" +                   "build/classes") +                 (substitute* "build.xml" +                   (("depends=\"compile,") "depends=\"")) +                 (invoke "ant" "jar") +                 #t)))))) +      (inputs +       `(("groovy-bootstrap" ,groovy-bootstrap) +         ,@(package-inputs base))) +      (native-inputs +       `(("groovy-test" ,groovy-test) +         ("groovy-tests-bootstrap" ,groovy-tests-bootstrap) +         ,@(package-native-inputs base))) +      (synopsis "Transformation to capture ASTBuilder from code statements") +      (description "This package contains an AST transformation for use with +ASTBuilder when building \"from string\" Groovy statements."))))  (define groovy-bsf -  (package -    (inherit groovy-bootstrap) -    (name "groovy-bsf") -    (arguments -     `(#:jar-name "groovy-bsf.jar" -       #:jdk ,icedtea-8 -       #:test-dir "src/test" -       #:test-exclude (list +  (let ((base (groovy-subproject "groovy-bsf"))) +    (package +      (inherit base) +      (arguments +       `(#:test-exclude (list  ;; exception from Groovy: org.codehaus.groovy.runtime.InvokerInvocationException:  ;; groovy.lang.MissingMethodException: No signature of method:  ;; java.util.ArrayList.each() is applicable for argument types:  ;; (groovy.script.MapFromList$_doit_closure1) values:  ;; [groovy.script.MapFromList$_doit_closure1@17e554d5]                          "**/BSFTest.java") -       #:phases -       (modify-phases %standard-phases -         (add-before 'configure 'chdir -           (lambda _ -             (chdir "subprojects/groovy-bsf") -             #t)) -         (replace 'build -           (lambda _ -             (mkdir-p "build/classes") -             (mkdir-p "build/jar") -             (apply invoke "java" "-cp" (getenv "CLASSPATH") -                    "org.codehaus.groovy.tools.FileSystemCompiler" -                    "-d" "build/classes" "-j"; joint compilation -                    (find-files "src/main" ".*\\.(groovy|java)$")) -             (invoke "jar" "-cf" "build/jar/groovy-bsf.jar" -                     "-C" "build/classes" ".") -             #t)) -         (replace 'check -           (lambda _ -             (mkdir-p "build/test-classes") -             (substitute* "build.xml" -               (("depends=\"compile-tests\"") "depends=\"\"")) -             (apply invoke "java" "-cp" -                    (string-append (getenv "CLASSPATH") ":build/classes") -                    "org.codehaus.groovy.tools.FileSystemCompiler" -                    "-d" "build/test-classes" "-j" -                    (find-files "src/test" ".*\\.(groovy|java)$")) -             (invoke "ant" "check") -             #t))))) -    (inputs -     `(("java-commons-bsf" ,java-commons-bsf) -       ,@(package-inputs groovy-bootstrap))) -    (native-inputs -     `(("groovy-bootstrap" ,groovy-bootstrap) -       ("groovy-test" ,groovy-test) -       ("groovy-tests-bootstrap" ,groovy-tests-bootstrap) -       ("java-commons-logging-minimal" ,java-commons-logging-minimal) -       ,@(package-native-inputs java-groovy-bootstrap))) -    (synopsis "Groovy BSF engine") -    (description "This package defines the BSF engine for using Groovy inside -any @dfn{Bean Scripting Framework} (BSF) application."))) +         ,@(package-arguments base))) +      (inputs +       `(("java-commons-bsf" ,java-commons-bsf) +         ,@(package-inputs base))) +      (native-inputs +       `(("groovy-bootstrap" ,groovy-bootstrap) +         ("groovy-test" ,groovy-test) +         ("groovy-tests-bootstrap" ,groovy-tests-bootstrap) +         ("java-commons-logging-minimal" ,java-commons-logging-minimal) +         ,@(package-native-inputs base))) +      (synopsis "Groovy BSF engine") +      (description "This package defines the BSF engine for using Groovy inside +any @dfn{Bean Scripting Framework} (BSF) application.")))) + +(define groovy-cli-commons +  (let ((base (groovy-subproject "groovy-cli-commons"))) +    (package +      (inherit base) +      (inputs +       `(("groovy-bootstrap" ,groovy-bootstrap) +         ,@(package-inputs base))) +      (native-inputs +       `(("groovy-test" ,groovy-test) +         ,@(package-native-inputs base))) +      (synopsis "Groovy CLI common classes") +      (description "This package defines common classes for dealing with +command-line arguments in Groovy.")))) + +(define groovy-cli-picocli +  (let ((base (groovy-subproject "groovy-cli-picocli"))) +    (package +      (inherit base) +      (inputs +       `(("groovy-bootstrap" ,groovy-bootstrap) +         ("java-picocli" ,java-picocli) +         ,@(package-inputs base))) +      (native-inputs +       `(("groovy-test" ,groovy-test) +         ,@(package-native-inputs base))) +      (synopsis "Groovy CLI classes that use picocli") +      (description "This package defines classes for dealing with command-line +arguments in Groovy using the picocli library."))))  (define groovy-swing -  (package -    (inherit groovy-bootstrap) -    (name "groovy-swing") -    (arguments -     `(#:jar-name "groovy-swing.jar" -       #:jdk ,icedtea-8 -       ;; FIXME: tests are not run -       #:test-dir "src/test" -       #:phases -       (modify-phases %standard-phases -         (add-before 'configure 'chdir -           (lambda _ -             (chdir "subprojects/groovy-swing") -             #t)) -         (replace 'build -           (lambda _ -             (mkdir-p "build/classes") -             (mkdir-p "build/jar") -             (apply invoke "java" "-cp" (getenv "CLASSPATH") -                    "org.codehaus.groovy.tools.FileSystemCompiler" -                    "-d" "build/classes" "-j"; joint compilation -                    (find-files "src/main" ".*\\.(groovy|java)$")) -             (invoke "jar" "-cf" "build/jar/groovy-swing.jar" -                     "-C" "build/classes" ".") -             #t)) -         (replace 'check -           (lambda _ -             (mkdir-p "build/test-classes") -             (substitute* "src/test/groovy/groovy/util/GroovySwingTestCase.groovy" -               (("HeadlessTestSupport.headless") "isHeadless()")) -             (substitute* "build.xml" -               (("depends=\"compile-tests\"") "depends=\"\"") -               (("}/java") "}/groovy")) -             (apply invoke "java" "-cp" -                    (string-append (getenv "CLASSPATH") ":build/classes") -                    "org.codehaus.groovy.tools.FileSystemCompiler" -                    "-d" "build/test-classes" "-j" -                    (find-files "src/test" ".*\\.(groovy|java)$")) -             (invoke "ant" "check") -             #t))))) -    (native-inputs -     `(("groovy-bootstrap" ,groovy-bootstrap) -       ("groovy-test" ,groovy-test) -       ("groovy-tests-bootstrap" ,groovy-tests-bootstrap) -       ("java-commons-logging-minimal" ,java-commons-logging-minimal) -       ,@(package-native-inputs java-groovy-bootstrap))) -    (synopsis "Groovy graphical library") -    (description "This package contains the groovy bindings to Java Swing, a -library used to build graphical interfaces."))) +  (let ((base (groovy-subproject "groovy-swing"))) +    (package +      (inherit base) +      (arguments +       (substitute-keyword-arguments (package-arguments base) +         ((#:phases phases) +          `(modify-phases ,phases +             (add-before 'check 'fix-test +               (lambda _ +                 (substitute* +                   "subprojects/groovy-swing/src/test/groovy/groovy/swing/GroovySwingTestCase.groovy" +                   (("HeadlessTestSupport.headless") "isHeadless()")) +                 #t)))))) +      (native-inputs +       `(("groovy-bootstrap" ,groovy-bootstrap) +         ("groovy-test" ,groovy-test) +         ("groovy-tests-bootstrap" ,groovy-tests-bootstrap) +         ("java-commons-logging-minimal" ,java-commons-logging-minimal) +         ,@(package-native-inputs base))) +      (synopsis "Groovy graphical library") +      (description "This package contains the groovy bindings to Java Swing, a +library used to build graphical interfaces."))))  (define groovy-console -  (package -    (inherit groovy-bootstrap) -    (name "groovy-console") -    (arguments -     `(#:jar-name "groovy-console.jar" -       #:jdk ,icedtea-8 -       ;; FIXME: tests are not run -       #:test-dir "src/test" -       #:phases -       (modify-phases %standard-phases -         (add-before 'configure 'chdir -           (lambda _ -             (chdir "subprojects/groovy-console") -             #t)) -         (add-before 'build 'copy-resources -           (lambda _ -             (copy-recursively "src/main/resources" "build/classes") -             #t)) -         (replace 'build -           (lambda _ -             (mkdir-p "build/classes") -             (mkdir-p "build/jar") -             (apply invoke "java" "-cp" (getenv "CLASSPATH") -                    "org.codehaus.groovy.tools.FileSystemCompiler" -                    "-d" "build/classes" "-j"; joint compilation -                    (find-files "src/main" ".*\\.(groovy|java)$")) -             (invoke "jar" "-cf" "build/jar/groovy-console.jar" -                     "-C" "build/classes" ".") -             #t)) -         (replace 'check -           (lambda _ -             (mkdir-p "build/test-classes") -             (substitute* "build.xml" -               (("depends=\"compile-tests\"") "depends=\"\"") -               (("}/java") "}/groovy")) -             (substitute* -               "../groovy-swing/src/test/groovy/groovy/util/GroovySwingTestCase.groovy" -               (("HeadlessTestSupport.headless") "isHeadless()")) -             (apply invoke "java" "-cp" -                    (string-append (getenv "CLASSPATH") ":build/classes") -                    "org.codehaus.groovy.tools.FileSystemCompiler" -                    "-d" "build/test-classes" "-j" -                    (append -                      (find-files "../groovy-swing/src/test" ".*\\.(groovy|java)$") -                      (find-files "src/test" ".*\\.(groovy|java)$"))) -             (invoke "ant" "check") -             #t))))) -    (inputs -     `(("groovy-swing" ,groovy-swing) -       ("groovy-templates" ,groovy-templates) -       ,@(package-inputs groovy-bootstrap))) -    (native-inputs -     `(("groovy-bootstrap" ,groovy-bootstrap) -       ("groovy-test" ,groovy-test) -       ("groovy-tests-bootstrap" ,groovy-tests-bootstrap) -       ("java-commons-logging-minimal" ,java-commons-logging-minimal) -       ,@(package-native-inputs java-groovy-bootstrap))) -    (synopsis "Groovy graphical interface") -    (description "This package contains a graphical interface to run groovy."))) +  (let ((base (groovy-subproject "groovy-console"))) +    (package +      (inherit base) +      (arguments +         (substitute-keyword-arguments (package-arguments base) +           ((#:phases phases) +            `(modify-phases ,phases +               (add-before 'check 'build-swing +                 (lambda _ +                   (substitute* +                     "subprojects/groovy-swing/src/test/groovy/groovy/swing/GroovySwingTestCase.groovy" +                     (("HeadlessTestSupport.headless") "isHeadless()")) +                   (mkdir-p "build/test-classes") +                   (apply invoke "java" "-cp" +                          (string-append (getenv "CLASSPATH") ":build/classes") +                          "org.codehaus.groovy.tools.FileSystemCompiler" "-cp" +                          (string-append (getenv "CLASSPATH") ":build/classes") +                          "-d" "build/test-classes" "-j" +                          (append +                            (find-files "subprojects/groovy-swing/src/test/java" +                                        ".*\\.(groovy|java)$") +                            (find-files "subprojects/groovy-swing/src/test/groovy" +                                        ".*\\.(groovy|java)$"))) +                   #t)))))) +      (inputs +       `(("groovy-swing" ,groovy-swing) +         ("groovy-templates" ,groovy-templates) +         ,@(package-inputs base))) +      (native-inputs +       `(("groovy-bootstrap" ,groovy-bootstrap) +         ("groovy-test" ,groovy-test) +         ("groovy-tests-bootstrap" ,groovy-tests-bootstrap) +         ("java-commons-logging-minimal" ,java-commons-logging-minimal) +         ,@(package-native-inputs base))) +      (synopsis "Groovy graphical interface") +      (description "This package contains a graphical interface to run groovy.")))) + +(define groovy-datetime +  (let ((base (groovy-subproject "groovy-datetime"))) +    (package +      (inherit base) +      (native-inputs +       `(("groovy-test" ,groovy-test) +         ,@(package-native-inputs base))) +      (synopsis "Date/Time API for Groovy") +      (description "This package defines new Groovy methods which appear on +normal JDK Date/Time API (@code{java.time}) classes inside the Groovy +environment.")))) + +(define groovy-dateutil +  (let ((base (groovy-subproject "groovy-dateutil"))) +    (package +      (inherit base) +      (native-inputs +       `(("groovy-test" ,groovy-test) +         ,@(package-native-inputs base))) +      (synopsis "Date and Calendar API for Groovy") +      (description "This package defines new groovy methods which appear on +normal JDK Date and Calendar classes inside the Groovy environment."))))  (define groovy-docgenerator -  (package -    (inherit groovy-bootstrap) -    (name "groovy-docgenerator") -    (arguments -     `(#:jar-name "groovy-docgenerator.jar" -       #:jdk ,icedtea-8 -       #:tests? #f; No tests -       #:phases -       (modify-phases %standard-phases -         (add-before 'configure 'chdir -           (lambda _ -             (chdir "subprojects/groovy-docgenerator") -             #t)) -         (add-before 'build 'copy-resources -           (lambda _ -             (copy-recursively "src/main/resources" "build/classes") -             #t)) -         (replace 'build -           (lambda _ -             (mkdir-p "build/classes") -             (mkdir-p "build/jar") -             (apply invoke "java" "-cp" (getenv "CLASSPATH") -                    "org.codehaus.groovy.tools.FileSystemCompiler" -                    "-d" "build/classes" "-j"; joint compilation -                    (find-files "src/main" ".*\\.(groovy|java)$")) -             (invoke "jar" "-cf" "build/jar/groovy-docgenerator.jar" -                     "-C" "build/classes" ".") -             #t))))) -    (inputs -     `(("groovy-templates" ,groovy-templates) -       ("groovy-swing" ,groovy-swing) -       ("java-qdox-1.12" ,java-qdox-1.12) -       ,@(package-inputs groovy-bootstrap))) -    (native-inputs -     `(("groovy-bootstrap" ,groovy-bootstrap) -       ("groovy-test" ,groovy-test) -       ("groovy-tests-bootstrap" ,groovy-tests-bootstrap) -       ,@(package-native-inputs java-groovy-bootstrap))) -    (synopsis "Groovy documentation generation") -    (description "This package contains a command line tool to generate -documentation for groovy applications."))) +  (let ((base (groovy-subproject "groovy-docgenerator"))) +    (package +      (inherit base) +      (arguments +       `(#:tests? #f; No tests +         ,@(package-arguments base))) +      (inputs +       `(("groovy-templates" ,groovy-templates) +         ("groovy-swing" ,groovy-swing) +         ("java-qdox-1.12" ,java-qdox-1.12) +         ,@(package-inputs base))) +      (native-inputs +       `(("groovy-bootstrap" ,groovy-bootstrap) +         ("groovy-test" ,groovy-test) +         ("groovy-tests-bootstrap" ,groovy-tests-bootstrap) +         ,@(package-native-inputs base))) +      (synopsis "Groovy documentation generation") +      (description "This package contains a command line tool to generate +documentation for groovy applications."))))  (define groovy-groovysh -  (package -    (inherit groovy-bootstrap) -    (name "groovy-groovysh") -    (arguments -     `(#:jar-name "groovy-groovysh.jar" -       #:test-dir "src/test" -       #:jdk ,icedtea-8 -       #:phases -       (modify-phases %standard-phases -         (add-before 'configure 'chdir -           (lambda _ -             (chdir "subprojects/groovy-groovysh") -             #t)) -         (add-before 'build 'copy-resources -           (lambda _ -             (copy-recursively "src/main/resources" "build/classes") -             #t)) -         (replace 'build -           (lambda _ -             (mkdir-p "build/classes") -             (mkdir-p "build/jar") -             (apply invoke "java" "-cp" (getenv "CLASSPATH") -                    "org.codehaus.groovy.tools.FileSystemCompiler" -                    "-d" "build/classes" "-j"; joint compilation -                    (find-files "src/main" ".*\\.(groovy|java)$")) -             (invoke "jar" "-cf" "build/jar/groovy-groovysh.jar" -                     "-C" "build/classes" ".") -             #t)) -         (replace 'check -           (lambda _ -             (mkdir-p "build/test-classes") -             (substitute* "build.xml" -               (("depends=\"compile-tests\"") "depends=\"\"") -               (("}/java") "}/groovy")) -             (apply invoke "java" "-cp" -                    (string-append (getenv "CLASSPATH") ":build/classes") -                    "org.codehaus.groovy.tools.FileSystemCompiler" -                    "-d" "build/test-classes" "-j" -                    (append (find-files "src/test" ".*\\.(groovy|java)$"))) -             (invoke "ant" "check") -             #t))))) -    (inputs -     `(("groovy-xml" ,groovy-xml) -       ("groovy-console" ,groovy-console) -       ,@(package-inputs groovy-bootstrap))) -    (native-inputs -     `(("groovy-bootstrap" ,groovy-bootstrap) -       ("groovy-test" ,groovy-test) -       ("groovy-tests-bootstrap" ,groovy-tests-bootstrap) -       ,@(package-native-inputs java-groovy-bootstrap))) -    (synopsis "Groovy REPL") -    (description "This package contains the Groovy REPL."))) +  (let ((base (groovy-subproject "groovy-groovysh"))) +    (package +      (inherit base) +      (inputs +       `(("groovy-xml" ,groovy-xml) +         ("groovy-console" ,groovy-console) +         ,@(package-inputs base))) +      (native-inputs +       `(("groovy-bootstrap" ,groovy-bootstrap) +         ("groovy-test" ,groovy-test) +         ("groovy-tests-bootstrap" ,groovy-tests-bootstrap) +         ,@(package-native-inputs base))) +      (synopsis "Groovy REPL") +      (description "This package contains the Groovy REPL."))))  (define groovy-jmx -  (package -    (inherit groovy-bootstrap) -    (name "groovy-jmx") -    (arguments -     `(#:jar-name "groovy-jmx.jar" -       #:test-dir "src/test" -       #:jdk ,icedtea-8 -       #:phases -       (modify-phases %standard-phases -         (add-before 'configure 'chdir -           (lambda _ -             (chdir "subprojects/groovy-jmx") -             #t)) -         (replace 'build -           (lambda _ -             (mkdir-p "build/classes") -             (mkdir-p "build/jar") -             (apply invoke "java" "-cp" (getenv "CLASSPATH") -                      "org.codehaus.groovy.tools.FileSystemCompiler" -                      "-d" "build/classes" "-j"; joint compilation -                      (find-files "src/main" ".*\\.(groovy|java)$")) -             (invoke "jar" "-cf" "build/jar/groovy-jmx.jar" -                     "-C" "build/classes" ".") -             #t)) -         (replace 'check -           (lambda _ -             (mkdir-p "build/test-classes") -             (substitute* "build.xml" -               (("depends=\"compile-tests\"") "depends=\"\"") -               (("}/java") "}/groovy")) -             (apply invoke "java" "-cp" -                    (string-append (getenv "CLASSPATH") ":build/classes") -                    "org.codehaus.groovy.tools.FileSystemCompiler" -                    "-d" "build/test-classes" "-j" -                    (append (find-files "src/test" ".*\\.(groovy|java)$"))) -             (invoke "ant" "check") -             #t))))) -    (native-inputs -     `(("groovy-bootstrap" ,groovy-bootstrap) -       ("groovy-test" ,groovy-test) -       ("groovy-tests-bootstrap" ,groovy-tests-bootstrap) -       ,@(package-native-inputs java-groovy-bootstrap))) -    (synopsis "Groovy JMX extension") -    (description "This package contains the JMX extension of Groovy, for -management and monitoring of JVM-based solutions."))) +  (let ((base (groovy-subproject "groovy-jmx"))) +    (package +      (inherit base) +      (native-inputs +       `(("groovy-bootstrap" ,groovy-bootstrap) +         ("groovy-test" ,groovy-test) +         ("groovy-tests-bootstrap" ,groovy-tests-bootstrap) +         ,@(package-native-inputs base))) +      (synopsis "Groovy JMX extension") +      (description "This package contains the JMX extension of Groovy, for +management and monitoring of JVM-based solutions."))))  (define groovy-json -  (package -    (inherit groovy-bootstrap) -    (name "groovy-json") -    (arguments -     `(#:jar-name "groovy-json.jar" -       #:test-dir "src/test" -       #:jdk ,icedtea-8 -       #:phases -       (modify-phases %standard-phases -         (add-before 'configure 'chdir -           (lambda _ -             (chdir "subprojects/groovy-json") -             #t)) -         (replace 'build -           (lambda _ -             (mkdir-p "build/classes") -             (mkdir-p "build/jar") -             (apply invoke "java" "-cp" (getenv "CLASSPATH") -                      "org.codehaus.groovy.tools.FileSystemCompiler" -                      "-d" "build/classes" "-j"; joint compilation -                      (find-files "src/main" ".*\\.(groovy|java)$")) -             (invoke "jar" "-cf" "build/jar/groovy-json.jar" -                     "-C" "build/classes" ".") -             #t)) -         (replace 'check -           (lambda _ -             (mkdir-p "build/test-classes") -             (substitute* "build.xml" -               (("depends=\"compile-tests\"") "depends=\"\"") -               (("}/java") "}/groovy")) -             (apply invoke "java" "-cp" -                    (string-append (getenv "CLASSPATH") ":build/classes") -                    "org.codehaus.groovy.tools.FileSystemCompiler" -                    "-d" "build/test-classes" "-j" -                    (append (find-files "src/test" ".*\\.(groovy|java)$"))) -             (invoke "ant" "check") -             #t))))) -    (native-inputs -     `(("groovy-bootstrap" ,groovy-bootstrap) -       ("groovy-test" ,groovy-test) -       ("groovy-tests-bootstrap" ,groovy-tests-bootstrap) -       ,@(package-native-inputs java-groovy-bootstrap))) -    (synopsis "Groovy JSON") -    (description "This package contains JSON-related utilities for groovy."))) +  (let ((base (groovy-subproject "groovy-json"))) +    (package +      (inherit base) +      (native-inputs +       `(("groovy-bootstrap" ,groovy-bootstrap) +         ("groovy-test" ,groovy-test) +         ("groovy-tests-bootstrap" ,groovy-tests-bootstrap) +         ,@(package-native-inputs base))) +      (synopsis "Groovy JSON") +      (description "This package contains JSON-related utilities for groovy."))))  (define groovy-jsr223 -  (package -    (inherit groovy-bootstrap) -    (name "groovy-jsr223") -    (arguments -     `(#:jar-name "groovy-jsr223.jar" -       #:test-dir "src/test" -       #:jdk ,icedtea-8 -       #:phases -       (modify-phases %standard-phases -         (add-before 'configure 'chdir -           (lambda _ -             (chdir "subprojects/groovy-jsr223") -             #t)) -         (add-before 'build 'copy-resources -           (lambda _ -             (copy-recursively "src/main/resources" "build/classes") -             #t)) -         (replace 'build -           (lambda _ -             (mkdir-p "build/classes") -             (mkdir-p "build/jar") -             (apply invoke "java" "-cp" (getenv "CLASSPATH") -                      "org.codehaus.groovy.tools.FileSystemCompiler" -                      "-d" "build/classes" "-j"; joint compilation -                      (find-files "src/main" ".*\\.(groovy|java)$")) -             (invoke "jar" "-cf" "build/jar/groovy-jsr223.jar" -                     "-C" "build/classes" ".") -             #t)) -         (replace 'check -           (lambda _ -             (mkdir-p "build/test-classes") -             (substitute* "build.xml" -               (("depends=\"compile-tests\"") "depends=\"\"") -               (("}/java") "}/groovy")) -             (apply invoke "java" "-cp" -                    (string-append (getenv "CLASSPATH") ":build/classes") -                    "org.codehaus.groovy.tools.FileSystemCompiler" -                    "-d" "build/test-classes" "-j" -                    (append (find-files "src/test" ".*\\.(groovy|java)$"))) -             (invoke "ant" "check") -             #t))))) -    (native-inputs -     `(("groovy-bootstrap" ,groovy-bootstrap) -       ("groovy-test" ,groovy-test) -       ("groovy-tests-bootstrap" ,groovy-tests-bootstrap) -       ,@(package-native-inputs java-groovy-bootstrap))) -    (synopsis "Groovy's own JSR223 implementation") -    (description "This package contains Groovy's own JSR223 implementation.  This -module is used for interaction between Groovy and Java code."))) +  (let ((base (groovy-subproject "groovy-jsr223"))) +    (package +      (inherit base) +      (native-inputs +       `(("groovy-bootstrap" ,groovy-bootstrap) +         ("groovy-test" ,groovy-test) +         ("groovy-tests-bootstrap" ,groovy-tests-bootstrap) +         ,@(package-native-inputs base))) +      (synopsis "Groovy's own JSR223 implementation") +      (description "This package contains Groovy's own JSR223 implementation.  This +module is used for interaction between Groovy and Java code."))))  (define groovy-nio -  (package -    (inherit groovy-bootstrap) -    (name "groovy-nio") -    (arguments -     `(#:jar-name "groovy-nio.jar" -       #:test-dir "src/test" -       #:jdk ,icedtea-8 -       #:tests? #f; Requires spock-framework -       #:phases -       (modify-phases %standard-phases -         (add-before 'configure 'chdir -           (lambda _ -             (chdir "subprojects/groovy-nio") -             #t)) -         (replace 'build -           (lambda _ -             (mkdir-p "build/classes") -             (mkdir-p "build/jar") -             (apply invoke "java" "-cp" (getenv "CLASSPATH") -                    "org.codehaus.groovy.tools.FileSystemCompiler" -                    "-d" "build/classes" "-j"; joint compilation -                    (find-files "src/main" ".*\\.(groovy|java)$")) -             (invoke "jar" "-cf" "build/jar/groovy-nio.jar" -                     "-C" "build/classes" ".") -             #t))))) -    (native-inputs -     `(("groovy-bootstrap" ,groovy-bootstrap) -       ("groovy-test" ,groovy-test) -       ("groovy-tests-bootstrap" ,groovy-tests-bootstrap) -       ,@(package-native-inputs java-groovy-bootstrap))) -    (synopsis "Groovy input-output library") -    (description "This package implements an input/output library that extends -the functionality of the common library of Java."))) +  (let ((base (groovy-subproject "groovy-nio"))) +    (package +      (inherit base) +      (arguments +       `(#:tests? #f; Require spock-framework +         ,@(package-arguments base))) +      (synopsis "Groovy input-output library") +      (description "This package implements an input/output library that extends +the functionality of the common library of Java."))))  (define groovy-servlet -  (package -    (inherit groovy-bootstrap) -    (name "groovy-servlet") -    (arguments -     `(#:jar-name "groovy-servlet.jar" -       #:test-dir "src/test" -       #:jdk ,icedtea-8 -       #:phases -       (modify-phases %standard-phases -         (add-before 'configure 'chdir -           (lambda _ -             (chdir "subprojects/groovy-servlet") -             #t)) -         (replace 'build -           (lambda _ -             (mkdir-p "build/classes") -             (mkdir-p "build/jar") -             (apply invoke "java" "-cp" (getenv "CLASSPATH") -                    "org.codehaus.groovy.tools.FileSystemCompiler" -                    "-d" "build/classes" -                    "-j"; joint compilation -                    (find-files "src/main" ".*\\.(groovy|java)$")) -             (invoke "jar" "-cf" "build/jar/groovy-servlet.jar" -                     "-C" "build/classes" ".") -             #t)) -         (replace 'check -           (lambda _ -             (mkdir-p "build/test-classes") -             (substitute* "build.xml" -               (("depends=\"compile-tests\"") "depends=\"\"") -               (("}/java") "}/groovy")) -             (apply invoke "java" "-cp" -                    (string-append (getenv "CLASSPATH") ":build/classes") -                    "org.codehaus.groovy.tools.FileSystemCompiler" -                    "-d" "build/test-classes" -                    "-j" -                    (append (find-files "src/test" ".*\\.(groovy|java)$"))) -             (invoke "ant" "check") -             #t))))) -    (inputs -     `(("groovy-templates" ,groovy-templates) -       ("groovy-xml" ,groovy-xml) -       ,@(package-inputs groovy-bootstrap))) -    (native-inputs -     `(("groovy-bootstrap" ,groovy-bootstrap) -       ("groovy-json" ,groovy-json) -       ("groovy-test" ,groovy-test) -       ("groovy-tests-bootstrap" ,groovy-tests-bootstrap) -       ,@(package-native-inputs java-groovy-bootstrap))) -    (synopsis "Groovy's servlet implementation") -    (description "This package contains a library to create groovlets, Groovy's -version of Java servlets."))) +  (let ((base (groovy-subproject "groovy-servlet"))) +    (package +      (inherit base) +      (inputs +       `(("groovy-templates" ,groovy-templates) +         ("groovy-xml" ,groovy-xml) +         ,@(package-inputs base))) +      (native-inputs +       `(("groovy-bootstrap" ,groovy-bootstrap) +         ("groovy-json" ,groovy-json) +         ("groovy-test" ,groovy-test) +         ("groovy-tests-bootstrap" ,groovy-tests-bootstrap) +         ,@(package-native-inputs base))) +      (synopsis "Groovy's servlet implementation") +      (description "This package contains a library to create groovlets, Groovy's +version of Java servlets."))))  (define groovy-sql -  (package -    (inherit groovy-bootstrap) -    (name "groovy-sql") -    (arguments -     `(#:jar-name "groovy-sql.jar" -       #:test-dir "src/test" -       #:tests? #f;TODO: Requires hsqldb -       #:jdk ,icedtea-8 -       #:phases -       (modify-phases %standard-phases -         (add-before 'configure 'chdir -           (lambda _ -             (chdir "subprojects/groovy-sql") -             #t)) -         (replace 'build -           (lambda _ -             (mkdir-p "build/classes") -             (mkdir-p "build/jar") -             (apply invoke "java" "-cp" (getenv "CLASSPATH") -                      "org.codehaus.groovy.tools.FileSystemCompiler" -                      "-d" "build/classes" "-j"; joint compilation -                      (find-files "src/main" -                                  ".*\\.(groovy|java)$")) -             (invoke "jar" "-cf" "build/jar/groovy-sql.jar" -                     "-C" "build/classes" ".") -             #t))))) -    (native-inputs -     `(("groovy-bootstrap" ,groovy-bootstrap) -       ("groovy-test" ,groovy-test) -       ("groovy-tests-bootstrap" ,groovy-tests-bootstrap) -       ,@(package-native-inputs java-groovy-bootstrap))) -    (synopsis "Groovy SQL library") -    (description "This package contains a facade over Java's normal JDBC APIs -providing greatly simplified resource management and result set handling."))) +  (let ((base (groovy-subproject "groovy-sql"))) +    (package +      (inherit base) +      (arguments +       `(#:tests? #f;TODO: Requires hsqldb +         ,@(package-arguments base))) +      (synopsis "Groovy SQL library") +      (description "This package contains a facade over Java's normal JDBC APIs +providing greatly simplified resource management and result set handling."))))  (define groovy-testng -  (package -    (inherit groovy-bootstrap) -    (name "groovy-testng") -    (arguments -     `(#:jar-name "groovy-testng.jar" -       #:tests? #f; No tests -       #:jdk ,icedtea-8 -       #:phases -       (modify-phases %standard-phases -         (add-before 'configure 'chdir -           (lambda _ -             (chdir "subprojects/groovy-testng") -             #t)) -         (add-before 'build 'copy-resources -           (lambda _ -             (copy-recursively "src/main/resources" "build/classes") -             #t)) -         (replace 'build -           (lambda _ -             (mkdir-p "build/classes") -             (mkdir-p "build/jar") -             (apply invoke "java" "-cp" (getenv "CLASSPATH") -                    "org.codehaus.groovy.tools.FileSystemCompiler" -                    "-d" "build/classes" -                    "-j"; joint compilation -                    (find-files "src/main" ".*\\.(groovy|java)$")) -             (invoke "jar" "-cf" "build/jar/groovy-testng.jar" -                     "-C" "build/classes" ".") -             #t))))) -    (native-inputs -     `(("groovy-bootstrap" ,groovy-bootstrap) -       ("groovy-test" ,groovy-test) -       ("groovy-tests-bootstrap" ,groovy-tests-bootstrap) -       ,@(package-native-inputs java-groovy-bootstrap))) -    (synopsis "Groovy testing framework") -    (description "This package contains integration code for running TestNG -tests in Groovy."))) +  (let ((base (groovy-subproject "groovy-testng"))) +    (package +      (inherit base) +      (native-inputs +       `(("groovy-bootstrap" ,groovy-bootstrap) +         ("groovy-test" ,groovy-test) +         ("groovy-tests-bootstrap" ,groovy-tests-bootstrap) +         ,@(package-native-inputs base))) +      (synopsis "Groovy testing framework") +      (description "This package contains integration code for running TestNG +tests in Groovy."))))  (define groovy-macro -  (package -    (inherit groovy-bootstrap) -    (name "groovy-macro") -    (arguments -     `(#:jar-name "groovy-macro.jar" -       #:test-dir "src/test" -       #:jdk ,icedtea-8 -       #:phases -       (modify-phases %standard-phases -         (add-before 'configure 'chdir -           (lambda _ -             (chdir "subprojects/groovy-macro") -             #t)) -         (replace 'build -           (lambda _ -             (mkdir-p "build/classes") -             (mkdir-p "build/jar") -             (apply invoke "java" "-cp" (getenv "CLASSPATH") -                    "org.codehaus.groovy.tools.FileSystemCompiler" -                    "-d" "build/classes" "-j"; joint compilation -                    (find-files "src/main" ".*\\.(groovy|java)$")) -             (invoke "jar" "-cf" "build/jar/groovy-macro.jar" -                     "-C" "build/classes" ".") -             #t)) -         (replace 'check -           (lambda _ -             (mkdir-p "build/test-classes") -             (substitute* "build.xml" -               (("depends=\"compile-tests\"") "depends=\"\"") -               (("}/java") "}/groovy")) -             (apply invoke "java" "-cp" -                   (string-append (getenv "CLASSPATH") ":build/classes") -                   "org.codehaus.groovy.tools.FileSystemCompiler" -                   "-d" "build/test-classes" "-j" -                   (append (find-files "src/test" ".*\\.(groovy|java)$"))) -             (invoke "ant" "check") -             #t))))) -    (inputs -     `(("groovy-templates" ,groovy-templates) -       ("groovy-xml" ,groovy-xml) -       ,@(package-inputs groovy-bootstrap))) -    (native-inputs -     `(("groovy-bootstrap" ,groovy-bootstrap) -       ("groovy-json" ,groovy-json) -       ("groovy-test" ,groovy-test) -       ("groovy-tests-bootstrap" ,groovy-tests-bootstrap) -       ,@(package-native-inputs java-groovy-bootstrap))) -    (synopsis "Groovy macro processor") -    (description "This package contains a high-level library to create macro -and modify groovy's @dfn{Abstract Syntax Tree} (AST)."))) +  (let ((base (groovy-subproject "groovy-macro"))) +    (package +      (inherit base) +      (arguments +       (substitute-keyword-arguments (package-arguments base) +         ((#:phases phases) +          `(modify-phases ,phases +             (delete 'copy-resources) +             (add-after 'build 'copy-resources +               (lambda _ +                 (copy-recursively "subprojects/groovy-macro/src/main/resources" +                                   "build/classes") +                 (substitute* "build.xml" +                   (("depends=\"compile,") "depends=\"")) +                 (invoke "ant" "jar") +                 #t)))))) +      (inputs +       `(("groovy-templates" ,groovy-templates) +         ("groovy-xml" ,groovy-xml) +         ,@(package-inputs base))) +      (native-inputs +       `(("groovy-bootstrap" ,groovy-bootstrap) +         ("groovy-json" ,groovy-json) +         ("groovy-test" ,groovy-test) +         ("groovy-tests-bootstrap" ,groovy-tests-bootstrap) +         ,@(package-native-inputs base))) +      (synopsis "Groovy macro processor") +      (description "This package contains a high-level library to create macro +and modify groovy's @dfn{Abstract Syntax Tree} (AST).")))) + +(define groovy-yaml +  (let ((base (groovy-subproject "groovy-yaml"))) +    (package +      (inherit base) +      (inputs +       `(("groovy-json" ,groovy-json) +         ("java-fasterxml-jackson-annotations" ,java-fasterxml-jackson-annotations) +         ("java-fasterxml-jackson-core" ,java-fasterxml-jackson-core) +         ("java-fasterxml-jackson-databind" ,java-fasterxml-jackson-databind) +         ("java-fasterxml-jackson-dataformat-yaml" ,java-fasterxml-jackson-dataformat-yaml) +         ,@(package-inputs base))) +      (native-inputs +       `(("groovy-test" ,groovy-test) +         ,@(package-native-inputs base))) +      (synopsis "Groovy YAML") +      (description "This package contains YAML-related utilities for groovy."))))  (define-public groovy    (package @@ -1071,7 +779,7 @@ and modify groovy's @dfn{Abstract Syntax Tree} (AST).")))      (name "groovy")      (arguments       `(#:tests? #f; No tests -       #:jdk ,icedtea-8 +       #:jdk ,openjdk9         #:phases         (modify-phases %standard-phases           (delete 'configure) @@ -1089,7 +797,7 @@ and modify groovy's @dfn{Abstract Syntax Tree} (AST).")))                     (("@GROOVYJAR@") "groovy.jar")                     (("MAX_FD=\"maximum\"")                      (string-append -                      "MAX_FD=\"maximum\"\nJAVAHOME=" +                      "MAX_FD=\"maximum\"\nJAVA_HOME="                        (assoc-ref inputs "jdk"))))                   ;; Groovy uses class loading. It's not enough to put the class                   ;; in the loader's classpath, as it causes breakages: @@ -1105,14 +813,17 @@ and modify groovy's @dfn{Abstract Syntax Tree} (AST).")))                         (lambda (jar)                           (symlink jar (string-append out-lib "/" (basename jar))))                         (find-files (assoc-ref inputs input) ".*.jar"))) -                   '("groovy-bootstrap" "groovy-ant" "groovy-bsf" -                     "groovy-console" "groovy-docgenerator" -                     "groovy-groovydoc" "groovy-groovysh" -                     "groovy-jmx" "groovy-json" "groovy-jsr223" -                     "groovy-nio" "groovy-servlet" "groovy-sql" +                   '("groovy-bootstrap" "groovy-ant" "groovy-astbuilder" +                     "groovy-bsf" "groovy-cli-commons" "groovy-cli-picocli" +                     "groovy-console" "groovy-datetime" "groovy-dateutil" +                     "groovy-docgenerator" "groovy-groovydoc" "groovy-groovysh" +                     "groovy-jmx" "groovy-json" "groovy-jsr223" "groovy-nio" +                     "groovy-parser-antlr4" "groovy-servlet" "groovy-sql"                       "groovy-swing" "groovy-templates" "groovy-testng" -                     "groovy-xml" "java-commons-cli" "java-asm" -                     "java-classpathx-servletapi" "java-xstream" +                     "groovy-xml" "groovy-yaml" "java-commons-cli" +                     "java-tunnelvisionlabs-antlr4-runtime" "java-asm" +                     "java-asm-analysis" "java-asm-tree" "java-asm-util" +                     "java-classpathx-servletapi" "java-xstream" "java-picocli"                       "java-jansi" "java-jline-2"))                   ;; antlr.jar is present twice in antlr2.  Symlink doesn't like                   ;; it, so we symlink it here. @@ -1130,8 +841,13 @@ and modify groovy's @dfn{Abstract Syntax Tree} (AST).")))      (inputs       `(("groovy-bootstrap" ,groovy-bootstrap)         ("groovy-ant" ,groovy-ant) +       ("groovy-astbuilder" ,groovy-astbuilder)         ("groovy-bsf" ,groovy-bsf) +       ("groovy-cli-commons" ,groovy-cli-commons) +       ("groovy-cli-picocli" ,groovy-cli-picocli)         ("groovy-console" ,groovy-console) +       ("groovy-datetime" ,groovy-datetime) +       ("groovy-dateutil" ,groovy-dateutil)         ("groovy-docgenerator" ,groovy-docgenerator)         ("groovy-groovydoc" ,groovy-groovydoc)         ("groovy-groovysh" ,groovy-groovysh) @@ -1139,18 +855,26 @@ and modify groovy's @dfn{Abstract Syntax Tree} (AST).")))         ("groovy-json" ,groovy-json)         ("groovy-jsr223" ,groovy-jsr223)         ("groovy-nio" ,groovy-nio) +       ("groovy-parser-antlr4" ,groovy-parser-antlr4)         ("groovy-servlet" ,groovy-servlet)         ("groovy-sql" ,groovy-sql)         ("groovy-swing" ,groovy-swing)         ("groovy-templates" ,groovy-templates)         ("groovy-testng" ,groovy-testng)         ("groovy-xml" ,groovy-xml) +       ("groovy-yaml" ,groovy-yaml) +       ("java-tunnelvisionlabs-antlr4-runtime" +        ,java-tunnelvisionlabs-antlr4-runtime)         ("java-commons-cli" ,java-commons-cli) -       ("java-asm" ,java-asm) +       ("java-asm" ,java-asm-8) +       ("java-asm-analysis" ,java-asm-analysis-8) +       ("java-asm-tree" ,java-asm-tree-8) +       ("java-asm-util" ,java-asm-util-8)         ("java-classpathx-servletapi" ,java-classpathx-servletapi) -       ("java-xstream" ,java-xstream) +       ("java-picocli" ,java-picocli)         ("java-jansi" ,java-jansi)         ("java-jline-2" ,java-jline-2) +       ("java-xstream" ,java-xstream)         ("antlr2" ,antlr2)))      (synopsis "Programming language for the JVM")      (description "Apache Groovy is a powerful, optionally typed and dynamic | 
