~ruther/guix-local

573b43c11675a2a125ab8c7d930f32e11f9d3acb — Julien Lepiller 5 years ago 4c98db9
guix: maven: Simplify finding version and group information.

* guix/build/maven/pom.scm (pom-version, pom-groupid): Do not use inputs
and local packages information anymore. Adapt file to new arguments.
* guix/build/maven-build-system.scm: Adapt to new arguments.
* guix/build/java-utils.scm: Adapt to new arguments.
3 files changed, 24 insertions(+), 26 deletions(-)

M guix/build/java-utils.scm
M guix/build/maven-build-system.scm
M guix/build/maven/pom.scm
M guix/build/java-utils.scm => guix/build/java-utils.scm +9 -9
@@ 2,7 2,7 @@
;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
;;; Copyright © 2020 Julien Lepiller <julien@lepiller.eu>
;;; Copyright © 2020, 2021 Julien Lepiller <julien@lepiller.eu>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 69,9 69,9 @@ fetched."
    (let* ((out (assoc-ref outputs "out"))
           (java-inputs (append (map cdr inputs) (map cdr outputs)))
           (pom-content (get-pom pom-file))
           (version (pom-version pom-content java-inputs))
           (version (pom-version pom-content))
           (artifact (pom-artifactid pom-content))
           (group (group->dir (pom-groupid pom-content java-inputs)))
           (group (group->dir (pom-groupid pom-content)))
           (repository (string-append out "/lib/m2/" group "/" artifact "/"
                                      version "/"))
           (pom-name (string-append repository artifact "-" version ".pom")))


@@ 87,8 87,8 @@ to ensure that maven can find dependencies."
         (manifest (string-append dir "/META-INF/MANIFEST.MF"))
         (pom (get-pom pom-file))
         (artifact (pom-artifactid pom))
         (group (pom-groupid pom inputs))
         (version (pom-version pom inputs))
         (group (pom-groupid pom))
         (version (pom-version pom))
         (pom-dir (string-append "META-INF/maven/" group "/" artifact)))
    (mkdir-p (string-append dir "/" pom-dir))
    (copy-file pom-file (string-append dir "/" pom-dir "/pom.xml"))


