Differences between revisions 11 and 12
Revision 11 as of 2021-06-11 15:01:35
Size: 15811
Editor: ?LeandroDoctors
Comment:
Revision 12 as of 2021-06-15 22:39:37
Size: 16613
Editor: ?LeandroDoctors
Comment: update findings
Deletions are marked like this. Additions are marked like this.
Line 56: Line 56:
=== Proposed course of action ===
=== Course of action ===

Proposed:

 1. --(package `org.clojure:tools.gitlibs`)--
 1. --(consider updating [[https://packages.debian.org/sid/libtools-cli-clojure | libtools-cli-clojure]] (already in Debian))--
 1. --(consider packaging `org.clojure:data.xml`)--
 1. --(consider packaging `com.cognitec.aws:*` packages)--

After feedback from pollo, ehashman [[DebianBug:891136]] and Alex Miller:

 1. update `org.clojure:data.xml` to 0.2.0-beta6
  * this breaks `lein` ==> open PR upstream so `lein` uses 0.2.0-beta6
  * lein has many outdated dependencies: maybe also consider opening other PRs upstream so `lein` uses latest dependencies of other libraries already in Debian?

 1. update `libjsch-agent-proxy-java` to (TBD: [[DebianBug:891136]] mentions 0.0.9)
 1. update `jgit` to (TBD: [[DebianBug:891136]] mentions 4.10.0)
 1. consider updating [[https://packages.debian.org/sid/libtools-cli-clojure | libtools-cli-clojure]] (already in Debian)
Line 59: Line 75:
 1. consider updating [[https://packages.debian.org/sid/libtools-cli-clojure | libtools-cli-clojure]] (already in Debian)
 1. consider packaging `org.clojure:data.xml`
Line 64: Line 78:
Line 66: Line 81:
==== Dependencies (raw tree) ==== ==== `clj` dependencies (raw tree) ====
Line 162: Line 177:
==== Dependencies (full tree, listed) ==== ==== `clj` dependencies (full tree, listed) ====
Line 239: Line 254:
==== First-level dependencies ==== ==== `clj` dependencies (first-level) ====
Line 248: Line 263:
==== Second-level dependencies (for `org.clojure:tools.deps.alpha`) ==== ==== `clj` dependencies (second-level, only those for `org.clojure:tools.deps.alpha`) ====

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

  1. Check which packages are already in Debian (some of them already are).
  2. Identify leaf nodes (all)
  3. Identify leaf nodes to work on (probably only a subset of them)
  4. Work on org.clojure leaf nodes

  5. 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

  1. The only first-level dependency not already in Debian is org.clojure:tools.deps.alpha.

  2. There are two org.clojure leaf nodes: libtools-gitlibs-clojure and libtools-cli-clojure.

Course of action

Proposed:

  1. package org.clojure:tools.gitlibs

  2. consider updating libtools-cli-clojure (already in Debian)

  3. consider packaging org.clojure:data.xml

  4. consider packaging com.cognitec.aws:* packages

After feedback from pollo, ehashman 891136 and Alex Miller:

  1. update org.clojure:data.xml to 0.2.0-beta6

    • this breaks lein ==> open PR upstream so lein uses 0.2.0-beta6

    • lein has many outdated dependencies: maybe also consider opening other PRs upstream so lein uses latest dependencies of other libraries already in Debian?

  2. update libjsch-agent-proxy-java to (TBD: 891136 mentions 0.0.9)

  3. update jgit to (TBD: 891136 mentions 4.10.0)

  4. consider updating libtools-cli-clojure (already in Debian)

  5. package org.clojure:tools.gitlibs

  6. consider packaging com.cognitec.aws:* packages

Detailed Analysis

`clj` 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] ------------------------------------------------------------------------

`clj` 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.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.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
      • 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.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.ow2.asm:asm:jar:5.2:compile
          • org.clojure:tools.reader:jar:1.3.2: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

`clj` dependencies (first-level)

* 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)

  • ...

`clj` dependencies (second-level, only those 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 ?)


CategoryClojure