diff mbox series

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

Message ID 5715f36b461fb1bd61966a21f7b69fc6049955a2.1730755471.git.h.goebel@crazy-compilers.com
State New
Headers show
Series [bug#74206] gnu: Fix java-jaxen. | expand

Commit Message

Hartmut Goebel Nov. 4, 2024, 9:26 p.m. UTC
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(-)


base-commit: 33665c52c4670bc3b4d337c89ac9cc6c4c69b26f

Comments

Liliana Marie Prikler Nov. 8, 2024, 10:57 a.m. UTC | #1
Am Montag, dem 04.11.2024 um 22:26 +0100 schrieb Hartmut Goebel:
> 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.
> ---
The preferred way for bootstrapping is from bottom up.  You can still
remove the phases and add inputs normally.

Cheers
Hartmut Goebel Nov. 8, 2024, 2:47 p.m. UTC | #2
Am 08.11.24 um 11:57 schrieb Liliana Marie Prikler:
> The preferred way for bootstrapping is from bottom up.  You can still
> remove the phases and add inputs normally.

Removing the phase seem less natural than adding a phase. And not 
removing the phase was what caused the error - which got undetected. 
This way round, if for some reason the phase gets lost, bootstrap will 
fail and the issue will be detected.
Liliana Marie Prikler Nov. 8, 2024, 2:56 p.m. UTC | #3
Am Freitag, dem 08.11.2024 um 15:47 +0100 schrieb Hartmut Goebel:
> Am 08.11.24 um 11:57 schrieb Liliana Marie Prikler:
> > The preferred way for bootstrapping is from bottom up.  You can
> > still remove the phases and add inputs normally.
> 
> Removing the phase seem less natural than adding a phase. And not 
> removing the phase was what caused the error - which got undetected. 
> This way round, if for some reason the phase gets lost, bootstrap
> will fail and the issue will be detected.
You can just write #:phases %standard-phases.

Cheers
diff mbox series

Patch

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