[PATCH 00/17] Remove limitations on clojure-tools

OpenSubmitted by Reily Siegel.
Details
3 participants
  • Ludovic Courtès
  • Reily Siegel
  • Maxime Devos
Owner
unassigned
Severity
normal
R
R
Reily Siegel wrote on 4 Feb 01:22 +0100
(address . guix-patches@gnu.org)
87y22r32hi.fsf@reilysiegel.com
Due to a lack of ability to package some of clojure-tools's
dependencies, certain functionality was disabled for its initial
packaging. Now that limitations in both the clojure-build-system and
limitations building some dependencies have been overcome, the full
functionality of the clojure-tools package can be restored.

Reily Siegel (17):
gnu: Add clojure-data-priority-map.
gnu: Add clojure-data-json.
gnu: Add java-eclipse-jetty-client.
gnu: Add clojure-core-cache.
gnu: Add clojure-core-memoize.
gnu: clojure-data-xml: Exclude failing tests.
gnu: Add clojure-http-kit.
gnu: Add clojure-tools-analyzer.
gnu: Add clojure-tools-analyzer-jvm.
gnu: Add clojure-tools-logging.
gnu: Add clojure-core-async.
gnu: Add clojure-com-cognitect-http-client.
gnu: Add clojure-com-cognitect-aws-api.
gnu: Add clojure-com-cognitect-aws-endpoints.
gnu: Add clojure-com-cognitect-aws-s3.
gnu: clojure-tools-deps-alpha: Fix issues with S3 transporter.
gnu: clojure-tools: Fix logging warning messages.

gnu/packages/clojure.scm | 497 ++++++++++++++++++++++++++++++++++++---
gnu/packages/web.scm | 26 ++
2 files changed, 495 insertions(+), 28 deletions(-)

--
2.34.0
R
R
Reily Siegel wrote on 4 Feb 01:24 +0100
[PATCH 01/17] gnu: Add clojure-data-priority-map.
(address . 53765@debbugs.gnu.org)
87wnib32e2.fsf@reilysiegel.com
* gnu/packages/clojure.scm (clojure-data-priority-map): New variable.
---
gnu/packages/clojure.scm | 30 ++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+)

Toggle diff (43 lines)
diff --git a/gnu/packages/clojure.scm b/gnu/packages/clojure.scm
index f728083eb2..3cf287140d 100644
--- a/gnu/packages/clojure.scm
+++ b/gnu/packages/clojure.scm
@@ -315,6 +315,36 @@ (define-public clojure-data-codec
 is on par with Java implementations, e.g., Apache commons-codec.")
     (license license:epl1.0)))
 
+(define-public clojure-data-priority-map
+  (package
+    (name "clojure-data-priority-map")
+    (version "1.1.0")
+    (home-page "https://github.com/clojure/data.priority-map")
+    (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
+                "1i6mf59g2l3vamris869mndy9l1bp5mzfqv5gj5qzzb937iiykm0"))))
+    (build-system clojure-build-system)
+    (arguments
+     '(#:source-dirs '("src/main/clojure")
+       #:test-dirs '("src/test/clojure")
+       #:doc-dirs '()))
+    (synopsis "Clojure library implementing priority maps")
+    (description "A priority map is very similar to a sorted map, but whereas
+a sorted map produces a sequence of the entries sorted by key, a priority map
+produces the entries sorted by value.
+
+In addition to supporting all the functions a sorted map supports, a priority
+map can also be thought of as a queue of [item priority] pairs.  To support
+usage as a versatile priority queue, priority maps also support conj/peek/pop
+operations.")
+    (license license:epl1.0)))
+
 (define-public clojure-data-xml
   (package
     (name "clojure-data-xml")
-- 
2.34.0
R
R
Reily Siegel wrote on 4 Feb 01:24 +0100
[PATCH 02/17] gnu: Add clojure-data-json.
(address . 53765@debbugs.gnu.org)
87v8xv32dp.fsf@reilysiegel.com
* gnu/packages/clojure.scm (clojure-data-json): New variable.
---
gnu/packages/clojure.scm | 28 ++++++++++++++++++++++++++++
1 file changed, 28 insertions(+)

Toggle diff (41 lines)
diff --git a/gnu/packages/clojure.scm b/gnu/packages/clojure.scm
index 3cf287140d..c4524c2abb 100644
--- a/gnu/packages/clojure.scm
+++ b/gnu/packages/clojure.scm
@@ -315,6 +315,34 @@ (define-public clojure-data-codec
 is on par with Java implementations, e.g., Apache commons-codec.")
     (license license:epl1.0)))
 
+(define-public clojure-data-json
+  (package
+    (name "clojure-data-json")
+    (version "2.4.0")
+    (home-page "https://github.com/clojure/data.json")
+    (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
+                "1xx3hiy62rrph4y4g3aqa1lfb0ns3p6vdvcvlpgm5w1npl70n2r5"))))
+    (build-system clojure-build-system)
+    (native-inputs (list clojure-test-check))
+    (arguments
+     '(#:source-dirs '("src/main/clojure")
+       #:test-dirs '("src/test/clojure")
+       #:doc-dirs '()
+       ;; ClassCastException, ConcurrentExecutionException
+       #:test-exclude '(clojure.data.json-compat-0-1-test
+                        clojure.data.json-gen-test
+                        clojure.data.json-test)))
+    (synopsis "JSON parser/generator to/from Clojure data structures")
+    (description "JSON parser/generator to/from Clojure data structures.")
+    (license license:epl1.0)))
+
 (define-public clojure-data-priority-map
   (package
     (name "clojure-data-priority-map")
-- 
2.34.0
R
R
Reily Siegel wrote on 4 Feb 01:24 +0100
[PATCH 03/17] gnu: Add java-eclipse-jetty-client.
(address . 53765@debbugs.gnu.org)
87tudf32di.fsf@reilysiegel.com
* gnu/packages/web.scm (java-eclipse-jetty-client): New variable.
---
gnu/packages/web.scm | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)

Toggle diff (39 lines)
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index 3ddecb15c4..e010212a43 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -7269,6 +7269,32 @@ (define-public java-eclipse-jetty-webapp-9.2
      `(("java-eclipse-jetty-io-9.2" ,java-eclipse-jetty-io-9.2)
        ,@(package-native-inputs java-eclipse-jetty-util-9.2)))))
 
+(define-public java-eclipse-jetty-client
+  (package
+    (inherit java-eclipse-jetty-util)
+    (name "java-eclipse-jetty-client")
+    (arguments
+     `(#:jar-name "eclipse-jetty-client.jar"
+       #:source-dir "src/main/java"
+       #:jdk ,icedtea-8
+       #:tests? #f; require junit 5
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'chdir
+           (lambda _
+             (chdir "jetty-client")
+             #t)))))
+    (inputs
+     (list java-eclipse-jetty-util
+           java-eclipse-jetty-http
+           java-eclipse-jetty-io
+           java-eclipse-jetty-server
+           java-eclipse-jetty-servlet
+           java-eclipse-jetty-security
+           java-eclipse-jetty-xml
+           java-javaee-servletapi
+           java-eclipse-jetty-jmx))))
+
 (define-public java-jsoup
   (package
     (name "java-jsoup")
-- 
2.34.0
R
R
Reily Siegel wrote on 4 Feb 01:24 +0100
[PATCH 04/17] gnu: Add clojure-core-cache.
(address . 53765@debbugs.gnu.org)
87sfsz32d8.fsf@reilysiegel.com
* gnu/packages/clojure.scm (clojure-core-cache): New variable.
---
gnu/packages/clojure.scm | 55 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 55 insertions(+)

Toggle diff (68 lines)
diff --git a/gnu/packages/clojure.scm b/gnu/packages/clojure.scm
index c4524c2abb..d390feff3d 100644
--- a/gnu/packages/clojure.scm
+++ b/gnu/packages/clojure.scm
@@ -259,6 +259,61 @@ (define-public clojure-algo-monads
     (home-page "https://github.com/clojure/algo.monads")
     (license license:epl1.0)))
 
+(define-public clojure-core-cache
+  (package
+    (name "clojure-core-cache")
+    (version "1.0.225")
+    (home-page "https://github.com/clojure/core.cache")
+    (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
+                "1dr1ply7ffdbd6bv4gygzmc0wx3q7zwzaaa1p93s28jkfp28276l"))))
+    (build-system clojure-build-system)
+    (arguments
+     '(#:source-dirs '("src/main/clojure")
+       #:test-dirs '("src/test/clojure")
+       #:doc-dirs '("doc")))
+    (propagated-inputs (list clojure-data-priority-map))
+    (synopsis "Caching library for Clojure implementing various cache strategies")
+    (description "@code{core.cache} is a Clojure contrib library providing the
+following features:
+
+An underlying CacheProtocol used as the base abstraction for implementing new
+synchronous caches
+
+A defcache macro for hooking your CacheProtocol implementations into the
+Clojure associative data capabilities.
+
+Implementations of some basic caching strategies
+
+First-in-first-out (FIFOCache)
+Least-recently-used (LRUCache)
+Least-used (LUCache -- sometimes called Least Frequently Used)
+Time-to-live (TTLCacheQ)
+Naive cache (BasicCache)
+Naive cache backed with soft references (SoftCache)
+
+Implementation of an efficient buffer replacement policy based on the low
+inter-reference recency set algorithm (LIRSCache) described in the LIRS paper
+
+Factory functions for each existing cache type
+
+Caches are generally immutable and should be used in conjunction with
+Clojure's state management, such as atom.  SoftCache is the exception here,
+built on top of mutable Java collections, but it can be treated as an
+immutable cache as well.
+
+The @code{clojure.core.cache} namespace contains the immutable caches
+themselves.  The @code{clojure.core.cache.wrapped} namespace contains the same
+API operating on caches wrapped in atoms, which is the \"normal\" use in the
+wild.")
+    (license license:epl1.0)))
+
 (define-public clojure-core-match
   (let ((commit "1837ffbd4a150e8f3953b2d9ed5cf4a4ad3720a7")
         (revision "1")) ; this is the 1st commit buildable with clojure 1.9
-- 
2.34.0
R
R
Reily Siegel wrote on 4 Feb 01:24 +0100
[PATCH 05/17] gnu: Add clojure-core-memoize.
(address . 53765@debbugs.gnu.org)
87r18j32d1.fsf@reilysiegel.com
* gnu/packages/clojure.scm (clojure-core-memoize): New variable.
---
gnu/packages/clojure.scm | 51 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 51 insertions(+)

Toggle diff (64 lines)
diff --git a/gnu/packages/clojure.scm b/gnu/packages/clojure.scm
index d390feff3d..a0350290e5 100644
--- a/gnu/packages/clojure.scm
+++ b/gnu/packages/clojure.scm
@@ -341,6 +341,57 @@ (define-public clojure-core-match
       (home-page "https://github.com/clojure/core.match")
       (license license:epl1.0))))
 
+(define-public clojure-core-memoize
+  (package
+    (name "clojure-core-memoize")
+    (version "1.0.253")
+    (home-page "https://github.com/clojure/core.memoize")
+    (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
+                "1qky54v114sh3xn0lffwy7xx3wnnayk07fr2nvhd4lih84sv6rdz"))))
+    (build-system clojure-build-system)
+    (arguments
+     '(#:source-dirs '("src/main/clojure")
+       #:test-dirs '("src/test/clojure")
+       #:doc-dirs '("docs")
+       ;; Tests fail when AOT'd.
+       #:aot-exclude '(#:all)))
+    (propagated-inputs (list clojure-core-cache))
+    (synopsis "Manipulable, pluggable, memoization framework for Clojure")
+    (description "@code{core.memoize} is a Clojure contrib library providing
+the following features:
+
+An underlying PluggableMemoization protocol that allows the use of
+customizable and swappable memoization caches that adhere to the synchronous
+CacheProtocol found in core.cache
+
+Memoization builders for implementations of common caching strategies,
+including:
+
+First-in-first-out (clojure.core.memoize/fifo)
+
+Least-recently-used (clojure.core.memoize/lru)
+
+Least-used (clojure.core.memoize/lu)
+
+Time-to-live (clojure.core.memoize/ttl)
+
+Naive cache (memo) that duplicates the functionality of Clojure's memoize
+function but, unlike the built-in memoize function, ensures that in the case
+of concurrent calls with the same arguments, the memoized function is only
+invoked once; in addition memo can use metadata from the memoized function to
+ignore certain arguments for the purpose of creating the cache key, e.g.,
+allowing you to memoize clojure.java.jdbc functions where the first argument
+includes a (mutable) JDBC Connection object by specifying
+:clojure.core.memoize/args-fn rest in the metadata")
+    (license license:epl1.0)))
+
 (define-public clojure-data-codec
   (package
     (name "clojure-data-codec")
-- 
2.34.0
R
R
Reily Siegel wrote on 4 Feb 01:24 +0100
[PATCH 06/17] gnu: clojure-data-xml: Exclude failing tests.
(address . 53765@debbugs.gnu.org)
87pmo332cu.fsf@reilysiegel.com
* gnu/packages/clojure.scm (clojure-data-xml): Failing tests excluded from
check phase.
---
gnu/packages/clojure.scm | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)

Toggle diff (17 lines)
diff --git a/gnu/packages/clojure.scm b/gnu/packages/clojure.scm
index a0350290e5..2080c0afec 100644
--- a/gnu/packages/clojure.scm
+++ b/gnu/packages/clojure.scm
@@ -497,7 +497,9 @@ (define-public clojure-data-xml
     (arguments
      '(#:source-dirs '("src/main/clojure")
        #:test-dirs '("src/test/clojure")
-       #:doc-dirs '()))
+       #:doc-dirs '()
+       #:test-exclude '(clojure.data.xml.test-cljs
+                        clojure.data.xml.test-entities)))
     (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
-- 
2.34.0
R
R
Reily Siegel wrote on 4 Feb 01:24 +0100
[PATCH 07/17] gnu: Add clojure-http-kit.
(address . 53765@debbugs.gnu.org)
87o83n32cm.fsf@reilysiegel.com
* gnu/packages/clojure.scm (clojure-http-kit): New variable.
---
gnu/packages/clojure.scm | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)

Toggle diff (38 lines)
diff --git a/gnu/packages/clojure.scm b/gnu/packages/clojure.scm
index 2080c0afec..23635fe1b9 100644
--- a/gnu/packages/clojure.scm
+++ b/gnu/packages/clojure.scm
@@ -512,6 +512,31 @@ (define-public clojure-data-xml
 lazy - should allow parsing and emitting of large XML documents")
     (license license:epl1.0)))
 
+(define-public clojure-http-kit
+  (package
+    (name "clojure-http-kit")
+    (version "2.5.3")
+    (home-page "https://github.com/http-kit/http-kit")
+    (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
+                "19m3j5ad4q7ywl0nd39vs0wha4md8fb846ykz0anv31rvdzv5yv3"))))
+    (build-system clojure-build-system)
+    (arguments
+     '(#:doc-dirs '()
+       #:java-source-dirs '("src/java")
+       ;; Broken test dependencies.
+       #:tests? #f))
+    (synopsis "High-performance event-driven HTTP client/server for Clojure")
+    (description "High-performance event-driven HTTP client/server for
+Clojure.")
+    (license license:asl2.0)))
+
 (define-public clojure-instaparse
   (let ((commit "dcfffad5b065e750f0f5835f017cdd8188b8ca2e")
         (version "1.4.9")) ; upstream forget to tag this release
-- 
2.34.0
R
R
Reily Siegel wrote on 4 Feb 01:25 +0100
[PATCH 08/17] gnu: Add clojure-tools-analyzer.
(address . 53765@debbugs.gnu.org)
87mtj732cg.fsf@reilysiegel.com
* gnu/packages/clojure.scm (clojure-tools-analyzer): New variable.
---
gnu/packages/clojure.scm | 31 +++++++++++++++++++++++++++++++
1 file changed, 31 insertions(+)

Toggle diff (44 lines)
diff --git a/gnu/packages/clojure.scm b/gnu/packages/clojure.scm
index 23635fe1b9..7e188b99b6 100644
--- a/gnu/packages/clojure.scm
+++ b/gnu/packages/clojure.scm
@@ -639,6 +639,37 @@ (define-public clojure-tools-macro
     (home-page "https://github.com/clojure/tools.macro")
     (license license:epl1.0)))
 
+(define-public clojure-tools-analyzer
+  (package
+    (name "clojure-tools-analyzer")
+    (version "1.1.0")
+    (home-page "https://github.com/clojure/tools.analyzer")
+    (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
+                "19cgxxbav3z3k62hwl34vbi3lilrs4vksa4j8lvswha8sdjs01vh"))))
+    (build-system clojure-build-system)
+    (arguments
+     '(#:source-dirs '("src/main/clojure")
+       #:test-dirs '("src/test/clojure")
+       #:doc-dirs '()))
+    (synopsis "Analyzer for Clojure code, written in Clojure and producing
+AST in EDN")
+    (description "An analyzer for host agnostic Clojure code, written in
+Clojure and producing AST in EDN.
+
+Note that the analyzer in this library should not to be used directly as it
+lacks any knowledge about host-specific special forms and it should only be
+considered as a building platform for host-specific analyzers.  Currently the
+following platform specific analyzers written on top of tools.analyzer exist:
+@code{tools.analyzer.jvm}, @code{tools.analyzer.js}")
+    (license license:epl1.0)))
+
 (define-public clojure-tools-cli
   (package
     (name "clojure-tools-cli")
-- 
2.34.0
R
R
Reily Siegel wrote on 4 Feb 01:25 +0100
[PATCH 09/17] gnu: Add clojure-tools-analyzer-jvm.
(address . 53765@debbugs.gnu.org)
87leyr32c8.fsf@reilysiegel.com
* gnu/packages/clojure.scm (clojure-tools-analyzer-jvm): New variable.
---
gnu/packages/clojure.scm | 28 ++++++++++++++++++++++++++++
1 file changed, 28 insertions(+)

Toggle diff (41 lines)
diff --git a/gnu/packages/clojure.scm b/gnu/packages/clojure.scm
index 7e188b99b6..4cd50483e3 100644
--- a/gnu/packages/clojure.scm
+++ b/gnu/packages/clojure.scm
@@ -670,6 +670,34 @@ (define-public clojure-tools-analyzer
 @code{tools.analyzer.jvm}, @code{tools.analyzer.js}")
     (license license:epl1.0)))
 
+(define-public clojure-tools-analyzer-jvm
+  (package
+    (name "clojure-tools-analyzer-jvm")
+    (version "1.2.2")
+    (home-page "https://github.com/clojure/tools.analyzer.jvm")
+    (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
+                "1ibvgvfa4618l5d0pff9gjar1s0fwagi029v4allk7z3swb93ibr"))))
+    (build-system clojure-build-system)
+    (arguments
+     '(#:source-dirs '("src/main/clojure")
+       #:test-dirs '("src/test/clojure")
+       #:doc-dirs '("doc")))
+    (propagated-inputs (list clojure-core-memoize
+                             clojure-tools-reader
+                             clojure-tools-analyzer
+                             java-asm))
+    (synopsis "Additional jvm-specific passes for @code{tools.analyzer}")
+    (description "An analyzer for Clojure code, written on top of
+@code{tools.analyzer}, providing additional jvm-specific passes.")
+    (license license:epl1.0)))
+
 (define-public clojure-tools-cli
   (package
     (name "clojure-tools-cli")
-- 
2.34.0
R
R
Reily Siegel wrote on 4 Feb 01:25 +0100
[PATCH 10/17] gnu: Add clojure-tools-logging.
(address . 53765@debbugs.gnu.org)
87k0eb32c1.fsf@reilysiegel.com
* gnu/packages/clojure.scm (clojure-tools-logging): New variable.
---
gnu/packages/clojure.scm | 60 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 60 insertions(+)

Toggle diff (70 lines)
diff --git a/gnu/packages/clojure.scm b/gnu/packages/clojure.scm
index 4cd50483e3..360d86f6ab 100644
--- a/gnu/packages/clojure.scm
+++ b/gnu/packages/clojure.scm
@@ -811,3 +811,63 @@ (define-public clojure-tools-gitlibs
 indicated by git SHAs.  This library provides this functionality and also
 keeps a cache of git directories and working trees that can be reused.")
     (license license:epl1.0)))
+
+(define-public clojure-tools-logging
+  (package
+    (name "clojure-tools-logging")
+    (version "1.2.4")
+    (home-page "https://github.com/clojure/tools.logging")
+    (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
+                "1vcl1s75amazzdyirnpza8jizp85d5178p0qkqfk26vl7yajvz7a"))))
+    (build-system clojure-build-system)
+    (native-inputs (list clojure-test-check
+                         java-slf4j-api
+                         java-slf4j-simple
+                         java-log4j-api
+                         java-log4j-core
+                         java-commons-logging-minimal))
+    (arguments
+     '(#:source-dirs '("src/main/clojure")
+       #:test-dirs '("src/test/clojure")
+       #:doc-dirs '()
+       ;; Tests fail due to issues with clojure.pprint
+       #:tests? #f))
+    (synopsis "Clojure logging toolkit")
+    (description "Logging macros which delegate to a specific logging
+implementation, selected at runtime when the @code{clojure.tools.logging}
+namespace is first loaded.")
+    (license license:epl1.0)))
+
+(define-public clojure-tools-reader
+  (package
+    (name "clojure-tools-reader")
+    (version "1.3.6")
+    (home-page "https://github.com/clojure/tools.reader")
+    (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
+                "0rcqq024ysz5g2ad8g6jvhnlpwqym58hd1mywl8c4v3x5628d028"))))
+    (build-system clojure-build-system)
+    (arguments
+     '(#:source-dirs '("src/main/clojure")
+       #:test-dirs '("src/test/clojure")
+       #:doc-dirs '()
+       ;; Tests are not well formed clojure namespaces.
+       #:tests? #f))
+    (synopsis "Clojure reader in Clojure")
+    (description "A complete Clojure reader and an EDN-only reader, works with
+Clojure versions >= 1.4.0 and Clojurescript >=0.5308 and since version
+0.10.0-alpha1.")
+    (license license:epl1.0)))
-- 
2.34.0
R
R
Reily Siegel wrote on 4 Feb 01:25 +0100
[PATCH 11/17] gnu: Add clojure-core-async.
(address . 53765@debbugs.gnu.org)
87iltv32bu.fsf@reilysiegel.com
* gnu/packages/clojure.scm (clojure-core-async): New variable.
---
gnu/packages/clojure.scm | 31 +++++++++++++++++++++++++++++++
1 file changed, 31 insertions(+)

Toggle diff (44 lines)
diff --git a/gnu/packages/clojure.scm b/gnu/packages/clojure.scm
index 360d86f6ab..7bbab8b741 100644
--- a/gnu/packages/clojure.scm
+++ b/gnu/packages/clojure.scm
@@ -259,6 +259,37 @@ (define-public clojure-algo-monads
     (home-page "https://github.com/clojure/algo.monads")
     (license license:epl1.0)))
 
