Clojure-CLI
This page is intended to help the (re-)packaging of clj (and maybe other tools?)
ITP: 891141
This is a GSoC 2021 Project
Relevant ITPs
(from the accepted proposal)
1. The following ITPs should be fixed:
“ITP: clojure-cli -- upstream CLI entrypoints for Clojure” 891141
“ITP: tools-deps-alpha-clojure -- functional API for dependency management and classpath creation” 891136
“ITP: tools-gitlibs-clojure -- Clojure API for programatically accessing git libraries” 905543
2. Consider also closing the following RFPs:
“RFP: clojurehelper -- Helper scripts for packaging Clojure programs” 718775
We plan to collaborate with upstream during the packaging process, to ensure the package's quality. From what we have already heard from them in the debian-clojure list, they are listening
Packaging strategy
- Check which packages are already in Debian (some of them already are).
- Identify leaf nodes (all)
- Identify leaf nodes to work on (probably only a subset of them)
Work on org.clojure leaf nodes
Work on non- org.clojure leaf nodes
clj
Upstream repo: https://github.com/clojure/brew-install.git
In order to package clj, we first need to study the upstream dependencies.
The main branch is named after the current Clojure version (as of 2021.06.11, it is 1.10.3)
git checkout 1.10.3
As of 2021.06.11, HEAD --> 1.10.3, and HEAD --> 577cb35b0a2475ec5befb93087873770a3ec0c4c.
Conclusions
The only first-level dependency not already in Debian is org.clojure:tools.deps.alpha.
There are two org.clojure leaf nodes: libtools-gitlibs-clojure and libtools-cli-clojure.
Proposed course of action
package org.clojure:tools.gitlibs
consider updating libtools-cli-clojure (already in Debian)
consider packaging org.clojure:data.xml
consider packaging com.cognitec.aws:* packages
Detailed Analysis
Dependencies (raw tree)
According to mvn dependency:tree, we have the following tree:
% mvn dependency:tree [INFO] Scanning for projects... [INFO] [INFO] ---------------------< org.clojure:clojure-tools >---------------------- [INFO] Building clojure-tools 1.10.3.855 [INFO] --------------------------------[ jar ]--------------------------------- [INFO] [INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ clojure-tools --- [INFO] org.clojure:clojure-tools:jar:1.10.3.855 [INFO] +- org.clojure:clojure:jar:1.10.3:compile [INFO] | +- org.clojure:spec.alpha:jar:0.2.194:compile [INFO] | \- org.clojure:core.specs.alpha:jar:0.2.56:compile [INFO] +- org.clojure:tools.deps.alpha:jar:0.11.922:compile [INFO] | +- org.apache.maven.resolver:maven-resolver-api:jar:1.7.0:compile [INFO] | +- org.apache.maven.resolver:maven-resolver-spi:jar:1.7.0:compile [INFO] | +- org.apache.maven.resolver:maven-resolver-impl:jar:1.7.0:compile [INFO] | | +- org.apache.maven.resolver:maven-resolver-named-locks:jar:1.7.0:compile [INFO] | | +- org.apache.commons:commons-lang3:jar:3.8.1:compile [INFO] | | \- javax.annotation:javax.annotation-api:jar:1.3.2:compile [INFO] | +- org.apache.maven.resolver:maven-resolver-util:jar:1.7.0:compile [INFO] | +- org.apache.maven.resolver:maven-resolver-connector-basic:jar:1.7.0:compile [INFO] | +- org.apache.maven.resolver:maven-resolver-transport-file:jar:1.7.0:compile [INFO] | +- org.apache.maven.resolver:maven-resolver-transport-http:jar:1.7.0:compile [INFO] | | +- org.apache.httpcomponents:httpclient:jar:4.5.13:compile [INFO] | | | \- commons-codec:commons-codec:jar:1.11:compile [INFO] | | +- org.apache.httpcomponents:httpcore:jar:4.4.14:compile [INFO] | | \- org.slf4j:jcl-over-slf4j:jar:1.7.30:runtime [INFO] | +- org.apache.maven:maven-resolver-provider:jar:3.8.1:compile [INFO] | | +- org.apache.maven:maven-model:jar:3.8.1:compile [INFO] | | +- org.apache.maven:maven-model-builder:jar:3.8.1:compile [INFO] | | | \- org.codehaus.plexus:plexus-interpolation:jar:1.25:compile [INFO] | | +- org.apache.maven:maven-repository-metadata:jar:3.8.1:compile [INFO] | | \- org.codehaus.plexus:plexus-utils:jar:3.2.1:compile [INFO] | +- org.apache.maven:maven-core:jar:3.8.1:compile [INFO] | | +- org.apache.maven:maven-settings:jar:3.8.1:compile [INFO] | | +- org.apache.maven:maven-settings-builder:jar:3.8.1:compile [INFO] | | | \- org.sonatype.plexus:plexus-sec-dispatcher:jar:1.4:compile [INFO] | | | \- org.sonatype.plexus:plexus-cipher:jar:1.4:compile [INFO] | | +- org.apache.maven:maven-builder-support:jar:3.8.1:compile [INFO] | | +- org.apache.maven:maven-artifact:jar:3.8.1:compile [INFO] | | +- org.apache.maven:maven-plugin-api:jar:3.8.1:compile [INFO] | | +- org.apache.maven.shared:maven-shared-utils:jar:3.2.1:compile [INFO] | | | \- commons-io:commons-io:jar:2.5:compile [INFO] | | +- org.eclipse.sisu:org.eclipse.sisu.plexus:jar:0.3.4:compile [INFO] | | | \- javax.enterprise:cdi-api:jar:1.0:compile [INFO] | | | \- javax.annotation:jsr250-api:jar:1.0:compile [INFO] | | +- org.eclipse.sisu:org.eclipse.sisu.inject:jar:0.3.4:compile [INFO] | | +- com.google.inject:guice:jar:no_aop:4.2.1:compile [INFO] | | | +- aopalliance:aopalliance:jar:1.0:compile [INFO] | | | \- com.google.guava:guava:jar:25.1-android:compile [INFO] | | | +- com.google.code.findbugs:jsr305:jar:3.0.2:compile [INFO] | | | +- org.checkerframework:checker-compat-qual:jar:2.0.0:compile [INFO] | | | +- com.google.errorprone:error_prone_annotations:jar:2.1.3:compile [INFO] | | | +- com.google.j2objc:j2objc-annotations:jar:1.1:compile [INFO] | | | \- org.codehaus.mojo:animal-sniffer-annotations:jar:1.14:compile [INFO] | | +- org.codehaus.plexus:plexus-classworlds:jar:2.6.0:compile [INFO] | | \- org.codehaus.plexus:plexus-component-annotations:jar:2.1.0:compile [INFO] | +- org.clojure:data.xml:jar:0.2.0-alpha6:compile [INFO] | | \- org.clojure:data.codec:jar:0.1.0:compile [INFO] | +- org.clojure:tools.gitlibs:jar:2.3.167:compile [INFO] | +- org.clojure:tools.cli:jar:1.0.206:compile [INFO] | +- com.cognitect.aws:api:jar:0.8.505:compile [INFO] | | +- org.clojure:data.json:jar:1.0.0:compile [INFO] | | +- org.clojure:tools.logging:jar:1.1.0:compile [INFO] | | +- com.cognitect:http-client:jar:0.1.106:compile [INFO] | | | +- org.eclipse.jetty:jetty-client:jar:9.4.36.v20210114:compile [INFO] | | | | \- org.eclipse.jetty:jetty-io:jar:9.4.36.v20210114:compile [INFO] | | | +- org.eclipse.jetty:jetty-http:jar:9.4.36.v20210114:compile [INFO] | | | \- org.eclipse.jetty:jetty-util:jar:9.4.36.v20210114:compile [INFO] | | \- org.clojure:core.async:jar:1.3.610:compile [INFO] | | \- org.clojure:tools.analyzer.jvm:jar:1.1.0:compile [INFO] | | +- org.clojure:tools.analyzer:jar:1.0.0:compile [INFO] | | +- org.clojure:core.memoize:jar:1.0.236:compile [INFO] | | | \- org.clojure:core.cache:jar:1.0.207:compile [INFO] | | | \- org.clojure:data.priority-map:jar:1.0.0:compile [INFO] | | +- org.ow2.asm:asm:jar:5.2:compile [INFO] | | \- org.clojure:tools.reader:jar:1.3.2:compile [INFO] | +- com.cognitect.aws:endpoints:jar:1.1.11.969:compile [INFO] | +- com.cognitect.aws:s3:jar:811.2.858.0:compile [INFO] | \- javax.inject:javax.inject:jar:1:compile [INFO] \- org.slf4j:slf4j-nop:jar:1.7.30:compile [INFO] \- org.slf4j:slf4j-api:jar:1.7.30:compile [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 1.599 s [INFO] Finished at: 2021-06-09T11:07:08-03:00 [INFO] ------------------------------------------------------------------------
Dependencies (full tree, listed)
- org.clojure:clojure:jar:1.10.3:compile
- org.clojure:spec.alpha:jar:0.2.194:compile
- org.clojure:core.specs.alpha:jar:0.2.56:compile
- org.clojure:tools.deps.alpha:jar:0.11.922:compile
- org.apache.maven.resolver:maven-resolver-api:jar:1.7.0:compile
- org.apache.maven.resolver:maven-resolver-spi:jar:1.7.0:compile
- org.apache.maven.resolver:maven-resolver-impl:jar:1.7.0:compile
- org.apache.maven.resolver:maven-resolver-named-locks:jar:1.7.0:compile
- org.apache.commons:commons-lang3:jar:3.8.1:compile
- javax.annotation:javax.annotation-api:jar:1.3.2:compile
- org.apache.maven.resolver:maven-resolver-util:jar:1.7.0:compile
- org.apache.maven.resolver:maven-resolver-connector-basic:jar:1.7.0:compile
org.apache.maven.resolver:maven-resolver-transport-file:jar:1.7.0:compile
org.apache.maven.resolver:maven-resolver-transport-http:jar:1.7.0:compile
- org.apache.httpcomponents:httpclient:jar:4.5.13:compile
- commons-codec:commons-codec:jar:1.11:compile
- org.apache.httpcomponents:httpcore:jar:4.4.14:compile
- org.slf4j:jcl-over-slf4j:jar:1.7.30:runtime
- org.apache.httpcomponents:httpclient:jar:4.5.13:compile
- org.apache.maven:maven-resolver-provider:jar:3.8.1:compile
- org.apache.maven:maven-model:jar:3.8.1:compile
- org.apache.maven:maven-model-builder:jar:3.8.1:compile
- org.codehaus.plexus:plexus-interpolation:jar:1.25:compile
- org.apache.maven:maven-repository-metadata:jar:3.8.1:compile
- org.codehaus.plexus:plexus-utils:jar:3.2.1:compile
- org.apache.maven:maven-core:jar:3.8.1:compile
- org.apache.maven:maven-settings:jar:3.8.1:compile
- org.apache.maven:maven-settings-builder:jar:3.8.1:compile
- org.sonatype.plexus:plexus-sec-dispatcher:jar:1.4:compile
- org.sonatype.plexus:plexus-cipher:jar:1.4:compile
- org.sonatype.plexus:plexus-sec-dispatcher:jar:1.4:compile
- org.apache.maven:maven-builder-support:jar:3.8.1:compile
- org.apache.maven:maven-artifact:jar:3.8.1:compile
- org.apache.maven:maven-plugin-api:jar:3.8.1:compile
- org.apache.maven.shared:maven-shared-utils:jar:3.2.1:compile
- commons-io:commons-io:jar:2.5:compile
- org.eclipse.sisu:org.eclipse.sisu.plexus:jar:0.3.4:compile
- javax.enterprise:cdi-api:jar:1.0:compile
- javax.annotation:jsr250-api:jar:1.0:compile
- javax.enterprise:cdi-api:jar:1.0:compile
- org.eclipse.sisu:org.eclipse.sisu.inject:jar:0.3.4:compile
- com.google.inject:guice:jar:no_aop:4.2.1:compile
- aopalliance:aopalliance:jar:1.0:compile
- com.google.guava:guava:jar:25.1-android:compile
- com.google.code.findbugs:jsr305:jar:3.0.2:compile
- org.checkerframework:checker-compat-qual:jar:2.0.0:compile
- com.google.errorprone:error_prone_annotations:jar:2.1.3:compile
- com.google.j2objc:j2objc-annotations:jar:1.1:compile
- org.codehaus.mojo:animal-sniffer-annotations:jar:1.14:compile
- org.codehaus.plexus:plexus-classworlds:jar:2.6.0:compile
- org.codehaus.plexus:plexus-component-annotations:jar:2.1.0:compile
- org.clojure:data.xml:jar:0.2.0-alpha6:compile
- org.clojure:data.codec:jar:0.1.0:compile
- org.clojure:tools.gitlibs:jar:2.3.167:compile
- org.clojure:tools.cli:jar:1.0.206:compile
- com.cognitect.aws:api:jar:0.8.505:compile
- org.clojure:data.json:jar:1.0.0:compile
- org.clojure:tools.logging:jar:1.1.0:compile
- com.cognitect:http-client:jar:0.1.106:compile
- org.eclipse.jetty:jetty-client:jar:9.4.36.v20210114:compile
- org.eclipse.jetty:jetty-io:jar:9.4.36.v20210114:compile
org.eclipse.jetty:jetty-http:jar:9.4.36.v20210114:compile
- org.eclipse.jetty:jetty-util:jar:9.4.36.v20210114:compile
- org.eclipse.jetty:jetty-client:jar:9.4.36.v20210114:compile
- org.clojure:core.async:jar:1.3.610:compile
- org.clojure:tools.analyzer.jvm:jar:1.1.0:compile
- org.clojure:tools.analyzer:jar:1.0.0:compile
- org.clojure:core.memoize:jar:1.0.236:compile
- org.clojure:core.cache:jar:1.0.207:compile
- org.clojure:data.priority-map:jar:1.0.0:compile
- org.clojure:core.cache:jar:1.0.207:compile
- org.ow2.asm:asm:jar:5.2:compile
- org.clojure:tools.reader:jar:1.3.2:compile
- org.clojure:tools.analyzer.jvm:jar:1.1.0:compile
- com.cognitect.aws:endpoints:jar:1.1.11.969:compile
- com.cognitect.aws:s3:jar:811.2.858.0:compile
- javax.inject:javax.inject:jar:1:compile
- org.slf4j:slf4j-nop:jar:1.7.30:compile
- org.slf4j:slf4j-api:jar:1.7.30:compile
First-level dependencies
* org.clojure:clojure:jar:1.10.3:compile (has 2 dependencies, already in Debian as clojure)
- ...
* org.clojure:tools.deps.alpha:jar:0.11.922:compile (16 dependencies, not yet in Debian)
- ...
* org.slf4j:slf4j-nop:jar:1.7.30:compile (has 1 dependency, already in Debian as libslf4j)
- ...
Second-level dependencies (for `org.clojure:tools.deps.alpha`)
- org.clojure:tools.deps.alpha:jar:0.11.922:compile (16 dependencies)
org.apache.maven.resolver:maven-resolver-api:jar:1.7.0:compile (leaf node, already in Debian as maven-resolver)
org.apache.maven.resolver:maven-resolver-spi:jar:1.7.0:compile (leaf node, already in Debian as maven-resolver)
org.apache.maven.resolver:maven-resolver-impl:jar:1.7.0:compile (has 3 dependencies, already in Debian as maven-resolver)
- ...
org.apache.maven.resolver:maven-resolver-util:jar:1.7.0:compile (leaf node, already in Debian as maven-resolver)
org.apache.maven.resolver:maven-resolver-connector-basic:jar:1.7.0:compile (leaf node, already in Debian as maven-resolver)
org.apache.maven.resolver:maven-resolver-transport-file:jar:1.7.0:compile (leaf node, already in Debian as maven-resolver)
org.apache.maven.resolver:maven-resolver-transport-http:jar:1.7.0:compile (has 3 dependencies, + 1 more nested level, already in Debian as maven-resolver)
- ...
org.apache.maven:maven-resolver-provider:jar:3.8.1:compile (has 4 dependencies, + 1 more nested level, already in Debian as maven-resolver)
- ...
org.apache.maven:maven-core:jar:3.8.1:compile (has 11 dependencies, + 2 more nested levels, already in Debian as maven)
- ...
- org.clojure:data.xml:jar:0.2.0-alpha6:compile (has 1 dependency, not in Debian)
- ...
- org.clojure:tools.gitlibs:jar:2.3.167:compile (leaf node, not in Debian)
- org.clojure:tools.cli:jar:1.0.206:compile (leaf node, already in Debian)
- com.cognitect.aws:api:jar:0.8.505:compile (has 4 dependencies, + 4 more nested levels, not in Debian)
- ...
- com.cognitect.aws:endpoints:jar:1.1.11.969:compile (leaf node, not in Debian)
- com.cognitect.aws:s3:jar:811.2.858.0:compile (leaf node, not in Debian)
javax.inject:javax.inject:jar:1:compile (leaf node, already in Debian as libatinject-jsr330-api-java ?)