guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

17/32: gnu: Add java-xerces.


From: julien lepiller
Subject: 17/32: gnu: Add java-xerces.
Date: Sat, 10 Feb 2018 13:05:12 -0500 (EST)

roptat pushed a commit to branch master
in repository guix.

commit 6d0368eb842f4b5b8a65209569a21c07b378b397
Author: Julien Lepiller <address@hidden>
Date:   Sat Nov 18 22:03:57 2017 +0100

    gnu: Add java-xerces.
    
    * gnu/packages/java.scm (java-xerces): New variable.
    * gnu/packages/patches/java-xerces-bootclasspath.patch: New file.
    * gnu/packages/patches/java-xerces-build_dont_unzip.patch: New file.
    * gnu/packages/patches/java-xerces-xjavac_taskdef.patch: New file.
    * gnu/local.mk (dist_patch_DATA): Add them.
---
 gnu/local.mk                                       |  3 +
 gnu/packages/java.scm                              | 97 +++++++++++++++++++---
 .../patches/java-xerces-bootclasspath.patch        | 38 +++++++++
 .../patches/java-xerces-build_dont_unzip.patch     | 44 ++++++++++
 .../patches/java-xerces-xjavac_taskdef.patch       | 45 ++++++++++
 5 files changed, 217 insertions(+), 10 deletions(-)

diff --git a/gnu/local.mk b/gnu/local.mk
index 925057d..eb968de 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -776,6 +776,9 @@ dist_patch_DATA =                                           
\
   %D%/packages/patches/isl-0.11.1-aarch64-support.patch        \
   %D%/packages/patches/jacal-fix-texinfo.patch                 \
   %D%/packages/patches/java-powermock-fix-java-files.patch             \
