Skip to content

Should the content of .julia/juliaup be platform portable? #455

@davidanthoff

Description

@davidanthoff

This issue was triggered by the discussion in #397 and #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.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions