Subject: Re: [bug#67328] [PATCH] Upgrade clojure-tools to 1.11.1.1413 + clojure-tools-deps transition

From: Christopher Baines <[email-masked]>
Date: Thu, 23 Nov 2023 13:52:28 +0000

[email-masked] writes:

> From: Eugen Stan <[email-masked]>
>
> * clojure-tools-deps-alpha was superserded by clojure-tools-deps
> ---
>  gnu/packages/clojure.scm | 77 ++++++++++++++++++++++++++++++++++++----
>  1 file changed, 71 insertions(+), 6 deletions(-)
>
> diff --git a/gnu/packages/clojure.scm b/gnu/packages/clojure.scm
> index e28998b570..ee9cd19b0e 100644
> --- a/gnu/packages/clojure.scm
> +++ b/gnu/packages/clojure.scm
> @@ -203,14 +203,14 @@ (define (make-classpath libraries)
>  (define-public clojure-tools
>    (package
>      (name "clojure-tools")
> -    (version "1.11.1.1165")
> +    (version "1.11.1.1413")
>      (source
>       (origin
>         (method url-fetch)
>         (uri (string-append "https://download.clojure.org/install/clojure-tools-"
>                             version
>                             ".tar.gz"))
> -       (sha256 (base32 "1lg97waqfcgzr3dz5426fbc4kqcsavpbqil2iyjm1dw3zrfa8ysi"))
> +       (sha256 (base32 "1q0z71ifdxwvyy9gvq8mx8jbygf8cszrlhb3h22walfamnisbhwk"))
>         ;; Remove AOT compiled JAR.  The other JAR only contains uncompiled
>         ;; Clojure source code.
>         (snippet
> @@ -249,7 +249,7 @@ (define-public clojure-tools
>                   ":"))))))))
>      (inputs (list rlwrap
>                    clojure
> -                  clojure-tools-deps-alpha
> +                  clojure-tools-deps
>                    java-commons-logging-minimal))
>      (home-page "https://clojure.org/releases/tools")
>      (synopsis "CLI tools for the Clojure programming language")
> @@ -419,9 +419,9 @@ (define-public clojure-data-xml
>         #:phases
>         (modify-phases %standard-phases
>           (add-before 'build 'delete-cljs-tests
> -                     (lambda _
> -                       (delete-file "src/test/resources/clojure/data/xml/cljs_testsuite.clj")
> -                       (delete-file "src/test/clojure/clojure/data/xml/test_cljs.clj"))))))
> +           (lambda _
> +             (delete-file "src/test/resources/clojure/data/xml/cljs_testsuite.clj")
> +             (delete-file "src/test/clojure/clojure/data/xml/test_cljs.clj"))))))
>      (propagated-inputs (list clojure-data-codec))
>      (synopsis "Clojure library for reading and writing XML data")
>      (description "@code{data.xml} is a Clojure library for reading and writing
> @@ -572,7 +572,72 @@ (define-public clojure-tools-cli
>  work with command-line arguments.")
>      (license license:epl1.0)))
>  
> +(define-public clojure-tools-deps
> +  (package
> +    (name "clojure-tools-deps")
> +    (version "0.18.1354")
> +    (home-page "https://github.com/clojure/tools.deps")
> +    (source (origin
> +              (method git-fetch)
> +              (uri (git-reference
> +                    (url home-page)
> +                    (commit (string-append "v" version))))
> +              (file-name (git-file-name name version))
> +              (sha256
> +               (base32
> +                "0ls5nixhsjjhf3qz8kbyhmks5lw7a25zxl46yrizbw7vba3mzrpl"))))
> +    (build-system clojure-build-system)
> +    (arguments
> +     `(#:source-dirs '("src/main/clojure" "src/main/resources")
> +       #:test-dirs '("src/test/clojure")
> +       #:doc-dirs '()
> +       ;; FIXME: Could not initialize class org.eclipse.aether.transport.http.SslSocketFactory
> +       #:tests? #f
> +       #:phases
> +       (modify-phases %standard-phases
> +         ;; FIXME: Currently, the S3 transporter depends on ClojureScript,
> +         ;; which is very difficult to package due to dependencies on Java
> +         ;; libraries with non-standard build systems. Instead of actually
> +         ;; packaging these libraries, we just remove the S3 transporter that
> +         ;; depends on them.
> +         (add-after 'unpack 'remove-s3-transporter
> +           (lambda _
> +             (for-each delete-file
> +                       (list
> +                        (string-append
> +                         "src/main/clojure/clojure/"
> +                         "tools/deps/util/s3_aws_client.clj")
> +                        (string-append
> +                         "src/main/clojure/clojure/"
> +                         "tools/deps/util/s3_transporter.clj")
> +                        (string-append
> +                         "src/test/clojure/clojure/"
> +                         "tools/deps/util/test_s3_transporter.clj")))
> +             (substitute*
> +                 "src/main/clojure/clojure/tools/deps/util/maven.clj"
> +               (("clojure.tools.deps.util.s3-transporter")
> +                "")))))))
> +    (propagated-inputs (list maven-resolver-api
> +                             maven-resolver-spi
> +                             maven-resolver-impl
> +                             maven-resolver-util
> +                             maven-resolver-connector-basic
> +                             maven-resolver-provider
> +                             maven-core
> +                             maven-resolver-transport-http
> +                             maven-resolver-transport-file
> +                             clojure-tools-gitlibs
> +                             clojure-tools-cli
> +                             clojure-data-xml))
> +    (synopsis "Clojure library supporting clojure-tools")
> +    (description "This package provides a functional API for transitive
> +dependency graph expansion and the creation of classpaths.")
> +    (license license:epl1.0)))
>
>  (define-public clojure-tools-deps-alpha
> +  ;; this was superseded by clojure-tools-deps
> +  ;; https://github.com/clojure/tools.deps.alpha
> +  ;; Keeping it to give upstream packages a chance to upgrade
>    (package
>      (name "clojure-tools-deps-alpha")
>      (version "0.14.1212")

Upstream of Guix is the publishers of the software that Guix packages,
so "upstream" in this case is probably the Clojure project.

I don't think there's any particular concerns for those upstream or
downstream of Guix in replacing clojure-tools-deps-alpha with
clojure-tools-deps.

The other thing with this change is that it should probably be two
commits, separating the version change of clojure-tools from the other
changes (even if the other changes cause clojure-tools to break before
it's upgraded).