+  %D%/packages/patches/java-xerces-bootclasspath.patch \
+  %D%/packages/patches/java-xerces-build_dont_unzip.patch      \
+  %D%/packages/patches/java-xerces-xjavac_taskdef.patch        \
   %D%/packages/patches/jemalloc-arm-address-bits.patch         \
   %D%/packages/patches/jbig2dec-ignore-testtest.patch          \
   %D%/packages/patches/jbig2dec-CVE-2016-9601.patch            \
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index 0c8c2ab..3088803 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -8140,15 +8140,18 @@ wider problem of Object to Object transformation.")
            (lambda _
              (mkdir-p "build/classes/org/joda/time/tz/data")
              (mkdir-p "build/classes/org/joda/time/format")
-             ;; This will produce an exception, but it's all right.
-             (zero? (system* "java" "-cp"
-                             (string-append "build/classes:" (getenv 
"CLASSPATH"))
-                             "org.joda.time.tz.ZoneInfoCompiler"
-                             "-src" "src/main/java/org/joda/time/tz/src"
-                             "-dst" "build/classes/org/joda/time/tz/data"
-                             "africa" "antarctica" "asia" "australasia"
-                             "europe" "northamerica" "southamerica"
-                             "pacificnew" "etcetera" "backward" "systemv"))
+             ;; This will produce the following exception:
+             ;; java.io.IOException: Resource not found: 
"org/joda/time/tz/data/ZoneInfoMap"
+             ;; which is normal, because it doesn't exist yet. It still 
generates
+             ;; the same file as in the binary one can find on maven.
+             (invoke "java" "-cp"
+                     (string-append "build/classes:" (getenv "CLASSPATH"))
+                     "org.joda.time.tz.ZoneInfoCompiler"
+                     "-src" "src/main/java/org/joda/time/tz/src"
+                     "-dst" "build/classes/org/joda/time/tz/data"
+                     "africa" "antarctica" "asia" "australasia"
+                     "europe" "northamerica" "southamerica"
+                     "pacificnew" "etcetera" "backward" "systemv")
              (for-each (lambda (f)
                          (copy-file f (string-append
                                         "build/classes/org/joda/time/format/"
@@ -8159,7 +8162,7 @@ wider problem of Object to Object transformation.")
            (lambda _
              ;; We need to regenerate the jar file to add generated data.
              (delete-file "build/jar/java-joda-time.jar")
-             (zero? (system* "ant" "jar"))))
+             (invoke "ant" "jar")))
          (add-before 'check 'copy-test-resources
            (lambda _
              (mkdir-p "build/test-classes/org/joda/time/tz/data")
@@ -8178,3 +8181,77 @@ wider problem of Object to Object transformation.")
     (description "Joda-Time is a replacement for the Java date and time
 classes prior to Java SE 8.")
     (license license:asl2.0)))
+
+(define-public java-xerces
+  (package
+    (name "java-xerces")
+    (version "2.11.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://apache/xerces/j/source/"
+                           "Xerces-J-src." version ".tar.gz"))
+       (sha256
+        (base32 "1006igwy2lqrmjvdk64v8dg6qbk9c29pm8xxx7r87n0vnpvmx6pm"))
+       (patches (search-patches
+                 "java-xerces-xjavac_taskdef.patch"
+                 "java-xerces-build_dont_unzip.patch"
+                 "java-xerces-bootclasspath.patch"))))
+    (build-system ant-build-system)
+    (arguments
+     `(#:tests? #f;; Test files are not present
+       #:test-target "test"
+       #:jdk ,icedtea-8
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'create-build.properties
+          (lambda* (#:key inputs #:allow-other-keys)
+            (let ((jaxp (assoc-ref inputs "java-jaxp"))
+                  (resolver (assoc-ref inputs 
"java-apache-xml-commons-resolver")))
+              (with-output-to-file "build.properties"
+                (lambda _
+                  (format #t
+                   "jar.jaxp = ~a/share/java/jaxp.jar~@
+                   jar.apis-ext = ~a/share/java/jaxp.jar~@
+                   jar.resolver = ~a/share/java/xml-resolver.jar~%"
+                   jaxp jaxp resolver)))
+              ;; Make xerces use our version of jaxp in tests
+              (substitute* "build.xml"
+                (("xml-apis.jar")
+                 (string-append jaxp "/share/java/jaxp.jar"))
+                (("\\$\\{tools.dir\\}/\\$\\{jar.apis\\}")
+                 "${jar.apis}")))
+            #t))
+         (replace 'install (install-jars "build")))))
+    (inputs
+     `(("java-apache-xml-commons-resolver" ,java-apache-xml-commons-resolver)
+       ("java-jaxp" ,java-jaxp)))
+    (home-page "https://xerces.apache.org/xerces2-j/";)
+    (synopsis "Validating XML parser for Java with DOM level 3 support")
+    (description "The Xerces2 Java parser is the reference implementation of
+XNI, the Xerces Native Interface, and also a fully conforming XML Schema
+processor.
+
+Xerces2-J supports the following standards and APIs:
+
address@hidden
address@hidden eXtensible Markup Language (XML) 1.0 Second Edition 
Recommendation
address@hidden Namespaces in XML Recommendation
address@hidden Document Object Model (DOM) Level 2 Core, Events, and Traversal 
and
+      Range Recommendations
address@hidden Simple API for XML (SAX) 2.0.1 Core and Extension
address@hidden Java APIs for XML Processing (JAXP) 1.2.01
address@hidden XML Schema 1.0 Structures and Datatypes Recommendations
address@hidden Experimental implementation of the Document Object Model (DOM) 
Level 3
+      Core and Load/Save Working Drafts
address@hidden Provides a partial implementation of the XML Inclusions 
(XInclude) W3C
+      Candidate Recommendation
address@hidden itemize
+
+Xerces is now able to parse documents written according to the XML 1.1
+Candidate Recommendation, except that it does not yet provide an option to
+enable normalization checking as described in section 2.13 of this
+specification.  It also handles namespaces according to the XML Namespaces 1.1
+Candidate Recommendation, and will correctly serialize XML 1.1 documents if
+the DOM level 3 load/save API's are in use.")
+    (license license:asl2.0)))
diff --git a/gnu/packages/patches/java-xerces-bootclasspath.patch 
b/gnu/packages/patches/java-xerces-bootclasspath.patch
new file mode 100644
index 0000000..efaa548
--- /dev/null
+++ b/gnu/packages/patches/java-xerces-bootclasspath.patch
@@ -0,0 +1,38 @@
+Based on 
https://anonscm.debian.org/viewvc/pkg-java/trunk/libxerces2-java/debian/patches/03_bootclasspath.patch?revision=14509,
 adopted for guix
+
+--- xerces-2_11_0/build.xml.orig       2010-11-26 21:42:11.000000000 +0100
++++ xerces-2_11_0/build.xml    2017-03-28 14:04:41.946606996 +0200
+@@ -290,13 +290,14 @@
+            destdir="${build.dest}"
+            source="${javac.source}"
+            target="${javac.target}"
+-           
classpath="${build.dir}/classes:${tools.dir}/${jar.apis}:${tools.dir}/${jar.resolver}:${tools.dir}/${jar.serializer}"
++           
classpath="${build.dir}/classes:${jar.jaxp}:${jar.apis-ext}:${jar.resolver}"
+            debug="${debug}" nowarn="true"
+            debuglevel="${debuglevel}"
+            deprecation="${deprecation}"
+            optimize="${optimize}"
+            includeAntRuntime="false"
+-           includeJavaRuntime="false"
++           includeJavaRuntime="true"
++           bootclasspath="${jar.jaxp}:${jar.apis-ext}:${jar.resolver}"
+            excludes="org/xml/sax/** 
+                 javax/xml/**
+                 org/w3c/dom/*
+@@ -1451,13 +1452,14 @@
+                destdir="${build.dest}"
+                source="${javac.source}"
+                target="${javac.target}"
+-               
classpath="${build.dir}/classes:${tools.dir}/${jar.apis}:${tools.dir}/${jar.resolver}:${tools.dir}/${jar.serializer}"
++               
classpath="${build.dir}/classes:${jar.jaxp}:${jar.apis-ext}:${jar.resolver}"
+                debug="${debug}"
+                debuglevel="${debuglevel}"
+                deprecation="${deprecation}"
+                optimize="${optimize}"
+                includeAntRuntime="false"
+-               includeJavaRuntime="false"
++               includeJavaRuntime="true"
++               bootclasspath="${jar.jaxp}:${jar.apis-ext}:${jar.resolver}"
+                excludes="org/xml/sax/** 
+                     javax/xml/**
+                     org/w3c/dom/*
diff --git a/gnu/packages/patches/java-xerces-build_dont_unzip.patch 
b/gnu/packages/patches/java-xerces-build_dont_unzip.patch
new file mode 100644
index 0000000..2ff5628
--- /dev/null
+++ b/gnu/packages/patches/java-xerces-build_dont_unzip.patch
@@ -0,0 +1,44 @@
+Don't unzip the sources which were bundled originally. Guix strips them from
+the source and uses pre-build packages.
+
+Taken from 
https://anonscm.debian.org/viewvc/pkg-java/trunk/libxerces2-java/debian/patches/02_build_dont_unzip.patch?revision=14507
+
+Index: b/build.xml
+===================================================================
+--- a/build.xml
++++ b/build.xml
+@@ -247,7 +247,7 @@
+     <copy 
file="${src.dir}/org/apache/xerces/impl/xpath/regex/message.properties"
+       
tofile="${build.src}/org/apache/xerces/impl/xpath/regex/message_en.properties"/>
+ 
+-    <!-- now deal with API's:  -->
++    <!-- not needed for Debian
+     <unzip src="${src.apis.zip}" dest="${build.src}">
+         <patternset
+             includes="org/xml/sax/** 
+@@ -270,6 +270,7 @@
+                 org/w3c/dom/xpath/**"
+         />
+     </unzip>
++    -->
+     
+     <!-- substitute tokens as needed -->
+     <replace file="${build.dir}/src/org/apache/xerces/impl/Version.java" 
+@@ -1232,7 +1233,7 @@
+     <replace 
file="${build.dir}/src/org/apache/xerces/parsers/AbstractSAXParser.java"
+              token="return (fConfiguration instanceof XML11Configurable);" 
value="return false;"/>
+  
+-    <!-- now deal with API's:  -->
++    <!-- not needed for Debian
+     <unzip src="${src.apis.zip}" dest="${build.src}">
+         <patternset
+             includes="org/xml/sax/** 
+@@ -1255,7 +1256,7 @@
+                 org/w3c/dom/xpath/**"
+         />
+     </unzip>
+-
++    -->
+ 
+     <!-- substitute tokens as needed -->
+     <replace file="${build.dir}/src/org/apache/xerces/impl/Version.java" 
diff --git a/gnu/packages/patches/java-xerces-xjavac_taskdef.patch 
b/gnu/packages/patches/java-xerces-xjavac_taskdef.patch
new file mode 100644
index 0000000..4f5d008
--- /dev/null
+++ b/gnu/packages/patches/java-xerces-xjavac_taskdef.patch
@@ -0,0 +1,45 @@
+This patch eliminates the need for providing "xjavac", which saves building a
+package for the unmaintained "xerces-tools".
+
+Taken from 
https://anonscm.debian.org/viewvc/pkg-java/trunk/libxerces2-java/debian/patches/01_xjavac_taskdef.patch?revision=14507
+
+Index: b/build.xml
+===================================================================
+--- a/build.xml
++++ b/build.xml
+@@ -39,7 +39,7 @@
+   <property name="tools.dir" value="./tools"/>
+ 
+   <!-- enable compilation under JDK 1.4 and above -->
+-  <taskdef name="xjavac" classname="org.apache.xerces.util.XJavac">
++  <taskdef name="xjavac" classname="org.apache.tools.ant.taskdefs.Javac">
+     <classpath>
+       <pathelement location="${tools.dir}/bin/xjavac.jar"/>
+     </classpath>
+@@ -291,7 +291,7 @@
+            source="${javac.source}"
+            target="${javac.target}"
+            
classpath="${build.dir}/classes:${tools.dir}/${jar.apis}:${tools.dir}/${jar.resolver}:${tools.dir}/${jar.serializer}"
+-           debug="${debug}"
++           debug="${debug}" nowarn="true"
+            debuglevel="${debuglevel}"
+            deprecation="${deprecation}"
+            optimize="${optimize}"
+@@ -359,7 +359,7 @@
+            source="${javac.source}"
+            target="${javac.target}"
+            classpath="${build.dir}/classes:${tools.dir}/${jar.apis}"
+-           debug="${debug}"
++           debug="${debug}" nowarn="true"
+            debuglevel="${debuglevel}"
+            includeAntRuntime="false"
+            includeJavaRuntime="true"/>
+@@ -379,7 +379,7 @@
+            source="${javac.source}"
+            target="${javac.target}"
+            
classpath="${tools.dir}/${jar.apis}:${build.dir}/classes:./tools/junit.jar"
+-           debug="${debug}"
++           debug="${debug}" nowarn="true"
+            debuglevel="${debuglevel}"
+            includeAntRuntime="false"
+            includeJavaRuntime="true"/>



reply via email to

[Prev in Thread] Current Thread [Next in Thread]