package vendredi

All checked builds pass
  1. Overview
  2. Docs
On This Page
  1. Example
Tool for generating dune projects which vendor given packages for the purpose of testing that their dependencies are vendor-friendly

Install

dune-project
 Dependency

Authors

Maintainers

Sources

0.1.0.tar.gz
md5=3492a6e9b9019ef4ea5c9fcda0bb836d
sha512=703861be6648455b7f025d9ab22c379e150621e0dbff497d8836a662e673357cf286f58a4fbbe908bdad18d69200647d520f134126047241cc5d792ecc99e3f5

doc/README.html

vendredi

Tool for generating dune projects which vendor given packages for the purpose of testing that their dependencies are vendor-friendly

Example

To test whether the opam package curses can be vendored:

# creates a project at /tmp/curses-test which vendores the curses opam library
$ vendredi /tmp/curses-test --opam curses

$ cd /tmp/curses-test

$ ls
vendored  dune  dune-project  hello.ml

$ ls vendored
curses.1.0.10

$ cat dune
(executable
 (public_name hello)
 (libraries curses))

# build with dune (you'll have to install the dependencies of curses for this to work)
$ dune build
File "vendored/curses.1.0.10/dune", line 40, characters 0-207:
40 | (rule
41 |  (target curses.ml)
42 |  (deps _curses.ml _config.ml _functions.c _keys.ml config.h)
43 |  (action
44 |   (chdir
45 |    %{workspace_root}
46 |    (with-stdout-to
47 |     %{target}
48 |     (system "%{bin:gcc} -x c -E _curses.ml")))))
cc1: fatal error: _curses.ml: No such file or directory
compilation terminated.

# fix the package
$ patch -p1 <<EOF
> diff --git a/vendored/curses.1.0.10/dune b/vendored/curses.1.0.10/dune
> index 883f555..11f8032 100644
> --- a/vendored/curses.1.0.10/dune
> +++ b/vendored/curses.1.0.10/dune
> @@ -42,7 +42,7 @@
>   (deps _curses.ml _config.ml _functions.c _keys.ml config.h)
>   (action
>    (chdir
> -   %{workspace_root}
> +   %{project_root}
>     (with-stdout-to
>      %{target}
>      (system "%{bin:gcc} -x c -E _curses.ml")))))
> EOF
patching file vendored/curses.1.0.10/dune

# now it builds
$ dune build