clr

dmiller 2025-09-25T03:21:36.913949Z

[ANN] ClojureCLR 1.12.3-alpha3 released Fixed a bug in the new automatic assembly loading code that came out in alpha1. cljr running again. Reminder:

dotnet tool uninstall -g Clojure.Main
dotnet tool install -g Clojure.Main --version 1.12.3-alpha3

❤️ 1
dmiller 2025-09-25T15:27:40.330369Z

[ANN} Clojure.Cljr 0.1.0-alpha7 released Changes: • Added .NET 9.0 build • Fix for command line argument processing for Linux -- I could use some Linux testers on this one.

dotnet tool install --global Clojure.Cljr --version 0.1.0-alpha7
Maybe it's time to say cljr has grown up enough to no longer be an alpha?

❤️ 4
dmiller 2025-09-27T20:55:32.318189Z

Also looking good over on WSL2 Ubuntu. Alpha8 coming out in a moment. What I really need is a suite of acceptance tests so I can catch regressions. I have unit tests for the command-line argument parser -- that's easy enough. For acceptance tests, a test would need to set up a project directory, spawn a process running cljr, capture and test process output, look for artifacts in the project directory, etc. Non-trivial. But probably worth the investment -- at some point.

👍🏻 1
seancorfield 2025-09-28T00:37:01.885499Z

Alpha 8 gives me a different error:

(!2013)-> cljr -Sforce -Sverbose -X:deps tree
version      = 0.1.0.0
install_dir  = /home/sean/.dotnet/tools/.store/clojure.cljr/0.1.0-alpha8/clojure.cljr/0.1.0-alpha8/tools/net9.0/any/
config_dir   = /home/sean/.clojure
config_paths = /home/sean/.dotnet/tools/.store/clojure.cljr/0.1.0-alpha8/clojure.cljr/0.1.0-alpha8/tools/net9.0/any/deps.edn /home/sean/.clojure/deps.edn deps.edn
cache_dir    = .cpcache
cp_file      = .cpcache/617E6405FBDDBB45B373E83A19642F19.cp
Refreshing classpath
Starting exec/tool
Error generating tree: Coord of unknown type: #:mvn{:version "1.12.3"}
That's the current Clojure version but I'm not sure where it's getting that from?

seancorfield 2025-09-28T00:37:26.175039Z

Not from the user-level deps.edn it creates:

(!2062)-> cat ~/.clojure/deps.edn
{
  :aliases {
    ;; Add cross-project aliases here
  }
}

seancorfield 2025-09-28T00:38:24.625479Z

Wait, does it read deps.edn or deps-clr.edn in the current directory?

dmiller 2025-09-28T00:38:43.795399Z

That's a new one. I'll take a look in the source and see if there is anywhere a :mvn coord mentioned anywhere.

seancorfield 2025-09-28T00:38:58.174819Z

This suggests it looks at deps.edn, not deps-clr.edn:

config_paths = /home/sean/.dotnet/tools/.store/clojure.cljr/0.1.0-alpha8/clojure.cljr/0.1.0-alpha8/tools/net9.0/any/deps.edn /home/sean/.clojure/deps.edn deps.edn

seancorfield 2025-09-28T00:41:52.428449Z

Moved deps.edn to old-deps.edn so there's only deps-clr.edn -- same error. That root deps.edn doesn't exist:

(!2063)-> cat /home/sean/.dotnet/tools/.store/clojure.cljr/0.1.0-alpha8/clojure.cljr/0.1.0-alpha8/tools/net9.0/any/deps.edn
cat: /home/sean/.dotnet/tools/.store/clojure.cljr/0.1.0-alpha8/clojure.cljr/0.1.0-alpha8/tools/net9.0/any/deps.edn: No such file or directory
(which is fine -- in tools.deps it's a built-in resource but the deps.edn file does actually exist as a legacy fallback)

dmiller 2025-09-28T00:43:16.245309Z

It is supposed to read the deps-clr.edn if it exists, and when it exists, ignore the deps.edn. I thought I had seen it ignore the deps-clr.edn once before, so I actually ran a test case here before releasing. I put garbage in the deps.edn so I know it didn't read it -- it would have choked on it. Internally, it generates the config_paths using deps.edn but looks for deps-clr.edn first. It's a kludge. So you think it is picking it up from ... . (Trying to figure out what you discovered.)

seancorfield 2025-09-28T00:43:35.856369Z

I ran it in a fresh, empty directory and got the same error about mvn version 1.12.3 -- no idea where it is picking that up from!

seancorfield 2025-09-28T00:44:24.677579Z

If it does try to read my real user deps.edn -- in ~/.config/clojure/deps.edn -- that would have mvn version 1.12.3 for Clojure...

seancorfield 2025-09-28T00:46:00.887089Z

I put an "empty" deps-clr.edn in my user config, just in case -- nope, same error...

echo '{}' > ~/.config/clojure/deps-clr.edn
(and then as above)

seancorfield 2025-09-28T00:46:59.268859Z

The first time I ran Alpha 8, it seemed to check out the correct tools bits:

Checking out:  at a7d281ac00130c9507460ef74e720a33a738244e
Checking out:  at a3273a26f56a41e59a5292673b00b6bd738b6a64
Checking out:  at 3d561c2d6b0a11dcfdef3e6b6050a4d5fbadd3ea

dmiller 2025-09-28T00:52:04.413509Z

Can you tell me where you have any deps.edn and deps-clr.edn files in relation to your test project. What is in the project home dir? What is user? Anything else lying around on the config_paths ? (I think I see a place in the code where it might be defaulting incorrectly and seeing the wrong one. Getting the deps-clr.edn override in was a bit tricky. There are weird things I have to do to make sure hashes are correct and other bits of nastiness.)

seancorfield 2025-09-28T01:01:07.809149Z

As noted, I ran this in a completely empty folder (after getting that error in a project) so there's no deps*.edn files in the project.

seancorfield 2025-09-28T01:02:04.570829Z

The "user" file -- /home/sean/.clojure/deps.edn -- is what cljr creates (because it doesn't check the XDG folder) and I posted that above -- no mvn coords.

seancorfield 2025-09-28T01:04:17.236189Z

Here's what's in the newly-created ~/.clojure/.cpcache folder:

(!2026)-> cat /home/sean/.clojure/.cpcache/617E6405FBDDBB45B373E83A19642F19.cp
/home/sean/.gitlibs/libs/io.github.clojure/clr.tools.deps.cli/a7d281ac00130c9507460ef74e720a33a738244e/src/main/clojure:/home/sean/.gitlibs/libs/io.github.clojure/clr.tools.deps/a3273a26f56a41e59a5292673b00b6bd738b6a64/src/main/clojure:/home/sean/.gitlibs/libs/io.github.clojure/clr.tools.gitlibs/3d561c2d6b0a11dcfdef3e6b6050a4d5fbadd3ea/src/main/clojure:/home/sean/.gitlibs/libs/io.github.clojure/tools.cli/717e187ec98e6a75c7f26a3120fbe9eecc434f05/src/main/clojure
(2025-09-27.21:03:27)-(~/clojure/clr)
(!2027)-> ls -la ~/.clojure/.cpcache/
total 20
drwxr-xr-x 2 sean sean 4096 Sep 27 21:03 .
drwxr-xr-x 4 sean sean 4096 Sep 27 21:03 ..
-rw-r--r-- 1 sean sean 3878 Sep 27 21:03 617E6405FBDDBB45B373E83A19642F19.basis
-rw-r--r-- 1 sean sean  465 Sep 27 21:03 617E6405FBDDBB45B373E83A19642F19.cp
-rw-r--r-- 1 sean sean  434 Sep 27 21:03 617E6405FBDDBB45B373E83A19642F19.manifest

seancorfield 2025-09-28T01:04:52.725049Z

The basis file:

(!2028)-> cat /home/sean/.clojure/.cpcache/617E6405FBDDBB45B373E83A19642F19.basis
{:paths [], :aliases {:deps {:replace-paths [], :replace-deps {io.github.clojure/clr.tools.deps.cli {:git/tag "v0.1.5", :git/sha "a7d281a"}}, :ns-default clojure.tools.deps.cli.api, :ns-aliases {help }}, :test {:extra-paths ["test"]}}, :deps {io.github.clojure/clr.tools.deps.cli {:git/tag "v0.1.5", :git/sha "a7d281a"}}, :libs {io.github.clojure/clr.tools.deps.cli {:git/tag "v0.1.5", :git/sha "a7d281ac00130c9507460ef74e720a33a738244e", :git/url "", :deps/manifest :deps, :deps/root "/home/sean/.gitlibs/libs/io.github.clojure/clr.tools.deps.cli/a7d281ac00130c9507460ef74e720a33a738244e", :parents #{[]}, :paths ["/home/sean/.gitlibs/libs/io.github.clojure/clr.tools.deps.cli/a7d281ac00130c9507460ef74e720a33a738244e/src/main/clojure"]}, io.github.clojure/clr.tools.deps {:git/tag "v0.1.6", :git/sha "a3273a26f56a41e59a5292673b00b6bd738b6a64", :git/url "", :deps/manifest :deps, :deps/root "/home/sean/.gitlibs/libs/io.github.clojure/clr.tools.deps/a3273a26f56a41e59a5292673b00b6bd738b6a64", :dependents [io.github.clojure/clr.tools.deps.cli], :parents #{[io.github.clojure/clr.tools.deps.cli]}, :paths ["/home/sean/.gitlibs/libs/io.github.clojure/clr.tools.deps/a3273a26f56a41e59a5292673b00b6bd738b6a64/src/main/clojure"]}, io.github.clojure/clr.tools.gitlibs {:git/tag "v2.5.198", :git/sha "3d561c2d6b0a11dcfdef3e6b6050a4d5fbadd3ea", :git/url "", :deps/manifest :deps, :deps/root "/home/sean/.gitlibs/libs/io.github.clojure/clr.tools.gitlibs/3d561c2d6b0a11dcfdef3e6b6050a4d5fbadd3ea", :dependents [io.github.clojure/clr.tools.deps], :parents #{[io.github.clojure/clr.tools.deps.cli io.github.clojure/clr.tools.deps]}, :paths ["/home/sean/.gitlibs/libs/io.github.clojure/clr.tools.gitlibs/3d561c2d6b0a11dcfdef3e6b6050a4d5fbadd3ea/src/main/clojure"]}, io.github.clojure/tools.cli {:git/tag "v1.1.230", :git/sha "717e187ec98e6a75c7f26a3120fbe9eecc434f05", :git/url "", :deps/manifest :deps, :deps/root "/home/sean/.gitlibs/libs/io.github.clojure/tools.cli/717e187ec98e6a75c7f26a3120fbe9eecc434f05", :dependents [io.github.clojure/clr.tools.deps], :parents #{[io.github.clojure/clr.tools.deps.cli io.github.clojure/clr.tools.deps]}, :paths ["/home/sean/.gitlibs/libs/io.github.clojure/tools.cli/717e187ec98e6a75c7f26a3120fbe9eecc434f05/src/main/clojure"]}}, :classpath-roots ["/home/sean/.gitlibs/libs/io.github.clojure/clr.tools.deps.cli/a7d281ac00130c9507460ef74e720a33a738244e/src/main/clojure" "/home/sean/.gitlibs/libs/io.github.clojure/clr.tools.deps/a3273a26f56a41e59a5292673b00b6bd738b6a64/src/main/clojure" "/home/sean/.gitlibs/libs/io.github.clojure/clr.tools.gitlibs/3d561c2d6b0a11dcfdef3e6b6050a4d5fbadd3ea/src/main/clojure" "/home/sean/.gitlibs/libs/io.github.clojure/tools.cli/717e187ec98e6a75c7f26a3120fbe9eecc434f05/src/main/clojure"], :classpath {"/home/sean/.gitlibs/libs/io.github.clojure/clr.tools.deps.cli/a7d281ac00130c9507460ef74e720a33a738244e/src/main/clojure" {:lib-name io.github.clojure/clr.tools.deps.cli}, "/home/sean/.gitlibs/libs/io.github.clojure/clr.tools.deps/a3273a26f56a41e59a5292673b00b6bd738b6a64/src/main/clojure" {:lib-name io.github.clojure/clr.tools.deps}, "/home/sean/.gitlibs/libs/io.github.clojure/clr.tools.gitlibs/3d561c2d6b0a11dcfdef3e6b6050a4d5fbadd3ea/src/main/clojure" {:lib-name io.github.clojure/clr.tools.gitlibs}, "/home/sean/.gitlibs/libs/io.github.clojure/tools.cli/717e187ec98e6a75c7f26a3120fbe9eecc434f05/src/main/clojure" {:lib-name io.github.clojure/tools.cli}}, :basis-config {:aliases [:deps]}, :argmap {:replace-paths [], :replace-deps {io.github.clojure/clr.tools.deps.cli {:git/tag "v0.1.5", :git/sha "a7d281a"}}, :ns-default clojure.tools.deps.cli.api, :ns-aliases {help }}}

seancorfield 2025-09-28T01:05:57.106569Z

Something is pulling in the clj version of tools.cli:

"/home/sean/.gitlibs/libs/io.github.clojure/tools.cli/717e187ec98e6a75c7f26a3120fbe9eecc434f05/src/main/clojure" {:lib-name io.github.clojure/tools.cli}
Is that expected?

seancorfield 2025-09-28T01:07:07.002939Z

(the deps.edn file there does not specify any dependencies by default and certainly no Clojure 1.12.3)

dmiller 2025-09-28T01:11:14.773649Z

There is code to bring in some tools.cli stuff. I think you've given me enough to figure it out. I'm on the case.

seancorfield 2025-09-28T01:12:09.097989Z

Happy to test more stuff tomorrow...

dmiller 2025-09-28T01:23:12.432529Z

I most appreciate your diligence.

dmiller 2025-09-28T05:11:46.914259Z

Can you look in /home/sean/.clojure/tools for edn files and tell me what you see? One conflict that will happen is that clj and cljr each would like to copy in a tools.edn to that directory. cljr is failing to do so because its version of tools.edn is missing. And I'm not sure what to do for someone running both clj and cljr. I need to figure what library is using that file for what purpose and maybe do tools-clr.edn workaround if I can . I deleted the tools.edn from my HOME/.clojure/tools directory and ran clj. It added in a tools.edn file with this content:

{:lib io.github.clojure/tools.tools
 :coord {:git/tag "v0.3.4"
         :git/sha "0e9e6c8b409ac916ad6f2ec5bc075bbcb09545c0"}}
More investigation needed. ... Not the problem. We currently don't have tools.tools implemented. It's on the to-do list. One of the things I don't have clear idea of is what tools we need to implement in the CLR context.

seancorfield 2025-09-28T14:21:29.912249Z

That tools folder is empty:

(!2067)-> ls -Rla ~/.clojure
/home/sean/.clojure:
total 20
drwxr-xr-x  4 sean sean 4096 Sep 28 10:20 .
drwxr-xr-x 61 sean sean 4096 Sep 28 10:20 ..
drwxr-xr-x  2 sean sean 4096 Sep 28 10:20 .cpcache
-rwxr--r--  1 sean sean   65 Jun 20  2023 deps.edn
drwxr-xr-x  2 sean sean 4096 Sep 28 10:20 tools

/home/sean/.clojure/.cpcache:
total 20
drwxr-xr-x 2 sean sean 4096 Sep 28 10:20 .
drwxr-xr-x 4 sean sean 4096 Sep 28 10:20 ..
-rw-r--r-- 1 sean sean 3878 Sep 28 10:20 617E6405FBDDBB45B373E83A19642F19.basis
-rw-r--r-- 1 sean sean  465 Sep 28 10:20 617E6405FBDDBB45B373E83A19642F19.cp
-rw-r--r-- 1 sean sean  434 Sep 28 10:20 617E6405FBDDBB45B373E83A19642F19.manifest

/home/sean/.clojure/tools:
total 8
drwxr-xr-x 2 sean sean 4096 Sep 28 10:20 .
drwxr-xr-x 4 sean sean 4096 Sep 28 10:20 ..

seancorfield 2025-09-28T14:22:22.610319Z

(remember, for me clj / clojure is following XDG and using ~/.config/clojure -- whereas cljr is using ~/.clojure)

dmiller 2025-09-28T14:57:21.298789Z

Moving over to DMs to keep from spamming the world.

seancorfield 2025-09-26T12:33:18.474869Z

WSL2 Ubuntu. Here's the Clojure.Main sessions:

(!2031)-> Clojure.Main
Clojure 1.12.3-alpha3
user=>  (ns my.namespace
 (:import [System.Diagnostics ProcessStartInfo]))
nil
my.namespace=>

(2025-09-26.08:32:18)-(~/clojure)
(!2032)-> Clojure.Main
Clojure 1.12.3-alpha3
user=>  (ns my.namespace)
nil
my.namespace=>
my.namespace=>  (try
  (assembly-load-from (str clojure.lang.RT/SystemRuntimeDirectory "System.Diagnostics.Process.dll"))
  (catch Exception e
     (println "This is going to hurt:" (.Message e))))
#object[RuntimeAssembly 0x1aca155 "System.Diagnostics.Process, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"]
my.namespace=>
my.namespace=> (import '[System.Diagnostics Process ProcessStartInfo])
System.Diagnostics.ProcessStartInfo
my.namespace=>

seancorfield 2025-09-26T12:34:22.022929Z

(I repeated that test with cljr instead of Clojure.Main -- same result)

seancorfield 2025-09-26T12:35:06.597529Z

If it helps at all:

(!2033)-> cljr -Sverbose
version      = 0.1.0.0
install_dir  = /home/sean/.dotnet/tools/.store/clojure.cljr/0.1.0-alpha7/clojure.cljr/0.1.0-alpha7/tools/net9.0/any/
config_dir   = /home/sean/.clojure
config_paths = /home/sean/.dotnet/tools/.store/clojure.cljr/0.1.0-alpha7/clojure.cljr/0.1.0-alpha7/tools/net9.0/any/deps.edn /home/sean/.clojure/deps.edn deps.edn
cache_dir    = .cpcache
cp_file      = .cpcache/1DCDCC0C52DB35CC6DF347B6587222EC.cp
Starting main
Clojure 1.12.3-alpha3
user=>

seancorfield 2025-09-26T12:35:44.604299Z

And:

(!2034)-> ls -al ~/.clojure
total 20
drwxr-xr-x  4 sean sean 4096 Feb 23  2025 .
drwxr-xr-x 61 sean sean 4096 Sep 26 08:30 ..
drwxr-xr-x  2 sean sean 4096 Sep 25 14:09 .cpcache
-rwxr--r--  1 sean sean   65 Jun 20  2023 deps.edn
drwxr-xr-x  2 sean sean 4096 Feb 23  2025 tools

seancorfield 2025-09-26T12:36:36.496629Z

I don't use ~/.clojure for JVM Clojure -- I use ~/.config/clojure (XDG) -- so I'm a bit surprised it even exists...

seancorfield 2025-09-26T12:40:53.404899Z

Looks like cljr creates that? Shouldn't it use the existing ~/.config/clojure setup instead?

seancorfield 2025-09-26T12:41:20.598439Z

Confirmed. I deleted it. Ran cljr again, and it was recreated:

(!2042)-> ls -al ~/.clojure
total 16
drwxr-xr-x  3 sean sean 4096 Sep 26 08:37 .
drwxr-xr-x 61 sean sean 4096 Sep 26 08:37 ..
-rwxr--r--  1 sean sean   65 Jun 20  2023 deps.edn
drwxr-xr-x  2 sean sean 4096 Sep 26 08:37 tools

seancorfield 2025-09-26T12:42:29.225289Z

clj does not create it -- it uses the XDG setup -- cljr creates it 😞

(!2043)-> rm -rf ~/.clojure

(2025-09-26.08:41:27)-(~/clojure)
(!2044)-> ls -al ~/.clojure
ls: cannot access '/home/sean/.clojure': No such file or directory

(2025-09-26.08:41:31)-(~/clojure)
(!2045)-> clj
Clojure 1.12.3
user=>

(2025-09-26.08:41:42)-(~/clojure)
(!2046)-> ls -al ~/.clojure
ls: cannot access '/home/sean/.clojure': No such file or directory

(2025-09-26.08:41:43)-(~/clojure)
(!2047)-> cljr
Starting main
Clojure 1.12.3-alpha3
user=>

(2025-09-26.08:41:48)-(~/clojure)
(!2048)-> ls -al ~/.clojure
total 16
drwxr-xr-x  3 sean sean 4096 Sep 26 08:41 .
drwxr-xr-x 61 sean sean 4096 Sep 26 08:41 ..
-rwxr--r--  1 sean sean   65 Jun 20  2023 deps.edn
drwxr-xr-x  2 sean sean 4096 Sep 26 08:41 tools

dmiller 2025-09-26T13:49:16.726609Z

I'm truly mystified by the original error.

Execution error (TypeNotFoundException) at clojure.tools.deps/eval4253loading (NO_FILE:0).
Unable to find type: System.Diagnostics.ProcessStartInfo
This pretty clearly points to the :import of System.Diagnostic.ProcessStartInfo that's in the ns of clojure.tools.deps. The code I asked you to execute is two ways to do that import. BTW, cljr -X:deps truee runs on my WSL2 Ubuntu, so debugging this is a bit problematic. What version of .NET? I'm on 8.0:
user=> dotnet-version
{:major 8, :minor 0, :incremental 6}
I'll get back to you the XDG. I think cljr always creates the deps.edn but prefers XDG when available. (Whatever it is doing is copied from the code for clj.)

seancorfield 2025-09-26T13:53:55.419819Z

(!2050)-> Clojure.Main
Clojure 1.12.3-alpha3
user=> dotnet-version
{:major 9, :minor 0, :incremental 4}
user=>

dmiller 2025-09-26T21:47:05.874939Z

I now have the error occurring on my dev machine in Windows. I don't know why it didn't occur before, but here I am. I managed to rig thing so that the process running "Starting exec/tool" causes a debugger to attach (that was nifty). I can progress the debugger through the first few calls to the code that causes the problem, but then I get into a debugger mode where we are in external code and it gets stuck. So I am stuck. Since it was working at some point, time for git bisect sesssion, I suppose.

seancorfield 2025-09-26T21:54:37.997849Z

I tried that same command with every alpha: 2 .. 7 all fail the same way; alpha 1 fails like this:

(!2014)-> cljr -Sverbose -Sforce -X:deps tree
version      = 0.1.0.0
install_dir  = /home/sean/.dotnet/tools/.store/clojure.cljr/0.1.0-alpha1/clojure.cljr/0.1.0-alpha1/tools/net8.0/any/
config_dir   = /home/sean/.clojure
config_paths = /home/sean/.dotnet/tools/.store/clojure.cljr/0.1.0-alpha1/clojure.cljr/0.1.0-alpha1/tools/net8.0/any/deps.edn /home/sean/.clojure/deps.edn deps.edn
cache_dir    = .cpcache
cp_file      = .cpcache/D886CF6A963AA4D08D0DD4C281176937.cp

Refreshing classpath
/home/sean/.dotnet/tools/.store/clojure.cljr/0.1.0-alpha1/clojure.cljr/0.1.0-alpha1/tools/net8.0/any/tools/run-clojure-main.ps1 :
File \\wsl.localhost\Ubuntu-20.04\home\sean\.dotnet\tools\.store\clojure.cljr\0.1.0-alpha1\clojure.cljr\0.1.0-alpha1\tools\net8.0\a
ny\tools\run-clojure-main.ps1 cannot be loaded. The file \\wsl.localhost\Ubuntu-20.04\home\sean\.dotnet\tools\.store\clojure.cljr\0
.1.0-alpha1\clojure.cljr\0.1.0-alpha1\tools\net8.0\any\tools\run-clojure-main.ps1 is not digitally signed. You cannot run this
script on the current system. For more information about running scripts and setting execution policy, see
about_Execution_Policies at https:/go.microsoft.com/fwlink/?LinkID=135170.
At line:1 char:1
+ /home/sean/.dotnet/tools/.store/clojure.cljr/0.1.0-alpha1/clojure.clj ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : SecurityError: (:) [], PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess

seancorfield 2025-09-26T21:55:20.784849Z

Here's alpha 2:

(!2011)-> cljr -Sverbose -Sforce -X:deps tree
version      = 0.1.0.0
install_dir  = /home/sean/.dotnet/tools/.store/clojure.cljr/0.1.0-alpha2/clojure.cljr/0.1.0-alpha2/tools/net8.0/any/
config_dir   = /home/sean/.clojure
config_paths = /home/sean/.dotnet/tools/.store/clojure.cljr/0.1.0-alpha2/clojure.cljr/0.1.0-alpha2/tools/net8.0/any/deps.edn /home/sean/.clojure/deps.edn deps.edn
cache_dir    = .cpcache
cp_file      = .cpcache/61B236D7356FC098AAD91D3FDD869678.cp

Refreshing classpath
Execution error (TypeNotFoundException) at clojure.tools.deps/eval4985loading (NO_FILE:0).
Unable to find type: System.Diagnostics.ProcessStartInfo

Full report at:
/tmp/clojure-8485a733-f1f8-41e3-8ddd-c9683ba872e5.edn

dmiller 2025-09-27T00:45:19.181589Z

I'm pretty sure I had tested -Xdeps tree at some point. Not finding System.Diagnostics.ProcessStartInfo is causing some severe cognitive disturbance.

seancorfield 2025-09-27T01:57:46.091019Z

I wonder if that isn't really the underlying error? I tried to mimic :deps tree in the REPL and got this:

> cljr -M:deps -r
Starting main
Clojure 1.12.3-alpha3
user=> (require 'clojure.tools.deps.cli.api)
nil
user=> (clojure.tools.deps.cli.api/tree {})
Error generating tree: Could not find a part of the path '/home/sean/clojure/clojure/tools/deps/deps.edn'.
   at Interop.ThrowExceptionForIoErrno(ErrorInfo errorInfo, String path, Boolean isDirError)
   at Microsoft.Win32.SafeHandles.SafeFileHandle.Open(String path, OpenFlags flags, Int32 mode, Boolean failForSymlink, Boolean& wasSymlink, Func`4 createOpenException)
   at Microsoft.Win32.SafeHandles.SafeFileHandle.Open(String fullPath, FileMode mode, FileAccess access, FileShare share, FileOptions options, Int64 preallocationSize, UnixFileMode openPermissions, Int64& fileLength, UnixFileMode& filePermissions, Boolean failForSymlink, Boolean& wasSymlink, Func`4 createOpenException)
   at System.IO.Strategies.OSFileStreamStrategy..ctor(String path, FileMode mode, FileAccess access, FileShare share, FileOptions options, Int64 preallocationSize, Nullable`1 unixCreateMode)
   at System.IO.StreamReader.ValidateArgsAndOpenPath(String path, Encoding encoding, Int32 bufferSize)
   at System.IO.FileInfo.OpenText()
   at clojure.tools.deps$root_deps__5728.invokeStatic()
   at clojure.tools.deps$root_deps__5728.invoke()
   at clojure.tools.deps$create_edn_mapsfn__6361__6365.invoke()
   at clojure.tools.deps$choose_deps__6353.invokeStatic(Object, Object)
   at clojure.tools.deps$choose_deps__6353.invoke(Object, Object)
   at clojure.tools.deps$create_edn_maps__6383.invokeStatic(Object)
   at clojure.tools.deps$create_edn_maps__6383.invoke(Object)
   at clojure.tools.deps$create_basis__6434.invokeStatic(Object)
   at clojure.tools.deps$create_basis__6434.invoke(Object)
   at clojure.tools.deps.tree$calc_trace__7768.invokeStatic(Object)
   at clojure.tools.deps.tree$calc_trace__7768.invoke(Object)
   at clojure.tools.deps.cli.api$tree__8662.invokeStatic(Object)
This is run in /home/sean/clojure and there is no clojure/tools/deps/deps.edn (nor should there be).

dmiller 2025-09-27T02:08:32.637899Z

Wow. even more to consider. I found a mismatch in the versions of clr.tools.deps and clr.tools.deps.cli in use. There is some weird :override-deps thing that the JVM version does that I copied. However, when last I updated those two libraries, I missed the update on the :override-deps. I think that may have been causing some of the problems. Right now I'm clearing out all installs and trying to get a clean version of the latest of clojure.main and cljr on both windows and my wsl2 ubuntu. Wish me luck.

👍🏻 1
dmiller 2025-09-27T03:04:35.414759Z

There is hope. I have some extra print statements in the code at the moment.

PS C:\work\clojure\clr.test.generative> cljr -X:deps tree
clojure.tools.deps: starting load
clojure.tools.deps: finished ns
clojure.tools.deps: loaded System.Diagnostics.Process.dll
clojure.tools.deps: finished imports
Starting exec/tool
exec: load starting
exec: finished ns
io.github.clojure/clr.data.generators v1.1.0
io.github.clojure/clr.tools.namespace v1.5.4
  . io.github.clojure/clr.tools.reader v1.5.0

PS C:\work\clojure\clr.tools.deps.cli> cljr -Sforce -X:deps tree
clojure.tools.deps: starting load
clojure.tools.deps: finished ns
clojure.tools.deps: loaded System.Diagnostics.Process.dll
clojure.tools.deps: finished imports
Starting exec/tool
exec: load starting
exec: finished ns
io.github.clojure/clr.tools.deps v0.1.6
  . io.github.clojure/clr.tools.gitlibs v2.5.198
  . io.github.clojure/tools.cli v1.1.230
I need to clean out the cruft that has accumulated while debugging this and get the next alpha release out. But I don't trust myself to do any more work tonight. Tomorrow.

👍🏻 1
seancorfield 2025-09-25T18:11:21.135429Z

(!2010)-> cljr -X:deps tree
Cloning: 
Checking out:  at 8b4c25e2e9c4343b813894c441be39291b38b1c5
Cloning: 
Checking out:  at a98c5966e99e75c28d7da74ceef8ab49b47a08e2
Cloning: 
Checking out:  at a45c55f4fa58a6a43d502b35a9569e4709e2e4d2
Starting exec/tool
Execution error (TypeNotFoundException) at clojure.tools.deps/eval4253loading (NO_FILE:0).
Unable to find type: System.Diagnostics.ProcessStartInfo

Full report at:
/tmp/clojure-4d8d5150-228e-44f8-a031-7617b8843838.edn

seancorfield 2025-09-25T18:12:14.855109Z

This works tho':

> cljr -M -e "(clojure-version)"
Starting main
"1.12.3-alpha3"

dmiller 2025-09-25T18:15:26.254849Z

What platform? What version of Clojure.Main?

dmiller 2025-09-25T18:17:41.808949Z

That looks like a problem with the new autoloading. Anything special in your deps.edn?

seancorfield 2025-09-25T18:24:47.295579Z

Linux (since you asked for testers -- Ubuntu 20.04 specifically). Clojure.Main version as shown -- 1.12.3-alpha3

> cat deps-clr.edn
{:paths ["src"]
 :aliases
 {:runner
  {;:extra-paths ["test"]
   :extra-deps {io.github.dmiller/test-runner
                {:git/tag "v0.5.3clr" :git/sha "ae91dd2"}}
   :exec-fn cognitect.test-runner.api/test}}}

seancorfield 2025-09-25T18:25:20.434299Z

> cljr -X:runner
Starting exec/tool

Running tests in #{"test"}

Testing user

Ran 0 tests containing 0 assertions.
0 failures, 0 errors.
works (`test` is empty so this is correct).

dmiller 2025-09-25T18:27:57.455289Z

Same result on Windows. I'm working on it.

🙌 1
1
dmiller 2025-09-26T03:21:46.554609Z

@seancorfield Are you Ubuntu on WSL2 or doing 'real' Ubuntu? Could you try in separate starts of Clojure.Main:

(ns my.namespace
 (:import [System.Diagnostics ProcessStartInfo]))
and
(ns my.namespace)
 
 (try 
  (assembly-load-from (str clojure.lang.RT/SystemRuntimeDirectory "System.Diagnostics.Process.dll"))
  (catch Exception e
     (println "This is going to hurt:" (.Message e))))

(import '[System.Diagnostics Process ProcessStartInfo])