Subject: bug#73432: clojure package is broken

From: Roman Scherer <[email-masked]>
Date: Fri, 04 Oct 2024 12:51:02 +0200

Hi Kristiyan,

sorry for not being clear. I tried the metabase repository with the Guix
and the Nix package. The Nix package works, but the one from Guix not.

I also just tried the clojure-guix-broken repo now (I haven't seen this
yesterday) with the Guix package, and it didn't find the
class. Unfortunatly, I have no idea why the class files are not being
found.

After seeing all those:

Warning: failed to load the S3TransporterFactory class

I thought it might be related. But maybe not.

I hope you find the issue.

Roman

Kristiyan Kanchev <[email-masked]> writes:

> Hello Roman,
>
> What do you mean that you're getting the same error? Getting the same
> error with Guix Clojure or with Nix Clojure? Metabase or the test
> project by Andreas?
>
> I'm fairly confident that the problem is not caused by the S3
> transport because alot of transitive dependencies are missing from the
> class-path that are not related to these libraries you cited. I was
> investigating the reported class-path from within Clojure with
> https://github.com/clojure/java.classpath, which is also dependency
> for Metabase, so you could try it in a nREPL session.
>
> I'm currently trying to  maven-resolver-provider from 3.9 to 3.8 and
> will report results, hopefully soon -- I'm new to Guix and need some
> more time. If it works out, I'll try to push patches.
>
> Thanks,
> Kriss
>
> On 10/3/24 17:48, Roman Scherer wrote:
>> Ludo recently merged some of my patches that I have re-submitted
>> recently. There are 4 patches missing, that I haven't submitted
>> again. They contain the S3 support.
>>
>> But it's not clear if they can be included inn Guix, because some of the
>> artifacts are Clojure EDN files generated from AWS API docs. The code to
>> generate them has not been published by the Clojure team. That was a
>> blocker back in the day according to Maxim Devos.
>>
>> The patches are here:
>>
>> https://github.com/r0man/guix/commits/clojure-s3-transport/
>>
>> I really should find that thread ...
>>
>> Roman Scherer <[email-masked]> writes:
>>
>>> Hi,
>>>
>>> I just tried this and got the same error. I'm not using the Clojure
>>> package from Guix because the AWS S3 support has been ripped out. I use
>>> the package from Nix.
>>>
>>> My guess is, this error is also because of the lacking S3 support, or if
>>> not it will break later. The deps.edn file of Metabase contains:
>>>
>>> ```
>>> {"athena"   {:url "https://s3.amazonaws.com/maven-athena"}
>>>    "redshift" {:url "https://s3.amazonaws.com/redshift-maven-repository/release"}
>>>    ;; for metabase/saml20-clj
>>>    "opensaml" {:url "https://build.shibboleth.net/nexus/content/repositories/releases/"}}
>>> ```
>>>
>>> So it's using S3 to resolve Maven dependencies. There is an open issue
>>> for this https://issues.guix.gnu.org/53765 and I opened a duplicate of
>>> this a while ago (which I can't find right now). Unfortunaltly this went
>>> nowhwere.
>>>
>>> Roman
>>>
>>> Ludovic Courtès <[email-masked]> writes:
>>>
>>>> Hi Andreas and Kristiyan,
>>>>
>>>> Cc’ing Roman and Rostislav who are among the recent committers for this
>>>> file.
>>>>
>>>> Andreas Bauer <[email-masked]> wrote:
>>>>
>>>>> Now it can be fixed with time machine:
>>>>>
>>>>> guix time-machine --commit=98e4bfe96f2c99daa0b66b65c1d379bb385301a8 -- guix
>>>>> shell --pure --development --check clojure-tools openjdk coreutils
>>>>>
>>>>> Then in time-machine run again clojure-X:curl and the demo will work.
>>>> Kristiyan Kanchev <[email-masked]> skribis:
>>>>
>>>>> I'm seeing issues with the project Metabase: https://github.com/metabase/metabase. When `clojure -M:run`, it fails with:
>>>>> Execution error (ClassNotFoundException) at java.net.URLClassLoader/findClass (URLClassLoader.java:476).
>>>>> jakarta.servlet.AsyncContext
>>>>>
>>>>> The problem seems to be that Clojure CLI (`clojure-tools` guix
>>>>> package) doesn't construct proper class path including all
>>>>> transitive
>>>>> dependencies of the project. I've tried to figure out what might
>>>>> be causing the issue and I suspect `maven-resolver-*`
>>>>> packages. Clojure
>>>>> CLI depends on `tools.deps` clojure lib, which itself depends on
>>>>> `maven-resolver-*`. There is a mention in the `tools.deps`
>>>>> changelog of
>>>>> reverting `maven-resolver-*` libs in version 0.18.1374 with comment "Revert update of Maven resolver libs - seeing resolution
>>>>> differences".
>>>>> Here is the relevant commit:
>>>>> https://github.com/clojure/tools.deps/commit/04539cd060d41a528794c04b50a6aa2293b672ce
>>>>>
>>>>> Up until this date, `tools.deps` lists the older versions of
>>>>> maven-resolver-* libs in its deps.end file. Since Guix uses the
>>>>> latest versions of
>>>>> maven-resolver-* libs, I think this is causing the issue.
>>>> Roman, Rostislav: does that ring a bell?
>>>>
>>>> Thanks,
>>>> Ludo’.