+(define-public clojure-core-async
+  (package
+    (name "clojure-core-async")
+    (version "1.5.648")
+    (home-page "https://github.com/clojure/core.async")
+    (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
+                "1any7bh5zsn6agia6y7al1gxnqa6s5g0y45gzy51rfjjccq33xq4"))))
+    (build-system clojure-build-system)
+    (arguments
+     '(#:source-dirs '("src/main/clojure")
+       #:test-dirs '("src/test/clojure")
+       #:doc-dirs '("doc")
+       #:aot-exclude '(cljs.core.async
+                       cljs.core.async.macros
+                       cljs.core.async.impl.ioc-macros)
+       ;; These tests cause the build system to hang.
+       #:test-exclude '(clojure.core.async-test
+                        clojure.core.async.lab-test)))
+    (propagated-inputs (list clojure-tools-analyzer-jvm))
+    (synopsis "Facilities for async programming and communication in Clojure")
+    (description "Facilities for async programming and communication in
+Clojure using communicating sequential processes.")
+    (license license:epl1.0)))
+
 (define-public clojure-core-cache
   (package
     (name "clojure-core-cache")
-- 
2.34.0
R
R
Reily Siegel wrote on 4 Feb 01:25 +0100
[PATCH 12/17] gnu: Add clojure-com-cognitect-http-client.
(address . 53765@debbugs.gnu.org)
87h79f32bm.fsf@reilysiegel.com
* gnu/packages/clojure.scm (clojure-com-cognitect-http-client): New variable.
---
gnu/packages/clojure.scm | 30 ++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+)

Toggle diff (50 lines)
diff --git a/gnu/packages/clojure.scm b/gnu/packages/clojure.scm
index 7bbab8b741..58adb8d080 100644
--- a/gnu/packages/clojure.scm
+++ b/gnu/packages/clojure.scm
@@ -25,6 +25,7 @@ (define-module (gnu packages clojure)
   #:use-module (gnu packages java)
   #:use-module (gnu packages maven)
   #:use-module (gnu packages readline)
+  #:use-module (gnu packages web)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix download)
@@ -259,6 +260,35 @@ (define-public clojure-algo-monads
     (home-page "https://github.com/clojure/algo.monads")
     (license license:epl1.0)))
 
+(define-public clojure-com-cognitect-http-client
+  (package
+    (name "clojure-com-cognitect-aws-api")
+    (version "1.0.111")
+    (source (origin
+              (method url-fetch)
+              ;; This JAR contains only uncompiled Clojure sources.
+              (uri (string-append "https://repo1.maven.org/maven2/"
+                                  "com/cognitect/http-client/"
+                                  version "/http-client-"
+                                  version ".jar"))
+              (sha256
+               (base32
+                "0n03vyr6i6n8ll8jn14b5zsba5pndb0ivdwizimz16gd8w3kf5xh"))))
+    (build-system clojure-build-system)
+    (propagated-inputs (list clojure-core-async
+                             java-eclipse-jetty-client
+                             java-eclipse-jetty-http
+                             java-eclipse-jetty-util
+                             java-eclipse-jetty-io))
+    (arguments
+     '(#:source-dirs '("src")
+       #:test-dirs '()
+       #:doc-dirs '()))
+    (home-page "https://cognitect.com")
+    (synopsis "HTTP Client for Clojure")
+    (description "HTTP client for Clojure.")
+    (license license:asl2.0)))
+
 (define-public clojure-core-async
   (package
     (name "clojure-core-async")
-- 
2.34.0
R
R
Reily Siegel wrote on 4 Feb 01:25 +0100
[PATCH 14/17] gnu: Add clojure-com-cognitect-aws-endpoints.
(address . 53765@debbugs.gnu.org)
87fsoz32b3.fsf@reilysiegel.com
* gnu/packages/clojure.scm (clojure-com-cognitect-aws-endpoints): New variable.
---
gnu/packages/clojure.scm | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)

Toggle diff (37 lines)
diff --git a/gnu/packages/clojure.scm b/gnu/packages/clojure.scm
index b99ec139da..f4b389f7b0 100644
--- a/gnu/packages/clojure.scm
+++ b/gnu/packages/clojure.scm
@@ -300,6 +300,30 @@ (define-public clojure-com-cognitect-aws-api
 for every operation on every service.")
     (license license:asl2.0)))
 
+(define-public clojure-com-cognitect-aws-endpoints
+  (package
+    (inherit clojure-com-cognitect-aws-api)
+    (name "clojure-com-cognitect-aws-endpoints")
+    (version "1.1.12.136")
+    (source (origin
+              (method url-fetch)
+              ;; This JAR contains only data files.
+              (uri (string-append "https://repo1.maven.org/maven2/"
+                                  "com/cognitect/aws/endpoints/"
+                                  version "/endpoints-"
+                                  version "-sources.jar"))
+              (sha256
+               (base32
+                "15irzbnr0gp5pf0nh9vws6kyzjsbqshiqm9b8frjgsnizvqw0jqj"))))
+    (native-inputs '())
+    (propagated-inputs '())
+    (arguments
+     '(#:doc-dirs '()
+       ;; This package contains only data, no code to test.
+       #:tests? #f))
+    (synopsis "Endpoint data for @code{aws-api}")
+    (license license:asl2.0)))
+
 (define-public clojure-com-cognitect-http-client
   (package
     (name "clojure-com-cognitect-aws-api")
-- 
2.34.0
R
R
Reily Siegel wrote on 4 Feb 01:26 +0100
[PATCH 13/17] gnu: Add clojure-com-cognitect-aws-api.
(address . 53765@debbugs.gnu.org)
87ee4j32av.fsf@reilysiegel.com
* gnu/packages/clojure.scm (clojure-com-cognitect-aws-api): New variable.
---
gnu/packages/clojure.scm | 40 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 40 insertions(+)

Toggle diff (53 lines)
diff --git a/gnu/packages/clojure.scm b/gnu/packages/clojure.scm
index 58adb8d080..b99ec139da 100644
--- a/gnu/packages/clojure.scm
+++ b/gnu/packages/clojure.scm
@@ -260,6 +260,46 @@ (define-public clojure-algo-monads
     (home-page "https://github.com/clojure/algo.monads")
     (license license:epl1.0)))
 
+(define-public clojure-com-cognitect-aws-api
+  (package
+    (name "clojure-com-cognitect-aws-api")
+    (version "0.8.539")
+    (home-page "https://github.com/cognitect-labs/aws-api")
+    (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
+                "1pi1578hgfy9w25gyidz5dwl85q51rjm3kfffmlxsysl7vx3gv03"))))
+    (build-system clojure-build-system)
+    (native-inputs (list clojure-http-kit
+                         java-commons-io
+                         clojure-com-cognitect-aws-endpoints
+                         clojure-com-cognitect-aws-s3
+                         clojure-test-check))
+    (propagated-inputs (list clojure-core-async
+                             clojure-tools-logging
+                             clojure-data-json
+                             clojure-data-xml
+                             clojure-com-cognitect-http-client))
+    (arguments
+     '(#:source-dirs '("src" "resources")
+       #:test-dirs '("test/src" "test/resources")
+       #:doc-dirs '("doc")))
+    (synopsis "aws-api is a Clojure library which provides programmatic access
+to AWS services from your Clojure program")
+    (description "@code{aws-api} is an idiomatic, data-oriented Clojure
+library for invoking AWS APIs.  While the library offers some helper and
+documentation functions you'll use at development time, the only functions you
+ever need at runtime are @code{client}, which creates a client for a given
+service and @code{invoke}, which invokes an operation on the
+service. @code{invoke} takes a map and returns a map, and works the same way
+for every operation on every service.")
+    (license license:asl2.0)))
+
 (define-public clojure-com-cognitect-http-client
   (package
     (name "clojure-com-cognitect-aws-api")
-- 
2.34.0
R
R
Reily Siegel wrote on 4 Feb 01:26 +0100
[PATCH 15/17] gnu: Add clojure-com-cognitect-aws-s3.
(address . 53765@debbugs.gnu.org)
87czk332an.fsf@reilysiegel.com
* gnu/packages/clojure.scm (clojure-com-cognitect-aws-s3): New variable.
---
gnu/packages/clojure.scm | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)

Toggle diff (37 lines)
diff --git a/gnu/packages/clojure.scm b/gnu/packages/clojure.scm
index f4b389f7b0..4979300dc7 100644
--- a/gnu/packages/clojure.scm
+++ b/gnu/packages/clojure.scm
@@ -324,6 +324,30 @@ (define-public clojure-com-cognitect-aws-endpoints
     (synopsis "Endpoint data for @code{aws-api}")
     (license license:asl2.0)))
 
+(define-public clojure-com-cognitect-aws-s3
+  (package
+    (inherit clojure-com-cognitect-aws-api)
+    (name "clojure-com-cognitect-aws-s3")
+    (version "814.2.991.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://repo1.maven.org/maven2/"
+                                  "com/cognitect/aws/s3/"
+                                  version "/s3-"
+                                  version "-sources.jar"))
+              (sha256
+               (base32
+                "0aw3mpddmnjmp45vbmv1l47jn84lgq866fy9mg4wf1x2lqdyhigh"))))
+    (native-inputs '())
+    (propagated-inputs '())
+    (arguments
+     '(#:doc-dirs '()
+       ;; This package has no tests.
+       #:tests? #f
+       #:aot-exclude '(#:all)))
+    (synopsis "S3 service description for @code{aws-api}")
+    (license license:asl2.0)))
+
 (define-public clojure-com-cognitect-http-client
   (package
     (name "clojure-com-cognitect-aws-api")
-- 
2.34.0
R
R
Reily Siegel wrote on 4 Feb 01:26 +0100
[PATCH 16/17] gnu: clojure-tools-deps-alpha: Fix issues with S3
(address . 53765@debbugs.gnu.org)
87bkzn32ab.fsf@reilysiegel.com
* gnu/packages/clojure.scm (clojure-tools-deps-alpha): Remove a restriction
which prevented the S3 loader from being used due to dependency issues. Now
that clojure-core-async has been packaged, this restriction can be lifted.
---
gnu/packages/clojure.scm | 33 +++++++--------------------------
1 file changed, 7 insertions(+), 26 deletions(-)

Toggle diff (56 lines)
diff --git a/gnu/packages/clojure.scm b/gnu/packages/clojure.scm
index 4979300dc7..fe10a198db 100644
--- a/gnu/packages/clojure.scm
+++ b/gnu/packages/clojure.scm
@@ -888,34 +888,11 @@ (define-public clojure-tools-deps-alpha
     (build-system clojure-build-system)
     (arguments
      `(#:source-dirs '("src/main/clojure" "src/main/resources")
+       #:java-source-dirs '("src/main/java")
        #: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/alpha/util/s3_aws_client.clj")
-                        (string-append
-                         "src/main/clojure/clojure/"
-                         "tools/deps/alpha/util/s3_transporter.clj")
-                        (string-append
-                         "src/test/clojure/clojure/"
-                         "tools/deps/alpha/util/test_s3_transporter.clj")))
-             (substitute*
-                 "src/main/clojure/clojure/tools/deps/alpha/util/maven.clj"
-               (("clojure.tools.deps.alpha.util.s3-transporter")
-                "")))))))
+       #:tests? #f))
     (propagated-inputs (list maven-resolver-api
                              maven-resolver-spi
                              maven-resolver-impl
@@ -927,7 +904,11 @@ (define-public clojure-tools-deps-alpha
                              maven-resolver-transport-file
                              clojure-tools-gitlibs
                              clojure-tools-cli
-                             clojure-data-xml))
+                             clojure-data-xml
+                             clojure-com-cognitect-aws-api
+                             clojure-com-cognitect-aws-endpoints
+                             clojure-com-cognitect-aws-s3
+                             java-javax-inject))
     (synopsis "Clojure library supporting clojure-tools")
     (description "This package provides a functional API for transitive
 dependency graph expansion and the creation of classpaths.")
-- 
2.34.0
R
R
Reily Siegel wrote on 4 Feb 01:26 +0100
[PATCH 17/17] gnu: clojure-tools: Fix logging warning messages.
(address . 53765@debbugs.gnu.org)
87a6f732a4.fsf@reilysiegel.com
* gnu/packages/clojure.scm (clojure-tools): Add a dependency on
java-slf4j-simple to silence warnings that no logger implementation is
available.
---
gnu/packages/clojure.scm | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

Toggle diff (16 lines)
diff --git a/gnu/packages/clojure.scm b/gnu/packages/clojure.scm
index fe10a198db..ab27fd8bd3 100644
--- a/gnu/packages/clojure.scm
+++ b/gnu/packages/clojure.scm
@@ -200,7 +200,8 @@ (define-public clojure-tools
     (inputs (list rlwrap
                   clojure
                   clojure-tools-deps-alpha
-                  java-commons-logging-minimal))
+                  java-commons-logging-minimal
+                  java-slf4j-simple))
     (home-page "https://clojure.org/releases/tools")
     (synopsis "CLI tools for the Clojure programming language")
     (description "The Clojure command line tools can be used to start a
-- 
2.34.0
M
M
Maxime Devos wrote on 6 Feb 11:30 +0100
Re: [bug#53765] [PATCH 07/17] gnu: Add clojure-http-kit.
88d6b2fe5bcea2a839d20ea7b40f678dc2eed0bd.camel@telenet.be
Reily Siegel schreef op do 03-02-2022 om 19:24 [-0500]:
Toggle quote (3 lines)
> +       ;; Broken test dependencies.
> +       #:tests? #f))

Which dependencies are broken? How are they broken?
Can we fix them?

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYf+jKhccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7mq/APsGPtchssgBM/OcJNcOva4BQyGc
eW6TMkk4hSDxCF5L8AD+KzU/VFh2kgqanRfjxUqivdt3JflxgIiRb9BGIhmLDQ4=
=kQ9D
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 6 Feb 11:35 +0100
Re: [bug#53765] [PATCH 15/17] gnu: Add clojure-com-cognitect-aws-s3.
e01a23d7c6847ee13b29d460d3969b67d1e8406c.camel@telenet.be
Reily Siegel schreef op do 03-02-2022 om 19:26 [-0500]:
Toggle quote (2 lines)
> +    (synopsis "S3 service description for @code{aws-api}")

I have no idea what that means.

From ‘17.4.4 Synopses and Descriptions’:

[...] Use full sentences, and avoid using acronyms without first
introducing them. [...]

That's strictly speaking only for descriptions, but it's useful advice
for synopses as well.

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYf+kdxccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7l1rAPsFqYU9OqAwYnLN+KQDsd6qtDsx
QqkxvtkYNSBIAgc/OwEAoJ0QSHQv29sLUc7z7tkg+EguwmA4vl+4kr+ahG0aOgA=
=Rhn7
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 6 Feb 11:37 +0100
Re: [bug#53765] [PATCH 13/17] gnu: Add clojure-com-cognitect-aws-api.
8867131c0c9ab347cf5d3902608cadc9cc36c95c.camel@telenet.be
Reily Siegel schreef op do 03-02-2022 om 19:26 [-0500]:
Toggle quote (3 lines)
> +    (synopsis "aws-api is a Clojure library which provides programmatic access
> +to AWS services from your Clojure program")

It seems irrelevant that it's mine or yours or someone else's, I would
replace 'your Clojure program' with 'Clojure'.

Also, introduce the acronym AWS before using it.

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYf+k5RccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7lj1AQCA67IKl2ZLAfR22oxIbQg+3D13
+cZvks0sUWS/amYcWAD/V8N7Ig+E15XoNDN/SGZzzOY2KFtq+2k0cvWxH3czjgQ=
=bpHp
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 6 Feb 11:39 +0100
793f3ffc777b0023ac225c3c5a826fff3548ebbb.camel@telenet.be
Reily Siegel schreef op do 03-02-2022 om 19:26 [-0500]:
Toggle quote (3 lines)
> @code{aws-api} is an idiomatic, data-oriented Clojure
> +library for invoking AWS APIs.

From ‘Synopses and Descriptions’:

Please avoid marketing phrases such as “world-leading”,
“industrial-strength”, and “next-generation”, and avoid superlatives
like “the most advanced”—they are not helpful to users looking for a
package and may even sound suspicious. Instead, try to be factual,
mentioning use cases and features.

I'm referring to 'idiomatic' and 'data-oriented' which is rather vague
and subjective.

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYf+lcxccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7sVEAQCjGikDdgxig2rzlGoWM5Jf/blh
kksgybx/CWOoES7BYQEA3RscpuQz3QulzE7CAIXteTIuW1lid+Rb1sKmjXp+EwI=
=m7hK
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 6 Feb 11:45 +0100
edeacaa12c80bb60f16f5018e63a6ef87f0295e0.camel@telenet.be
Reily Siegel schreef op do 03-02-2022 om 19:26 [-0500]:
Toggle quote (3 lines)
> +    (description "@code{aws-api} is an idiomatic, data-oriented Clojure
> +library for invoking AWS APIs.
>
What's an ‘AWS API’? How do I now if I have one? Some context is
required here.

Toggle quote (7 lines)
>   While the library offers some helper and
> +documentation functions you'll use at development time, the only functions you
> +ever need at runtime are @code{client}, which creates a client for a given
> +service and @code{invoke}, which invokes an operation on the
> +service.
>

How can this description now I will never need these helper functions?
If they are unneeded, why are they included at all?

Toggle quote (3 lines)
> @code{invoke} takes a map and returns a map, and works the same way
> +for every operation on every service.")

Anyway, descriptions aren't the place to describe the API, that's for
the documentation of clojure-com-cognitect-aws-api. Instead, keep in
mind:

‘[...], try to be factual, mentioning use cases and features.’

‘Keep in mind that the synopsis must be meaningful for a very wide
audience. For example, “Manipulate alignments in the SAM format” might
make sense for a seasoned bioinformatics researcher, but might be
fairly unhelpful or even misleading to a non-specialized audience. It
is a good idea to come up with a synopsis that gives an idea of the
application domain of the package. In this example, this might give
something like “Manipulate nucleotide sequence alignments”, which
hopefully gives the user a better idea of whether this is what they are
looking for.’

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYf+muhccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7uTnAQCDIx/1TWiQgPCXCy5UOL6E9bC2
C+Jz4p/+v6/wUO0NtQD9F8v7fMtSYa8heJL8Ys/PBOt0IIUoAHjynYWh+LIFSgg=
=/ggx
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 6 Feb 11:46 +0100
Re: [bug#53765] [PATCH 09/17] gnu: Add clojure-tools-analyzer-jvm.
60c6bfb03469cf7ffbc85caf28fdada3fc88915e.camel@telenet.be
Reily Siegel schreef op do 03-02-2022 om 19:25 [-0500]:
Toggle quote (2 lines)
> +    (synopsis "Additional jvm-specific passes for @code{tools.analyzer}")

Is it jvm-specific, or Java-specific? Also, isn't Clojure based on
Java, so Java-specific seems a tautology here?

Greeting,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYf+nIRccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7srnAP0WFuAL/xpFBOFWctkeFyFz2aXm
SZdWwxCy+HW5lJINeQD9FScmvBYXK6UrbU5JA4xU8nFtSzY0k79vAiyahF3mgg4=
=FMgT
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 6 Feb 11:50 +0100
Re: [bug#53765] [PATCH 12/17] gnu: Add clojure-com-cognitect-http-client.
d83cdfef4f27c817cbe36590605875f82a4dbd68.camel@telenet.be
Reily Siegel schreef op do 03-02-2022 om 19:25 [-0500]:
Toggle quote (6 lines)
> +              ;; This JAR contains only uncompiled Clojure sources.
> +              (uri (string-append "https://repo1.maven.org/maven2/"
> +                                  "com/cognitect/http-client/"
> +                                  version "/http-client-"
> +                                  version ".jar"))

Where did you find this source code? How can I now whether it's
authentic (i.e., whether it actually came from cognitect and not some
imposter)?

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYf+oDRccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7laKAP0SkhWNrUtfoLTMCOUPJO6FNyZP
KRTefRkwn0Wtz9sZTQEAgAA1WMbSVBbGcM203BOR3T4nWqeR7pWybwSOANukeAY=
=XZFC
-----END PGP SIGNATURE-----


R
R
Reily Siegel wrote on 7 Feb 19:04 +0100
Re: [bug#53765] [PATCH 09/17] gnu: Add clojure-tools-analyzer-jvm.
87leymy2mg.fsf@reilysiegel.com
Maxime Devos <maximedevos@telenet.be> writes:


Toggle quote (1 lines)
> Is it jvm-specific, or Java-specific?
This is JVM-specific, as clojure compiles directly to JVM bytecode,
without an intermediary Java state.

Toggle quote (2 lines)
> Also, isn't Clojure based on Java, so Java-specific seems a tautology
> here?
There are also other implementations of Clojure that run on other
platforms, such as the CLR, JavaScript, and BEAM, and one under
development for Flutter.

--
Reily Siegel
R
R
Reily Siegel wrote on 7 Feb 19:06 +0100
Re: [bug#53765] [PATCH 12/17] gnu: Add clojure-com-cognitect-http-client.
87iltqy2jm.fsf@reilysiegel.com
Maxime Devos <maximedevos@telenet.be> writes:
Toggle quote (10 lines)
> Reily Siegel schreef op do 03-02-2022 om 19:25 [-0500]:
>> +              ;; This JAR contains only uncompiled Clojure sources.
>> +              (uri (string-append "https://repo1.maven.org/maven2/"
>> +                                  "com/cognitect/http-client/"
>> +                                  version "/http-client-"
>> +                                  version ".jar"))
>
> Where did you find this source code? How can I now whether it's
> authentic (i.e., whether it actually came from cognitect and not some
> imposter)?
This code is taken directly from Maven, as are many Java packages. This
relies on whatever authentication Maven does to ensure packages are not
forgeries.
--
Reily Siegel
R
R
Reily Siegel wrote on 7 Feb 19:09 +0100
Re: [bug#53765] [PATCH 13/17] gnu: Add clojure-com-cognitect-aws-api.
87fsouy2do.fsf@reilysiegel.com
Maxime Devos <maximedevos@telenet.be> writes:

Toggle quote (6 lines)
> Reily Siegel schreef op do 03-02-2022 om 19:26 [-0500]:
>> @code{aws-api} is an idiomatic, data-oriented Clojure
>> +library for invoking AWS APIs.

> I'm referring to 'idiomatic' and 'data-oriented' which is rather vague
> and subjective.
Data-oriented has a rather specific meaning in the Clojure community,
that is that the API is declarative and operates on plain Clojure data
structures, as opposed to using Macros or a class-based system. I will
update the descriptions and synopses that were mentioned in other
replies, and submit a new version of the patch.

--
Reily Siegel
M
M
Maxime Devos wrote on 7 Feb 20:01 +0100
Re: [bug#53765] [PATCH 09/17] gnu: Add clojure-tools-analyzer-jvm.
fe92342b5acb61ae6da74c1dca489e741e688a88.camel@telenet.be
Reily Siegel schreef op ma 07-02-2022 om 13:04 [-0500]:
Toggle quote (4 lines)
> > Is it jvm-specific, or Java-specific?
> This is JVM-specific, as clojure compiles directly to JVM bytecode,
> without an intermediary Java state.

Compiling to Java bytecode does not imply the JVM -- for example,
GCJ can compile Java bytecode to native code, according to
https://gcc.gnu.org/wiki/GCJ_FAQ. There is no JVM involved in this
situation.

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYgFsnRccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7vTdAP9QOEpjYIAnOIako1JPDh0au/N+
kuAUYjQ6ymgccc9UIAEAqGY87bVAdyfArvoarb56X7yti7iA7yL2KTJz9xCHEgQ=
=y3Mn
-----END PGP SIGNATURE-----


R
R
Reily Siegel wrote on 7 Feb 20:18 +0100
87czjyxz6k.fsf@reilysiegel.com
Maxime Devos <maximedevos@telenet.be> writes:

Toggle quote (4 lines)
> Compiling to Java bytecode does not imply the JVM -- for example,
> GCJ can compile Java bytecode to native code, according to
> <https://gcc.gnu.org/wiki/GCJ_FAQ>. There is no JVM involved in this
> situation.
Yes. However, here "Java Bytecode" has nothing to do with the Java
programming language. It could have been produced by any programming
language that executes on the JVM. The Java, as well as Clojure
compilers produce bytecode that is designed to run on the Java Virtual
Machine. The fact that other programs can analyze that bytecode and do
something else with it doesn't seem super relevant to me. We wouldn't
call x86 assembly "C bytecode" because you could theoretically run it in
an emulator and not on an x86 processor. I really don't think this is
worth a huge debate, but my concern is that changing this to Java
implies that it only works with the Java programming language, and not
any other programming language or tool that respects JVM bytecode, of
which there are several (Scala, Groovy, Kotlin, etc.).

--
Reily Siegel
M
M
Maxime Devos wrote on 7 Feb 20:19 +0100
Re: [bug#53765] [PATCH 13/17] gnu: Add clojure-com-cognitect-aws-api.
18d931f2449797067ff0894fe63dd2571c50df47.camel@telenet.be
Reily Siegel schreef op ma 07-02-2022 om 13:09 [-0500]:
Toggle quote (4 lines)
> Data-oriented has a rather specific meaning in the Clojure community,
> that is that the API is declarative and operates on plain Clojure data
> structures, as opposed to using Macros or a class-based system.

OK, though I don't see how it can be declarative -- it's a library
for ‘invoking AWS APIs’, which seems rather imperative, at least
procedural.

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYgFwwhccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7oL+AP9wg3bmftbgz7fgWZ6RcQkDWfkW
AlDiEunSymRvNxLmJgEA/bmtztRoTX8UyKgHIJKmqKu8B/mWCw4gd0tjZoZlzgc=
=5gf3
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 7 Feb 20:30 +0100
Re: [bug#53765] [PATCH 12/17] gnu: Add clojure-com-cognitect-http-client.
0892d295983b8c628b9d446b6c88b70f5a6f83fd.camel@telenet.be
Reily Siegel schreef op ma 07-02-2022 om 13:06 [-0500]:
Toggle quote (4 lines)
> This code is taken directly from Maven, as are many Java packages. This
> relies on whatever authentication Maven does to ensure packages are not
> forgeries.

I took a look at https://maven.apache.org and AFAICT Maven does not
have any process in place to prevent forgeries or malicious code;
there does not appear to be any vetting process, though perhaps
I haven't looked far enough.

A web page from cognitect telling ‘grab source code from Maven
(com/cognitect/http-client)’, combined with going over the source
code to sniff things like ’Send ~/.gnupg to evil.com’ should be
sufficient.

For the damage the absence of a vetting process can do,
see e.g. https://lwn.net/Articles/694830/. The same issue
appears to hold for PyPI, RubyGems and npm.

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYgFzPBccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7sHdAQCPHb0UX4f7wLSn5e4VqXCpbi5r
fbCnjjAv6KvDFU2Y6AD+OoSAq2wqnHPaXHL6vKarvFwj3UaGI5dlIZ5A7cBjZAc=
=leOc
-----END PGP SIGNATURE-----


R
R
Reily Siegel wrote on 7 Feb 20:31 +0100
Re: [bug#53765] [PATCH 13/17] gnu: Add clojure-com-cognitect-aws-api.
87a6f2xylk.fsf@reilysiegel.com
Maxime Devos <maximedevos@telenet.be> writes:

Toggle quote (3 lines)
> OK, though I don't see how it can be declarative -- it's a library
> for ‘invoking AWS APIs’, which seems rather imperative, at least
> procedural.
Let me compare this library and the official Java AWS SDK.

#+BEGIN_SRC java
// Create a GetItemRequest instance
GetItemRequest request = GetItemRequest.builder()
.key(keyToGet)
.tableName(tableName)
.build();

// Invoke the DynamoDbAsyncClient object's getItem
java.util.Collection<AttributeValue> returnedItem = client.getItem(request)
.join()
.item()
.values();
#+END_SRC

#+BEGIN_SRC clojure
(aws/invoke s3 {:op :GetObject :request {:Bucket bucket-name :Key "hello.txt"}})
#+END_SRC

The Java API programatically creates a Request object, when is then
modified by several methods to set the options, before being invoked.
The Clojure API, on the other hand, specifies the operation
declaratively using plain Clojure data structures (in this case,
keywords, strings, and maps), before calling invoke on that
specification. The declarative part is in how the API is interacted
with, not necessarily what happens in the library internals or over the
wire.

Examples from the respective documentations of each project.
--
Reily Siegel
M
M
Maxime Devos wrote on 7 Feb 20:44 +0100
Re: [bug#53765] [PATCH 15/17] gnu: Add clojure-com-cognitect-aws-s3.
acbd69b0729c8ed16a105b8fa0c416ee3659f72d.camel@telenet.be
Reily Siegel schreef op do 03-02-2022 om 19:26 [-0500]:
Toggle quote (9 lines)
> +    (source (origin
> +              (method url-fetch)
> +              (uri (string-append "https://repo1.maven.org/maven2/"
> +                                  "com/cognitect/aws/s3/"
> +                                  version "/s3-"
> +                                  version "-sources.jar"))
> + [...]
> + (license license:asl2.0)))

I downloaded it, the hash matches.
However, the license appears to be incorrect: specs.clj starts with

;; Copyright (c) Cognitect, Inc.
;; All rights reserved.

‘All rights reserved’ is not ASL2.0, and is blatantly non-free.
Also, are you sure this is source code? Aside from the comment above,
I don't see any comments or docstrings in specs.clj.

Furthermore, service.edn and docs.edn are huge blobs -- it's textual
and not binary, but that doesn't make it source code.

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYgF2pRccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7p8WAPwL05Yt+Jy+IwVwIWNCkIE9fxP4
qih/hmUnabieMJZa6gEA7jZkxG3V0yv+x43tZFZp33msh5SGoCrKLfX61dgZ6Qo=
=ydDj
-----END PGP SIGNATURE-----


R
R
Reily Siegel wrote on 7 Feb 20:50 +0100
Re: [bug#53765] [PATCH 12/17] gnu: Add clojure-com-cognitect-http-client.
875ypqxxqv.fsf@reilysiegel.com
Maxime Devos <maximedevos@telenet.be> writes:

Toggle quote (2 lines)
> A web page from cognitect telling ‘grab source code from Maven
> (com/cognitect/http-client)’
I am fairly certain that this code is not officially documented and
released as a library, it is only used in internal cognitect projects.
However, this is where other, officially supported cognitect libraries
pull the source from. The dependency specification[1] for cognitect-aws-api
uses:

com.cognitect/http-client {:mvn/version "1.0.110"}

As the location to pull this dependency. Given that the dependency
resolution system uses https://repo1.maven.org/maven2/by default (see
the file /lib/clojure/deps.edn in clojure-tools), this results in the
This is one revision older than the version I use (I just grabbed the
most recent one), but if you would like me to submit a new version of
the patch using this older version instead, I have no problem with that,
and it should work just fine.

Toggle quote (2 lines)
> Going over the source code to sniff things like ’Send ~/.gnupg to
> evil.com’ should be sufficient.
I have read the entire source code of the project, and can verify that
it doesn't obviously do anything like this. Not claiming that I can
guarantee that the code is bug-free, but there is nothing obviously evil
about it. The code is only ~300 lines long, and mostly wraps existing
Java APIs.

--
Reily Siegel

M
M
Maxime Devos wrote on 7 Feb 20:53 +0100
Re: [bug#53765] [PATCH 14/17] gnu: Add clojure-com-cognitect-aws-endpoints.
27061b5a55f028f08a757e07203ddc62e7e216aa.camel@telenet.be
Reily Siegel schreef op do 03-02-2022 om 19:25 [-0500]:
Toggle quote (18 lines)
> +(define-public clojure-com-cognitect-aws-endpoints
> +  (package
> +    (inherit clojure-com-cognitect-aws-api)
> +    (name "clojure-com-cognitect-aws-endpoints")
> +    (version "1.1.12.136")
> +    (source (origin
> +              (method url-fetch)
> +              ;; This JAR contains only data files.
> +              (uri (string-append "https://repo1.maven.org/maven2/"
> +                                  "com/cognitect/aws/endpoints/"
> +                                  version "/endpoints-"
> +                                  version "-sources.jar"))
> +              (sha256
> +               (base32
> +                "15irzbnr0gp5pf0nh9vws6kyzjsbqshiqm9b8frjgsnizvqw0jqj"))))
> +    [...]
> +    (license license:asl2.0)))

I downloaded the source code. The hash matches.
It does indeed appear to be pure data.
However, I don't see any indication of it being ASL2.0
says it's Apache 2.0, but that seems in conflict with 4.(a) of the
ASL2.0:

4. Redistribution. You may reproduce and distribute copies [...],
provided that You meet the following conditions:

a. You must give any other recipients of the Work or Derivative Works a
copy of this License; and [...]

so the license information on Maven doesn't seem convincing evidence.

It might be ASL2.0 after all, but stronger evidence is needed.

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYgF4vhccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7gATAP9TeUI/uXzzh7r6pqpcGKD4B0C7
yE4gtyGuBMchEd5LwAD/ZZXYMd/RIdnZb/GMtj4bRxuBuvUtno27tupyLy/eVQE=
=Sko6
-----END PGP SIGNATURE-----


R
R
Reily Siegel wrote on 7 Feb 20:56 +0100
Re: [bug#53765] [PATCH 15/17] gnu: Add clojure-com-cognitect-aws-s3.
8735kuxxfc.fsf@reilysiegel.com
Maxime Devos <maximedevos@telenet.be> writes:

Toggle quote (5 lines)
> ;; Copyright (c) Cognitect, Inc.
> ;; All rights reserved.
>
> ‘All rights reserved’ is not ASL2.0, and is blatantly non-free.

The pom.xml file says that this is ASL2.0 [1]

Toggle quote (3 lines)
> Also, are you sure this is source code? Aside from the comment above,
> I don't see any comments or docstrings in specs.clj.

specs.clj just contains what are essentially type definitions. The
aws-api library that uses this is declarative, so it only needs to load
type definitions, and the edn files that describe the endpoints.

Toggle quote (3 lines)
> Furthermore, service.edn and docs.edn are huge blobs -- it's textual
> and not binary, but that doesn't make it source code.

EDN is a strict subset of Clojure used for representing Clojure data
structures, similar to JSON for JavaScript.

Toggle quote (3 lines)
> Greetings,
> Maxime.

R
R
Reily Siegel wrote on 7 Feb 21:01 +0100
Re: [bug#53765] [PATCH 14/17] gnu: Add clojure-com-cognitect-aws-endpoints.
87zgn2wimv.fsf@reilysiegel.com
Maxime Devos <maximedevos@telenet.be> writes:

Toggle quote (4 lines)
> However, I don't see any indication of it being ASL2.0
> -- <https://mvnrepository.com/artifact/com.cognitect.aws/endpoints>
> says it's Apache 2.0, but that seems in conflict with 4.(a) of the
> ASL2.0:
The pom.xml file on Maven links to
meet the terms of the license? If not, I can reach out to people from
cognitect, but may or may not be able to get a response.

--
Reily Siegel
M
M
Maxime Devos wrote on 7 Feb 21:21 +0100
Re: [bug#53765] [PATCH 12/17] gnu: Add clojure-com-cognitect-http-client.
bb66f60b61b46a9b53882e8fafcd90a15e72b3aa.camel@telenet.be
Reily Siegel schreef op do 03-02-2022 om 19:25 [-0500]:

Toggle quote (15 lines)
> +(define-public clojure-com-cognitect-http-client
> + (package
> + (name "clojure-com-cognitect-aws-api")
> + (version "1.0.111")
> + (source (origin
> + (method url-fetch)
> + ;; This JAR contains only uncompiled Clojure sources.
> + (uri (string-append "https://repo1.maven.org/maven2/"
> + "com/cognitect/http-client/"
> + version "/http-client-"
> + version ".jar"))
> + (sha256
> + (base32
> + "0n03vyr6i6n8ll8jn14b5zsba5pndb0ivdwizimz16gd8w3kf5xh"))))

I downloaded the JAR and verified the hash matches.

Toggle quote (3 lines)
> + (license license:asl2.0)))
>

This time, the source code has a COPYING file and the headers of the
source code state that it is Apache 2.0, which is good.

There's still something weird though: even though the source files
later state it's Apache 2.0, initially they state

;; Copyright (c) Cognitect, Inc.
;; All rights reserved.

This seems rather contradictory --- do they reserve all monopology
rights for theirselves, or do they license it as Apache 2.0, giving
people some rights? The intent seems clear here (Apache 2.0), so
not a blocker for inclusion in Guix I think, but IANAL and this should
ideally eventually be fixed upstream.

The files in the zip appear to be actual source code, not compiled
something. There indeed doesn't appear to be anything malicious.

I'll look into the authenticity later.

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYgF/WBccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7hYzAQClyrzVAVEUMXrJEXqr6Yj+s9zq
BiJGo61t5e7DuggTGgD/c0jBd2rRAALU00IaUCYzU91cqaWu6zbpZE3OO9xJPAQ=
=SIDt
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 7 Feb 21:23 +0100
ebdee237662aac5a72e91a23043fb6a9a36fd233.camel@telenet.be
Reily Siegel schreef op do 03-02-2022 om 19:25 [-0500]:
Toggle quote (6 lines)
> +(define-public clojure-com-cognitect-http-client
> +  (package
> +    (name "clojure-com-cognitect-aws-api")
> + (uri (string-append "https://repo1.maven.org/maven2/"
> + "com/cognitect/http-client/"

The variable name, package name and URI are inconsistent.
They should all be http-client, not aws-api, I think?

Greetings,
Maxime
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYgF/rRccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7obxAQCa6U7v5VjIcvg3DdZ6UmWH7OGf
cIrGkxcTB+lF1ug2jwD+JJ5Z5DoPObAqxXIVBd7yoaxwqTy5K3T8kjAJlAGzvQ0=
=StI1
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 7 Feb 21:29 +0100
056cda1d14838f41735e20c1bb35dad59faef016.camel@telenet.be
Reily Siegel schreef op do 03-02-2022 om 19:25 [-0500]:
Toggle quote (2 lines)
> +    (synopsis "HTTP Client for Clojure")

Why is ‘Client’ capitalised here?

Toggle quote (2 lines)
> +    (description "HTTP client for Clojure.")

This seems rather misleading, it is not its own HTTP client
but rather a tiny wrapper around jetty's HTTP client that
makes the API a bit less Java-y and more Clojure-y.

I would mention something along the lines

(description "This package is a Clojure wrapper around Jetty's HTTP
client for Java. While Jetty is a Java package and hence its API
follows Java conventions, this Clojure wrapper follows Clojure API
conventions.")

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYgGBMhccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7gVXAP9MJruPEm24tiaHkWuyCLnvbkQv
ItpawOLlHl+9zoxSogD+M/UOsmA9up49FwktTq98y0vPIG6BnMDNw89iuvILjwQ=
=nEv1
-----END PGP SIGNATURE-----


R
R
Reily Siegel wrote on 7 Feb 21:31 +0100
87wni6wh8k.fsf@reilysiegel.com
Maxime Devos <maximedevos@telenet.be> writes:

Toggle quote (3 lines)
> The variable name, package name and URI are inconsistent.
> They should all be http-client, not aws-api, I think?

Thanks for catching this, I will fix in v2 of the patch.

--
Reily Siegel
M
M
Maxime Devos wrote on 7 Feb 21:32 +0100
Re: [bug#53765] [PATCH 11/17] gnu: Add clojure-core-async.
b5e6cc241dc731aed257f673ebc1577b1cbe331f.camel@telenet.be
Reily Siegel schreef op do 03-02-2022 om 19:25 [-0500]:
Toggle quote (7 lines)
> +    (source (origin
> +              (method git-fetch)
> +              (uri (git-reference
> +                    (url home-page)
> +                    (commit (string-append "v" version))))

While sometimes there locations happen to coincide, home pages are git
repos are rather different things. As such, the
"https://github.com/clojure/core.async"needs to be put into the 'url'
field instead of 'home-page'. At least, that's the current consensus
AFAICT, I haven't given this much thought myself.

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYgGB+hccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7mLNAQD1Ko3/Bo467OTnvu5kMQZ6YSMS
95ggEFGU3LCuhpSv4QD9H55oPSogb1BR9WCha+P+yXIKbJPZzU5XpKXXu8fCugQ=
=c0Yf
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 7 Feb 21:34 +0100
f22bcb9a8aa64ad7cf6ee63f94772538b67011d1.camel@telenet.be
Reily Siegel schreef op do 03-02-2022 om 19:25 [-0500]:
Toggle quote (4 lines)
> +    (synopsis "Facilities for async programming and communication in Clojure")
> +    (description "Facilities for async programming and communication in
> +Clojure using communicating sequential processes.")

As per (guix)Synopses and Descriptions, use complete sentences in
descriptions. Additionally, this is rather on the short side, more
information would be nice.

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYgGCThccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7tWVAQDjv923viOP11fnofN5HEopOajr
N7097Tf0g3OQNIwLeAEAofDhSG+j2dIwwSdIXsQ5ZRgdUfWQEWoXj6gUgryRhwY=
=L11R
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 7 Feb 21:37 +0100
b98f16b380b1733ea4ff367a4a6af9e9c59dbf83.camel@telenet.be
Hi,

Reily Siegel schreef op do 03-02-2022 om 19:25 [-0500]:
Toggle quote (4 lines)
> +       ;; These tests cause the build system to hang.
> +       #:test-exclude '(clojure.core.async-test
> +                        clojure.core.async.lab-test)))

That seems like a bug --- in the main source code, in the test suite,
or in Clojure itself. In the first and last case, this indicates
a real problem to be fixed (presumably upstream) and not simply ignored
--- what is the point of a test suite when we just ignore failing (or
hanging) tests?

In the second case, upstream needs to be informed such that they can
fix their tests.

Has upstream been informed?

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYgGC/BccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7hzHAP9pU+/aCUTRtcjHmje6eg9/uygz
k0GwfYwoa+7Y+OGJ7gEA9gusWLHaXlLhebWOlKAxQ3JEsS6hCVUPzpJVPtse/gM=
=zZHF
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 7 Feb 21:53 +0100
b505977638e143e9f4abea08f8ea2f27f2173e0d.camel@telenet.be
Reily Siegel schreef op do 03-02-2022 om 19:25 [-0500]:
Toggle quote (2 lines)
> +    (source (origin

A license header is missing from ioc_macros_test.clj, lab_test.clj and
timers_test.clj, async_test.clj and pipeline_test.clj, ex-alts.clj, ex-
altsgo.clj, ex-async.clj, ex-go.clj and walkthrough.clj, while it is
present in other source code. As such, it seems like an oversight
upstream. Could upstream be informed?

There doesn't appear to be any malware.

Source code looks authentic to me (the repo belongs to the ‘clojure’
GitHub organisation, and clojure.org links to that GitHub
organisation).

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYgGGuxccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7lovAP93BgwIR+fHPAjoHpJbrp9ipsF/
LejOTnnV71N1hdNkbwEA1Iz/I4fHK96HLGir13/O/z31WXnW6TzlkL0Sg5YeAgg=
=iogj
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 7 Feb 21:55 +0100
Re: [bug#53765] [PATCH 10/17] gnu: Add clojure-tools-logging.
d52c82cfad7f966ac82e5d1566b94b14c8b32510.camel@telenet.be
Reily Siegel schreef op do 03-02-2022 om 19:25 [-0500]:
Toggle quote (3 lines)
> +       ;; Tests fail due to issues with clojure.pprint
> +       #:tests? #f))

Like mentioned for another packages, in that case the tests or the main
code are broken, and in the latter case, clojure-tools-logging is
broken, so it should be fixed or at the very least upstream should be
informed, before including it in Guix.

I'll look at patches 1--10 later.

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYgGHTxccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7j8bAQDVM5sljoCcZfqHIhmXA31VKvRd
eeB+nzdTN5nZYl8HBAEA6Qp01GA24mjUn/Nhy8D5tenkZrCtUY3EBtbg7WbOkAY=
=OfJ4
-----END PGP SIGNATURE-----


R
R
Reily Siegel wrote on 7 Feb 23:19 +0100
87sfsuwc9y.fsf@reilysiegel.com
Maxime Devos <maximedevos@telenet.be> writes:

Toggle quote (5 lines)
> Like mentioned for another packages, in that case the tests or the main
> code are broken, and in the latter case, clojure-tools-logging is
> broken, so it should be fixed or at the very least upstream should be
> informed, before including it in Guix.

This is caused by a problem with how Guix compiles clojure itself, in
the ant-build-system. I believe it has to do with preserving timestamps
on AOT compiled files, but it is not a bug I fully understand or am
qualified to fix. However, to be clear, tests upstream are fine.

--
Reily Siegel
R
R
Reily Siegel wrote on 8 Feb 00:46 +0100
Re: [bug#53765] [PATCH 11/17] gnu: Add clojure-core-async.
87pmnyw88f.fsf@reilysiegel.com
Maxime Devos <maximedevos@telenet.be> writes:


Toggle quote (6 lines)
> That seems like a bug --- in the main source code, in the test suite,
> or in Clojure itself. In the first and last case, this indicates
> a real problem to be fixed (presumably upstream) and not simply ignored
> --- what is the point of a test suite when we just ignore failing (or
> hanging) tests?

This was an issue with the clojure-build-system, but either the patch I
submitted recently or another patch has resolved the issue, so these
test cases seem to now work successfully. These exclusions will be
removed in the second version of the patch.

--
Reily Siegel
M
M
Maxime Devos wrote on 8 Feb 11:15 +0100
Re: [bug#53765] [PATCH 10/17] gnu: Add clojure-tools-logging.
49bc6f6dd6193bddd0f754f0dbe63a4bb6c0d6ad.camel@telenet.be
Reily Siegel schreef op ma 07-02-2022 om 17:19 [-0500]:
Toggle quote (13 lines)
> > Like mentioned for another packages, in that case the tests or the
> > main
> > code are broken, and in the latter case, clojure-tools-logging is
> > broken, so it should be fixed or at the very least upstream should
> > be
> > informed, before including it in Guix.
>
> This is caused by a problem with how Guix compiles clojure itself, in
> the ant-build-system. I believe it has to do with preserving
> timestamps
> on AOT compiled files, but it is not a bug I fully understand or am
> qualified to fix. However, to be clear, tests upstream are fine.

I recommend filing a bug and linking to it from a comment next to
;; #:tests? #false.

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYgJCvxccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7rg2AP0QEdzsHRs8Xn4ErrjXH05Sergv
5RGA8W4fwAPMBuebJQEA/0BluLN7uTnf/gXJVK1OsPbah9oSQ8oKaWU8MMxupws=
=0EM6
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 8 Feb 11:22 +0100
f49bdb76e91625abbcd1e2fe65d7e89358c67e0b.camel@telenet.be
Reily Siegel schreef op do 03-02-2022 om 19:25 [-0500]:
Toggle quote (4 lines)
> +    (description "A complete Clojure reader and an EDN-only reader, works with
> +Clojure versions >= 1.4.0 and Clojurescript >=0.5308 and since version
> +0.10.0-alpha1.")

Guix only has version 1.10.0>1.4.0 of Clojure and doesn't have
Clojurescript packaged, so I don't see the point of mentioning these
version ranges.

Also, as per ‘Synopses and Descriptions’: ‘avoid using acronyms without
first introducing them’. EDN has not been introduced.

‘Keep in mind that the synopsis must be meaningful for a very wide
audience. For example, “Manipulate alignments in the SAM format” might
make sense for a seasoned bioinformatics researcher, but might be
fairly unhelpful or even misleading to a non-specialized audience.’

What does ‘reader’ mean here? Is it a book explaining Clojure? Is
it an application for helping the user with reading Clojure source
code? Is it like Scheme's 'read' procedure or whatever wisp's 'read'
procedure is named?

What is meant by ‘complete’ here -- how does it compare to incomplete
Clojure readers?

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYgJEYRccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7vkmAP9U5SrA08u826pj3IdqiKIwk3j4
pAOuy6k3Wbw5bPkWXQD/RPRWnrJfIuxDJy1JX70nf3qo+LPhkDvUJpUvegofIgw=
=BSq7
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 9 Feb 12:10 +0100
Re: [bug#53765] [PATCH 01/17] gnu: Add clojure-data-priority-map.
92f85fe34da346fa1413b68d7bcbdfbedb5b989d.camel@telenet.be
Reily Siegel schreef op do 03-02-2022 om 19:24 [-0500]:
Toggle quote (2 lines)
> [item priority]

Looks like Clojure code, so you can probably do use TeXinfo markup
here: @lisp{[item priority].

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYgOhMhccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7vrFAQDos2OjOiBw4bZc7q621KWB9WO3
zBuesub4RUqSmFJPKgEAsjXtXf0TA+/yR7NjZCjixay8OLwQZmZpL1bAaDedOwE=
=F5YU
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 9 Feb 12:18 +0100
adb40dd44d5bc8e14a6fca2445f39a354b2ccd8d.camel@telenet.be
Reily Siegel schreef op do 03-02-2022 om 19:24 [-0500]:
Toggle quote (2 lines)
> conj/peek/pop operations

What's ‘conj’ here? While this term might make sense to Clojure
people, it is rather Clojure-specific and hence isn't meaningful to a
wide audience -- my first thought was that it meant ‘conjugation’
somehow. Using non-standard terminology makes, say, translating
descriptions harder. I would use standard terminology here: 'insert'
or 'add' instead of 'conj'.

Alternatively, you could rewrite the description to define a priority
map as a combination of a priority map and a priority queue and go from
there, avoiding naming the actual operations.

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYgOjDRccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7nqwAQCRfTZKCqrUu8zLUawU5qhONFDv
Ce0wYRnN6Ij5XO1wWAD/eV7QAFuanXSEcFskPzdtkPcXDVPaqn+RxIXasS9RDAM=
=suVN
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 10 Feb 18:52 +0100
Re: [bug#53765] [PATCH 02/17] gnu: Add clojure-data-json.
8f891e72c43da8e1179a539cdcb3496ec5b85fed.camel@telenet.be
Reily Siegel schreef op do 03-02-2022 om 19:24 [-0500]:
Toggle quote (5 lines)
> +       ;; ClassCastException, ConcurrentExecutionException
> +       #:test-exclude '(clojure.data.json-compat-0-1-test
> +                        clojure.data.json-gen-test
> +                        clojure.data.json-test)))

Seems like there's a bug in clojure-data-json to fix or at least report
upstream then?

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYgVQ5hccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7rJEAP4lpjNqIwAMkyL2l5b+nuhRRwZE
BJvHghYsFrTRVB7GcgD/bYgGffJimV45SLUUp+Ew0X1kF9DvtzkFWJO/EKOJGAw=
=QHf/
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 10 Feb 19:00 +0100
844fbfff5bba24f6ad84589e0f58fa9f862baa24.camel@telenet.be
Reily Siegel schreef op do 03-02-2022 om 19:24 [-0500]:
Toggle quote (2 lines)
> * gnu/packages/clojure.scm (clojure-data-json): New variable.

Some files under src/test/clojure/clojure/data are missing license
headers, while others do have an EPL license header. Are they
also under the EPL?

There doesn't appear to be anything malicious in the source code.

There's again the ‘all rights reserved’ despite ‘EPL licensed’.

Toggle quote (3 lines)
> + (synopsis "JSON parser/generator to/from Clojure data structures")
> + (description "JSON parser/generator to/from Clojure data structures.")

Description is missing.

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYgVS0hccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7iCQAQDMEJqurpqqB98L7DUf1o4V9n76
ppZnmIofPqPzNQz9cAD/UjPUqxVWWO3fZcpMSOlVDD0+1eKpTSR4JTPQC8jKngs=
=Qzde
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 15 Feb 09:59 +0100
Re: [bug#53765] [PATCH 12/17] gnu: Add clojure-com-cognitect-http-client.
96bbd72674e007aa64fad6b580e5aba0f22526f2.camel@telenet.be
Reily Siegel schreef op ma 07-02-2022 om 14:50 [-0500]:
Toggle quote (5 lines)
> I am fairly certain that this code is not officially documented and
> released as a library, it is only used in internal cognitect projects.
> However, this is where other, officially supported cognitect libraries
> pull the source from. [...]

Additionally, Clojure is developed at Cognitect (see
https://clojure.org/dev/dev),the Maven artifacts are named
com.cognitect.FOO and so far nothing malicious has been found.
There does not appear to be any room for typosquatting here and
everything appears to be authentic.

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYgtrZhccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7hdqAP9Uvitk8ygY+1KbWJuNRw1Z1TaN
W82gU/C1KH/xOmnL8gEA8fK9vjFYg5lmqtwt0qVFixJTzuGHaGkVjeg1C3feEgY=
=VHXL
-----END PGP SIGNATURE-----


R
R
Reily Siegel wrote on 16 Mar 13:39 +0100
[PATCH v2 00/18]
(address . 53765@debbugs.gnu.org)(name . Maxime Devos)(address . maximedevos@telenet.be)
cover.1647434250.git.mail@reilysiegel.com
Sorry for the delay in sending updated patches, I have been quite busy
with school. Hopefully these patches address the issues found with the
first series, please let me know if further updates are needed.

Reily Siegel (18):
gnu: Add clojure-data-priority-map.
gnu: Add clojure-data-json.
gnu: Add java-eclipse-jetty-client.
gnu: Add clojure-core-cache.
gnu: Add clojure-core-memoize.
gnu: clojure-data-xml: Exclude failing tests.
gnu: Add clojure-http-kit.
gnu: Add clojure-tools-analyzer.
gnu: Add clojure-tools-analyzer-jvm.
gnu: Add clojure-tools-reader.
gnu: Add clojure-tools-logging.
gnu: Add clojure-core-async.
gnu: Add clojure-com-cognitect-http-client.
gnu: Add clojure-com-cognitect-aws-api.
gnu: Add clojure-com-cognitect-aws-endpoints.
gnu: Add clojure-com-cognitect-aws-s3.
gnu: clojure-tools-deps-alpha: Fix issues with S3 transporter.
gnu: clojure-tools: Fix logging warning messages.

gnu/packages/clojure.scm | 498 ++++++++++++++++++++++++++++++++++++---
gnu/packages/web.scm | 26 ++
2 files changed, 496 insertions(+), 28 deletions(-)

--
2.34.0


--
Reily Siegel
R
R
Reily Siegel wrote on 16 Mar 13:43 +0100
[PATCH v2 01/18] gnu: Add clojure-data-priority-map.
(address . 53765@debbugs.gnu.org)(name . Maxime Devos)(address . maximedevos@telenet.be)
87czimdq4d.fsf@reilysiegel.com
* gnu/packages/clojure.scm (clojure-data-priority-map): New variable.
---
gnu/packages/clojure.scm | 30 ++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+)

Toggle diff (47 lines)
diff --git a/gnu/packages/clojure.scm b/gnu/packages/clojure.scm
index f728083eb2..aa21ed7823 100644
--- a/gnu/packages/clojure.scm
+++ b/gnu/packages/clojure.scm
@@ -315,6 +315,36 @@ (define-public clojure-data-codec
 is on par with Java implementations, e.g., Apache commons-codec.")
     (license license:epl1.0)))
 
+(define-public clojure-data-priority-map
+  (package
+    (name "clojure-data-priority-map")
+    (version "1.1.0")
+    (home-page "https://github.com/clojure/data.priority-map")
+    (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
+                "1i6mf59g2l3vamris869mndy9l1bp5mzfqv5gj5qzzb937iiykm0"))))
+    (build-system clojure-build-system)
+    (arguments
+     '(#:source-dirs '("src/main/clojure")
+       #:test-dirs '("src/test/clojure")
+       #:doc-dirs '()))
+    (synopsis "Clojure library implementing priority maps")
+    (description "A priority map is very similar to a sorted map, but whereas
+a sorted map produces a sequence of the entries sorted by key, a priority map
+produces the entries sorted by value.
+
+In addition to supporting all the functions a sorted map supports, a priority
+map can also be thought of as a queue of @code{[item priority]} pairs.  To
+support usage as a versatile priority queue, priority maps also support
+insert/peek/pop operations.")
+    (license license:epl1.0)))
+
 (define-public clojure-data-xml
   (package
     (name "clojure-data-xml")
-- 
2.34.0


-- 
Reily Siegel
R
R
Reily Siegel wrote on 16 Mar 13:43 +0100
[PATCH v2 02/18] gnu: Add clojure-data-json.
(address . 53765@debbugs.gnu.org)(name . Maxime Devos)(address . maximedevos@telenet.be)
87bky6dq4a.fsf@reilysiegel.com
* gnu/packages/clojure.scm (clojure-data-json): New variable.
---
gnu/packages/clojure.scm | 30 ++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+)

Toggle diff (47 lines)
diff --git a/gnu/packages/clojure.scm b/gnu/packages/clojure.scm
index aa21ed7823..9911b14577 100644
--- a/gnu/packages/clojure.scm
+++ b/gnu/packages/clojure.scm
@@ -315,6 +315,36 @@ (define-public clojure-data-codec
 is on par with Java implementations, e.g., Apache commons-codec.")
     (license license:epl1.0)))
 
+(define-public clojure-data-json
+  (package
+    (name "clojure-data-json")
+    (version "2.4.0")
+    (home-page "https://github.com/clojure/data.json")
+    (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
+                "1xx3hiy62rrph4y4g3aqa1lfb0ns3p6vdvcvlpgm5w1npl70n2r5"))))
+    (build-system clojure-build-system)
+    (native-inputs (list clojure-test-check))
+    (arguments
+     '(#:source-dirs '("src/main/clojure")
+       #:test-dirs '("src/test/clojure")
+       #:doc-dirs '()
+       ;; ClassCastException, ConcurrentExecutionException
+       #:test-exclude '(clojure.data.json-compat-0-1-test
+                        clojure.data.json-gen-test
+                        clojure.data.json-test)))
+    (synopsis "JSON parser/generator to/from Clojure data structures")
+    (description "clojure-data-json implements a JSON parser/generator that
+enables easy conversion between Clojure data structures and JSON strings,
+without needing a defined schema.")
+    (license license:epl1.0)))
+
 (define-public clojure-data-priority-map
   (package
     (name "clojure-data-priority-map")
-- 
2.34.0


-- 
Reily Siegel
R
R
Reily Siegel wrote on 16 Mar 13:43 +0100
[PATCH v2 03/18] gnu: Add java-eclipse-jetty-client.
(address . 53765@debbugs.gnu.org)(name . Maxime Devos)(address . maximedevos@telenet.be)
87a6dqdq48.fsf@reilysiegel.com
* gnu/packages/web.scm (java-eclipse-jetty-client): New variable.
---
gnu/packages/web.scm | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)

Toggle diff (43 lines)
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index 3ddecb15c4..e010212a43 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -7269,6 +7269,32 @@ (define-public java-eclipse-jetty-webapp-9.2
      `(("java-eclipse-jetty-io-9.2" ,java-eclipse-jetty-io-9.2)
        ,@(package-native-inputs java-eclipse-jetty-util-9.2)))))
 
+(define-public java-eclipse-jetty-client
+  (package
+    (inherit java-eclipse-jetty-util)
+    (name "java-eclipse-jetty-client")
+    (arguments
+     `(#:jar-name "eclipse-jetty-client.jar"
+       #:source-dir "src/main/java"
+       #:jdk ,icedtea-8
+       #:tests? #f; require junit 5
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'chdir
+           (lambda _
+             (chdir "jetty-client")
+             #t)))))
+    (inputs
+     (list java-eclipse-jetty-util
+           java-eclipse-jetty-http
+           java-eclipse-jetty-io
+           java-eclipse-jetty-server
+           java-eclipse-jetty-servlet
+           java-eclipse-jetty-security
+           java-eclipse-jetty-xml
+           java-javaee-servletapi
+           java-eclipse-jetty-jmx))))
+
 (define-public java-jsoup
   (package
     (name "java-jsoup")
-- 
2.34.0


-- 
Reily Siegel
R
R
Reily Siegel wrote on 16 Mar 13:43 +0100
[PATCH v2 04/18] gnu: Add clojure-core-cache.
(address . 53765@debbugs.gnu.org)(name . Maxime Devos)(address . maximedevos@telenet.be)
878rtadq46.fsf@reilysiegel.com
* gnu/packages/clojure.scm (clojure-core-cache): New variable.
---
gnu/packages/clojure.scm | 55 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 55 insertions(+)

Toggle diff (72 lines)
diff --git a/gnu/packages/clojure.scm b/gnu/packages/clojure.scm
index 9911b14577..37cea74c95 100644
--- a/gnu/packages/clojure.scm
+++ b/gnu/packages/clojure.scm
@@ -259,6 +259,61 @@ (define-public clojure-algo-monads
     (home-page "https://github.com/clojure/algo.monads")
     (license license:epl1.0)))
 
+(define-public clojure-core-cache
+  (package
+    (name "clojure-core-cache")
+    (version "1.0.225")
+    (home-page "https://github.com/clojure/core.cache")
+    (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
+                "1dr1ply7ffdbd6bv4gygzmc0wx3q7zwzaaa1p93s28jkfp28276l"))))
+    (build-system clojure-build-system)
+    (arguments
+     '(#:source-dirs '("src/main/clojure")
+       #:test-dirs '("src/test/clojure")
+       #:doc-dirs '("doc")))
+    (propagated-inputs (list clojure-data-priority-map))
+    (synopsis "Caching library for Clojure implementing various cache strategies")
+    (description "@code{core.cache} is a Clojure contrib library providing the
+following features:
+
+An underlying CacheProtocol used as the base abstraction for implementing new
+synchronous caches
+
+A defcache macro for hooking your CacheProtocol implementations into the
+Clojure associative data capabilities.
+
+Implementations of some basic caching strategies
+
+First-in-first-out (FIFOCache)
+Least-recently-used (LRUCache)
+Least-used (LUCache -- sometimes called Least Frequently Used)
+Time-to-live (TTLCacheQ)
+Naive cache (BasicCache)
+Naive cache backed with soft references (SoftCache)
+
+Implementation of an efficient buffer replacement policy based on the low
+inter-reference recency set algorithm (LIRSCache) described in the LIRS paper
+
+Factory functions for each existing cache type
+
+Caches are generally immutable and should be used in conjunction with
+Clojure's state management, such as atom.  SoftCache is the exception here,
+built on top of mutable Java collections, but it can be treated as an
+immutable cache as well.
+
+The @code{clojure.core.cache} namespace contains the immutable caches
+themselves.  The @code{clojure.core.cache.wrapped} namespace contains the same
+API operating on caches wrapped in atoms, which is the \"normal\" use in the
+wild.")
+    (license license:epl1.0)))
+
 (define-public clojure-core-match
   (let ((commit "1837ffbd4a150e8f3953b2d9ed5cf4a4ad3720a7")
         (revision "1")) ; this is the 1st commit buildable with clojure 1.9
-- 
2.34.0


-- 
Reily Siegel
R
R
Reily Siegel wrote on 16 Mar 13:43 +0100
[PATCH v2 05/18] gnu: Add clojure-core-memoize.
(address . 53765@debbugs.gnu.org)(name . Maxime Devos)(address . maximedevos@telenet.be)
877d8udq44.fsf@reilysiegel.com
* gnu/packages/clojure.scm (clojure-core-memoize): New variable.
---
gnu/packages/clojure.scm | 51 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 51 insertions(+)

Toggle diff (68 lines)
diff --git a/gnu/packages/clojure.scm b/gnu/packages/clojure.scm
index 37cea74c95..d6c8218f93 100644
--- a/gnu/packages/clojure.scm
+++ b/gnu/packages/clojure.scm
@@ -341,6 +341,57 @@ (define-public clojure-core-match
       (home-page "https://github.com/clojure/core.match")
       (license license:epl1.0))))
 
+(define-public clojure-core-memoize
+  (package
+    (name "clojure-core-memoize")
+    (version "1.0.253")
+    (home-page "https://github.com/clojure/core.memoize")
+    (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
+                "1qky54v114sh3xn0lffwy7xx3wnnayk07fr2nvhd4lih84sv6rdz"))))
+    (build-system clojure-build-system)
+    (arguments
+     '(#:source-dirs '("src/main/clojure")
+       #:test-dirs '("src/test/clojure")
+       #:doc-dirs '("docs")
+       ;; Tests fail when AOT'd.
+       #:aot-exclude '(#:all)))
+    (propagated-inputs (list clojure-core-cache))
+    (synopsis "Manipulable, pluggable, memoization framework for Clojure")
+    (description "@code{core.memoize} is a Clojure contrib library providing
+the following features:
+
+An underlying PluggableMemoization protocol that allows the use of
+customizable and swappable memoization caches that adhere to the synchronous
+CacheProtocol found in core.cache
+
+Memoization builders for implementations of common caching strategies,
+including:
+
+First-in-first-out (clojure.core.memoize/fifo)
+
+Least-recently-used (clojure.core.memoize/lru)
+
+Least-used (clojure.core.memoize/lu)
+
+Time-to-live (clojure.core.memoize/ttl)
+
+Naive cache (memo) that duplicates the functionality of Clojure's memoize
+function but, unlike the built-in memoize function, ensures that in the case
+of concurrent calls with the same arguments, the memoized function is only
+invoked once; in addition memo can use metadata from the memoized function to
+ignore certain arguments for the purpose of creating the cache key, e.g.,
+allowing you to memoize clojure.java.jdbc functions where the first argument
+includes a (mutable) JDBC Connection object by specifying
+:clojure.core.memoize/args-fn rest in the metadata")
+    (license license:epl1.0)))
+
 (define-public clojure-data-codec
   (package
     (name "clojure-data-codec")
-- 
2.34.0


-- 
Reily Siegel
R
R
Reily Siegel wrote on 16 Mar 13:43 +0100
[PATCH v2 06/18] gnu: clojure-data-xml: Exclude failing tests.
(address . 53765@debbugs.gnu.org)(name . Maxime Devos)(address . maximedevos@telenet.be)
875yoedq42.fsf@reilysiegel.com
* gnu/packages/clojure.scm (clojure-data-xml): Failing tests excluded from
check phase.
---
gnu/packages/clojure.scm | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)

Toggle diff (21 lines)
diff --git a/gnu/packages/clojure.scm b/gnu/packages/clojure.scm
index d6c8218f93..850e1beea8 100644
--- a/gnu/packages/clojure.scm
+++ b/gnu/packages/clojure.scm
@@ -499,7 +499,9 @@ (define-public clojure-data-xml
     (arguments
      '(#:source-dirs '("src/main/clojure")
        #:test-dirs '("src/test/clojure")
-       #:doc-dirs '()))
+       #:doc-dirs '()
+       #:test-exclude '(clojure.data.xml.test-cljs
+                        clojure.data.xml.test-entities)))
     (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
-- 
2.34.0


-- 
Reily Siegel
R
R
Reily Siegel wrote on 16 Mar 13:43 +0100
[PATCH v2 07/18] gnu: Add clojure-http-kit.
(address . 53765@debbugs.gnu.org)(name . Maxime Devos)(address . maximedevos@telenet.be)
874k3ydq40.fsf@reilysiegel.com
* gnu/packages/clojure.scm (clojure-http-kit): New variable.
---
gnu/packages/clojure.scm | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)

Toggle diff (44 lines)
diff --git a/gnu/packages/clojure.scm b/gnu/packages/clojure.scm
index 850e1beea8..5e93a14dbc 100644
--- a/gnu/packages/clojure.scm
+++ b/gnu/packages/clojure.scm
@@ -514,6 +514,33 @@ (define-public clojure-data-xml
 lazy - should allow parsing and emitting of large XML documents")
     (license license:epl1.0)))
 
+(define-public clojure-http-kit
+  (package
+    (name "clojure-http-kit")
+    (version "2.5.3")
+    (home-page "https://github.com/http-kit/http-kit")
+    (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
+                "19m3j5ad4q7ywl0nd39vs0wha4md8fb846ykz0anv31rvdzv5yv3"))))
+    (build-system clojure-build-system)
+    (arguments
+     '(#:doc-dirs '()
+       #:java-source-dirs '("src/java")
+       ;; Broken test dependencies. Upstream reports that the current version
+       ;; of ring-defaults causes tests to hang, but that updating it would
+       ;; break other test dependencies.
+       #:tests? #f))
+    (synopsis "High-performance event-driven HTTP client/server for Clojure")
+    (description "High-performance event-driven HTTP client/server for
+Clojure.")
+    (license license:asl2.0)))
+
 (define-public clojure-instaparse
   (let ((commit "dcfffad5b065e750f0f5835f017cdd8188b8ca2e")
         (version "1.4.9")) ; upstream forget to tag this release
-- 
2.34.0


-- 
Reily Siegel
R
R
Reily Siegel wrote on 16 Mar 13:44 +0100
[PATCH v2 08/18] gnu: Add clojure-tools-analyzer.
(address . 53765@debbugs.gnu.org)(name . Maxime Devos)(address . maximedevos@telenet.be)
8735jidq3y.fsf@reilysiegel.com
* gnu/packages/clojure.scm (clojure-tools-analyzer): New variable.
---
gnu/packages/clojure.scm | 31 +++++++++++++++++++++++++++++++
1 file changed, 31 insertions(+)

Toggle diff (48 lines)
diff --git a/gnu/packages/clojure.scm b/gnu/packages/clojure.scm
index 5e93a14dbc..4d64d72f5a 100644
--- a/gnu/packages/clojure.scm
+++ b/gnu/packages/clojure.scm
@@ -643,6 +643,37 @@ (define-public clojure-tools-macro
     (home-page "https://github.com/clojure/tools.macro")
     (license license:epl1.0)))
 
+(define-public clojure-tools-analyzer
+  (package
+    (name "clojure-tools-analyzer")
+    (version "1.1.0")
+    (home-page "https://github.com/clojure/tools.analyzer")
+    (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
+                "19cgxxbav3z3k62hwl34vbi3lilrs4vksa4j8lvswha8sdjs01vh"))))
+    (build-system clojure-build-system)
+    (arguments
+     '(#:source-dirs '("src/main/clojure")
+       #:test-dirs '("src/test/clojure")
+       #:doc-dirs '()))
+    (synopsis "Analyzer for Clojure code, written in Clojure and producing
+AST in EDN")
+    (description "An analyzer for host agnostic Clojure code, written in
+Clojure and producing AST in EDN.
+
+Note that the analyzer in this library should not to be used directly as it
+lacks any knowledge about host-specific special forms and it should only be
+considered as a building platform for host-specific analyzers.  Currently the
+following platform specific analyzers written on top of tools.analyzer exist:
+@code{tools.analyzer.jvm}, @code{tools.analyzer.js}")
+    (license license:epl1.0)))
+
 (define-public clojure-tools-cli
   (package
     (name "clojure-tools-cli")
-- 
2.34.0


-- 
Reily Siegel
R
R
Reily Siegel wrote on 16 Mar 13:44 +0100
[PATCH v2 09/18] gnu: Add clojure-tools-analyzer-jvm.
(address . 53765@debbugs.gnu.org)(name . Maxime Devos)(address . maximedevos@telenet.be)
871qz2dq3w.fsf@reilysiegel.com
* gnu/packages/clojure.scm (clojure-tools-analyzer-jvm): New variable.
---
gnu/packages/clojure.scm | 28 ++++++++++++++++++++++++++++
1 file changed, 28 insertions(+)

Toggle diff (45 lines)
diff --git a/gnu/packages/clojure.scm b/gnu/packages/clojure.scm
index 4d64d72f5a..5b15d50114 100644
--- a/gnu/packages/clojure.scm
+++ b/gnu/packages/clojure.scm
@@ -674,6 +674,34 @@ (define-public clojure-tools-analyzer
 @code{tools.analyzer.jvm}, @code{tools.analyzer.js}")
     (license license:epl1.0)))
 
+(define-public clojure-tools-analyzer-jvm
+  (package
+    (name "clojure-tools-analyzer-jvm")
+    (version "1.2.2")
+    (home-page "https://github.com/clojure/tools.analyzer.jvm")
+    (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
+                "1ibvgvfa4618l5d0pff9gjar1s0fwagi029v4allk7z3swb93ibr"))))
+    (build-system clojure-build-system)
+    (arguments
+     '(#:source-dirs '("src/main/clojure")
+       #:test-dirs '("src/test/clojure")
+       #:doc-dirs '("doc")))
+    (propagated-inputs (list clojure-core-memoize
+                             clojure-tools-reader
+                             clojure-tools-analyzer
+                             java-asm))
+    (synopsis "Additional jvm-specific passes for @code{tools.analyzer}")
+    (description "An analyzer for Clojure code, written on top of
+@code{tools.analyzer}, providing additional jvm-specific passes.")
+    (license license:epl1.0)))
+
 (define-public clojure-tools-cli
   (package
     (name "clojure-tools-cli")
-- 
2.34.0


-- 
Reily Siegel
R
R
Reily Siegel wrote on 16 Mar 13:44 +0100
[PATCH v2 11/18] gnu: Add clojure-tools-logging.
(address . 53765@debbugs.gnu.org)(name . Maxime Devos)(address . maximedevos@telenet.be)
87y21acbjd.fsf@reilysiegel.com
* gnu/packages/clojure.scm (clojure-tools-logging): New variable.
---
gnu/packages/clojure.scm | 34 ++++++++++++++++++++++++++++++++++
1 file changed, 34 insertions(+)

Toggle diff (51 lines)
diff --git a/gnu/packages/clojure.scm b/gnu/packages/clojure.scm
index b33cc963ef..29f7401ac3 100644
--- a/gnu/packages/clojure.scm
+++ b/gnu/packages/clojure.scm
@@ -816,6 +816,40 @@ (define-public clojure-tools-gitlibs
 keeps a cache of git directories and working trees that can be reused.")
     (license license:epl1.0)))
 
+(define-public clojure-tools-logging
+  (package
+    (name "clojure-tools-logging")
+    (version "1.2.4")
+    (home-page "https://github.com/clojure/tools.logging")
+    (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
+                "1vcl1s75amazzdyirnpza8jizp85d5178p0qkqfk26vl7yajvz7a"))))
+    (build-system clojure-build-system)
+    (native-inputs (list clojure-test-check
+                         java-slf4j-api
+                         java-slf4j-simple
+                         java-log4j-api
+                         java-log4j-core
+                         java-commons-logging-minimal))
+    (arguments
+     '(#:source-dirs '("src/main/clojure")
+       #:test-dirs '("src/test/clojure")
+       #:doc-dirs '()
+       ;; Tests fail due to issues with clojure.pprint. This is an issue with
+       ;; how Guix AOT-compiles clojure.
+       #:tests? #f))
+    (synopsis "Clojure logging toolkit")
+    (description "Logging macros which delegate to a specific logging
+implementation, selected at runtime when the @code{clojure.tools.logging}
+namespace is first loaded.")
+    (license license:epl1.0)))
+
 (define-public clojure-tools-reader
   (package
     (name "clojure-tools-reader")
-- 
2.34.0


-- 
Reily Siegel
R
R
Reily Siegel wrote on 16 Mar 13:44 +0100
[PATCH v2 12/18] gnu: Add clojure-core-async.
(address . 53765@debbugs.gnu.org)(name . Maxime Devos)(address . maximedevos@telenet.be)
87wngucbjb.fsf@reilysiegel.com
* gnu/packages/clojure.scm (clojure-core-async): New variable.
---
gnu/packages/clojure.scm | 30 ++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+)

Toggle diff (47 lines)
diff --git a/gnu/packages/clojure.scm b/gnu/packages/clojure.scm
index 29f7401ac3..6a45ba7d6c 100644
--- a/gnu/packages/clojure.scm
+++ b/gnu/packages/clojure.scm
@@ -259,6 +259,36 @@ (define-public clojure-algo-monads
     (home-page "https://github.com/clojure/algo.monads")
     (license license:epl1.0)))
 
+(define-public clojure-core-async
+  (package
+    (name "clojure-core-async")
+    (version "1.5.648")
+    (home-page "https://github.com/clojure/core.async")
+    (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
+                "1any7bh5zsn6agia6y7al1gxnqa6s5g0y45gzy51rfjjccq33xq4"))))
+    (build-system clojure-build-system)
+    (arguments
+     '(#:source-dirs '("src/main/clojure")
+       #:test-dirs '("src/test/clojure")
+       #:doc-dirs '("doc")
+       #:aot-exclude '(cljs.core.async
+                       cljs.core.async.macros
+                       cljs.core.async.impl.ioc-macros)))
+    (propagated-inputs (list clojure-tools-analyzer-jvm))
+    (synopsis "Facilities for async programming and communication in Clojure")
+    (description "@{core.async} is a Clojure library providing facilities for
+async programming and communication in Clojure using communicating sequential
+processes.  @{core.async} supports both multi-threaded and single-threaded
+environments.")
+    (license license:epl1.0)))
+
 (define-public clojure-core-cache
   (package
     (name "clojure-core-cache")
-- 
2.34.0


-- 
Reily Siegel
R
R
Reily Siegel wrote on 16 Mar 13:44 +0100
[PATCH v2 13/18] gnu: Add clojure-com-cognitect-http-client.
(address . 53765@debbugs.gnu.org)(name . Maxime Devos)(address . maximedevos@telenet.be)
87v8wecbj9.fsf@reilysiegel.com
* gnu/packages/clojure.scm (clojure-com-cognitect-http-client): New variable.
---
gnu/packages/clojure.scm | 31 +++++++++++++++++++++++++++++++
1 file changed, 31 insertions(+)

Toggle diff (55 lines)
diff --git a/gnu/packages/clojure.scm b/gnu/packages/clojure.scm
index 6a45ba7d6c..9d4026e844 100644
--- a/gnu/packages/clojure.scm
+++ b/gnu/packages/clojure.scm
@@ -25,6 +25,7 @@ (define-module (gnu packages clojure)
   #:use-module (gnu packages java)
   #:use-module (gnu packages maven)
   #:use-module (gnu packages readline)
+  #:use-module (gnu packages web)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix download)
@@ -259,6 +260,36 @@ (define-public clojure-algo-monads
     (home-page "https://github.com/clojure/algo.monads")
     (license license:epl1.0)))
 
+(define-public clojure-com-cognitect-http-client
+  (package
+    (name "clojure-com-cognitect-http-client")
+    (version "1.0.111")
+    (source (origin
+              (method url-fetch)
+              ;; This JAR contains only uncompiled Clojure sources.
+              (uri (string-append "https://repo1.maven.org/maven2/"
+                                  "com/cognitect/http-client/"
+                                  version "/http-client-"
+                                  version ".jar"))
+              (sha256
+               (base32
+                "0n03vyr6i6n8ll8jn14b5zsba5pndb0ivdwizimz16gd8w3kf5xh"))))
+    (build-system clojure-build-system)
+    (propagated-inputs (list clojure-core-async
+                             java-eclipse-jetty-client
+                             java-eclipse-jetty-http
+                             java-eclipse-jetty-util
+                             java-eclipse-jetty-io))
+    (arguments
+     '(#:source-dirs '("src")
+       #:test-dirs '()
+       #:doc-dirs '()))
+    (home-page "https://cognitect.com")
+    (synopsis "HTTP client for Clojure")
+    (description "HTTP client for Clojure that wraps Jetty's Java API,
+providing an API that follows Clojure conventions.")
+    (license license:asl2.0)))
+
 (define-public clojure-core-async
   (package
     (name "clojure-core-async")
-- 
2.34.0


-- 
Reily Siegel
R
R
Reily Siegel wrote on 16 Mar 13:44 +0100
[PATCH v2 14/18] gnu: Add clojure-com-cognitect-aws-api.
(address . 53765@debbugs.gnu.org)(name . Maxime Devos)(address . maximedevos@telenet.be)
87tubycbj7.fsf@reilysiegel.com
* gnu/packages/clojure.scm (clojure-com-cognitect-aws-api): New variable.
---
gnu/packages/clojure.scm | 35 +++++++++++++++++++++++++++++++++++
1 file changed, 35 insertions(+)

Toggle diff (52 lines)
diff --git a/gnu/packages/clojure.scm b/gnu/packages/clojure.scm
index 9d4026e844..ac6d58149d 100644
--- a/gnu/packages/clojure.scm
+++ b/gnu/packages/clojure.scm
@@ -260,6 +260,41 @@ (define-public clojure-algo-monads
     (home-page "https://github.com/clojure/algo.monads")
     (license license:epl1.0)))
 
+(define-public clojure-com-cognitect-aws-api
+  (package
+    (name "clojure-com-cognitect-aws-api")
+    (version "0.8.539")
+    (home-page "https://github.com/cognitect-labs/aws-api")
+    (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
+                "1pi1578hgfy9w25gyidz5dwl85q51rjm3kfffmlxsysl7vx3gv03"))))
+    (build-system clojure-build-system)
+    (native-inputs (list clojure-http-kit
+                         java-commons-io
+                         clojure-com-cognitect-aws-endpoints
+                         clojure-com-cognitect-aws-s3
+                         clojure-test-check))
+    (propagated-inputs (list clojure-core-async
+                             clojure-tools-logging
+                             clojure-data-json
+                             clojure-data-xml
+                             clojure-com-cognitect-http-client))
+    (arguments
+     '(#:source-dirs '("src" "resources")
+       #:test-dirs '("test/src" "test/resources")
+       #:doc-dirs '("doc")))
+    (synopsis "aws-api is a Clojure library which provides programmatic access
+to AWS services from your Clojure program")
+    (description "@code{aws-api} is a data-oriented Clojure library for
+invoking AWS APIs.")
+    (license license:asl2.0)))
+
 (define-public clojure-com-cognitect-http-client
   (package
     (name "clojure-com-cognitect-http-client")
-- 
2.34.0


-- 
Reily Siegel
R
R
Reily Siegel wrote on 16 Mar 13:44 +0100
[PATCH v2 15/18] gnu: Add clojure-com-cognitect-aws-endpoints.
(address . 53765@debbugs.gnu.org)(name . Maxime Devos)(address . maximedevos@telenet.be)
87sfricbj5.fsf@reilysiegel.com
* gnu/packages/clojure.scm (clojure-com-cognitect-aws-endpoints): New variable.
---
gnu/packages/clojure.scm | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)

Toggle diff (41 lines)
diff --git a/gnu/packages/clojure.scm b/gnu/packages/clojure.scm
index ac6d58149d..ace0a169e8 100644
--- a/gnu/packages/clojure.scm
+++ b/gnu/packages/clojure.scm
@@ -295,6 +295,30 @@ (define-public clojure-com-cognitect-aws-api
 invoking AWS APIs.")
     (license license:asl2.0)))
 
+(define-public clojure-com-cognitect-aws-endpoints
+  (package
+    (inherit clojure-com-cognitect-aws-api)
+    (name "clojure-com-cognitect-aws-endpoints")
+    (version "1.1.12.136")
+    (source (origin
+              (method url-fetch)
+              ;; This JAR contains only data files.
+              (uri (string-append "https://repo1.maven.org/maven2/"
+                                  "com/cognitect/aws/endpoints/"
+                                  version "/endpoints-"
+                                  version "-sources.jar"))
+              (sha256
+               (base32
+                "15irzbnr0gp5pf0nh9vws6kyzjsbqshiqm9b8frjgsnizvqw0jqj"))))
+    (native-inputs '())
+    (propagated-inputs '())
+    (arguments
+     '(#:doc-dirs '()
+       ;; This package contains only data, no code to test.
+       #:tests? #f))
+    (synopsis "Endpoint data for @code{aws-api}")
+    (license license:asl2.0)))
+
 (define-public clojure-com-cognitect-http-client
   (package
     (name "clojure-com-cognitect-http-client")
-- 
2.34.0


-- 
Reily Siegel
R
R
Reily Siegel wrote on 16 Mar 13:44 +0100
[PATCH v2 10/18] gnu: Add clojure-tools-reader.
(address . 53765@debbugs.gnu.org)(name . Maxime Devos)(address . maximedevos@telenet.be)
87zglqcbjf.fsf@reilysiegel.com
* gnu/packages/clojure.scm (clojure-tools-reader): New variable.
---
gnu/packages/clojure.scm | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)

Toggle diff (41 lines)
diff --git a/gnu/packages/clojure.scm b/gnu/packages/clojure.scm
index 5b15d50114..b33cc963ef 100644
--- a/gnu/packages/clojure.scm
+++ b/gnu/packages/clojure.scm
@@ -815,3 +815,30 @@ (define-public clojure-tools-gitlibs
 indicated by git SHAs.  This library provides this functionality and also
 keeps a cache of git directories and working trees that can be reused.")
     (license license:epl1.0)))
+
+(define-public clojure-tools-reader
+  (package
+    (name "clojure-tools-reader")
+    (version "1.3.6")
+    (home-page "https://github.com/clojure/tools.reader")
+    (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
+                "0rcqq024ysz5g2ad8g6jvhnlpwqym58hd1mywl8c4v3x5628d028"))))
+    (build-system clojure-build-system)
+    (arguments
+     '(#:source-dirs '("src/main/clojure")
+       #:test-dirs '("src/test/clojure")
+       #:doc-dirs '()
+       ;; Tests are not well formed clojure namespaces.
+       #:tests? #f))
+    (synopsis "Clojure reader in Clojure")
+    (description "A reader for Clojure source code and data structures written
+in Clojure.  Offers all functionality of Clojure's default reader,
+LispReader.java, with additional features added.")
+    (license license:epl1.0)))
-- 
2.34.0


-- 
Reily Siegel
R
R
Reily Siegel wrote on 16 Mar 13:44 +0100
[PATCH v2 16/18] gnu: Add clojure-com-cognitect-aws-s3.
(address . 53765@debbugs.gnu.org)(name . Maxime Devos)(address . maximedevos@telenet.be)
87r172cbj3.fsf@reilysiegel.com
* gnu/packages/clojure.scm (clojure-com-cognitect-aws-s3): New variable.
---
gnu/packages/clojure.scm | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)

Toggle diff (42 lines)
diff --git a/gnu/packages/clojure.scm b/gnu/packages/clojure.scm
index ace0a169e8..d2d5bbda48 100644
--- a/gnu/packages/clojure.scm
+++ b/gnu/packages/clojure.scm
@@ -319,6 +319,31 @@ (define-public clojure-com-cognitect-aws-endpoints
     (synopsis "Endpoint data for @code{aws-api}")
     (license license:asl2.0)))
 
+(define-public clojure-com-cognitect-aws-s3
+  (package
+    (inherit clojure-com-cognitect-aws-api)
+    (name "clojure-com-cognitect-aws-s3")
+    (version "814.2.991.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://repo1.maven.org/maven2/"
+                                  "com/cognitect/aws/s3/"
+                                  version "/s3-"
+                                  version "-sources.jar"))
+              (sha256
+               (base32
+                "0aw3mpddmnjmp45vbmv1l47jn84lgq866fy9mg4wf1x2lqdyhigh"))))
+    (native-inputs '())
+    (propagated-inputs '())
+    (arguments
+     '(#:doc-dirs '()
+       ;; This package has no tests.
+       #:tests? #f
+       #:aot-exclude '(#:all)))
+    (synopsis "Supporting files for accessing the S3 API using
+@code{aws-api}")
+    (license license:asl2.0)))
+
 (define-public clojure-com-cognitect-http-client
   (package
     (name "clojure-com-cognitect-http-client")
-- 
2.34.0


-- 
Reily Siegel
R
R
Reily Siegel wrote on 16 Mar 13:44 +0100
[PATCH v2 17/18] gnu: clojure-tools-deps-alpha: Fix issues with S3
(address . 53765@debbugs.gnu.org)(name . Maxime Devos)(address . maximedevos@telenet.be)
87pmmmcbj1.fsf@reilysiegel.com
* gnu/packages/clojure.scm (clojure-tools-deps-alpha): Remove a restriction
which prevented the S3 loader from being used due to dependency issues. Now
that clojure-core-async has been packaged, this restriction can be lifted.
---
gnu/packages/clojure.scm | 33 +++++++--------------------------
1 file changed, 7 insertions(+), 26 deletions(-)

Toggle diff (60 lines)
diff --git a/gnu/packages/clojure.scm b/gnu/packages/clojure.scm
index d2d5bbda48..f6169bc324 100644
--- a/gnu/packages/clojure.scm
+++ b/gnu/packages/clojure.scm
@@ -888,34 +888,11 @@ (define-public clojure-tools-deps-alpha
     (build-system clojure-build-system)
     (arguments
      `(#:source-dirs '("src/main/clojure" "src/main/resources")
+       #:java-source-dirs '("src/main/java")
        #: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/alpha/util/s3_aws_client.clj")
-                        (string-append
-                         "src/main/clojure/clojure/"
-                         "tools/deps/alpha/util/s3_transporter.clj")
-                        (string-append
-                         "src/test/clojure/clojure/"
-                         "tools/deps/alpha/util/test_s3_transporter.clj")))
-             (substitute*
-                 "src/main/clojure/clojure/tools/deps/alpha/util/maven.clj"
-               (("clojure.tools.deps.alpha.util.s3-transporter")
-                "")))))))
+       #:tests? #f))
     (propagated-inputs (list maven-resolver-api
                              maven-resolver-spi
                              maven-resolver-impl
@@ -927,7 +904,11 @@ (define-public clojure-tools-deps-alpha
                              maven-resolver-transport-file
                              clojure-tools-gitlibs
                              clojure-tools-cli
-                             clojure-data-xml))
+                             clojure-data-xml
+                             clojure-com-cognitect-aws-api
+                             clojure-com-cognitect-aws-endpoints
+                             clojure-com-cognitect-aws-s3
+                             java-javax-inject))
     (synopsis "Clojure library supporting clojure-tools")
     (description "This package provides a functional API for transitive
 dependency graph expansion and the creation of classpaths.")
-- 
2.34.0


-- 
Reily Siegel
R
R
Reily Siegel wrote on 16 Mar 13:44 +0100
[PATCH v2 18/18] gnu: clojure-tools: Fix logging warning messages.
(address . 53765@debbugs.gnu.org)(name . Maxime Devos)(address . maximedevos@telenet.be)
87o826cbiy.fsf@reilysiegel.com
* gnu/packages/clojure.scm (clojure-tools): Add a dependency on
java-slf4j-simple to silence warnings that no logger implementation is
available.
---
gnu/packages/clojure.scm | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

Toggle diff (20 lines)
diff --git a/gnu/packages/clojure.scm b/gnu/packages/clojure.scm
index f6169bc324..e53163dad2 100644
--- a/gnu/packages/clojure.scm
+++ b/gnu/packages/clojure.scm
@@ -200,7 +200,8 @@ (define-public clojure-tools
     (inputs (list rlwrap
                   clojure
                   clojure-tools-deps-alpha
-                  java-commons-logging-minimal))
+                  java-commons-logging-minimal
+                  java-slf4j-simple))
     (home-page "https://clojure.org/releases/tools")
     (synopsis "CLI tools for the Clojure programming language")
     (description "The Clojure command line tools can be used to start a
-- 
2.34.0


-- 
Reily Siegel
M
M
Maxime Devos wrote on 17 Mar 21:44 +0100
Re: [bug#53765] [PATCH 04/17] gnu: Add clojure-core-cache.
6bef51593d55ffb356600ad9174b53041ee1d16f.camel@telenet.be
Reily Siegel schreef op do 03-02-2022 om 19:24 [-0500]:
Toggle quote (9 lines)
> +Implementations of some basic caching strategies
> +
> +First-in-first-out (FIFOCache)
> +Least-recently-used (LRUCache)
> +Least-used (LUCache -- sometimes called Least Frequently Used)
> +Time-to-live (TTLCacheQ)
> +Naive cache (BasicCache)
> +Naive cache backed with soft references (SoftCache)

Texinfo has some markup for lists, maybe @itemize (not sure)?
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYjOdoRccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7sYEAP9l1VjUv0vgxe5YMw0lQDryE25l
91g0PmXtLwIOBXFdOQD8CeHmkl/S0g2imOSpATibanB+YCrDdxWE1zPUdTJv1AE=
=yf0A
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 17 Mar 21:45 +0100
55ca0ef828ea6d9388d0636e77c6cb23f1c504f7.camel@telenet.be
Reily Siegel schreef op do 03-02-2022 om 19:24 [-0500]:
Toggle quote (3 lines)
> +    (description "@code{core.cache} is a Clojure contrib library providing the
> +following features:

What's a ‘contrib’ library? What is the importance of this library is
considered ‘contrib’?

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYjOd5RccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7o/VAP0fW9l5OcfgyUHwHm+eYiTR8+yR
zp+LdMYLRh8SUp0GjQD+JHhU6gNFyZbRfBIA7jIdTPmMZNMQskWYq5Opj7qtaAM=
=+4iR
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 17 Mar 21:47 +0100
4b482aae8b5e409295fd966d9dd9fdb0dde29f2b.camel@telenet.be
Reily Siegel schreef op do 03-02-2022 om 19:24 [-0500]:
Toggle quote (2 lines)
> +A defcache macro for hooking your CacheProtocol implementations into the

'defcache' is the name of Lisp (in this case, the Lisp is Clojure)
macro, so @lisp might be appropriate.

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYjOeaBccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7uZQAQD3ZW5OsbP9oVlM5bMKfsDr4Rw3
9ADb7F4lMz3FZeAypQD/cmqJZe6MWVE9BbAFrwX1w+c0gOStbo/0ocNr6TGD5w0=
=YpDn
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 17 Mar 21:50 +0100
a5358ae724f1fd2a24f567e3949b503905a42dc5.camel@telenet.be
Reily Siegel schreef op do 03-02-2022 om 19:24 [-0500]:
Toggle quote (3 lines)
> +A defcache macro for hooking your CacheProtocol implementations into the
> +Clojure associative data capabilities.

I don't think that clojure-core-cache cares whether it's my
CacheProtocol implementation, yours, someone elses or nobodies.
WDYT of dropping the 'your'?

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iIwEABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYjOfDRccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7lfVAQCT+6O/xg4jU6S7UanpJY7ZhWah
zRKxFJZFow/mIA7AUwD4qQrQjfRxpEr5BMwRAfU4jV0eq5FOqT82vDCsz0zmDg==
=nnBR
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 17 Mar 21:57 +0100
22a854804c3e20fa0d3be109e6e2867374b0518b.camel@telenet.be
Reily Siegel schreef op do 03-02-2022 om 19:24 [-0500]:
Toggle quote (3 lines)
> +A defcache macro for hooking your CacheProtocol implementations into the
> +Clojure associative data capabilities.

‘hooking foo into bar’ and ‘associative data capabilities’ seems rather
wordy, WDYT of

‘A @lisp{defcache} macro for defining key-value caches that implement
the standard collection interfaces."

? That seems much clearer to me and (AFAICT) not any less accurate.

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYjOgqRccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7hDlAP9IyAaDN+by7ttxbOqjz4T6rPTw
jWw7f/Y8SsQsrl8f/wEAxSGKTfIKS0SajEC/uv3/DcQtT7GEsRHpbyTHWjR5xAI=
=X8ko
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 17 Mar 21:59 +0100
d63dac0e0132994f315eb404be3ab108d1fc79ea.camel@telenet.be
Reily Siegel schreef op do 03-02-2022 om 19:24 [-0500]:
Toggle quote (5 lines)
> +The @code{clojure.core.cache} namespace contains the immutable caches
> +themselves.  The @code{clojure.core.cache.wrapped} namespace contains the same
> +API operating on caches wrapped in atoms, which is the \"normal\" use in the
> +wild.")

What exactly namespaces are used, seems more something for the
documentation of clojure-core-cache to me, and not very relevant for a
potential user that needs to choose between several packages.

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYjOhQRccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7oVMAPwMDDLpUEuMfvnRe5fNoW/NCN5I
qn6yYC+s5XAP38kK9AEAzk0XhA2mAAmUd1SPpQB9ltS2gMKROmeQeUNMZQZRvQ0=
=qJHE
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 17 Mar 22:00 +0100
6eaa9b6ab1b6af875f2b863d6b91c7a3639b3603.camel@telenet.be
Reily Siegel schreef op do 03-02-2022 om 19:24 [-0500]:
Toggle quote (3 lines)
> +Implementation of an efficient buffer replacement policy based on the low
> +inter-reference recency set algorithm (LIRSCache) described in the LIRS paper

I don't see the point of mentioning implementation details in the
description.

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYjOhXBccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7puEAP47dgLKZR//eVLH8/0Z2CCkh4xV
hu42DOrx3Mc7V8pgFAD/UWUMdK+3UqpzBMxrxlJPgyvDp8dw10lKG2YEFn5OrA4=
=aQU+
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 17 Mar 22:06 +0100
c735e455da3ec4650ee0a9f15410cbe7c89f0f6c.camel@telenet.be
Reily Siegel schreef op do 03-02-2022 om 19:24 [-0500]:
Toggle quote (15 lines)
> +(define-public clojure-core-cache
> +  (package
> +    (name "clojure-core-cache")
> +    (version "1.0.225")
> +    (home-page "https://github.com/clojure/core.cache")
> +    (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
> +                "1dr1ply7ffdbd6bv4gygzmc0wx3q7zwzaaa1p93s28jkfp28276l"))))

There does not appear to be anything 'suspicious' in the source code
and the hash checks out.

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYjOiwxccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7g7dAP0Quevt/SkymiBBMGjebySj3swb
YWBwXKcAVPY+/dlYNQEAnvChdx3r2bEb86vKVfAJtZ7kdwuk5FHzStnKfCVL9AU=
=gZy3
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 17 Mar 22:08 +0100
cf667946d796d24d57fe42d34e6f01d1133c0af3.camel@telenet.be
Reily Siegel schreef op do 03-02-2022 om 19:24 [-0500]:
Toggle quote (6 lines)
> +    (source (origin
> +              (method git-fetch)
> +              (uri (git-reference
> +                    (url home-page)

IIUC, home pages and the git repository location are considered
independent, that merely happen to sometimes coincide, so I'd move the
home-page downwards and copy the URL into the 'url' field.

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYjOjOhccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7sp1AQCB79zsAfkQKdLdasBY+QH5qq0e
F0d7OY+Yd6/GazgrdgD/cGg87549Hrg5NtdEN8RoNHpp0FXP6q3dt6JeZ8z1jwI=
=pMKD
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 17 Mar 22:10 +0100
Re: [PATCH v2 05/18] gnu: Add clojure-core-memoize.
b4a05a4a78ed27c175d7d45c2bfa84a1ff672744.camel@telenet.be
Reily Siegel schreef op wo 16-03-2022 om 13:43 [+0100]:
Toggle quote (3 lines)
> +       ;; Tests fail when AOT'd.
> +       #:aot-exclude '(#:all)))

Looks like there's a bug somewhere then. Has this been reported?
Could a link be added to the report so we know when the #:aot-exclude
can be removed? If it's an issue with ant-build-system, can this be
reported?

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYjOj3hccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7hG2AQC6GHFpa+vbGxz2BlSoSLc9eKu9
wvVwYUMAy/4RGwvVzQD/XYRxzS514GaQrjS6UVqd89GGKkwuRceD/gI9cWkfigg=
=vjYw
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 17 Mar 22:11 +0100
e9b5a732a38669b2c361dcb173d9d8ff9b388253.camel@telenet.be
Reily Siegel schreef op wo 16-03-2022 om 13:43 [+0100]:
Toggle quote (8 lines)
> +First-in-first-out (clojure.core.memoize/fifo)
> +
> +Least-recently-used (clojure.core.memoize/lru)
> +
> +Least-used (clojure.core.memoize/lu)
> +
> +Time-to-live (clojure.core.memoize/ttl)

Like in a reply to a previous package, here @itemize can be used. And
@lisp or @code for clojure.core.memoize/foo.

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYjOkGhccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7qJyAP4v6d5QFok1h98UizZijahDARKA
bsoM63n68dzFU+1xDQD+K/OL9YNn1ED2xOEXfmJi5alLDW8e+Hg9lF2m/M9EsQE=
=fDCn
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 17 Mar 22:19 +0100
94e30692e18cfffe7854b9a1b466ec701e871bea.camel@telenet.be
Reily Siegel schreef op wo 16-03-2022 om 13:43 [+0100]:
Toggle quote (2 lines)
> +    (synopsis "Manipulable, pluggable, memoization framework for Clojure")

I would hope that it's manipulable, how would it be an useful library,
if it cannot be used? Also, the notion of ‘framework’ is rather vague.

Given the mentioning of various caching strategies, WDYT of:

(synopsis
"Customisable memoization library supporting automatic removal")

AFAICT, usually, memoization is presented without any automatical removal, instead
old entries are preserved forever -- that's (one of the) the difference(s) between
memoization and caching.

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYjOl8hccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7o88AQCUhnvKv4Tbnz23/GLgtw7bg8Uv
Aa79XH3ryJtzvuCN2gD+POJKXfuF36l2RWn8M/ywiIiliN+9uARM/qhT7y1U9AI=
=/8Sa
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 17 Mar 22:26 +0100
652a7a3544a5b94a9af9f7d0904ba1e1fc6624c4.camel@telenet.be
Reily Siegel schreef op wo 16-03-2022 om 13:43 [+0100]:
Toggle quote (4 lines)
> +An underlying [...]
> +Memoization builders for implementations of common caching strategies,
> +including:

‘An underlying foo that bars’ and ‘Memoization builders for foo of bar’
seems rather convoluted phrasing, maybe it can simplified a bit:

‘This memoization library supports various cache replacement
strategies:

@itemize
@item @acronym{FIFO, first in first out}
@item @acronym{LRU, least recently used}
@item @acronym{TLL, time to live}
@item no replacement, the memoisation cache can grow indefinitely
@end itemize’

For the exact class and interface names, the user can look at the
documentation of core.memoize.

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYjOngBccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7gNWAQDYAInwIORKQpV3wIDdgKseRqcW
8UJXxjOeJDSY02X+VQEAq9yUIY71tzPlZ2HktTtr6FgDOfja6y3i59CaOyP9lgg=
=3fiw
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 17 Mar 22:27 +0100
Re: [PATCH v2 06/18] gnu: clojure-data-xml: Exclude failing tests.
270ccc2190dc7115d0fa049087a0427bda439e10.camel@telenet.be
Reily Siegel schreef op wo 16-03-2022 om 13:43 [+0100]:
Toggle quote (3 lines)
> +       #:test-exclude '(clojure.data.xml.test-cljs
> +                        clojure.data.xml.test-entities)))

Have these test failures been reported (upstream, assuming it's not a
downstream issue)?

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYjOnwRccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7kgpAQCBlqUe0jS8gZY06jhGhHf38h7M
xRG/YMiaQoII/HAJXwEApQ6sfwVjuXsqqwjFJoPg4E1BcOde+/tx5Ezmzor07w4=
=z2iH
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 17 Mar 22:30 +0100
(name . Julien Lepiller)(address . julien@lepiller.eu)
37baef3bde31e8bb8a948a1da3f3feea49f4e49c.camel@telenet.be
Reily Siegel schreef op wo 16-03-2022 om 13:43 [+0100]:
Toggle quote (4 lines)
> +       #:doc-dirs '()
> +       #:test-exclude '(clojure.data.xml.test-cljs
> +                        clojure.data.xml.test-entities)))

This is already done in 6d357541021578914eba7bb33d2529a6744de36d, in a
different form.

Anyways, a comment on what the issue is here is missing.

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYjOojRccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7i39AP4uC+V72lL7ZQcJluzU6n06Ez+h
aBCWS/FLTH2wQkWnpAD+PqNoFBhwW9hnSVMnWmc/oT5ieQHA8hoiRCF1Oo6BVg8=
=+owC
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 17 Mar 22:31 +0100
Re: [PATCH v2 07/18] gnu: Add clojure-http-kit.
3c02944c0251413d6341d9c67e41b91989fd274a.camel@telenet.be
Reily Siegel schreef op wo 16-03-2022 om 13:43 [+0100]:
Toggle quote (5 lines)
> +       ;; Broken test dependencies. Upstream reports that the current version
> +       ;; of ring-defaults causes tests to hang, but that updating it would
> +       ;; break other test dependencies.
> +       #:tests? #f))

A link to the upstream bug report would be nice.

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYjOouxccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7hS+AQDfgWhpZOWpA1fH1BWBRXizB9h0
qccuvqfDznnjwPy4WAD+IQa9WSpqo3m0uIadvQ76aYA7QrksiTzSQUoCqSXUcwQ=
=IXE9
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 17 Mar 22:32 +0100
e9f7e72551be9cf4020840116409c6021623b226.camel@telenet.be
Reily Siegel schreef op wo 16-03-2022 om 13:43 [+0100]:
Toggle quote (4 lines)
> +    (synopsis "High-performance event-driven HTTP client/server for Clojure")
> +    (description "High-performance event-driven HTTP client/server for
> +Clojure.")

The description seems to be missing here; it's just the synopsis
duplicated here.

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYjOo3BccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7lxxAQCdmKfU/7LHFQBKzAJOvwcmqEEd
9IaVQVluF1xEUzPdFQD/YouVb/cghKZKJ6bwC7do2Tx1GNYV0hpzoIhTDUy4uA0=
=7Pzc
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 17 Mar 22:42 +0100
27bea578f3e2b48cb5947e549d699ed865596ed1.camel@telenet.be
Reily Siegel schreef op wo 16-03-2022 om 13:43 [+0100]:
Toggle quote (2 lines)
> +    (license license:asl2.0)))

There's some bsd3 in test/org/httpkit/ring_request_proxy.clj.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYjOrYhccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7vcUAP9vZGomBrb88cxsa4EbbO0T/OJZ
WpfDs7HWQKBXADhgpQD+JYPV5+hDuIXLpkjNY6t3iRqYR/uRAVLS7zJ2zvbNAwo=
=Z5w5
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 17 Mar 22:44 +0100
a18073b52792e33bb8f12261d8e9ebacc76f4ffe.camel@telenet.be
Reily Siegel schreef op wo 16-03-2022 om 13:43 [+0100]:
Toggle quote (2 lines)
> +       #:tests? #f))

There's a file test/ssl_keystore. Certificates eventually expire. As
such, I would add a comment

;; Before re-enabling tests, make sure that test/ssl_keystore won't
;; expire, to ensure reproducibility.

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYjOrsBccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7rcDAP9IgHcxwPPWrhS0OdJ9Ul6pkxH4
B69SKzwzReEpOeCAKgD8DhNy5M1xnCyJHOXTM1i6V5jGYaqWQZ5Udtb0N+fqOAE=
=HRMF
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 17 Mar 22:45 +0100
b4acadbec31e47c684ace422897bb643a700ff7e.camel@telenet.be
Reily Siegel schreef op wo 16-03-2022 om 13:43 [+0100]:
Toggle quote (10 lines)
> +(define-public clojure-http-kit
> +  (package
> +    (name "clojure-http-kit")
> +    (version "2.5.3")
> +    (home-page "https://github.com/http-kit/http-kit")
> +    (source (origin
> +              (method git-fetch)
> +              (uri (git-reference
> +                    (url home-page)

As mentioned for a different package, home-page and the git-reference
URL are considered independent even if sometimes they coincide.

Toggle quote (6 lines)
> +                    (commit (string-append "v" version))))
> +              (file-name (git-file-name name version))
> +              (sha256
> +               (base32
> +                "19m3j5ad4q7ywl0nd39vs0wha4md8fb846ykz0anv31rvdzv5yv3"))))

Aside from the ssl_keystore thing, I see nothing ‘suspicious’ and the
hash checks out.

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYjOsARccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7qvoAP9XBvJ2m1RsaUMHt3A28YsmIl0v
z2Mmove3N1z44dKWRAEA81zuQlwqe+6T+0us7jBY00eZlVJu4pobPHZp49rwZwE=
=5656
-----END PGP SIGNATURE-----


R
R
Reily Siegel wrote on 18 Mar 10:01 +0100
Re: [PATCH v2 05/18] gnu: Add clojure-core-memoize.
87ilsbd476.fsf@reilysiegel.com
Maxime Devos <maximedevos@telenet.be> writes:

Toggle quote (5 lines)
> Looks like there's a bug somewhere then. Has this been reported?
> Could a link be added to the report so we know when the #:aot-exclude
> can be removed? If it's an issue with ant-build-system, can this be
> reported?

Clojure libraries are usually not designed to be AOT-compiled, and are
largely distributed in source form. The fact that Guix's
clojure-build-system chooses to AOT all Clojure code by default is
confusing to me. At some point, this default should probably be changed
because many Clojure libraries rely on the fact that they are
distributed uncompiled to work properly.

--
Reily Siegel
M
M
Maxime Devos wrote on 18 Mar 14:22 +0100
d7bb43fc999c75419aec9cbd0211655ea080d1a9.camel@telenet.be
Reily Siegel schreef op vr 18-03-2022 om 10:01 [+0100]:
Toggle quote (12 lines)
> > Looks like there's a bug somewhere then.  Has this been reported?
> > Could a link be added to the report so we know when the #:aot-
> > exclude
> > can be removed?  If it's an issue with ant-build-system, can this
> > be
> > reported?
>
> Clojure libraries are usually not designed to be AOT-compiled, and
> are largely distributed in source form. The fact that Guix's
> clojure-build-system chooses to AOT all Clojure code by default is
> confusing to me.

For languages for which a compiler is available, AOT is rather standard.
(E.g., C, C++, Guile Scheme, Python, Java, Fortran). Apparently Clojure
has a compiler as well. Basically, why not AOT when it is possible, instead
of delaying compilation until runtime?

Toggle quote (4 lines)
> At some point, this default should probably be changed because many
> Clojure libraries rely on the fact that they are distributed
> uncompiled to work properly.

How can a Clojure library rely on this fact in the first place? I
don't quite see how -- for comparison, there are a few methods in Guile
for detecting if it is has been compiled or is being interpreted,
e.g. some uses of 'eval-when', '%load-compiled-path' or 'procedure-
name', but they are rather convoluted and unused (except in examples).

Also, if a Clojure library misbehaves when being AOT-compiled, without
additional context, that seems like a bug in the Clojure library to me
(or the AOT-compilation code).

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYjSHjRccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7mvQAQC/RYElaM/rl5Rb4NdTmSaJaql1
YuEcZqJL9GrBbDoO8QEA+FBRh2yMzkn65MmattY5wCMUsp9jTotgzQZN83sRcQQ=
=astA
-----END PGP SIGNATURE-----


R
R
Reily Siegel wrote on 19 Mar 20:07 +0100
87czihdamo.fsf@reilysiegel.com
Maxime Devos <maximedevos@telenet.be> writes:

Toggle quote (4 lines)
> Also, if a Clojure library misbehaves when being AOT-compiled, without
> additional context, that seems like a bug in the Clojure library to me
> (or the AOT-compilation code).

When I first started running into these issues, I reached out to Clojure
maintainers on the Clojurians Slack, and the response was that AOT
compilation is only meant for complete applications to reduce startup
latency, not individual libraries. Here are some of the specific
responses I got.

Alex Miller:

Toggle quote (4 lines)
> Well, guix’s system is wrong to [AOT library code]. Lots of Clojure
> libs have clj files that are not part of the lib.


Sean Corfield:

Toggle quote (7 lines)
> Packaging a library as AOT'd code is likely to cause horrible problems
> for consumers of that library. You're aware that lots of Clojure
> libraries are packaged as JAR files with no compilation of source
> code? "Packaging" Clojure libraries seems kinda wrong on several
> levels. The normal way to get Clojure libraries is as dependencies in
> a project -- fetched by the Clojure tooling itself, when it is run.

--
Reily Siegel
M
M
Maxime Devos wrote on 19 Mar 20:15 +0100
49ddc4f1d1ffd7bfc38c6661d661d69bd38ac379.camel@telenet.be
Reily Siegel schreef op za 19-03-2022 om 20:07 [+0100]:
Toggle quote (6 lines)
> When I first started running into these issues, I reached out to Clojure
> maintainers on the Clojurians Slack, and the response was that AOT
> compilation is only meant for complete applications to reduce startup
> latency, not individual libraries. Here are some of the specific
> responses I got. [...]

On which day was this, and on which channel? I'd like to have a look
at the rest of the responses (on the archives at
context.

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYjYrwxccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7qOqAQD+KAubEY4X/blq61sezr6SmkdV
cs7JvH800k05buwnlQD/TWKnP/GEzcD990YKnV/MRzApTwWIv+OPBxbMbDvkewg=
=AkWU
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 19 Mar 20:23 +0100
64e9b923716a82d8dfc496536e523c3322d71c00.camel@telenet.be
Reily Siegel schreef op za 19-03-2022 om 20:07 [+0100]:
Toggle quote (6 lines)
> Sean Corfield:
>
> > [...] "Packaging" Clojure libraries seems kinda wrong on several
> > levels. The normal way to get Clojure libraries is as dependencies in
> > a project -- fetched by the Clojure tooling itself, when it is run.

This defeats the point of Guix and would come with all the same
problems that ‘just use the language-specific, unmoderated package
registry’ (NPM, Cargo, Maven (*), ...).

(*) TBC, Maven doesn't seem to cause any packaging trouble in Guix --
but from a security POV and ‘oops there are some references to binaries
that need to be corrected to an absolute file name’ POV it is not
sufficient. Probably likewise for whatever Clojure has in place,
ignoring the occasional AOT problem.

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYjYtuRccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7kJVAQDAkJbOjs7EAD5B9TV5YdN1FlA3
WhqYHXjjqmfL/VefYwD/QQ8oj+j2OnXyAP3yJiBk9f2lBkks1k22OtL+K+WsWQs=
=qAPl
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 19 Mar 20:28 +0100
42e098b7004a28412ad7cb178d5cdedc733a6121.camel@telenet.be
Reily Siegel schreef op za 19-03-2022 om 20:07 [+0100]:
Toggle quote (3 lines)
> > Packaging a library as AOT'd code is likely to cause horrible
> > problems for consumers of that library.

This just states ‘there will be horrible problems’ but it doesn't
explain at all which these problems would be.

Toggle quote (3 lines)
> > You're aware that lots of Clojure libraries are packaged as
> > JAR files with no compilation of source code?

I don't see the relation between this sentence and the previous.
Also, yes, that's the idea: upstream provides the raw source code,
downstream (Guix) converts it in ready-to-use pre-compiled binaries.

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYjYuwRccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7n/dAQD9RuKmdLHYVHZmtH98VyPqImN5
0z7vulqK0C3k58NZygD9F5FiqiQsk2JqvlkmRmmrwFpcFbOez0CBaB2y4y4/pQU=
=2l2v
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 19 Mar 20:34 +0100
af372edf6c4620247289102211da2bf8a6c9d5e0.camel@telenet.be
Reily Siegel schreef op za 19-03-2022 om 20:07 [+0100]:
Toggle quote (13 lines)
> > Also, if a Clojure library misbehaves when being AOT-compiled,
> > without
> > additional context, that seems like a bug in the Clojure library to
> > me
> > (or the AOT-compilation code).
>
> When I first started running into these issues, I reached out to
> Clojure
> maintainers on the Clojurians Slack, and the response was that AOT
> compilation is only meant for complete applications to reduce startup
> latency, not individual libraries. Here are some of the specific
> responses I got. [...]

This does not explain what these AOT issues actually are. Do you
receive some error message or backtrace or something when building or
running tests?

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYjYwNhccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7kdUAQD/zxJX3pv+pU7AU81ZTOct2kKu
gdaHkEUmjTFa7my7uQD/Y47mwdzybRPxd1D+mGkNqpxb369bdL/p+iiSHTf9xgQ=
=hXYe
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 19 Mar 20:46 +0100
527643d9fb0884f2f21478f562326fceb0e061c9.camel@telenet.be
Reily Siegel schreef op za 19-03-2022 om 20:07 [+0100]:
Toggle quote (5 lines)
> When I first started running into these issues, I reached out to Clojure
> maintainers on the Clojurians Slack, and the response was that AOT
> compilation is only meant for complete applications to reduce startup
> latency, not individual libraries.

That seems backwards to me. Wouldn't AOTing compiling individual
libraries be more efficient than AOTing individual applications?
More concretely:

Suppose app A and B consists of a single source file A.clj and B.clj
respectively, and each have library C (with C.clj) as dependency.
Then, what Guix currently does, is AOT'ing C.lj when building C, then
AOT'ing A.clj when building A and AOT'ing B when building B.
In total, AOT'ing a file happens thrice here.

What seems to be implied here, is that the AOT'ing needs to be delayed
to A and B. In this case, C.clj would be AOT'd twice: once for A, and
once for B. In total, AOT'ing a file happens four times here.

As such, wouldn't AOT'ing the applications instead of the libraries be
less efficient?

An additional problem here is grafting. If the AOT'ing was delayed to
the application packages, then the libraries cannot be grafted, for the
same reason that (C, C++, Go, ...) static libraries cannot be grafted.

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYjYzDxccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7kGkAP94H7PlMRzZR0wYfTGotqcYSeu1
prsNfLG9OHrO/yJvygEAxCFb+uMmKB0fn536RYWQXRAcyzrXAoKKr4rbtlq0+wE=
=OC0d
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 19 Mar 20:54 +0100
0b22d16c4e5a4576f5faefa6335aa46856a1a2b4.camel@telenet.be
Reily Siegel schreef op za 19-03-2022 om 20:07 [+0100]:
Toggle quote (4 lines)
> and the response was that AOT compilation is only meant
> for complete applications to reduce startup latency, not
> individual libraries.

I don't see the relevancy of that what Guix does, is apparently not
meant to be done. If the thing that is meant to be done is problematic
and a better option exists (w.r.t. grafting and build times, see other
e-mail), wouldn't it it better to ignore the officiously (*) proscribed
purpose of the AOT here?

(*) ‘unofficially sort-of official’

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYjY02hccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7mIPAQCtseLkf56t/EnZXzAdZvwdGvSA
/HIURyaMX7Mc8wuWGQD/byzJuXpP/iCqkG67EkELMw6njJ7QyEb4YWe6kaCOnAA=
=Lz7F
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 19 Mar 20:56 +0100
Re: [bug#53765] [PATCH v2 05/18] gnu: Add clojure-core-memoize.
aac8121257c6db8500991255dc64eded444d9c16.camel@telenet.be
Maxime Devos schreef op za 19-03-2022 om 20:46 [+0100]:
Toggle quote (5 lines)
> An additional problem here is grafting.  If the AOT'ing was delayed
> to the application packages, then the libraries cannot be grafted,
> for the same reason that (C, C++, Go, ...) static libraries cannot be
> grafted.

Another benefit is that intermediate libraries will fail to build
if there are missing dependencies or syntax errors and perhaps if
the dependencies are out-of-date, which would make updating
intermediate libraries because it would be easier to see if the
packaged library actually works.

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYjY1eRccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7s0+AQD2h2vfeO2XRAbjKJIB3gNibQXn
IqiSePVeKY9ZzJIVEAD+JulWVydDmqj3qsfJD8Vuwv7SOsDhviDUlXKbVqMmdgU=
=8il3
-----END PGP SIGNATURE-----


R
R
Reily Siegel wrote on 21 Mar 09:35 +0100
Re: [PATCH v2 05/18] gnu: Add clojure-core-memoize.
875yo7wvng.fsf@reilysiegel.com
Maxime Devos <maximedevos@telenet.be> writes:

Toggle quote (5 lines)
> On which day was this, and on which channel? I'd like to have a look
> at the rest of the responses (on the archives at
> <https://clojurians-log.clojureverse.org/>) for some additional
> context.


Here is a link to the conversation I had, everything discussed was as a reply to
this message.

As of now, my only goal is to package the Clojure libraries needed to
make the Clojure CLI work, as that is the community standard way of
accessing Clojure libraries. This seems acceptable, as NPM, Nix, etc are
also packaged.

--
Reily Siegel
M
M
Maxime Devos wrote on 21 Mar 10:06 +0100
853274661ab7191b66972f61cbc65cb610431b41.camel@telenet.be
Reily Siegel schreef op ma 21-03-2022 om 09:35 [+0100]:
Toggle quote (9 lines)
> Maxime Devos <maximedevos@telenet.be> writes:
>
> > On which day was this, and on which channel?  I'd like to have a look
> > at the rest of the responses (on the archives at
> > <https://clojurians-log.clojureverse.org/>) for some additional
> > context.
>
> https://clojurians.slack.com/archives/C6QH853H8/p1642208631059100

That page is not publicly visible, it asks for signing in with Google
or Apple.

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYjhABRccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7uNfAP0XTNOcLGmaDWEh5jU24y3Ihz6J
4GLjLI+zq6VOKBtgVgEA9OZy/QkrPCKU6TWNQ0GUrJWf3fN2v5ySEKivaLS2wQE=
=LMjW
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 21 Mar 10:07 +0100
52beaa828c20ced942620eafb223c646febce056.camel@telenet.be
Reily Siegel schreef op ma 21-03-2022 om 09:35 [+0100]:
Toggle quote (3 lines)
> This seems acceptable, as NPM, Nix, etc are
> also packaged.

NPM does not appear to be packaged in Guix?
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYjhARRccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7tBEAQCGQun77f1yO8DUMOCi1tmAr6a5
IiYA9NcPfgIPrPWqgAEA439ew5tn8NWzBNP49KNt6DVXGnJA2qkFo9B/f2IT3Qc=
=iLg8
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 21 Mar 10:51 +0100
20d41e2e0d9fdb88b172986ba78f21a759ed8526.camel@telenet.be
Reily Siegel schreef op ma 21-03-2022 om 09:35 [+0100]:
Toggle quote (4 lines)
> As of now, my only goal is to package the Clojure libraries needed to
> make the Clojure CLI work, as that is the community standard way of
> accessing Clojure libraries.

Ok.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYjhKkBccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7vmLAQC7IRmtETRgPhPU3VEyOhM5J3jJ
GOGn+dBQYYBKRc+upgD9G733DHDkoBSX0m0UZXf7AnUizJDeLA8FJx2mSqwEIQ8=
=2iir
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 21 Mar 10:55 +0100
Re: [bug#53765] [PATCH v2 05/18] gnu: Add clojure-core-memoize.
3d06d8c6df5c5677dc27bfdc30789c9abe32c9a5.camel@telenet.be
Maxime Devos schreef op za 19-03-2022 om 20:15 [+0100]:
Toggle quote (14 lines)
> Reily Siegel schreef op za 19-03-2022 om 20:07 [+0100]:
> > When I first started running into these issues, I reached out to
> Clojure
> > maintainers on the Clojurians Slack, and the response was that AOT
> > compilation is only meant for complete applications to reduce
> startup
> > latency, not individual libraries. Here are some of the specific
> > responses I got. [...]
>
> On which day was this, and on which channel?  I'd like to have a look
> at the rest of the responses (on the archives at
> <https://clojurians-log.clojureverse.org/>) for some additional
> context.

More concretely, I'm looking for answers to things like ‘how to detect
which files can be compiled’, ‘how to determine if a build failure is
caused by AOT problems’, ‘how to know in advance if AOT might cause
problems’ and ‘should AOT compilation be disabled by default for
tests?’.

If some answers can be found, perhaps adding #:aot-exclude can be
automated in (guix build clojure-build-system), and thsese answers
could help future packagers.

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYjhLexccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7pjgAP9/bmxld45QB0G0qfa2ZMK5xsHM
ge8yhJgHkG8C8xJivQD9E5SsSkFUUNxjjjdndprzv7/NVcr1XDuHhRN1fNjyyAk=
=cyfF
-----END PGP SIGNATURE-----


R
R
Reily Siegel wrote on 21 Mar 12:27 +0100
87zgljv94h.fsf@reilysiegel.com
Maxime Devos <maximedevos@telenet.be> writes:

Toggle quote (10 lines)
> More concretely, I'm looking for answers to things like ‘how to detect
> which files can be compiled’, ‘how to determine if a build failure is
> caused by AOT problems’, ‘how to know in advance if AOT might cause
> problems’ and ‘should AOT compilation be disabled by default for
> tests?’.
>
> If some answers can be found, perhaps adding #:aot-exclude can be
> automated in (guix build clojure-build-system), and thsese answers
> could help future packagers.

It seems to me that the easiest way to do this is to by default not AOT
compile anything, and if a library needs a file AOT compiled, it can be
set when packaged. I don't believe there is any good way to automate
this, at least not with the sort of problems I have run into.
--
Reily Siegel
M
M
Maxime Devos wrote on 21 Mar 14:38 +0100
4309623e9a9b1914f4b9b2e04d858e28f7af6ab6.camel@telenet.be
Reily Siegel schreef op ma 21-03-2022 om 12:27 [+0100]:
Toggle quote (4 lines)
> It seems to me that the easiest way to do this is to by default not AOT
> compile anything, and if a library needs a file AOT compiled, it can be
> set when packaged.

As I understand it, no package strictly _needs_ to be AOT compiled.
It does, however, appear to be a nice optimisation and has some
tangential benefits (e.g. error out early in case of syntax errors),
so to me it seems better to keep AOT on by default.

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYjh/2BccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7sBCAP9PsaeIzb8kw/8ReeltKo3Pp5nS
qQ0G/s4jQyRaXhERMgD9HVbijQuHSS8ZKvOOtUBYiFkRzpCtdS8PfPThRcaRCgc=
=ybff
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 21 Mar 15:18 +0100
Re: [PATCH v2 05/18] gnu: Add clojure-core-memoize.
e37c59f4cc6994166d58294ad5b8c70f6a48f18c.camel@telenet.be
Reily Siegel schreef op wo 16-03-2022 om 13:43 [+0100]:
Toggle quote (4 lines)
> [...]
> + ;; Tests fail when AOT'd.
> + #:aot-exclude '(#:all)))

It seems to me that the easiest way to investigate what the issue
actually is, is to actually build it (without #:aot-exclude) and look
at the build log, so WDYT of first reviewing the other non-reviewed
patches first (ignoring AOT), and leaving the investigation of #:aot-
exclude for last?

Also, the build log would be useful to investigate.

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYjiJUBccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7mZmAQDHfl33EBsPup83EZCPTusMih6+
3Y3Hp8mtCgSpAo0A+gD+I6IjrLG1TT9zSv702hCw6RBhqYjQxvFHWo2aO076Zw0=
=+ofL
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 26 Mar 10:51 +0100
Re: [PATCH v2 17/18] gnu: clojure-tools-deps-alpha: Fix issues with S3
af1f8fadf9c18943fd9eb34ee44990ef2e72dc06.camel@telenet.be
Reily Siegel schreef op wo 16-03-2022 om 13:44 [+0100]:
Toggle quote (5 lines)
>         ;; FIXME: Could not initialize class org.eclipse.aether.transport.http.SslSocketFactory
> -       #:tests? #f
> [...]
> +       #:tests? #f))

Is this still necessary, or has this been fixed by adding the
dependencies? Looking at "guix search java-eclipse-aether", there are
a few results, so maybe all that is necessary is adding one of the
results to the native-inputs?

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYj7iEhccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7uwLAPwLE9eTmn0gBokgsM+RDo3+dLCg
xmvt6Hrhcj0mn4fCigEAuziOmo3vJmVRk9Vi67nbT6n7YykIUIcLKBQ+tLQGOAQ=
=sFd7
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 26 Mar 11:03 +0100
Re: [PATCH v2 16/18] gnu: Add clojure-com-cognitect-aws-s3.
dfccb7f283ab9eeb63d546a745a9a8c509e17817.camel@telenet.be
Reily Siegel schreef op wo 16-03-2022 om 13:44 [+0100]:
Toggle quote (15 lines)
> +(define-public clojure-com-cognitect-aws-s3
> +  (package
> +    (inherit clojure-com-cognitect-aws-api)
> +    (name "clojure-com-cognitect-aws-s3")
> +    (version "814.2.991.0")
> +    (source (origin
> +              (method url-fetch)
> +              (uri (string-append "https://repo1.maven.org/maven2/"
> +                                  "com/cognitect/aws/s3/"
> +                                  version "/s3-"
> +                                  version "-sources.jar"))
> +              (sha256
> +               (base32
> +                "0aw3mpddmnjmp45vbmv1l47jn84lgq866fy9mg4wf1x2lqdyhigh"))))

Nevermind my previous comments about ‘All rights reserved’, this seems
to be a leftover of the 1910

However, I still do not have proof that it is actually ASL2.0 license
-- I don't consider pom.xml to be proof by itself, because I often see
packages where the license mentioned in the source files does not match
the license in their equivalent of pom.xml or README.

Toggle quote (7 lines)
> +    (native-inputs '())
> +    (propagated-inputs '())
> +    (arguments
> +     '(#:doc-dirs '()
> +       ;; This package has no tests.
> +       #:tests? #f

Alternatively, you can try #:test-dirs '() here. I don't know what
would be better here.

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYj7lBRccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7rDoAQC4UVmXY9wypXUHLP+iR4B7HE5s
9hlPDbSL1rNG/vr4fwEA1b261K/p5pLxc/zB72A+KeYY7KTphkzIWs4q1o3HGQc=
=ifdY
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 26 Mar 11:08 +0100
Re: [bug#53765] [PATCH 15/17] gnu: Add clojure-com-cognitect-aws-s3.
1cf99811fc6cd6592299b7a90720b2d0ae908ff0.camel@telenet.be
Reily Siegel schreef op ma 07-02-2022 om 14:56 [-0500]:
Toggle quote (7 lines)
> > Furthermore, service.edn and docs.edn are huge blobs -- it's
> > textual
> > and not binary, but that doesn't make it source code.
>
> EDN is a strict subset of Clojure used for representing Clojure data
> structures, similar to JSON for JavaScript.

If docs.edn is documentation, should it be in #:doc-dirs?
Additionally, this doesn't make it any less a blob. Where does this
data come from? Was it written manually by cognitect people? Was some
(possibly propietary?) data taken from Amazon and then converted into
another data format? How can I edit these files?

Greetings,
MAxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYj7mAhccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7n33AQCAs/3YReEVIJGlLhMpPpIM7+7s
/jTsCiOVduZw8gD63QD5AR1cLMEU7jrmYAmCsRsQ8ysEMNqyrAxPOO2IRmoztgY=
=teGu
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 26 Mar 11:13 +0100
de65250ec3b3525d2cb03c3fab069d79ea31eae9.camel@telenet.be
Maxime Devos schreef op za 26-03-2022 om 11:08 [+0100]:
Toggle quote (16 lines)
> Reily Siegel schreef op ma 07-02-2022 om 14:56 [-0500]:
> > > Furthermore, service.edn and docs.edn are huge blobs -- it's
> > > textual
> > > and not binary, but that doesn't make it source code.
> >
> > EDN is a strict subset of Clojure used for representing Clojure
> data
> > structures, similar to JSON for JavaScript.
>
> If docs.edn is documentation, should it be in #:doc-dirs?
> Additionally, this doesn't make it any less a blob.  Where does this
> data come from?  Was it written manually by cognitect people?  Was
> some
> (possibly propietary?) data taken from Amazon and then converted into
> another data format?  How can I edit these files?

More specifically, I noticed that "docs.edn" contains the string

Amazon S3 frees up the space used to store the parts and stop charging
you for storing them only after you either complete or abort a
multipart upload.

and so does


but AFAIK Amazon has not released the documentation as ASL2.0.

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYj7nVBccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7vTIAP4y0qYT+IISCJDjyiJQHATV3Vr7
PsyqsL07oiIYH817QAEAxtnzkSZuV6ZcZjnSdqxoZu3vtX9NLD6odXrq1cRiBQk=
=u75s
-----END PGP SIGNATURE-----


R
R
Reily Siegel wrote on 28 Mar 11:41 +0200
Re: [PATCH v2 16/18] gnu: Add clojure-com-cognitect-aws-s3.
87fsn2tnwe.fsf@reilysiegel.com
Maxime Devos <maximedevos@telenet.be> writes:

Toggle quote (5 lines)
> However, I still do not have proof that it is actually ASL2.0 license
> -- I don't consider pom.xml to be proof by itself, because I often see
> packages where the license mentioned in the source files does not match
> the license in their equivalent of pom.xml or README.

What course of action would you like me to take here? I believe this is
the only indication of the license in the source code, so nothing to
conflict with. I can reach out to Cognitect on slack to confirm that the
license is correct, however given my past interactions I suspect that
the package won't be updated for the benefit of this project.

Toggle quote (3 lines)
> Alternatively, you can try #:test-dirs '() here. I don't know what
> would be better here.

My understanding is that with #:test-dirs '() the clojure build system
still attempts to run a process to run 0 tests, which increases build
time significantly. I believe #:tests? #f is the better choice here.

--
Reily Siegel
R
R
Reily Siegel wrote on 28 Mar 12:31 +0200
Re: [bug#53765] [PATCH 15/17] gnu: Add clojure-com-cognitect-aws-s3.
878rsutll9.fsf@reilysiegel.com
Maxime Devos <maximedevos@telenet.be> writes:

Toggle quote (2 lines)
> If docs.edn is documentation, should it be in #:doc-dirs?

It is not documentation, it is a data structure that is used to generate
code.

Toggle quote (5 lines)
> Additionally, this doesn't make it any less a blob. Where does this
> data come from? Was it written manually by cognitect people? Was some
> (possibly propietary?) data taken from Amazon and then converted into
> another data format? How can I edit these files?

As I said in response to another package, I can reach out to Cognitect
on slack and ask, however based on the previous conversations I have had
I strongly suspect they will not want to make any changes ot the package
to clarify licensing for the sole benefit of Guix.

--
Reily Siegel
M
M
Maxime Devos wrote on 28 Mar 13:46 +0200
Re: [PATCH v2 16/18] gnu: Add clojure-com-cognitect-aws-s3.
c59d74c8e5882480353efdbf2c2637a0e79593f0.camel@telenet.be
Reily Siegel schreef op ma 28-03-2022 om 11:41 [+0200]:
Toggle quote (13 lines)
> Maxime Devos <maximedevos@telenet.be> writes:
>
> > However, I still do not have proof that it is actually ASL2.0 license
> > -- I don't consider pom.xml to be proof by itself, because I often see
> > packages where the license mentioned in the source files does not match
> > the license in their equivalent of pom.xml or README.
>
> What course of action would you like me to take here? I believe this is
> the only indication of the license in the source code, so nothing to
> conflict with. I can reach out to Cognitect on slack to confirm that the
> license is correct,
>

That should be sufficient to confirm the licensing terms ...

Toggle quote (3 lines)
> however given my past interactions I suspect that
> the package won't be updated for the benefit of this project.

... however, if that turns out to be the case, then it seems that Guix
cannot include clojure-com-cognitect-aws-s3 as-is, because of 3.2(b) of
the EPL2.0:

3.2 When the Program is Distributed as Source Code:

a)[...]
b) a copy of this Agreement must be included with each copy of the Program.

Perhaps an appropriate snippet would be sufficient, or maybe not.

Rhethorical question: why do people keep forgetting this of kind term (in the
GPL, EPL, Expat or otherwise, even in their own software?)

Do you know where the cognitect slack channels are located? I've created an
account (for the clojure slack) some time ago, but I don't know where the
cognitect slack is (didn't find it). Also, do you know if they are also
reachable via some open platform (e-mail, IRC, ...)?

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYkGgExccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7kKKAQCYG00WN0azA+A8p7jgu0a25uPp
ZbvaOxmK3hK05RZ4ogD/TJdL0qp2x0og4Ldi6Pp62nF8CTU7mD+O5dxLTwTYRAc=
=r9d3
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 28 Mar 13:50 +0200
Re: [bug#53765] [PATCH 15/17] gnu: Add clojure-com-cognitect-aws-s3.
ca42178fd6d26e9ef9f8ee903b8a80fed4d87d38.camel@telenet.be
Reily Siegel schreef op ma 28-03-2022 om 12:31 [+0200]:
Toggle quote (7 lines)
> Maxime Devos <maximedevos@telenet.be> writes:
>
> > If docs.edn is documentation, should it be in #:doc-dirs?
>
> It is not documentation, it is a data structure that is used to generate
> code.

The string ‘Amazon S3 frees up the space used to store the parts and
stop charging you for storing them only after you either complete or
abort a multipart upload.’ and other strings like that look like
documentation to me, and I did not see any code reading docs.edn to
generate code from it.

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYkGhDBccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7tyvAQDGK8DjuXJ/jUe1Fssf5BxckCSP
UWgRzDSzwjFRLWblDgEAs01HswJ4/gshy7n0Abqp9q4/WCjAL2k7jzNjmsXxNAw=
=5QL6
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 28 Mar 13:52 +0200
2b801d480c472c8a771d301bbfde7435a9b5c89e.camel@telenet.be
Reily Siegel schreef op ma 28-03-2022 om 12:31 [+0200]:
Toggle quote (14 lines)
> > Additionally, this doesn't make it any less a blob.  Where does
> > this
> > data come from?  Was it written manually by cognitect people?  Was
> > some
> > (possibly propietary?) data taken from Amazon and then converted
> > into
> > another data format?  How can I edit these files?
>
> As I said in response to another package, I can reach out to
> Cognitect on slack and ask, however based on the previous
> conversations I have had I strongly suspect they will not want to
> make any changes ot the package to clarify licensing for the sole
> benefit of Guix.

It won't be for the sole benefit of Guix. It would be of the benefit
for *everyone* distributing a copy of clojure-com-cognitect-aws-s3 that
wants to avoids copyright violation.

If the apparent (*) copyright violation and non-freeness cannot be
resolved, then I don't think that clojure-com-cognitect-aws-s3 can be
included in Guix, given that Guix is not above the (copyright) law and
given that software in Guix must be free software.

Unless the blob is removed I suppose, in a snippet.

(*) as-in, there is no evidence it is not a violation or actually free.

Greetings,
MMaxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYkGhjBccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7htUAQD0e9eXXw3B0Q6EoWp2v9jSGoEt
lV30IWP1i5qC5tJ43QEAp41KN0G8CnPTzLfG9aW2qPT8gqg/OLnS/doCL6xIywk=
=ilF1
-----END PGP SIGNATURE-----


R
R
Reily Siegel wrote on 28 Mar 13:57 +0200
Re: [PATCH v2 16/18] gnu: Add clojure-com-cognitect-aws-s3.
871qymthlm.fsf@reilysiegel.com
Maxime Devos <maximedevos@telenet.be> writes:

Toggle quote (5 lines)
> Do you know where the cognitect slack channels are located? I've created an
> account (for the clojure slack) some time ago, but I don't know where the
> cognitect slack is (didn't find it). Also, do you know if they are also
> reachable via some open platform (e-mail, IRC, ...)?

I was planning on contacting them on #aws on the clojure slack, I am not
aware of any other way to contact Cognitect. AFAIK there is no open
platform for contacting Cognitect, although there is a rarely-used
mailing list and IRC for Clojure itself.

--
Reily Siegel
L
L
Ludovic Courtès wrote on 29 Mar 11:54 +0200
Re: bug#53765: [PATCH 00/17] Remove limitations on clojure-tools
(name . Maxime Devos)(address . maximedevos@telenet.be)
87bkxp2idz.fsf_-_@gnu.org
Hello Maxime & Reily!

I haven’t followed closely; what’s the consensus here: would you say a
v3 is necessary?

Anyhow, I’m happy to apply when push when you deem it ready; feel free
to ping me!

Ludo’.
M
M
Maxime Devos wrote on 29 Mar 12:39 +0200
(name . Ludovic Courtès)(address . ludo@gnu.org)
fd907e894032bb68e6c35bca4d16d4f219c835eb.camel@telenet.be
Ludovic Courtès schreef op di 29-03-2022 om 11:54 [+0200]:
Toggle quote (10 lines)
> Hello Maxime & Reily!
>
> I haven’t followed closely; what’s the consensus here: would you say a
> v3 is necessary?
>
> Anyhow, I’m happy to apply when push when you deem it ready; feel free
> to ping me!
>
> Ludo’.

There are some problems with compiling the clojure code (AOT), though
they appear to be not exclusive to clojure-tools but possibly with the
build system -- from the discussions I've read, I guess that Clojure
macros use 'gensym', which causes build time<->runtime problems? Or
maybe not exactly that, but something with the same effect. And
apparently probably the dependencies are compiled instead of only the
library.

These potential compilation problems could be studied and resolved in a
separate issue/patch though (for now, AOT is being disabled).

There are also some potential license problems with
clojure-com-cognitect-aws-s3. Upstream has been contacted for
more information

Greetings,
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYkLhxRccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7nPxAQDapsuCMOp1JnW4dczVhq0N2Qxg
10Mi7NTjGwj8rM493AEAqcpPv6zPKqdq8kOkS4S7NSVHSKJxbMr/0l+tligDdgk=
=ozCM
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 5 Apr 15:50 +0200
Re: [bug#53765] [PATCH 15/17] gnu: Add clojure-com-cognitect-aws-s3.
af101d90e18984a48500e64b531b2f11f97f75f7.camel@telenet.be
Reily Siegel schreef op do 03-02-2022 om 19:26 [-0500]:
Toggle quote (9 lines)
> +    (source (origin
> +              (method url-fetch)
> +              (uri (string-append "https://repo1.maven.org/maven2/"
> +                                  "com/cognitect/aws/s3/"
> +                                  version "/s3-"
> +                                  version "-sources.jar"))
> +              (sha256
> +               (base32

The potential license issue appears to have been resolved in the new
version:

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYkxJChccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7pyqAP0ddt+BiO+i3IGqgb9RpU9GQLkg
Za+VAZsSD6k+bRSM8QD5AY5aH/TgS3Ag0833bYIPc1wgh+aD3Gm8DsH5hvqCXgo=
=exsG
-----END PGP SIGNATURE-----


R
R
Reily Siegel wrote on 6 Apr 14:37 +0200
[PATCH v3 00/17] Remove limitations on clojure-tools
(address . 53765@debbugs.gnu.org)(name . Maxime Devos)(address . maximedevos@telenet.be)
cover.1649248640.git.mail@reilysiegel.com
I have made the following changes since the last version:

- Update descriptions and synopses to be more useful and make better use
of markup
- Provide more details for why some tests are disabled
- Better adhere to conventions for Java packages
- Update clojure-com-cognitect-aws-s3 to a version which includes a
license in the source
- Stop using home-page in the url field



gnu/packages/clojure.scm | 487 ++++++++++++++++++++++++++++++++++++---
gnu/packages/web.scm | 24 ++
2 files changed, 481 insertions(+), 30 deletions(-)

--
2.35.1
R
R
Reily Siegel wrote on 15 Jan 23:30 +0100
[PATCH v3 01/17] gnu: Add clojure-data-priority-map.
(address . 53765@debbugs.gnu.org)(name . Maxime Devos)(address . maximedevos@telenet.be)
d554de3de1232edb2d47eb87b67213e3b4c361e8.1649248640.git.mail@reilysiegel.com
---
gnu/packages/clojure.scm | 30 ++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+)

Toggle diff (43 lines)
diff --git a/gnu/packages/clojure.scm b/gnu/packages/clojure.scm
index e6eb749501..44c85b9ef2 100644
--- a/gnu/packages/clojure.scm
+++ b/gnu/packages/clojure.scm
@@ -315,6 +315,36 @@ (define-public clojure-data-codec
 is on par with Java implementations, e.g., Apache commons-codec.")
     (license license:epl1.0)))
 
+(define-public clojure-data-priority-map
+  (package
+    (name "clojure-data-priority-map")
+    (version "1.1.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/clojure/data.priority-map")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1i6mf59g2l3vamris869mndy9l1bp5mzfqv5gj5qzzb937iiykm0"))))
+    (build-system clojure-build-system)
+    (arguments
+     '(#:source-dirs '("src/main/clojure")
+       #:test-dirs '("src/test/clojure")
+       #:doc-dirs '()))
+    (home-page "https://github.com/clojure/data.priority-map")
+    (synopsis "Clojure library implementing priority maps")
+    (description "A priority map is very similar to a sorted map, but whereas
+a sorted map produces a sequence of the entries sorted by key, a priority map
+produces the entries sorted by value.
+
+In addition to supporting all the functions a sorted map supports, a priority
+map can also be thought of as a queue of @code{[item priority]} pairs.  To
+support usage as a versatile priority queue, priority maps also support
+insert/peek/pop operations.")
+    (license license:epl1.0)))
+
 (define-public clojure-data-xml
   (package
     (name "clojure-data-xml")
-- 
2.35.1
R
R
Reily Siegel wrote on 15 Jan 23:32 +0100
[PATCH v3 02/17] gnu: Add clojure-data-json.
(address . 53765@debbugs.gnu.org)(name . Maxime Devos)(address . maximedevos@telenet.be)
903e364407b31810c9427cc7f8859113c6074e02.1649248640.git.mail@reilysiegel.com
---
gnu/packages/clojure.scm | 31 +++++++++++++++++++++++++++++++
1 file changed, 31 insertions(+)

Toggle diff (44 lines)
diff --git a/gnu/packages/clojure.scm b/gnu/packages/clojure.scm
index 44c85b9ef2..f9349e7523 100644
--- a/gnu/packages/clojure.scm
+++ b/gnu/packages/clojure.scm
@@ -315,6 +315,37 @@ (define-public clojure-data-codec
 is on par with Java implementations, e.g., Apache commons-codec.")
     (license license:epl1.0)))
 
+(define-public clojure-data-json
+  (package
+    (name "clojure-data-json")
+    (version "2.4.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/clojure/data.json")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1xx3hiy62rrph4y4g3aqa1lfb0ns3p6vdvcvlpgm5w1npl70n2r5"))))
+    (build-system clojure-build-system)
+    (native-inputs (list clojure-test-check))
+    (arguments
+     '(#:source-dirs '("src/main/clojure")
+       #:test-dirs '("src/test/clojure")
+       #:doc-dirs '()
+       ;; Tests fail due to issues with clojure.pprint. This is an issue with
+       ;; how Guix AOT-compiles Clojure.
+       #:test-exclude '(clojure.data.json-compat-0-1-test
+                        clojure.data.json-gen-test
+                        clojure.data.json-test)))
+    (home-page "https://github.com/clojure/data.json")
+    (synopsis "JSON parser/generator to/from Clojure data structures")
+    (description "clojure-data-json implements a JSON parser/generator that
+enables easy conversion between Clojure data structures and JSON strings,
+without needing a defined schema.")
+    (license license:epl1.0)))
+
 (define-public clojure-data-priority-map
   (package
     (name "clojure-data-priority-map")
-- 
2.35.1
R
R
Reily Siegel wrote on 16 Jan 02:38 +0100
[PATCH v3 03/17] gnu: Add java-eclipse-jetty-client.
(address . 53765@debbugs.gnu.org)(name . Maxime Devos)(address . maximedevos@telenet.be)
1c76dc936ca10b744ce14df55edc960f436c974c.1649248640.git.mail@reilysiegel.com
---
gnu/packages/web.scm | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)

Toggle diff (37 lines)
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index 75aa5ce907..7e486ca18c 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -7272,6 +7272,30 @@ (define-public java-eclipse-jetty-webapp-9.2
      `(("java-eclipse-jetty-io-9.2" ,java-eclipse-jetty-io-9.2)
        ,@(package-native-inputs java-eclipse-jetty-util-9.2)))))
 
+(define-public java-eclipse-jetty-client
+  (package
+    (inherit java-eclipse-jetty-util)
+    (name "java-eclipse-jetty-client")
+    (arguments
+     `(#:jar-name "eclipse-jetty-client.jar"
+       #:source-dir "src/main/java"
+       #:tests? #f; require junit 5
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'chdir
+           (lambda _
+             (chdir "jetty-client"))))))
+    (inputs
+     (list java-eclipse-jetty-util
+           java-eclipse-jetty-http
+           java-eclipse-jetty-io
+           java-eclipse-jetty-server
+           java-eclipse-jetty-servlet
+           java-eclipse-jetty-security
+           java-eclipse-jetty-xml
+           java-javaee-servletapi
+           java-eclipse-jetty-jmx))))
+
 (define-public java-jsoup
   (package
     (name "java-jsoup")
-- 
2.35.1
R
R
Reily Siegel wrote on 16 Jan 02:48 +0100
[PATCH v3 04/17] gnu: Add clojure-core-cache.
(address . 53765@debbugs.gnu.org)(name . Maxime Devos)(address . maximedevos@telenet.be)
415d2b20634b7ed4a6e0e71dffe16f91fc01278d.1649248640.git.mail@reilysiegel.com
---
gnu/packages/clojure.scm | 52 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 52 insertions(+)

Toggle diff (65 lines)
diff --git a/gnu/packages/clojure.scm b/gnu/packages/clojure.scm
index f9349e7523..9063776921 100644
--- a/gnu/packages/clojure.scm
+++ b/gnu/packages/clojure.scm
@@ -259,6 +259,58 @@ (define-public clojure-algo-monads
     (home-page "https://github.com/clojure/algo.monads")
     (license license:epl1.0)))
 
+(define-public clojure-core-cache
+  (package
+    (name "clojure-core-cache")
+    (version "1.0.225")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/clojure/core.cache")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1dr1ply7ffdbd6bv4gygzmc0wx3q7zwzaaa1p93s28jkfp28276l"))))
+    (build-system clojure-build-system)
+    (arguments
+     '(#:source-dirs '("src/main/clojure")
+       #:test-dirs '("src/test/clojure")
+       #:doc-dirs '("doc")))
+    (propagated-inputs (list clojure-data-priority-map))
+    (home-page "https://github.com/clojure/core.cache")
+    (synopsis "Caching library for Clojure implementing various cache strategies")
+    (description "@code{core.cache} is a Clojure library providing the
+following features:
+
+@itemize
+
+@item An underlying CacheProtocol used as the base abstraction for implementing
+new synchronous caches
+
+@item A @code{defcache} macro for defining key-value caches that implement the
+standard collection interfaces.
+
+@item Implementations of some basic caching strategies
+
+
+@itemize
+@item @acronym{FIFO, first in first out}
+@item @acronym{LRU, least recently used}
+@item @acronym{LU, least frequently used}
+@item @acronym{TLL, time to live}
+@item Naive cache which can grow indefinitely
+@end itemize
+
+@item Factory functions for each existing cache type
+@end itemize
+
+Caches are generally immutable and should be used in conjunction with
+Clojure's state management, such as atom.  SoftCache is the exception here,
+built on top of mutable Java collections, but it can be treated as an
+immutable cache as well.")
+    (license license:epl1.0)))
+
 (define-public clojure-core-match
   (let ((commit "1837ffbd4a150e8f3953b2d9ed5cf4a4ad3720a7")
         (revision "1")) ; this is the 1st commit buildable with clojure 1.9
-- 
2.35.1
R
R
Reily Siegel wrote on 16 Jan 02:51 +0100
[PATCH v3 05/17] gnu: Add clojure-core-memoize.
(address . 53765@debbugs.gnu.org)(name . Maxime Devos)(address . maximedevos@telenet.be)
a596fb33c6103b150ec7c0f25e0ddb38f11bc539.1649248640.git.mail@reilysiegel.com
---
gnu/packages/clojure.scm | 34 ++++++++++++++++++++++++++++++++++
1 file changed, 34 insertions(+)

Toggle diff (47 lines)
diff --git a/gnu/packages/clojure.scm b/gnu/packages/clojure.scm
index 9063776921..0b4c7a623a 100644
--- a/gnu/packages/clojure.scm
+++ b/gnu/packages/clojure.scm
@@ -338,6 +338,40 @@ (define-public clojure-core-match
       (home-page "https://github.com/clojure/core.match")
       (license license:epl1.0))))
 
+(define-public clojure-core-memoize
+  (package
+    (name "clojure-core-memoize")
+    (version "1.0.253")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/clojure/core.memoize")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1qky54v114sh3xn0lffwy7xx3wnnayk07fr2nvhd4lih84sv6rdz"))))
+    (build-system clojure-build-system)
+    (arguments
+     '(#:source-dirs '("src/main/clojure")
+       #:test-dirs '("src/test/clojure")
+       #:doc-dirs '("docs")
+       ;; Tests fail when AOT'd.
+       #:aot-exclude '(#:all)))
+    (propagated-inputs (list clojure-core-cache))
+    (home-page "https://github.com/clojure/core.memoize")
+    (synopsis "Customisable memoization library supporting automatic removal")
+    (description "This memoization library supports various cache replacement
+strategies:
+
+ @itemize
+ @item @acronym{FIFO, first in first out}
+ @item @acronym{LRU, least recently used}
+ @item @acronym{TLL, time to live}
+ @item no replacement, the memoisation cache can grow indefinitely
+ @end itemize")
+    (license license:epl1.0)))
+
 (define-public clojure-data-codec
   (package
     (name "clojure-data-codec")
-- 
2.35.1
R
R
Reily Siegel wrote on 16 Jan 03:06 +0100
[PATCH v3 06/17] gnu: Add clojure-http-kit.
(address . 53765@debbugs.gnu.org)(name . Maxime Devos)(address . maximedevos@telenet.be)
f50208a0e7ba57e8fb55105b0ca93541e8eff897.1649248640.git.mail@reilysiegel.com
---
gnu/packages/clojure.scm | 31 +++++++++++++++++++++++++++++++
1 file changed, 31 insertions(+)

Toggle diff (44 lines)
diff --git a/gnu/packages/clojure.scm b/gnu/packages/clojure.scm
index 0b4c7a623a..664988f2bd 100644
--- a/gnu/packages/clojure.scm
+++ b/gnu/packages/clojure.scm
@@ -499,6 +499,37 @@ (define-public clojure-data-xml
 lazy - should allow parsing and emitting of large XML documents")
     (license license:epl1.0)))
 
+(define-public clojure-http-kit
+  (package
+    (name "clojure-http-kit")
+    (version "2.5.3")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/http-kit/http-kit")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "19m3j5ad4q7ywl0nd39vs0wha4md8fb846ykz0anv31rvdzv5yv3"))))
+    (build-system clojure-build-system)
+    (arguments
+     '(#:doc-dirs '()
+       #:java-source-dirs '("src/java")
+       ;; Broken test dependencies. Upstream reports that the current version
+       ;; of ring-defaults causes tests to hang, but that updating it would
+       ;; break other test dependencies. See project.clj for more details.
+       ;;
+       ;; Before re-enabling tests, make sure that test/ssl_keystore won't
+       ;; expire, to ensure reproducibility.
+       #:tests? #f))
+    (home-page "https://github.com/http-kit/http-kit")
+    (synopsis "High-performance event-driven HTTP client/server for Clojure")
+    (description "HTTP Kit is an HTTP client and server that complies with the
+Ring HTTP standard for integration with other Ring compatible libraries.  It
+supports both synchronous and asynchronous requests, as well as WebSockets.")
+    (license (list license:asl2.0 license:bsd-3))))
+
 (define-public clojure-instaparse
   (let ((commit "dcfffad5b065e750f0f5835f017cdd8188b8ca2e")
         (version "1.4.9")) ; upstream forget to tag this release
-- 
2.35.1
R
R
Reily Siegel wrote on 16 Jan 03:40 +0100
[PATCH v3 07/17] gnu: Add clojure-tools-analyzer.
(address . 53765@debbugs.gnu.org)(name . Maxime Devos)(address . maximedevos@telenet.be)
ad1e4383031a5fdc143104fbb411f407909451e1.1649248640.git.mail@reilysiegel.com
---
gnu/packages/clojure.scm | 31 +++++++++++++++++++++++++++++++
1 file changed, 31 insertions(+)

Toggle diff (44 lines)
diff --git a/gnu/packages/clojure.scm b/gnu/packages/clojure.scm
index 664988f2bd..12bbbaeabe 100644
--- a/gnu/packages/clojure.scm
+++ b/gnu/packages/clojure.scm
@@ -632,6 +632,37 @@ (define-public clojure-tools-macro
     (home-page "https://github.com/clojure/tools.macro")
     (license license:epl1.0)))
 
+(define-public clojure-tools-analyzer
+  (package
+    (name "clojure-tools-analyzer")
+    (version "1.1.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/clojure/tools.analyzer")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "19cgxxbav3z3k62hwl34vbi3lilrs4vksa4j8lvswha8sdjs01vh"))))
+    (build-system clojure-build-system)
+    (arguments
+     '(#:source-dirs '("src/main/clojure")
+       #:test-dirs '("src/test/clojure")
+       #:doc-dirs '()))
+    (home-page "https://github.com/clojure/tools.analyzer")
+    (synopsis "Analyzer for Clojure code, written in Clojure and producing
+AST in EDN")
+    (description "An analyzer for host agnostic Clojure code, written in
+Clojure and producing AST in EDN.
+
+Note that the analyzer in this library should not to be used directly as it
+lacks any knowledge about host-specific special forms and it should only be
+considered as a building platform for host-specific analyzers.  Currently the
+following platform specific analyzers written on top of tools.analyzer exist:
+@code{tools.analyzer.jvm}, @code{tools.analyzer.js}")
+    (license license:epl1.0)))
+
 (define-public clojure-tools-cli
   (package
     (name "clojure-tools-cli")
-- 
2.35.1
R
R
Reily Siegel wrote on 16 Jan 03:43 +0100
[PATCH v3 08/17] gnu: Add clojure-tools-analyzer-jvm.
(address . 53765@debbugs.gnu.org)(name . Maxime Devos)(address . maximedevos@telenet.be)
52b3499fe42ab7ded19b5e396b63934e08db7478.1649248640.git.mail@reilysiegel.com
---
gnu/packages/clojure.scm | 28 ++++++++++++++++++++++++++++
1 file changed, 28 insertions(+)

Toggle diff (41 lines)
diff --git a/gnu/packages/clojure.scm b/gnu/packages/clojure.scm
index 12bbbaeabe..e17abd271e 100644
--- a/gnu/packages/clojure.scm
+++ b/gnu/packages/clojure.scm
@@ -663,6 +663,34 @@ (define-public clojure-tools-analyzer
 @code{tools.analyzer.jvm}, @code{tools.analyzer.js}")
     (license license:epl1.0)))
 
+(define-public clojure-tools-analyzer-jvm
+  (package
+    (name "clojure-tools-analyzer-jvm")
+    (version "1.2.2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/clojure/tools.analyzer.jvm")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1ibvgvfa4618l5d0pff9gjar1s0fwagi029v4allk7z3swb93ibr"))))
+    (build-system clojure-build-system)
+    (arguments
+     '(#:source-dirs '("src/main/clojure")
+       #:test-dirs '("src/test/clojure")
+       #:doc-dirs '("doc")))
+    (propagated-inputs (list clojure-core-memoize
+                             clojure-tools-reader
+                             clojure-tools-analyzer
+                             java-asm))
+    (home-page "https://github.com/clojure/tools.analyzer.jvm")
+    (synopsis "Additional jvm-specific passes for @code{tools.analyzer}")
+    (description "An analyzer for Clojure code, written on top of
+@code{tools.analyzer}, providing additional jvm-specific passes.")
+    (license license:epl1.0)))
+
 (define-public clojure-tools-cli
   (package
     (name "clojure-tools-cli")
-- 
2.35.1
R
R
Reily Siegel wrote on 28 Feb 19:39 +0100
[PATCH v3 09/17] gnu: Add clojure-tools-reader.
(address . 53765@debbugs.gnu.org)(name . Maxime Devos)(address . maximedevos@telenet.be)
9d23e481564a34cc3a4f27e5d71eaad4f1edd9fb.1649248640.git.mail@reilysiegel.com
---
gnu/packages/clojure.scm | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)

Toggle diff (37 lines)
diff --git a/gnu/packages/clojure.scm b/gnu/packages/clojure.scm
index e17abd271e..5b7189b997 100644
--- a/gnu/packages/clojure.scm
+++ b/gnu/packages/clojure.scm
@@ -804,3 +804,30 @@ (define-public clojure-tools-gitlibs
 indicated by git SHAs.  This library provides this functionality and also
 keeps a cache of git directories and working trees that can be reused.")
     (license license:epl1.0)))
+
+(define-public clojure-tools-reader
+  (package
+    (name "clojure-tools-reader")
+    (version "1.3.6")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/clojure/tools.reader")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0rcqq024ysz5g2ad8g6jvhnlpwqym58hd1mywl8c4v3x5628d028"))))
+    (build-system clojure-build-system)
+    (arguments
+     '(#:source-dirs '("src/main/clojure")
+       #:test-dirs '("src/test/clojure")
+       #:doc-dirs '()
+       ;; Tests are not well formed clojure namespaces.
+       #:tests? #f))
+    (home-page "https://github.com/clojure/tools.reader")
+    (synopsis "Clojure reader in Clojure")
+    (description "A reader for Clojure source code and data structures written
+in Clojure.  Offers all functionality of Clojure's default reader,
+LispReader.java, with additional features added.")
+    (license license:epl1.0)))
-- 
2.35.1
R
R
Reily Siegel wrote on 22 Jan 00:43 +0100
[PATCH v3 10/17] gnu: Add clojure-tools-logging.
(address . 53765@debbugs.gnu.org)(name . Maxime Devos)(address . maximedevos@telenet.be)
1034a76196ffdc143d72cddf11506c296df6ddd3.1649248640.git.mail@reilysiegel.com
---
gnu/packages/clojure.scm | 34 ++++++++++++++++++++++++++++++++++
1 file changed, 34 insertions(+)

Toggle diff (47 lines)
diff --git a/gnu/packages/clojure.scm b/gnu/packages/clojure.scm
index 5b7189b997..edc6e4be9a 100644
--- a/gnu/packages/clojure.scm
+++ b/gnu/packages/clojure.scm
@@ -805,6 +805,40 @@ (define-public clojure-tools-gitlibs
 keeps a cache of git directories and working trees that can be reused.")
     (license license:epl1.0)))
 
+(define-public clojure-tools-logging
+  (package
+    (name "clojure-tools-logging")
+    (version "1.2.4")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/clojure/tools.logging")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1vcl1s75amazzdyirnpza8jizp85d5178p0qkqfk26vl7yajvz7a"))))
+    (build-system clojure-build-system)
+    (native-inputs (list clojure-test-check
+                         java-slf4j-api
+                         java-slf4j-simple
+                         java-log4j-api
+                         java-log4j-core
+                         java-commons-logging-minimal))
+    (arguments
+     '(#:source-dirs '("src/main/clojure")
+       #:test-dirs '("src/test/clojure")
+       #:doc-dirs '()
+       ;; Tests fail due to issues with clojure.pprint. This is an issue with
+       ;; how Guix AOT-compiles Clojure.
+       #:tests? #f))
+    (home-page "https://github.com/clojure/tools.logging")
+    (synopsis "Clojure logging toolkit")
+    (description "Logging macros which delegate to a specific logging
+implementation, selected at runtime when the @code{clojure.tools.logging}
+namespace is first loaded.")
+    (license license:epl1.0)))
+
 (define-public clojure-tools-reader
   (package
     (name "clojure-tools-reader")
-- 
2.35.1
R
R
Reily Siegel wrote on 22 Jan 01:19 +0100
[PATCH v3 11/17] gnu: Add clojure-core-async.
(address . 53765@debbugs.gnu.org)(name . Maxime Devos)(address . maximedevos@telenet.be)
e02fd3dbbe2e0a34c069c557e333fa3f863a122a.1649248640.git.mail@reilysiegel.com
---
gnu/packages/clojure.scm | 30 ++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+)

Toggle diff (43 lines)
diff --git a/gnu/packages/clojure.scm b/gnu/packages/clojure.scm
index edc6e4be9a..7b2af9464d 100644
--- a/gnu/packages/clojure.scm
+++ b/gnu/packages/clojure.scm
@@ -259,6 +259,36 @@ (define-public clojure-algo-monads
     (home-page "https://github.com/clojure/algo.monads")
     (license license:epl1.0)))
 
+(define-public clojure-core-async
+  (package
+    (name "clojure-core-async")
+    (version "1.5.648")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/clojure/core.async")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1any7bh5zsn6agia6y7al1gxnqa6s5g0y45gzy51rfjjccq33xq4"))))
+    (build-system clojure-build-system)
+    (arguments
+     '(#:source-dirs '("src/main/clojure")
+       #:test-dirs '("src/test/clojure")
+       #:doc-dirs '("doc")
+       #:aot-exclude '(cljs.core.async
+                       cljs.core.async.macros
+                       cljs.core.async.impl.ioc-macros)))
+    (propagated-inputs (list clojure-tools-analyzer-jvm))
+    (home-page "https://github.com/clojure/core.async")
+    (synopsis "Facilities for async programming and communication in Clojure")
+    (description "@{core.async} is a Clojure library providing facilities for
+async programming and communication in Clojure using communicating sequential
+processes.  @{core.async} supports both multi-threaded and single-threaded
+environments.")
+    (license license:epl1.0)))
+
 (define-public clojure-core-cache
   (package
     (name "clojure-core-cache")
-- 
2.35.1
R
R
Reily Siegel wrote on 22 Jan 01:32 +0100
[PATCH v3 12/17] gnu: Add clojure-com-cognitect-http-client.
(address . 53765@debbugs.gnu.org)(name . Maxime Devos)(address . maximedevos@telenet.be)
9114bb33d51966d21a6a279e2352b126659e6a20.1649248640.git.mail@reilysiegel.com
---
gnu/packages/clojure.scm | 31 +++++++++++++++++++++++++++++++
1 file changed, 31 insertions(+)

Toggle diff (51 lines)
diff --git a/gnu/packages/clojure.scm b/gnu/packages/clojure.scm
index 7b2af9464d..964d33185e 100644
--- a/gnu/packages/clojure.scm
+++ b/gnu/packages/clojure.scm
@@ -25,6 +25,7 @@ (define-module (gnu packages clojure)
   #:use-module (gnu packages java)
   #:use-module (gnu packages maven)
   #:use-module (gnu packages readline)
+  #:use-module (gnu packages web)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix download)
@@ -259,6 +260,36 @@ (define-public clojure-algo-monads
     (home-page "https://github.com/clojure/algo.monads")
     (license license:epl1.0)))
 
+(define-public clojure-com-cognitect-http-client
+  (package
+    (name "clojure-com-cognitect-http-client")
+    (version "1.0.111")
+    (source (origin
+              (method url-fetch)
+              ;; This JAR contains only uncompiled Clojure sources.
+              (uri (string-append "https://repo1.maven.org/maven2/"
+                                  "com/cognitect/http-client/"
+                                  version "/http-client-"
+                                  version ".jar"))
+              (sha256
+               (base32
+                "0n03vyr6i6n8ll8jn14b5zsba5pndb0ivdwizimz16gd8w3kf5xh"))))
+    (build-system clojure-build-system)
+    (propagated-inputs (list clojure-core-async
+                             java-eclipse-jetty-client
+                             java-eclipse-jetty-http
+                             java-eclipse-jetty-util
+                             java-eclipse-jetty-io))
+    (arguments
+     '(#:source-dirs '("src")
+       #:test-dirs '()
+       #:doc-dirs '()))
+    (home-page "https://cognitect.com")
+    (synopsis "HTTP client for Clojure")
+    (description "HTTP client for Clojure that wraps Jetty's Java API,
+providing an API that follows Clojure conventions.")
+    (license license:asl2.0)))
+
 (define-public clojure-core-async
   (package
     (name "clojure-core-async")
-- 
2.35.1
R
R
Reily Siegel wrote on 22 Jan 01:35 +0100
[PATCH v3 13/17] gnu: Add clojure-com-cognitect-aws-api.
(address . 53765@debbugs.gnu.org)(name . Maxime Devos)(address . maximedevos@telenet.be)
a75220b25e29d1329b668c74db59592d40e05a28.1649248640.git.mail@reilysiegel.com
---
gnu/packages/clojure.scm | 35 +++++++++++++++++++++++++++++++++++
1 file changed, 35 insertions(+)

Toggle diff (48 lines)
diff --git a/gnu/packages/clojure.scm b/gnu/packages/clojure.scm
index 964d33185e..072edea7b2 100644
--- a/gnu/packages/clojure.scm
+++ b/gnu/packages/clojure.scm
@@ -260,6 +260,41 @@ (define-public clojure-algo-monads
     (home-page "https://github.com/clojure/algo.monads")
     (license license:epl1.0)))
 
+(define-public clojure-com-cognitect-aws-api
+  (package
+    (name "clojure-com-cognitect-aws-api")
+    (version "0.8.539")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/cognitect-labs/aws-api")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1pi1578hgfy9w25gyidz5dwl85q51rjm3kfffmlxsysl7vx3gv03"))))
+    (build-system clojure-build-system)
+    (native-inputs (list clojure-http-kit
+                         java-commons-io
+                         clojure-com-cognitect-aws-endpoints
+                         clojure-com-cognitect-aws-s3
+                         clojure-test-check))
+    (propagated-inputs (list clojure-core-async
+                             clojure-tools-logging
+                             clojure-data-json
+                             clojure-data-xml
+                             clojure-com-cognitect-http-client))
+    (arguments
+     '(#:source-dirs '("src" "resources")
+       #:test-dirs '("test/src" "test/resources")
+       #:doc-dirs '("doc")))
+    (home-page "https://github.com/cognitect-labs/aws-api")
+    (synopsis "aws-api is a Clojure library which provides programmatic access
+to AWS services from your Clojure program")
+    (description "@code{aws-api} is a data-oriented Clojure library for
+invoking AWS APIs.")
+    (license license:asl2.0)))
+
 (define-public clojure-com-cognitect-http-client
   (package
     (name "clojure-com-cognitect-http-client")
-- 
2.35.1
R
R
Reily Siegel wrote on 22 Jan 01:36 +0100
[PATCH v3 14/17] gnu: Add clojure-com-cognitect-aws-endpoints.
(address . 53765@debbugs.gnu.org)(name . Maxime Devos)(address . maximedevos@telenet.be)
703b796bf2f2b46b5ed48dc1f078e21505be906b.1649248640.git.mail@reilysiegel.com
---
gnu/packages/clojure.scm | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)

Toggle diff (37 lines)
diff --git a/gnu/packages/clojure.scm b/gnu/packages/clojure.scm
index 072edea7b2..04eb78c3d6 100644
--- a/gnu/packages/clojure.scm
+++ b/gnu/packages/clojure.scm
@@ -295,6 +295,30 @@ (define-public clojure-com-cognitect-aws-api
 invoking AWS APIs.")
     (license license:asl2.0)))
 
+(define-public clojure-com-cognitect-aws-endpoints
+  (package
+    (inherit clojure-com-cognitect-aws-api)
+    (name "clojure-com-cognitect-aws-endpoints")
+    (version "1.1.12.136")
+    (source (origin
+              (method url-fetch)
+              ;; This JAR contains only data files.
+              (uri (string-append "https://repo1.maven.org/maven2/"
+                                  "com/cognitect/aws/endpoints/"
+                                  version "/endpoints-"
+                                  version "-sources.jar"))
+              (sha256
+               (base32
+                "15irzbnr0gp5pf0nh9vws6kyzjsbqshiqm9b8frjgsnizvqw0jqj"))))
+    (native-inputs '())
+    (propagated-inputs '())
+    (arguments
+     '(#:doc-dirs '()
+       ;; This package contains only data, no code to test.
+       #:tests? #f))
+    (synopsis "Endpoint data for @code{aws-api}")
+    (license license:asl2.0)))
+
 (define-public clojure-com-cognitect-http-client
   (package
     (name "clojure-com-cognitect-http-client")
-- 
2.35.1
R
R
Reily Siegel wrote on 22 Jan 01:36 +0100
[PATCH v3 15/17] gnu: Add clojure-com-cognitect-aws-s3.
(address . 53765@debbugs.gnu.org)(name . Maxime Devos)(address . maximedevos@telenet.be)
948baf71c0945ac82a9ae63a55b29ec7201ef676.1649248640.git.mail@reilysiegel.com
---
gnu/packages/clojure.scm | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)

Toggle diff (38 lines)
diff --git a/gnu/packages/clojure.scm b/gnu/packages/clojure.scm
index 04eb78c3d6..82e9970cfb 100644
--- a/gnu/packages/clojure.scm
+++ b/gnu/packages/clojure.scm
@@ -319,6 +319,31 @@ (define-public clojure-com-cognitect-aws-endpoints
     (synopsis "Endpoint data for @code{aws-api}")
     (license license:asl2.0)))
 
+(define-public clojure-com-cognitect-aws-s3
+  (package
+    (inherit clojure-com-cognitect-aws-api)
+    (name "clojure-com-cognitect-aws-s3")
+    (version "821.2.1083.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://repo1.maven.org/maven2/"
+                                  "com/cognitect/aws/s3/"
+                                  version "/s3-"
+                                  version "-sources.jar"))
+              (sha256
+               (base32
+                "0aqjwbpdlfccy1pl7bdxqxbzb6dcwvb00v07i4hcj6q8mpk8r1wj"))))
+    (native-inputs '())
+    (propagated-inputs '())
+    (arguments
+     '(#:doc-dirs '()
+       ;; This package has no tests.
+       #:tests? #f
+       #:aot-exclude '(#:all)))
+    (synopsis "Supporting files for accessing the S3 API using
+@code{aws-api}")
+    (license license:asl2.0)))
+
 (define-public clojure-com-cognitect-http-client
   (package
     (name "clojure-com-cognitect-http-client")
-- 
2.35.1
R
R
Reily Siegel wrote on 25 Jan 19:37 +0100
[PATCH v3 16/17] gnu: clojure-tools-deps-alpha: Fix issues with S3
(address . 53765@debbugs.gnu.org)(name . Maxime Devos)(address . maximedevos@telenet.be)
9534c7fc5a885153a82b7f8240b981bf0707eb9e.1649248640.git.mail@reilysiegel.com
---
gnu/packages/clojure.scm | 41 ++++++++++++----------------------------
1 file changed, 12 insertions(+), 29 deletions(-)

Toggle diff (73 lines)
diff --git a/gnu/packages/clojure.scm b/gnu/packages/clojure.scm
index 82e9970cfb..849ca50852 100644
--- a/gnu/packages/clojure.scm
+++ b/gnu/packages/clojure.scm
@@ -864,11 +864,10 @@ (define-public clojure-tools-deps-alpha
   (package
     (name "clojure-tools-deps-alpha")
     (version "0.12.1104")
-    (home-page "https://github.com/clojure/tools.deps.alpha")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url home-page)
+                    (url "https://github.com/clojure/tools.deps.alpha")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -877,34 +876,13 @@ (define-public clojure-tools-deps-alpha
     (build-system clojure-build-system)
     (arguments
      `(#:source-dirs '("src/main/clojure" "src/main/resources")
+       #:java-source-dirs '("src/main/java")
        #: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/alpha/util/s3_aws_client.clj")
-                        (string-append
-                         "src/main/clojure/clojure/"
-                         "tools/deps/alpha/util/s3_transporter.clj")
-                        (string-append
-                         "src/test/clojure/clojure/"
-                         "tools/deps/alpha/util/test_s3_transporter.clj")))
-             (substitute*
-                 "src/main/clojure/clojure/tools/deps/alpha/util/maven.clj"
-               (("clojure.tools.deps.alpha.util.s3-transporter")
-                "")))))))
+       ;; Could not initialize class
+       ;; org.eclipse.aether.transport.http.SslSocketFactory
+       ;; See maven-resolver-transport-http
+       #:tests? #f))
     (propagated-inputs (list maven-resolver-api
                              maven-resolver-spi
                              maven-resolver-impl
@@ -916,7 +894,12 @@ (define-public clojure-tools-deps-alpha
                              maven-resolver-transport-file
                              clojure-tools-gitlibs
                              clojure-tools-cli
-                             clojure-data-xml))
+                             clojure-data-xml
+                             clojure-com-cognitect-aws-api
+                             clojure-com-cognitect-aws-endpoints
+                             clojure-com-cognitect-aws-s3
+                             java-javax-inject))
+    (home-page "https://github.com/clojure/tools.deps.alpha")
     (synopsis "Clojure library supporting clojure-tools")
     (description "This package provides a functional API for transitive
 dependency graph expansion and the creation of classpaths.")
-- 
2.35.1
R
R
Reily Siegel wrote on 25 Jan 19:41 +0100
[PATCH v3 17/17] gnu: clojure-tools: Fix logging warning messages.
(address . 53765@debbugs.gnu.org)(name . Maxime Devos)(address . maximedevos@telenet.be)
6f8e6326979cf50156fdb70d65396c27482cc0bc.1649248640.git.mail@reilysiegel.com
---
gnu/packages/clojure.scm | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

Toggle diff (16 lines)
diff --git a/gnu/packages/clojure.scm b/gnu/packages/clojure.scm
index 849ca50852..225898c5bc 100644
--- a/gnu/packages/clojure.scm
+++ b/gnu/packages/clojure.scm
@@ -200,7 +200,8 @@ (define-public clojure-tools
     (inputs (list rlwrap
                   clojure
                   clojure-tools-deps-alpha
-                  java-commons-logging-minimal))
+                  java-commons-logging-minimal
+                  java-slf4j-simple))
     (home-page "https://clojure.org/releases/tools")
     (synopsis "CLI tools for the Clojure programming language")
     (description "The Clojure command line tools can be used to start a
-- 
2.35.1
R
R
Reily Siegel wrote on 15 Apr 15:54 +0200
(no subject)
(address . 53765@debbugs.gnu.org)
8735iemozj.fsf@reilysiegel.com
--
Reily Siegel
R
R
Reily Siegel wrote on 15 Apr 15:55 +0200
V3 Patches
(address . 53765@debbugs.gnu.org)(name . Maxime Devos)(address . maximedevos@telenet.be)
87zgkmlad7.fsf@reilysiegel.com
Hello,

I just wanted to check in and make sure you saw the version 3 patches I
sent in, having resolved the licensing issue.

--
Reily Siegel
M