Skip to content

use Pkg3 for docs - #26426

Closed
KristofferC wants to merge 1 commit into
masterfrom
kc/pkg3_documenter
Closed

KristofferC wants to merge 1 commit into
masterfrom
kc/pkg3_documenter

Conversation

@KristofferC

Copy link
Copy Markdown
Member

No description provided.

Comment thread doc/Manifest.toml
@@ -0,0 +1,83 @@
[[Base64]]

Copy link
Copy Markdown
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
Copy Markdown
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
Copy Markdown
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
Copy Markdown
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
Copy Markdown
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
Copy Markdown
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
Copy Markdown
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.

Comment thread doc/make.jl
using Pkg3
empty!(DEPOT_PATH)
pushfirst!(DEPOT_PATH, joinpath(@__DIR__, "deps"))
pkg"up --manifest --fixed"

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

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

@StefanKarpinski

Copy link
Copy Markdown
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

stevengj commented May 9, 2018

Copy link
Copy Markdown
Member

bump, needs a rebase

@KristofferC

Copy link
Copy Markdown
Member Author

Yep, will update after #27046

@fredrikekre

Copy link
Copy Markdown
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