Subject: [bug#74206] [PATCH] gnu: Fix java-jaxen.

From: Hartmut Goebel <[email-masked]>
Date: Mon, 4 Nov 2024 22:26:25 +0100

java-jaxen was missing the dom4j and xom sub-packages. This was caused by
java-jaxen-bootstrap deleting the respective directories (which is okay) and
java-javen not removing the phase that does this.

Solve this by basing java-jaxen-bootstrap on java-jaxen instead of
vice-versa.

* gnu/packages/java-xml.scm (java-jaxen) Define based on former
java-jaxen-bootstrap, while keeping the former's inputs and removing the
later's build-phases. (java-jaxen-bootstrap): Inherit from java-jaxen, keeping
the pre-existing bootstrap build-ohases and inputs.
---
 gnu/packages/java-xml.scm | 36 +++++++++++++++++++-----------------
 1 file changed, 19 insertions(+), 17 deletions(-)

diff --git a/gnu/packages/java-xml.scm b/gnu/packages/java-xml.scm
index 9ec11fa83e..09fdab8c0c 100644
--- a/gnu/packages/java-xml.scm
+++ b/gnu/packages/java-xml.scm
@@ -200,11 +200,9 @@ (define-public java-apache-xml-commons-resolver
 @end itemize")
     (license license:asl2.0)))
 
-;; Jaxen requires java-dom4j and java-xom that in turn require jaxen.
-;; This package is a bootstrap version without dependencies on dom4j and xom.
-(define java-jaxen-bootstrap
+(define-public java-jaxen
   (package
-    (name "java-jaxen-bootstrap")
+    (name "java-jaxen")
     (version "1.1.6")
     (source (origin
               (method url-fetch)
@@ -218,16 +216,9 @@ (define java-jaxen-bootstrap
     (arguments
      `(#:jar-name "jaxen.jar"
        #:source-dir "src"
-       #:tests? #f; no tests
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'build 'remove-dom4j
-           (lambda _
-             (delete-file-recursively "src/org/jaxen/dom4j")
-             (delete-file-recursively "src/org/jaxen/xom")
-             #t)))))
+       #:tests? #f)) ; no tests
     (inputs
-     `(("java-jdom" ,java-jdom)))
+     (list java-jdom java-xom java-dom4j))
     (home-page "https://github.com/jaxen-xpath/jaxen")
     (synopsis "XPath library")
     (description "Jaxen is an XPath library written in Java.  It is adaptable
@@ -237,12 +228,23 @@ (define java-jaxen-bootstrap
 with XPath too.")
     (license license:bsd-3)))
 
-(define-public java-jaxen
+;; Jaxen requires java-dom4j and java-xom that in turn require jaxen.
+;; This package is a bootstrap version without dependencies on dom4j and xom.
+(define java-jaxen-bootstrap
   (package
-    (inherit java-jaxen-bootstrap)
-    (name "java-jaxen")
+    (inherit java-jaxen)
+    (name "java-jaxen-bootstrap")
+    (arguments
+     (substitute-keyword-arguments (package-arguments java-jaxen)
+       ((#:phases phases '%standard-phases)
+        #~(modify-phases #$phases
+            (add-before 'build 'remove-dom4j
+              (lambda _
+                (delete-file-recursively "src/org/jaxen/dom4j")
+                (delete-file-recursively "src/org/jaxen/xom")
+                #t))))))
     (inputs
-     (list java-jdom java-xom java-dom4j))))
+     (list java-jdom))))
 
 (define-public java-xom
   (package

base-commit: 33665c52c4670bc3b4d337c89ac9cc6c4c69b26f
-- 
2.41.1