@@ 113,9 113,9 @@ the phase fails."
    (let* ((out (assoc-ref outputs "out"))
           (java-inputs (append (map cdr inputs) (map cdr outputs)))
           (pom-content (get-pom pom-file))
           (version (pom-version pom-content java-inputs))
           (version (pom-version pom-content))
           (artifact (pom-artifactid pom-content))
           (group (group->dir (pom-groupid pom-content java-inputs)))
           (group (group->dir (pom-groupid pom-content)))
           (repository (string-append out "/lib/m2/" group "/" artifact "/"
                                      version "/"))
           ;; We try to find the file that was built.  If it was built from our


@@ 180,9 180,9 @@ recognize the package as a plugin, and find the entry points in the plugin."
           (name (pom-name pom-content))
           (description (pom-description pom-content))
           (dependencies (pom-dependencies pom-content))
           (version (pom-version pom-content java-inputs))
           (version (pom-version pom-content))
           (artifact (pom-artifactid pom-content))
           (groupid (pom-groupid pom-content java-inputs))
           (groupid (pom-groupid pom-content))
           (mojos
            `(mojos
               ,@(with-directory-excursion directory

M guix/build/maven-build-system.scm => guix/build/maven-build-system.scm +3 -3
@@ 1,5 1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2020 Julien Lepiller <julien@lepiller.eu>
;;; Copyright © 2020, 2021 Julien Lepiller <julien@lepiller.eu>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 82,8 82,8 @@
  (let* ((pom (get-pom pom-file))
         (java-inputs (map cdr inputs))
         (artifact (pom-artifactid pom))
         (group (pom-groupid pom java-inputs local-packages))
         (version (pom-version pom java-inputs local-packages)))
         (group (pom-groupid pom))
         (version (pom-version pom)))
    (let loop ((modules (pom-ref pom "modules"))
               (local-packages
                 (add-local-package local-packages group artifact version)))

M guix/build/maven/pom.scm => guix/build/maven/pom.scm +12 -14
@@ 1,5 1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2019, 2020 Julien Lepiller <julien@lepiller.eu>
;;; Copyright © 2019-2021 Julien Lepiller <julien@lepiller.eu>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 93,13 93,12 @@ If no result is found, the result is @code{#f}."
              (get-pom (car java-inputs))))
        #f)))

(define* (pom-groupid content inputs #:optional local-packages)
(define* (pom-groupid content)
  "Find the groupID of a pom file, potentially looking at its parent pom file.
See @code{find-parent} for the meaning of the arguments."
  (if content
    (let ((res (or (pom-ref content "groupId")
                   (pom-groupid (find-parent content inputs local-packages)
                                inputs))))
                   (pom-ref (pom-ref content "parent") "groupId"))))
      (cond
        ((string? res) res)
        ((null? res) #f)


@@ 114,13 113,12 @@ See @code{find-parent} for the meaning of the arguments."
      (car res)
      #f)))

(define* (pom-version content inputs #:optional local-packages)
(define* (pom-version content)
  "Find the version of a pom file, potentially looking at its parent pom file.
See @code{find-parent} for the meaning of the arguments."
  (if content
    (let ((res (or (pom-ref content "version")
                   (pom-version (find-parent content inputs local-packages)
                                inputs))))
                   (pom-ref (pom-ref content "parent") "version"))))
      (cond
        ((string? res) res)
        ((null? res) #f)


@@ 344,7 342,7 @@ Returns nothing, but overrides the @var{pom-file} as a side-effect."
      ((tag rest ...)
       (match tag
         (('http://maven.apache.org/POM/4.0.0:plugin plugin ...)
          (let ((group (or (pom-groupid plugin inputs) "org.apache.maven.plugins"))
          (let ((group (or (pom-groupid plugin) "org.apache.maven.plugins"))
                (artifact (pom-artifactid plugin)))
            (if (member artifact (or (assoc-ref excludes group) '()))
              (fix-plugins rest optional?)


@@ 355,11 353,11 @@ Returns nothing, but overrides the @var{pom-file} as a side-effect."

  (define* (fix-plugin plugin #:optional optional?)
    (let* ((artifact (pom-artifactid plugin))
           (group (or (pom-groupid plugin inputs) "org.apache.maven.plugins"))
           (group (or (pom-groupid plugin) "org.apache.maven.plugins"))
           (version (or (assoc-ref (assoc-ref local-packages group) artifact)
                        (find-version inputs group artifact optional?)
                        (pom-version plugin inputs))))
      (if (pom-version plugin inputs)
                        (pom-version plugin))))
      (if (pom-version plugin)
        (map
          (lambda (tag)
            (match tag


@@ 373,7 371,7 @@ Returns nothing, but overrides the @var{pom-file} as a side-effect."

  (define* (fix-dep dep #:optional optional?)
    (let* ((artifact (pom-artifactid dep))
           (group (or (pom-groupid dep inputs) (pom-groupid pom inputs)))
           (group (or (pom-groupid dep) (pom-groupid pom)))
           (scope (pom-ref dep "scope"))
           (is-optional? (equal? (pom-ref dep "optional") '("true"))))
      (format (current-error-port) "maven: ~a:~a :: ~a (optional: ~a)~%"


@@ 382,8 380,8 @@ Returns nothing, but overrides the @var{pom-file} as a side-effect."
              with-build-dependencies?)
          (let ((version (or (assoc-ref (assoc-ref local-packages group) artifact)
                             (find-version inputs group artifact optional?)
                             (pom-version dep inputs))))
            (if (pom-version dep inputs)
                             (pom-version dep))))
            (if (pom-version dep)
              (map
                (lambda (tag)
                  (match tag