This commit is contained in:
parent
aa2ff7b2f0
commit
2f3113f55d
11742 changed files with 1223940 additions and 0 deletions
|
|
@ -0,0 +1,4 @@
|
|||
(library
|
||||
(name lib)
|
||||
(wrapped false)
|
||||
(default_implementation lib.impl))
|
||||
|
|
@ -0,0 +1 @@
|
|||
(lang dune 2.6)
|
||||
|
|
@ -0,0 +1 @@
|
|||
let run () = ()
|
||||
|
|
@ -0,0 +1 @@
|
|||
val run : unit -> unit
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
Test that trying to specify a default implementation for a non-virtual library results
|
||||
in an appropriate error message.
|
||||
|
||||
$ dune build
|
||||
File "dune", line 4, characters 25-33:
|
||||
4 | (default_implementation lib.impl))
|
||||
^^^^^^^^
|
||||
Error: Only virtual libraries can specify a default implementation.
|
||||
[1]
|
||||
|
||||
|
|
@ -0,0 +1 @@
|
|||
Vlib.run ();;
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
(executable
|
||||
(name bar)
|
||||
(libraries vlib))
|
||||
|
||||
(rule
|
||||
(alias default)
|
||||
(action
|
||||
(run ./bar.exe)))
|
||||
|
|
@ -0,0 +1 @@
|
|||
(lang dune 2.6)
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
(library
|
||||
(name lib_default)
|
||||
(implements vlib))
|
||||
|
|
@ -0,0 +1 @@
|
|||
let run () = Printf.printf "hi from lib.default"
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
(library
|
||||
(name vlib)
|
||||
(virtual_modules vlib)
|
||||
(wrapped false)
|
||||
(default_implementation lib_default))
|
||||
|
|
@ -0,0 +1 @@
|
|||
val run : unit -> unit
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
Basic sample selecting implementation according to default library.
|
||||
|
||||
$ dune build
|
||||
hi from lib.default
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
(library
|
||||
(name a_default)
|
||||
(public_name a.default-impl)
|
||||
(implements a))
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
(library
|
||||
(public_name a)
|
||||
(virtual_modules x)
|
||||
(default_implementation a_default))
|
||||
|
||||
(rule
|
||||
(with-stdout-to
|
||||
x.mli
|
||||
(echo "")))
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
(lang dune 2.6)
|
||||
(name a)
|
||||
|
|
@ -0,0 +1,90 @@
|
|||
Check that default implementation data is installed in the dune package file.
|
||||
|
||||
$ dune build @install
|
||||
$ dune_cmd cat _build/install/default/lib/a/dune-package | sed "s/(lang dune .*)/(lang dune <version>)/" | dune_cmd sanitize
|
||||
(lang dune <version>)
|
||||
(name a)
|
||||
(sections (lib .) (libexec .))
|
||||
(files
|
||||
(lib
|
||||
(META
|
||||
a.cmi
|
||||
a.cmo
|
||||
a.cmt
|
||||
a.cmx
|
||||
a.ml
|
||||
a$ext_obj
|
||||
a__X.cmi
|
||||
a__X.cmti
|
||||
default-impl/a.cmi
|
||||
default-impl/a.cmx
|
||||
default-impl/a__X.cmi
|
||||
default-impl/a__X.cmt
|
||||
default-impl/a__X.cmx
|
||||
default-impl/a__a_default__.cmi
|
||||
default-impl/a__a_default__.cmt
|
||||
default-impl/a__a_default__.cmx
|
||||
default-impl/a__a_default__.ml
|
||||
default-impl/a_default$ext_lib
|
||||
default-impl/a_default.cma
|
||||
default-impl/a_default.cmxa
|
||||
default-impl/x.ml
|
||||
dune-package
|
||||
opam
|
||||
x.mli))
|
||||
(libexec (default-impl/a_default.cmxs)))
|
||||
(library
|
||||
(name a)
|
||||
(kind normal)
|
||||
(virtual)
|
||||
(default_implementation a.default-impl)
|
||||
(main_module_name A)
|
||||
(modes byte native)
|
||||
(modules
|
||||
(wrapped
|
||||
(group
|
||||
(alias
|
||||
(obj_name a)
|
||||
(visibility public)
|
||||
(kind alias)
|
||||
(source (path A) (impl (path a.ml-gen))))
|
||||
(name A)
|
||||
(modules
|
||||
(module
|
||||
(obj_name a__X)
|
||||
(visibility public)
|
||||
(kind virtual)
|
||||
(source (path X) (intf (path x.mli))))))
|
||||
(wrapped true))))
|
||||
(library
|
||||
(name a.default-impl)
|
||||
(kind normal)
|
||||
(archives
|
||||
(byte default-impl/a_default.cma)
|
||||
(native default-impl/a_default.cmxa))
|
||||
(plugins
|
||||
(byte default-impl/a_default.cma)
|
||||
(native default-impl/a_default.cmxs))
|
||||
(native_archives default-impl/a_default$ext_lib)
|
||||
(requires a)
|
||||
(implements a)
|
||||
(main_module_name A)
|
||||
(modes byte native)
|
||||
(modules
|
||||
(wrapped
|
||||
(group
|
||||
(alias
|
||||
(obj_name a__a_default__)
|
||||
(visibility public)
|
||||
(kind alias)
|
||||
(source
|
||||
(path A__a_default__)
|
||||
(impl (path default-impl/a__a_default__.ml-gen))))
|
||||
(name A)
|
||||
(modules
|
||||
(module
|
||||
(obj_name a__X)
|
||||
(visibility public)
|
||||
(kind impl_vmodule)
|
||||
(source (path X) (impl (path default-impl/x.ml))))))
|
||||
(wrapped true))))
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
(executable
|
||||
(name bar)
|
||||
(libraries vlib))
|
||||
|
||||
(rule
|
||||
(alias default)
|
||||
(action
|
||||
(run ./bar.exe)))
|
||||
|
||||
(rule
|
||||
(with-stdout-to
|
||||
bar.ml
|
||||
(echo "let () = X.run ()")))
|
||||
|
|
@ -0,0 +1 @@
|
|||
(lang dune 2.6)
|
||||
|
|
@ -0,0 +1 @@
|
|||
(lang dune 2.6)
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
(library
|
||||
(name vlib_impl)
|
||||
(public_name vlib.impl)
|
||||
(implements vlib))
|
||||
|
||||
(rule
|
||||
(with-stdout-to
|
||||
x.ml
|
||||
(echo "let run () = Printf.printf \"hey\"")))
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
(library
|
||||
(name vlib)
|
||||
(public_name vlib)
|
||||
(wrapped false)
|
||||
(virtual_modules x)
|
||||
(default_implementation vlib.impl))
|
||||
|
||||
(rule
|
||||
(with-stdout-to
|
||||
x.mli
|
||||
(echo "val run : unit -> unit")))
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
Test default implementation for an external library
|
||||
|
||||
First we create an external library and implementation
|
||||
$ dune build --root lib @install
|
||||
Entering directory 'lib'
|
||||
Leaving directory 'lib'
|
||||
|
||||
Then we make sure that it works fine.
|
||||
$ env OCAMLPATH=lib/_build/install/default/lib dune build --root exe --debug-dependency-path
|
||||
Entering directory 'exe'
|
||||
hey
|
||||
Leaving directory 'exe'
|
||||
Loading…
Add table
Add a link
Reference in a new issue