unofficial mirror of guix-devel@gnu.org 
 help / color / Atom feed
* icu4j, antlr4, source archives without a root path
@ 2020-05-11  0:29 Michael Zucchi
  2020-05-12 21:57 ` Björn Höfling
  0 siblings, 1 reply; 5+ messages in thread
From: Michael Zucchi @ 2020-05-11  0:29 UTC (permalink / raw)
  To: guix-devel

[-- Attachment #1: Type: text/plain, Size: 17911 bytes --]


Morning,

While working toward openjfx I encountered a problem with the java-icu4j 
package required for antlr4 which openjfx requires. Firstly it's 
building the wrong source - it's trying to build ic4j-*-src.jar which 
only contains the java source suitable for browsing in an ide and is 
thus missing the resource and build files.  So while it creates a 
package that allows compilation to pass it doesn't actually work.

So I tried creating one from the correct source, and for the sake of it, 
using the same version as the existing icu4c package - 66.1[1].  The 
correct java source archive is icu4j-66_1.tgz 
<https://github.com/unicode-org/icu/releases/download/release-66-1/icu4j-66_1.tgz><https://github.com/unicode-org/icu/releases/download/release-66-1/icu4j-66_1.tgz>. 
<https://github.com/unicode-org/icu/releases/download/release-66-1/icu4j-66_1-src.jar> 
I couldn't use githere because the icu git repository requires git lfs.  
My system git doesn't have it so i didn't even try to see if git-fetch 
supports it.

For some reason (unlike icu4c) this is not archived within a single 
subdirectory which causes at least two problems.  First the 
gnu-build-system unpack function changes to the first subdirectory it 
finds after unpacking any archive, which in this case is nothing 
useful.  This can be hacked around by replacing the unpack function or 
adding a post-pack modification to run "cd ..". The second is that you 
cannot apply any patches as the (source (patches --)) function uses an 
entirely different  mechanism to change to the source root subdirectory 
where it simply chooses the first directory entry it finds - which at 
least in this case is a file!  So it fails and aborts.  Of course the 
patches could just be applied as a post-unpack function in the same 
manner as substitute* is often used.

I found this second issue by accident, icu4j doesn't need a patch.

For what it's worth by mid last week I went through this and managed to 
get antlr4 to build (what an awful mess[2]) and have worked out the 
steps for openjfx but it was such a miserable few days of work that I 
went and did other things for a while.  So sorry to say that at this 
point I'm not sure if i'll ever get around to submitting patches for any 
of this.

Regards,
  Z

[1] https://github.com/unicode-org/icu/releases/tag/release-66-1
[2] antlr.scm work in progress

(define-module (antlr)
  #:use-module (guix packages)
  #:use-module (guix download)
  #:use-module (guix git-download)
  #:use-module (guix build-system ant)
  #:use-module ((guix licenses) #:prefix license:)
  #:use-module (gnu packages)
  #:use-module (gnu packages java))

                                         ; really out of date but this 
is the version used by antlr4
                                         ; this might want to have 
javafx.json (the api) as a separate output?
(define-public jsonp
   (package
     (name "jsonp")
     (version "jsonp-1.0.4")
     (source (origin
               (method git-fetch)
               (uri (git-reference
                     (url "https://github.com/javaee/jsonp.git")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
                (base32
"01r4syivcywpvxkr1hn0az9316pr7qpnx154zzzw0nijfmdlbw7n"))))
     (build-system ant-build-system)
     (arguments
      `(#:jar-name (string-append ,name "-" ,version ".jar")
                   #:tests? #f
                   #:source-dir "impl/src/main/java:api/src/main/java"
                   #:phases
                   (modify-phases %standard-phases
                     (add-before 'build 'fix-build-xml
                       (lambda _
                         (substitute* "build.xml"
                           (("target name=\"compile\">")
                            "target name=\"compile\">
<copy todir=\"${classes.dir}\">
<fileset dir=\"impl/src/main/resources\">
<include name=\"**/*.properties\"/>
</fileset>
</copy>")))))))
     (home-page "https://javaee.github.io/jsonp/")
     (synopsis "JSON Processing api")
     (description "JSON Processing (JSON-P) is a Java API to process
  (for e.g. parse, generate, transform and query) JSON messages. It
  produces and consumes JSON text in a streaming fashion (similar to
  StAX API for XML) and allows to build a Java object model for JSON
  text using API classes (similar to DOM API for XML). ")
     (license license:gpl2))) ; with classpath exception

                                         ; java-icu4j is broken
(define-public java-icu4j-66
   (package
     (name "icu4j")
     (version "66.1")
     (source (origin
               (method url-fetch)
               (uri (string-append
"https://github.com/unicode-org/icu/releases/download/release-"
                     (string-map (lambda (x) (if (char=? x #\.) #\- x)) 
version)
                     "/icu4j-"
                     (string-map (lambda (x) (if (char=? x #\.) #\_ x)) 
version)
                     ".tgz"))
               (sha256
                (base32
"1ahdyz9209lwl7knb2l3gmnkkby221p0vpgx70fj4j02rdzgvw0d"))
               ))
     (build-system ant-build-system)
     (arguments
      `(#:tests? #f                      ; no tests included
                 #:phases
                 (modify-phases %standard-phases
                   (replace 'unpack
                     (lambda* (#:key source #:allow-other-keys)
                       (mkdir "source")
                       (chdir "source")
                       (invoke "tar" "xvf" source)))

                   (replace 'install
                     (lambda* (#:key outputs #:allow-other-keys)
                       (let ((out (assoc-ref outputs "out")))
                         (mkdir-p (string-append out "/share/java"))
                         (copy-file "icu4j.jar" (string-append out 
"/share/java/icu4j-" ,version ".jar"))
                         #t)))
                   )
                 )
      )
     (home-page "http://site.icu-project.org/")
     (synopsis "International Components for Unicode")
     (description
      "ICU is a set of C/C++ and Java libraries providing Unicode and
globalisation support for software applications.  This package contains the
Java part.")
     (license license:x11)))

(define-public antlr4
   (package
     (name "antlr4")
     (version "4.7.2")
     (source (origin
               (method git-fetch)
               (uri (git-reference
                     (url "https://github.com/antlr/antlr4")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
                (base32
"1pl0zs6c6wx9nmq30s7ccpc3dl72az55i8vfp574fw9sywmvxmlj"))
               (patches
                (search-patches "antlr-template.patch"))
               ))


     (build-system ant-build-system)
     (arguments
      `(#:jar-name (string-append ,name "-" ,version ".jar")
                   #:source-dir 
"tool/src:runtime/Java/src:build/gensrc/tool"
                   #:tests? #f
                   #:phases
                   (modify-phases %standard-phases
                     (add-after 'install 'bin-install
                       (lambda* (#:key inputs outputs #:allow-other-keys)
                         (let ((jar (string-append (assoc-ref outputs 
"out") "/share/java"))
                               (bin (string-append (assoc-ref outputs 
"out") "/bin")))
                           (mkdir-p bin)
                           (with-output-to-file (string-append bin 
"/antlr4")
                             (lambda _
                               (display
                                (string-append "#!" (which "sh") "\n"
                                               "java -cp " jar "/" ,name 
"-" ,version ".jar:"
                                               (string-concatenate
                                                (find-files (assoc-ref 
inputs "stringtemplate")
".*\\.jar"))
                                               ":"
                                               (string-concatenate
                                                (find-files (assoc-ref 
inputs "stringtemplate4")
".*\\.jar"))
                                               ":"
                                               (string-concatenate
                                                (find-files (string-append
(assoc-ref inputs "antlr")
"/lib")
".*\\.jar"))
                                               " org.antlr.Tool $*"))))
                           (chmod (string-append bin "/antlr4") #o755))
                         #t))
                     (add-after 'configure 'generate-grammar
                       (lambda _
                         (invoke "antlr3"
                                 "-o", "build/gensrc",
"tool/src/org/antlr/v4/codegen/SourceGenTriggers.g"
"tool/src/org/antlr/v4/parse/ANTLRLexer.g"
"tool/src/org/antlr/v4/parse/ANTLRParser.g"
"tool/src/org/antlr/v4/parse/ATNBuilder.g"
"tool/src/org/antlr/v4/parse/ActionSplitter.g"
"tool/src/org/antlr/v4/parse/BlockSetTransformer.g"
"tool/src/org/antlr/v4/parse/GrammarTreeVisitor.g"
"tool/src/org/antlr/v4/parse/LeftRecursiveRuleWalker.g")
                         #t))
                     (add-after 'generate-grammar 'build-runtime
                       (lambda _
                         (mkdir-p "build/classes")
                         (apply invoke "javac"
                                "-source" "1.7"
                                "-target" "1.7"
                                "-d" "build/classes"
                                (find-files "runtime/Java/src" 
"\\.java$"))))
                     (add-after 'build-runtime 'build-controller
                                         ; replicate functionality of 
maven-stringtemplate-plugin as there is no tool for it(?)
                       (lambda* (#:key inputs #:allow-other-keys)
                         (with-output-to-file 
"build/gensrc/MakeTemplate.java"
                           (lambda _
                             (display "import org.stringtemplate.v4.ST;
import org.stringtemplate.v4.STGroup;
import org.stringtemplate.v4.STGroupDir;
import org.stringtemplate.v4.misc.ErrorBuffer;
import org.stringtemplate.v4.AutoIndentWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Map;

public class MakeTemplate {
     public static void main(String[] argv) {
         String dir=argv[0];
         String name=argv[1];
         String res=argv[2];

         STGroup group = new STGroupDir(dir);
         ST st = group.getInstanceOf(name);

         for (Map.Entry<String,Object> e: 
org.antlr.v4.unicode.UnicodeDataTemplateController.getProperties().entrySet())
             st.add(e.getKey(), e.getValue());

         try (FileWriter out = new FileWriter(res)) {
             ErrorBuffer listener = new ErrorBuffer();
             st.write(new AutoIndentWriter(out), listener);
             if(!listener.errors.isEmpty())
                 throw new IOException(listener.toString());
         } catch (IOException x) {
             x.printStackTrace(System.err);
             System.exit(1);
         }
     }
}")))
                         (mkdir "build/genclasses")
                         (invoke "javac"
                                 "-d" "build/genclasses"
                                 "-classpath"
                                 (string-join
                                  (append
                                   '("build/classes")
                                   (find-files (assoc-ref inputs 
"stringtemplate") "\\.jar$")
                                   (find-files (assoc-ref inputs 
"icu4j") "\\.jar$"))
                                  ":")
"tool/src/org/antlr/v4/unicode/UnicodeDataTemplateController.java"
                                 "build/gensrc/MakeTemplate.java")
                         #t))
                     (add-after 'build-controller 'process-templates
                       (lambda* (#:key inputs #:allow-other-keys)
                         (mkdir-p "build/gensrc/tool/org/antlr/v4/unicode")
                         (invoke "java"
                                 "-classpath"
                                 (string-join
                                  (append
                                   '("build/classes" "build/genclasses")
                                   (find-files (assoc-ref inputs 
"stringtemplate") "\\.jar$")
                                   (find-files (assoc-ref inputs 
"antlr3") "\\.jar$")
                                   (find-files (assoc-ref inputs 
"icu4j") "\\.jar$"))
                                  ":")
                                 "MakeTemplate"
"tool/resources/org/antlr/v4/tool/templates"
                                 "unicodedata"
"build/gensrc/tool/org/antlr/v4/unicode/UnicodeData.java")))
                     (add-before 'build 'fix-build-xml
                       (lambda _
                         (substitute* "build.xml"
                           (("target name=\"compile\">")
                            "target name=\"compile\">
<copy todir=\"${classes.dir}\">
<fileset dir=\"tool/resources\">
<include name=\"**/*.stg\"/>
<include name=\"**/*.st\"/>
<include name=\"**/*.sti\"/>
</fileset>
</copy>")
(("(<javac.*srcdir=\"tool/src[^>]*)/>" all letters)
                            (string-append letters "><exclude 
name=\"org/antlr/v4/unicode/UnicodeDataTemplateController.java\"/>
<exclude name=\"org/antlr/v4/gui/**\"/>
</javac>")))
                         #t)))))
     (native-inputs
      `(("icu4j" ,java-icu4j-66)
        ("antlr3" ,antlr3)
        ))
     (inputs
      `(("junit" ,java-junit)
        ("stringtemplate" ,java-stringtemplate)
        ("jsonp" ,jsonp)
        ))
     (propagated-inputs
      `(
        ("antlr3" ,antlr3)
        ("stringtemplate" ,java-stringtemplate)
        ))
     (home-page "https://www.antlr.org")
     (synopsis "Framework for constructing recognisers, compilers, and 
translators")
     (description "ANTLR, ANother Tool for Language Recognition, 
(formerly PCCTS)
is a language tool that provides a framework for constructing recognisers,
compilers, and translators from grammatical descriptions containing 
Java, C#,
C++, or Python actions.  ANTLR provides excellent support for tree 
construction,
tree walking, and translation.")
     (license license:bsd-3)))


[-- Attachment #2: Type: text/html, Size: 24145 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: icu4j, antlr4, source archives without a root path
  2020-05-11  0:29 icu4j, antlr4, source archives without a root path Michael Zucchi
@ 2020-05-12 21:57 ` Björn Höfling
  2020-06-28 20:41   ` Julien Lepiller
  0 siblings, 1 reply; 5+ messages in thread
From: Björn Höfling @ 2020-05-12 21:57 UTC (permalink / raw)
  To: Michael Zucchi; +Cc: guix-devel


[-- Attachment #1.1: Type: text/plain, Size: 1024 bytes --]

Hi Michael,

what is the central message of your email? Is it just to say "I gave
up, sorry", or do you need help at specific points? :-)

At least I can tell you that I have quite a bunch of work-in-progress
branches lying around because I start with "Oh, let's _just_
update/fix/add this little program ..." and you end up in a chain of
needed updates, conflicting updates, broken states, etc.

Don't get confused by this :-) I try to plan my work step by step in
these situations, cleanly commit what's finished and write a personal
log of the success and failures and intermediate knowledge gained.

To the concrete java-icu4j:

What do you think about the attached patch (needs some clean-up)?

What's a bit uncommon about the project is that it builds separate
sub-projects and then combines them. I'm not sure about the output(s):
There are icu4j.jar, icu4j-charset.jar and icu4j-localespi.jar, I only
copied the first one as I think this is what the original package
definition did.

Björn

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.2: 0001-gnu-java-icu4c-Update-to-66.1-use-full-sources.patch --]
[-- Type: text/x-patch, Size: 2971 bytes --]

From 85516c2319a94f1e4b22954efd32f489d7d3925e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bj=C3=B6rn=20H=C3=B6fling?=
 <bjoern.hoefling@bjoernhoefling.de>
Date: Tue, 12 May 2020 20:27:59 +0200
Subject: [PATCH] gnu: java-icu4c: Update to 66.1, use full sources.

* gnu/packages/icu4c.scm (java-icu4c): Update to 66.1.
[source]: Use full sources instead of jar-sources.
[arguments]: Add chdir phase, replace install phase.
---
 gnu/packages/icu4c.scm | 32 ++++++++++++++++++++++----------
 1 file changed, 22 insertions(+), 10 deletions(-)

diff --git a/gnu/packages/icu4c.scm b/gnu/packages/icu4c.scm
index cf76c6fe20..ccced11f81 100644
--- a/gnu/packages/icu4c.scm
+++ b/gnu/packages/icu4c.scm
@@ -6,6 +6,7 @@
 ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2019, 2020 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
+;;; Copyright © 2020 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -117,22 +118,33 @@ C/C++ part.")
 (define-public java-icu4j
   (package
     (name "java-icu4j")
-    (version "59.1")
+    (version "66.1")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://download.icu-project.org/files/icu4j/"
-                                  version "/icu4j-"
-                                  (string-map (lambda (x)
-                                                (if (char=? x #\.) #\_ x))
-                                              version)
-                                  "-src.jar"))
+              (uri (string-append
+                    "https://github.com/unicode-org/icu/releases/download/release-"
+                    (string-map (lambda (x) (if (char=? x #\.) #\- x)) version)
+                    "/icu4j-"
+                    (string-map (lambda (x) (if (char=? x #\.) #\_ x)) version)
+                    ".tgz"))
               (sha256
-               (base32
-                "0bgxsvgi0qcwj60pvcxrf7a3fbk7aksyxnfwpbzavyfrfzixqh0c"))))
+               (base32 "1ahdyz9209lwl7knb2l3gmnkkby221p0vpgx70fj4j02rdzgvw0d"))))
     (build-system ant-build-system)
     (arguments
      `(#:tests? #f                      ; no tests included
-       #:jar-name "icu4j.jar"))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'chdir
+           (lambda _
+             (chdir "..")
+             #t))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((share (string-append (assoc-ref outputs "out")
+                                         "/share/java/")))
+               (mkdir-p share)
+               (install-file "icu4j.jar" share)
+               #t))))))
     (home-page "http://site.icu-project.org/")
     (synopsis "International Components for Unicode")
     (description
-- 
2.26.2


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: icu4j, antlr4, source archives without a root path
  2020-05-12 21:57 ` Björn Höfling
@ 2020-06-28 20:41   ` Julien Lepiller
  2020-07-05 12:20     ` Julien Lepiller
  0 siblings, 1 reply; 5+ messages in thread
From: Julien Lepiller @ 2020-06-28 20:41 UTC (permalink / raw)
  To: Björn Höfling; +Cc: guix-devel

[-- Attachment #1: Type: text/plain, Size: 1775 bytes --]

Le Tue, 12 May 2020 23:57:58 +0200,
Björn Höfling <bjoern.hoefling@bjoernhoefling.de> a écrit :

> Hi Michael,
> 
> what is the central message of your email? Is it just to say "I gave
> up, sorry", or do you need help at specific points? :-)
> 
> At least I can tell you that I have quite a bunch of work-in-progress
> branches lying around because I start with "Oh, let's _just_
> update/fix/add this little program ..." and you end up in a chain of
> needed updates, conflicting updates, broken states, etc.
> 
> Don't get confused by this :-) I try to plan my work step by step in
> these situations, cleanly commit what's finished and write a personal
> log of the success and failures and intermediate knowledge gained.
> 
> To the concrete java-icu4j:
> 
> What do you think about the attached patch (needs some clean-up)?
> 
> What's a bit uncommon about the project is that it builds separate
> sub-projects and then combines them. I'm not sure about the output(s):
> There are icu4j.jar, icu4j-charset.jar and icu4j-localespi.jar, I only
> copied the first one as I think this is what the original package
> definition did.
> 
> Björn

Hi,

I took your patch and changed it a bit to enable tests. They require
JUnitParams, which we don't have, as well as some work to actually be
able to run the tests without having the package try to download
anything.

Attached are two patches, that add java-junitparams and that update
icu4j with the proper sources.

I also tried to use the git repository, but that failed because three
data archive files come from git-lfs and are not fetched by git-fetch,
so I kept using the release tarball instead. I've rebuilt the few
packages listed by guix refresh successfully.

WDYT?

[-- Attachment #2: 0001-gnu-Add-java-junitparams.patch --]
[-- Type: text/x-patch, Size: 2011 bytes --]

From 21f02625baa603e0f6c31a7f2a96dd26e3f27ded Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sun, 28 Jun 2020 22:33:21 +0200
Subject: [PATCH 1/2] gnu: Add java-junitparams.

* gnu/packages/java.scm (java-junitparams): New variable.
---
 gnu/packages/java.scm | 31 +++++++++++++++++++++++++++++++
 1 file changed, 31 insertions(+)

diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index 48f9a52a56..fc85d12aa5 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -3735,6 +3735,37 @@ JUnit provides assertions for testing expected results, test fixtures for
 sharing common test data, and test runners for running tests.")
     (license license:epl1.0)))
 
+(define-public java-junitparams
+  (package
+    (name "java-junitparams")
+    (version "1.1.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/Pragmatists/JUnitParams")
+                     (commit (string-append "JUnitParams-" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0rb52xdfp99invyjrras3w0bf0a81cz30yd47rkkiyqcqj0y1q9b"))))
+    (build-system ant-build-system)
+    (arguments
+     `(#:jar-name "junitparams.jar"
+       #:source-dir "src/main/java"
+       #:test-dir "src/test"
+       #:test-exclude (list "**/SuperclassTest.java")))
+    (inputs
+     `(("java-junit" ,java-junit)))
+    (native-inputs
+     `(("java-junit" ,java-junit)
+       ("java-hamcrest-core" ,java-hamcrest-core)
+       ("java-assertj" ,java-assertj)))
+    (home-page "https://github.com/Pragmatists/JUnitParams")
+    (synopsis "Parameterised test support for JUnit")
+    (description "The JUnitParams project adds a new runner to JUnit and
+provides much easier and readable parametrised tests for JUnit.")
+    (license license:asl2.0)))
+
 (define-public java-plexus-utils
   (package
     (name "java-plexus-utils")
-- 
2.26.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: 0002-gnu-java-icu4c-Update-to-66.1-use-full-sources.patch --]
[-- Type: text/x-patch, Size: 4446 bytes --]

From d6dbe5507b24ef63b9f899e936ece422a401c21e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bj=C3=B6rn=20H=C3=B6fling?=
 <bjoern.hoefling@bjoernhoefling.de>
Date: Tue, 12 May 2020 20:27:59 +0200
Subject: [PATCH 2/2] gnu: java-icu4c: Update to 66.1, use full sources.

* gnu/packages/icu4c.scm (java-icu4c): Update to 66.1.
[source]: Use full sources instead of jar-sources.
[arguments]: Add chdir phase, replace install phase.

Co-Authored-By: Julien Lepiller <julien@lepiller.eu>
---
 gnu/packages/icu4c.scm | 58 ++++++++++++++++++++++++++++++++++--------
 1 file changed, 47 insertions(+), 11 deletions(-)

diff --git a/gnu/packages/icu4c.scm b/gnu/packages/icu4c.scm
index 54a65365d7..b00d3172a4 100644
--- a/gnu/packages/icu4c.scm
+++ b/gnu/packages/icu4c.scm
@@ -6,6 +6,7 @@
 ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2019, 2020 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
+;;; Copyright © 2020 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -24,6 +25,7 @@
 
 (define-module (gnu packages icu4c)
   #:use-module (gnu packages)
+  #:use-module (gnu packages java)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages python)
   #:use-module (guix licenses)
@@ -133,22 +135,56 @@ C/C++ part.")
 (define-public java-icu4j
   (package
     (name "java-icu4j")
-    (version "59.1")
+    (version "66.1")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://download.icu-project.org/files/icu4j/"
-                                  version "/icu4j-"
-                                  (string-map (lambda (x)
-                                                (if (char=? x #\.) #\_ x))
-                                              version)
-                                  "-src.jar"))
+              (uri (string-append
+                    "https://github.com/unicode-org/icu/releases/download/release-"
+                    (string-map (lambda (x) (if (char=? x #\.) #\- x)) version)
+                    "/icu4j-"
+                    (string-map (lambda (x) (if (char=? x #\.) #\_ x)) version)
+                    ".tgz"))
               (sha256
-               (base32
-                "0bgxsvgi0qcwj60pvcxrf7a3fbk7aksyxnfwpbzavyfrfzixqh0c"))))
+               (base32 "1ahdyz9209lwl7knb2l3gmnkkby221p0vpgx70fj4j02rdzgvw0d"))))
     (build-system ant-build-system)
     (arguments
-     `(#:tests? #f                      ; no tests included
-       #:jar-name "icu4j.jar"))
+     `(#:make-flags
+       (list (string-append "-Djunit.core.jar="
+                            (car (find-files
+                                   (assoc-ref %build-inputs "java-junit")
+                                   ".*.jar$")))
+             (string-append "-Djunit.junitparams.jar="
+                            (car (find-files
+                                   (assoc-ref %build-inputs "java-junitparams")
+                                   ".*.jar$")))
+             (string-append "-Djunit.hamcrest.jar="
+                            (car (find-files
+                                   (assoc-ref %build-inputs "java-hamcrest-core")
+                                   ".*.jar$"))))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'chdir
+           (lambda _
+             (chdir "..")
+             #t))
+         (add-before 'build 'remove-ivy
+           (lambda _
+             ;; This target wants to download ivy and use it to download
+             ;; junit.
+             (substitute* "build.xml"
+               (("depends=\"test-init-junit-dependency\"") ""))
+             #t))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((share (string-append (assoc-ref outputs "out")
+                                         "/share/java/")))
+               (mkdir-p share)
+               (install-file "icu4j.jar" share)
+               #t))))))
+    (native-inputs
+     `(("java-junit" ,java-junit)
+       ("java-junitparams" ,java-junitparams)
+       ("java-hamcrest-core" ,java-hamcrest-core)))
     (home-page "http://site.icu-project.org/")
     (synopsis "International Components for Unicode")
     (description
-- 
2.26.2


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: icu4j, antlr4, source archives without a root path
  2020-06-28 20:41   ` Julien Lepiller
@ 2020-07-05 12:20     ` Julien Lepiller
  2020-07-06  1:43       ` Michael Zucchi
  0 siblings, 1 reply; 5+ messages in thread
From: Julien Lepiller @ 2020-07-05 12:20 UTC (permalink / raw)
  To: Björn Höfling; +Cc: guix-devel

Le Sun, 28 Jun 2020 22:41:35 +0200,
Julien Lepiller <julien@lepiller.eu> a écrit :
> 
> Hi,
> 
> I took your patch and changed it a bit to enable tests. They require
> JUnitParams, which we don't have, as well as some work to actually be
> able to run the tests without having the package try to download
> anything.
> 
> Attached are two patches, that add java-junitparams and that update
> icu4j with the proper sources.
> 
> I also tried to use the git repository, but that failed because three
> data archive files come from git-lfs and are not fetched by git-fetch,
> so I kept using the release tarball instead. I've rebuilt the few
> packages listed by guix refresh successfully.
> 
> WDYT?

Since there was no answer to this, I pushed the patches as
52a23d8e4872f5cb313d4456fc3e4c56280a2918 and
ee1dc9b3d19364e17b15a158194cddfff91778c8.


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: icu4j, antlr4, source archives without a root path
  2020-07-05 12:20     ` Julien Lepiller
@ 2020-07-06  1:43       ` Michael Zucchi
  0 siblings, 0 replies; 5+ messages in thread
From: Michael Zucchi @ 2020-07-06  1:43 UTC (permalink / raw)
  To: Julien Lepiller, Björn Höfling; +Cc: guix-devel


Hi there,

Sorry.  I've lost completely any interest in guix (and all else 
computer/software related) so do with it and any other patches I sent 
what you will.

Regards,
  Michael


On 5/7/20 9:50 pm, Julien Lepiller wrote:
> Le Sun, 28 Jun 2020 22:41:35 +0200,
> Julien Lepiller <julien@lepiller.eu> a écrit :
>> Hi,
>>
>> I took your patch and changed it a bit to enable tests. They require
>> JUnitParams, which we don't have, as well as some work to actually be
>> able to run the tests without having the package try to download
>> anything.
>>
>> Attached are two patches, that add java-junitparams and that update
>> icu4j with the proper sources.
>>
>> I also tried to use the git repository, but that failed because three
>> data archive files come from git-lfs and are not fetched by git-fetch,
>> so I kept using the release tarball instead. I've rebuilt the few
>> packages listed by guix refresh successfully.
>>
>> WDYT?
> Since there was no answer to this, I pushed the patches as
> 52a23d8e4872f5cb313d4456fc3e4c56280a2918 and
> ee1dc9b3d19364e17b15a158194cddfff91778c8.
>



^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, back to index

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-05-11  0:29 icu4j, antlr4, source archives without a root path Michael Zucchi
2020-05-12 21:57 ` Björn Höfling
2020-06-28 20:41   ` Julien Lepiller
2020-07-05 12:20     ` Julien Lepiller
2020-07-06  1:43       ` Michael Zucchi

unofficial mirror of guix-devel@gnu.org 

Archives are clonable:
	git clone --mirror https://yhetil.org/guix-devel/0 guix-devel/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 guix-devel guix-devel/ https://yhetil.org/guix-devel \
		guix-devel@gnu.org
	public-inbox-index guix-devel

Example config snippet for mirrors

Newsgroups are available over NNTP:
	nntp://news.yhetil.org/yhetil.gnu.guix.devel
	nntp://news.gmane.io/gmane.comp.gnu.guix.devel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git