Subject: [PATCH] gnu: java-classpathx-servletapi: Update to 3.0-r1244.

From: Gábor Boskovits <[email-masked]>
Date: Sun, 7 Jan 2018 23:11:42 +0100

* gnu/packages/java.scm (java-classpathx-servletapi): Update to 3.0-r1244.
[source]: Change to svn-fetch from upstream. (This version is only available from there)
[arguments]: Switch to a java8 compiler, remove comment about not working with java8,
add phase chdir to compensate for the different layout of the upstream repository.

This version fixes java8 compilation by fixing a method signature which conflicts with
java8. Communication with upstream:

2017-12-18 9:38 GMT+01:00 Chris Burdess <[email-masked]>:
On 17/12/2017 20:53, Gábor Boskovits wrote:
Dear classpathx developers,

I discovered, that classpathx servletapi 3.0 does not compile with java8.
The problem is that java8 added a method to the Map interface:
boolean remove(Object,Object), which conflicts with
Object remove(Object,Object) method in:
source/javax/servlet/jsp/el/ImplicitObjectELResolver.java;
ImplicitObjectELResolver::ScopeMap::remove

how should we fix this problem?

It was a typo in the method signature. I've fixed it now.

Thank you very much!
---
 gnu/packages/java.scm | 21 ++++++++++-----------
 1 file changed, 10 insertions(+), 11 deletions(-)

diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index 0be488dec..b2b4c254f 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -2018,28 +2018,27 @@ debugging, etc.")
 (define-public java-classpathx-servletapi
   (package
     (name "java-classpathx-servletapi")
-    (version "3.0")
+    (version "3.0-r1244")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "mirror://gnu/classpathx/servletapi/"
-                                  "servletapi-" version ".tar.gz"))
+              (method svn-fetch)
+              (uri (svn-reference
+                    (url "svn://svn.savannah.gnu.org/classpathx/trunk")
+                    (revision 1244)))
+              (file-name (string-append name "-" version "-checkout"))
               (sha256
                (base32
-                "0y9489pk4as9q6x300sk3ycc0psqfxcd4b0xvbmf3rhgli8q1kx3"))))
+                "07ihcwhm5awdr1wj28lqvcxhd6z72w427zbyxrqh42lgga74wsh3"))))
     (build-system ant-build-system)
     (arguments
      `(#:tests? #f ; there is no test target
        #:build-target "compile"
-       ;; NOTE: This package does not build with Java 8 because of a type
-       ;; mismatch in
-       ;; "source/javax/servlet/jsp/el/ImplicitObjectELResolver.java".  It
-       ;; defines the return value of ScopeMap's "remove" method to be of type
-       ;; "Object", whereas Map's "remove" method returns boolean.
        #:make-flags
-       (list "-Dbuild.compiler=javac1.7"
+       (list "-Dbuild.compiler=javac1.8"
              (string-append "-Ddist=" (assoc-ref %outputs "out")))
        #:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'chdir
+           (lambda _ (chdir "servletapi") #t))
          (replace 'install
            (lambda* (#:key make-flags #:allow-other-keys)
              (zero? (apply system* `("ant" "dist" ,@make-flags))))))))
-- 
2.15.1