Skip to content
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

Closed
wants to merge 1 commit into from
Closed

use Pkg3 for docs #26426

wants to merge 1 commit into from

Conversation

KristofferC
Copy link
Sponsor Member

No description provided.

@@ -0,0 +1,83 @@
[[Base64]]
Copy link
Sponsor Member Author

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.

Copy link
Member

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?

Copy link
Sponsor Member Author

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.

Copy link
Sponsor Member Author

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).

Copy link
Sponsor Member

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.

Copy link
Sponsor Member

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.

Copy link
Sponsor Member Author

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"
Copy link
Sponsor Member Author

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.

Copy link
Sponsor Member

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.

Copy link
Sponsor Member Author

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.

@KristofferC
Copy link
Sponsor Member Author

There is no rush merging this, just good to see that it works.

@StefanKarpinski
Copy link
Sponsor Member

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.

@stevengj
Copy link
Member

stevengj commented May 9, 2018

bump, needs a rebase

@KristofferC
Copy link
Sponsor Member Author

Yep, will update after #27046

@fredrikekre
Copy link
Member

#27095

@DilumAluthge DilumAluthge deleted the kc/pkg3_documenter branch March 25, 2021 22:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants