mte/unikernel/duniverse/dune_/doc/tutorials/dune-package-management/repos.md

57 lines
1.7 KiB
Markdown
Raw Normal View History

2025-11-11 02:07:51 +01:00
# Custom Repositories
By default when locking package versions, Dune looks up packages from two
sources:
1. The upstream, community maintained `opam-repository` at
[ocaml/opam-repository](https://github.com/ocaml/opam-repository) for most
packages
2. An overlay repository with patched software to allow usage in Dune at
[ocaml-dune/opam-overlays](https://github.com/ocaml-dune/opam-overlays)
To change the presets, the `dune-workspace` file has to be edited (and created
if it didn't exist):
::::{dropdown} `dune-workspace`
:icon: file-code
:::{literalinclude} repos/dune-workspace
:language: dune
:::
::::
In this case, we want to select a specific revision of the community repository
instead of always using the most recent one as it would do by default. We
define a new repository and configure the lock directory to use this
repository.
For more information about the stanzas refer to the {doc}`repositories stanza
</reference/dune-workspace/repository>` as well as the {doc}`lock_dir stanza
</reference/dune-workspace/lock_dir>`.
When relocking the dependencies, the list of packages that are found as
dependencies changes accordingly:
```
$ dune pkg lock
Solution for dune.lock:
- base-unix.base
- fmt.0.9.0
- ocaml.5.0.0
- ocaml-base-compiler.5.0.0
- ocaml-config.3
- ocamlbuild.0.15.0+dune
- ocamlfind.1.9.6+dune
- topkg.1.0.
```
Compared to before, the OCaml compiler version is older, which shows
that we did indeed pick an older version of the package repository for locking.
:::{note}
This feature can also be used to make sure the locked dependencies are
reproducible, as fixing all the package repository versions will lead to
equivalent locking results.
:::