Differences between revisions 10 and 11
Revision 10 as of 2021-06-11 14:49:44
Size: 15770
Editor: ?LeandroDoctors
Comment:
Revision 11 as of 2021-06-11 15:01:35
Size: 15811
Editor: ?LeandroDoctors
Comment:
Deletions are marked like this. Additions are marked like this.
Line 33: Line 33:
 1. Identify leaf nodes to work on (maybe some are not?)  1. Identify leaf nodes to work on (probably only a subset of them)
Line 51: Line 51:
=== Conclusions (detailed analysis below) ===

Out of the three first-level dependencies, only tools.deps is not in Debian already.

There are two `org.clojure` leaf nodes: `libtools-gitlibs-clojure` and `libtools-cli-clojure`.
=== Conclusions ===

 1. The only first-level dependency not already in Debian is `org.clojure:tools.deps.alpha`.
 1. There are two `org.clojure` leaf nodes: `libtools-gitlibs-clojure` and `libtools-cli-clojure`.

=== Proposed course of action ===
Line 63: Line 64:
=== Analysis === === Detailed Analysis ===

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.

Proposed course of action

  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

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

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


CategoryClojure