-
-
Notifications
You must be signed in to change notification settings - Fork 5.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
use Pkg3 for docs #26426
use Pkg3 for docs #26426
Conversation
@@ -0,0 +1,83 @@ | |||
[[Base64]] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For those who wonder, the Manifest.toml
contains the complete dependency graph of the Project and what version these are at. Documenter uses Compat which has a dependency on almost all the stdlibs which is why this file becomes a bit big.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Does this mean that every Pkg3 package that uses Compat (i.e. almost all of them) will need to include this long list?
That seems crazy … shouldn't each package only have to list its own direct dependencies, like the REQUIRE file?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The Manifest is not a REQUIRE file and it is not something that you will edit by hand. Instead, the Manifest is a complete record of the state of your current project. This makes it possible to e.g. send you Manifest to someone else and have them recreate the exact revisions of the packages that you had.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Some good reading at https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html (what they call "lock"-file is our Manifest and what they call Manifest is our Project).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If you want any real reproducibility you need to record the identity and exact version of every dependency. Otherwise how would you ever reproduce the state of a set of packages? Currently stdlib packages aren't versioned so we only record these "dangling" UUID pointers to record their identity, but in the future it will be possible to use an older stdlib package version with a newer version of Julia itself, at which point we'll need full manifest entries for stdlib packages. Of course we won't need Compat for stdlibs at that point there's a tradeoff.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh, it's also not necessary to check in a manifest file at all if you don't care about historical reproducibility – all you need is the project file and to then run the package version resolver.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, the point of checking in the Manifest here is that we want to use the exact same versions all the time, to reproduce the doc build.
using Pkg3 | ||
empty!(DEPOT_PATH) | ||
pushfirst!(DEPOT_PATH, joinpath(@__DIR__, "deps")) | ||
pkg"up --manifest --fixed" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Currently, the REPL API is a bit nicer than the "programmatic one" so I used it here by using the Pkg3 pkg
string macro.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If this solves the issue in #25036 (comment), I'll close that in lieu of this, which I see as superseding it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Since this changes the DEPOT_PATH
it should also change the place where the precompile files are stored.
There is no rush merging this, just good to see that it works. |
No rush, but on the other hand, why not? The more we start actually using Pkg3 in earnest, the more real issues will turn up and be able to fix. I'm still finding it surreal that it is usable and works now. |
bump, needs a rebase |
Yep, will update after #27046 |
No description provided.