Manifest: generate octez-deps.opam et al.
Context
This MR is a step towards using opam lock to replace tezos/opam-repository.
This MR modifies the manifest so that it generates opam/octez-deps.opam, which is a file that contains all external dependencies of Octez, along with their version constraints. One can then run opam install opam/octez-deps.opam to install them instead of using make build-deps, for instance. And one can run opam lock opam/octez-deps.opam to generate octez-deps.opam.locked, which is basically the same file but with all transitive dependencies and where all dependencies have fixed version numbers. The exact version number is the one which you have currently installed (for instance with opam install opam/octez-deps.opam).
This MR used to also generate opam/octez-tps-deps.opam. The idea was to separate TPS-specific dependencies in a different lock files so that devs and users don't have to install postgresql. To this end, I added a notion of profiles to the manifest. A profile corresponds to a variant of octez-deps file. Thanks to !6165 (merged) however we no longer need this different profile. But I'd like to keep the profile mechanism in the manifest even if it's unused in case we want to introduce other tools like TPS.
I also added a manually-written opam/octez-dev-deps.opam file. In other words, we have:
-
octez-deps.opamthat we could use to replacemake build-deps -
octez-dev-deps.opamthat we could use to replacemake build-dev-deps
This MR updates the scripts that can be updated to use octez-{,dev-}deps.opam.
In the future, we plan to:
- generate and commit lock files too
- use them to improve the scripts further, in particular remove the
packagesfolder oftezos/opam-repositoryand replace it with those lock files - and finally, remove
tezos/opam-repositoryby moving Docker image generation totezos/tezos.
Manually testing the MR
Run either make build-deps or opam install opam/octez-deps.opam. Then opam lock opam/octez-deps.opam creates octez-deps.opam.locked.
Run ./scripts/update_opam_repo.sh to check that it still works.
Checklist
-
Document the interface of any function added or modified (see the coding guidelines) -
Select suitable reviewers using the Reviewersfield below. -
Select as Assigneethe next person who should take action on that MR