Where does StdlibArtifacts.toml come from?

Hello all,

While exploring a bit how packages and artifacts are stored locally, I came across a couple of StdlibArtifacts.toml files.
Apparently, this is not returned by Artifacts.find_artifacts_toml.

So the question(s) is quite simple, where does it come from? why it differs from the usual Artifacts.toml? And shouldn’t it be returned by Artifacts.find_artifacts_toml?

NB: For the context, I was trying to implement a function that returns package sizes, source files and artifacts included.

Examples of packages with it: LibCURL_jll, SuiteSparse_jll, CompilerSupportLibraries_jll, …

I’ve explored Julia’s source code, but just found that:

const artifact_names = ("JuliaArtifacts.toml", "Artifacts.toml")


1 Like

I don’t really understand how it all fits together, but this comment here is probably a good breadcrumb to follow - JLLs depended on by the stdlib are “special” and have unique handling as such. @staticfloat would be the clear expert.

1 Like

Thanks for the digging, this clarifies things a bit.

I understand part of the reason is explained later in the PR:

This seems to be to allows to Pkg to include stdlib’s jll’s during the resolve process, while locking them to the version that ships with julia.

Confirmation would be appreciated, though :slight_smile:

It’s actually not used by Pkg; it can be used by downstream tools such as BinaryBuilder. Pkg knows when things are stdlibs and excludes them from package resolution. There are very very few packages that use this file, but there are a few, which you can see here: JuliaHub

1 Like