Should the content of `.julia/juliaup` be platform portable?
- Dominant language
- Rust
- Stars
- 1.3k
- Forks
- 116
- Avg merge
- 12h 34m
- Merged PRs (30d)
- 19
Description
This issue was triggered by the discussion in https://github.com/JuliaLang/juliaup/issues/397 and https://github.com/JuliaLang/juliaup/issues/404.
At the moment, the content of `.julia/juliaup` is _very_ much only valid for a specific platform version of Juliaup. This is true for both the `juliaup.json` file there and to some extent also the sub folders that hold specific Julia versions.
What do I mean by that? Say you installed Juliaup on a M1/M2 Mac, then have your `JULIA_DEPOT` path configured so that it points to a network share. So, the folder `.julia` is on a network share, and therefore `.julia/juliaup` as well. Your Mac M1/M2 `juliaup` binary has created everything in `.julia/juliaup`. If a different user on a Linux x86 system installs the x86 Linux version of Juliaup on their system, and then configures `JULIA_DEPOT` to point to the _same_ network share as the Mac user, and then tries to use the x86 Linux Juliaup version to also manage the `.julia/juliaup` version on the network share, everything will break.
Why? Because inside `.julia/juliaup/juliaup.json` we use strings to identify things that don't include platform level info, so the info inside that file is only valid for _one specific_ version of Juliaup, say the aarch64 Mac version.
From the two linked issues above it seems that especially on clusters this might be a problem, i.e. folks might want to use a Julia depot, and then access that with different platform versions of Juliaup.
So the question is: should we change this? We could attempt to make the `juliaup.json` config file such that it can be validly modified with any platform version of Juliaup. One could take a `.julia/juliaup` folder that was created on 32 bit Windows, and manage it from a aarch64 Linux version of Juliaup, theoretically.
Enabling this would be a _major_ change and quite involved. If we ever want to enable it, though, it would be easier to do now than later, because transitioning existing Juliaup installs from the current to some future platform agnostic design would be even worse...
I guess one question is how we generally think about this question for the content of `.julia`, irrespective of Juliaup? Is it assumed to be usable from different Julia platform binaries? My sense is not really, right? There seems to be quite a bit of "stuff" in there that is platform specific, but not in platform specific folders. For example, I assume precompile files are not platform agnostic, and they are not in a platform specific sub-folder of `.julia/compiled`. Artifacts, on the other hand, seem to be fine because the versions for different platforms of course end up in different folders.
@StefanKarpinski, any thoughts?
I think we need to make a decision about this before we do the official release for everyone.
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.