[pkg] fetch dependencies without building the project
maiste opened this issue · 4 comments
Context
In the current behaviour, unless you have the exact target, it is impossible to download the dependencies without building the project. A nice feature would be a command that fetch the project dependencies in the same way you would with dune build
. This is important in the context of Dockerfile, where you can save some computation time by caching this stage.
Solution
We can implement a dune pkg fetch
command that triggers the fetch rule for the entire project.
What about just introducing an alias @pkg-fetch
? This is the more standard mechanism for collecting targets in dune.
Yes, definitely! It makes more sense. Another proposition was dune build @deps
.
The original question was if there was a way to mimic the behaviour of opam install --deps-only --with-test .
in the context of Dune Package Management. It means that it should fetch the target and build them too. However, I don't know if we have the possibility to execute the test part?
Thanks for opening the issue @maiste 🙏🏼 To clarify, we have 2 use-cases here.
- Writing a Dockerfile where we can stage building dependencies separate from building the entire project, and cache that based off the dune-project (or eventually the dune.lock):
FROM ubuntu
RUN curl https://get.ocaml.org | bash
# Adds project + deps
ADD dune-project .
RUN dune pkg lock
# Fetch and build dependencies only if the above changes
RUN dune build @deps
# Adds rest of the sources
ADD . .
RUN dune build
- A single command to fetch all external / downloadable resources for a project, to let you work without connectivity:
$ git clone github.com/my/project project
$ cd project
$ dune fetch
$ # now i can go offline
$ dune build
The original question was if there was a way to mimic the behaviour of
opam install --deps-only --with-test .
in the context of Dune Package Management. It means that it should fetch the target and build them too. However, I don't know if we have the possibility to execute the test part?
We already build the test deps. So dune runtest
should work.