Hello community,
here is the log from the commit of package ocaml-dune for openSUSE:Factory checked in at 2019-05-16 22:09:48
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ocaml-dune (Old)
and /work/SRC/openSUSE:Factory/.ocaml-dune.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ocaml-dune"
Thu May 16 22:09:48 2019 rev:10 rq:703289 version:1.9.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/ocaml-dune/ocaml-dune.changes 2019-04-12 09:15:38.481722695 +0200
+++ /work/SRC/openSUSE:Factory/.ocaml-dune.new.5148/ocaml-dune.changes 2019-05-16 22:09:51.478292577 +0200
@@ -1,0 +2,12 @@
+Thu May 16 05:47:29 UTC 2019 - Andy
+
+- Update to version 1.9.3:
+ * Put back library variants in development mode.
+ * Fix a bug where dune install would install man pages to
+ incorrect paths when compared to opam-installer.
+ * Do not fail when a findlib directory doesn't exist.
+ * Rename (coqlib ...) to (coq.theory ...).
+ * Fix crash when calculating library dependency closure.
+ * Fix .install files not being generated.
+
+-------------------------------------------------------------------
Old:
----
ocaml-dune-1.9.1.tar.xz
New:
----
ocaml-dune-1.9.3.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ocaml-dune.spec ++++++
--- /var/tmp/diff_new_pack.n3wTPt/_old 2019-05-16 22:09:52.354291781 +0200
+++ /var/tmp/diff_new_pack.n3wTPt/_new 2019-05-16 22:09:52.354291781 +0200
@@ -12,12 +12,12 @@
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
Name: ocaml-dune
-Version: 1.9.1
+Version: 1.9.3
Release: 0
%{?ocaml_preserve_bytecode}
Summary: A composable build system for OCaml
++++++ _service ++++++
--- /var/tmp/diff_new_pack.n3wTPt/_old 2019-05-16 22:09:52.382291756 +0200
+++ /var/tmp/diff_new_pack.n3wTPt/_new 2019-05-16 22:09:52.386291752 +0200
@@ -3,7 +3,7 @@
<param name="url">git://github.com/ocaml/dune.git</param>
<param name="scm">git</param>
<param name="versionformat">@PARENT_TAG@</param>
- <param name="revision">1.9.1</param>
+ <param name="revision">1.9.3</param>
<param name="filename">ocaml-dune</param>
</service>
<service name="recompress" mode="disabled">
++++++ ocaml-dune-1.9.1.tar.xz -> ocaml-dune-1.9.3.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-dune-1.9.1/CHANGES.md new/ocaml-dune-1.9.3/CHANGES.md
--- old/ocaml-dune-1.9.1/CHANGES.md 2019-04-11 06:25:21.000000000 +0200
+++ new/ocaml-dune-1.9.3/CHANGES.md 2019-05-06 05:59:29.000000000 +0200
@@ -1,3 +1,35 @@
+1.9.3 (06/05/2019)
+------------------
+
+- Fix `.install` files not being generated (#2124, fixes #2123, @rgrinberg)
+
+1.9.2 (02/05/2019)
+------------------
+
+- Put back library variants in development mode. We discovered a
+ serious unexpected issue and we might need to adjust the design of
+ this feature before we are ready to commit to a final version. Users
+ will need to write `(using library_variants 0.1)` in their
+ `dune-project` file if they want to use it before the design is
+ finalized. (#2116, @diml)
+
+- Forbid to attach a variant to a library that implements a virtual
+ library outside the current project (#2104, @rgrinberg)
+
+- Fix a bug where `dune install` would install man pages to incorrect
+ paths when compared to `opam-installer`. For example dune now
+ installs `(foo.1 as man1/foo.1)` correctly and previously that was
+ installed to `man1/man1/foo.1`. (#2105, @aalekseyev)
+
+- Do not fail when a findlib directory doesn't exist (#2101, fix #2099, @diml)
+
+- [coq] Rename `(coqlib ...)` to `(coq.theory ...)`, support for
+ `coqlib` will be dropped in the 1.0 version of the Coq language
+ (#2055, @ejgallego)
+
+- Fix crash when calculating library dependency closure (#2090, fixes #2085,
+ @rgrinberg)
+
1.9.1 (11/04/2019)
------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-dune-1.9.1/bin/install_uninstall.ml new/ocaml-dune-1.9.3/bin/install_uninstall.ml
--- old/ocaml-dune-1.9.1/bin/install_uninstall.ml 2019-04-11 06:25:21.000000000 +0200
+++ new/ocaml-dune-1.9.3/bin/install_uninstall.ml 2019-05-06 05:59:29.000000000 +0200
@@ -225,7 +225,6 @@
List.iter entries ~f:(fun { Install.Entry. src; dst; section } ->
let dst =
dst
- |> Option.value ~default:(Path.basename src)
|> Install.Section.Paths.install_path paths section
|> interpret_destdir ~destdir
in
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-dune-1.9.1/doc/coq.rst new/ocaml-dune-1.9.3/doc/coq.rst
--- old/ocaml-dune-1.9.1/doc/coq.rst 2019-04-11 06:25:21.000000000 +0200
+++ new/ocaml-dune-1.9.3/doc/coq.rst 2019-05-06 05:59:29.000000000 +0200
@@ -14,9 +14,9 @@
(using coq 0.1)
-This will enable support for the ``coqlib`` stanza in the current project. If the
+This will enable support for the ``coq.theory`` stanza in the current project. If the
language version is absent, dune will automatically add this line with the
-latest Coq version to the project file once a ``(coqlib ...)`` stanza is used anywhere.
+latest Coq version to the project file once a ``(coq.theory ...)`` stanza is used anywhere.
Basic Usage
@@ -26,7 +26,7 @@
.. code:: scheme
- (coqlib
+ (coq.theory
(name )
(public_name )
(synopsis <text>)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-dune-1.9.1/doc/variants.rst new/ocaml-dune-1.9.3/doc/variants.rst
--- old/ocaml-dune-1.9.1/doc/variants.rst 2019-04-11 06:25:21.000000000 +0200
+++ new/ocaml-dune-1.9.3/doc/variants.rst 2019-05-06 05:59:29.000000000 +0200
@@ -79,6 +79,10 @@
Variants
========
+This feature is still under development and may change with new dune
+releases. You need to write ``(using library_variants 0.1)`` in your
+``dune-project`` file to unlock it.
+
When building a binary, implementations can be selected using a set of variants
rather than individually specifying implementations.
@@ -107,6 +111,8 @@
Default implementation
======================
+This feature is also guarded by ``(using library_variants ...)``.
+
A virtual library may select a default implementation, which is enabled after
variant resolution, if no suitable implementation has been found.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-dune-1.9.1/src/dune_file.ml new/ocaml-dune-1.9.3/src/dune_file.ml
--- old/ocaml-dune-1.9.1/src/dune_file.ml 2019-04-11 06:25:21.000000000 +0200
+++ new/ocaml-dune-1.9.3/src/dune_file.ml 2019-05-06 05:59:29.000000000 +0200
@@ -50,9 +50,20 @@
else
of_sexp_errorf loc "relative filename expected")
+
+let library_variants =
+ let syntax =
+ Syntax.create ~name:"library_variants"
+ ~desc:"the experimental library variants feature."
+ [ (0, 1) ]
+ in
+ Dune_project.Extension.register_simple ~experimental:true
+ syntax (Dune_lang.Decoder.return []);
+ syntax
+
let variants_field =
field_o "variants" (
- let* () = Syntax.since Stanza.syntax (1, 9) in
+ let* () = Syntax.since library_variants (0, 1) in
located (list Variant.decode >>| Variant.Set.of_list))
(* Parse and resolve "package" fields *)
@@ -913,11 +924,11 @@
located Lib_name.decode)
and+ variant =
field_o "variant" (
- Syntax.since Stanza.syntax (1, 9) >>>
+ Syntax.since library_variants (0, 1) >>>
located Variant.decode)
and+ default_implementation =
field_o "default_implementation" (
- Syntax.since Stanza.syntax (1, 9) >>>
+ Syntax.since library_variants (0, 1) >>>
located Lib_name.decode)
and+ private_modules =
field_o "private_modules" (
@@ -1867,8 +1878,17 @@
let unit_to_sexp () = Sexp.List []
+ let coqlib_warn x =
+ Errors.warn x.loc
+ "(coqlib ...) is deprecated and will be removed in the Coq \
+ language version 1.0, please use (coq.theory ...) instead";
+ x
+
+ let coqlib_p = "coqlib", decode >>| fun x -> [T (coqlib_warn x)]
+ let coqtheory_p = "coq.theory", decode >>| fun x -> [T x]
+
let unit_stanzas =
- let+ r = return ["coqlib", decode >>| fun x -> [T x]] in
+ let+ r = return [coqlib_p; coqtheory_p] in
((), r)
let key =
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-dune-1.9.1/src/file_binding.ml new/ocaml-dune-1.9.3/src/file_binding.ml
--- old/ocaml-dune-1.9.1/src/file_binding.ml 2019-04-11 06:25:21.000000000 +0200
+++ new/ocaml-dune-1.9.3/src/file_binding.ml 2019-05-06 05:59:29.000000000 +0200
@@ -6,7 +6,7 @@
}
module Expanded = struct
- type nonrec t = (Loc.t * Path.t, Loc.t * Path.Local.t) t
+ type nonrec t = (Loc.t * Path.t, Loc.t * string) t
let src t = snd t.src
let dst t = Option.map ~f:snd t.dst
@@ -21,10 +21,9 @@
let basename = Path.basename src in
String.drop_suffix basename ~suffix:".exe"
|> Option.value ~default:basename
- |> Path.Local.of_string
let dst_path t ~dir =
- Path.append_local dir (dst_basename t)
+ Path.relative dir (dst_basename t)
end
module Unexpanded = struct
@@ -47,7 +46,7 @@
; dst =
let f sw =
let (loc, p) = f sw in
- (loc, Path.Local.of_string p)
+ (loc, p)
in
Option.map ~f t.dst
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-dune-1.9.1/src/file_binding.mli new/ocaml-dune-1.9.3/src/file_binding.mli
--- old/ocaml-dune-1.9.1/src/file_binding.mli 2019-04-11 06:25:21.000000000 +0200
+++ new/ocaml-dune-1.9.3/src/file_binding.mli 2019-05-06 05:59:29.000000000 +0200
@@ -4,7 +4,7 @@
type t
val src : t -> Path.t
- val dst : t -> Path.Local.t option
+ val dst : t -> string option
val src_loc : t -> Loc.t
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-dune-1.9.1/src/findlib.ml new/ocaml-dune-1.9.3/src/findlib.ml
--- old/ocaml-dune-1.9.1/src/findlib.ml 2019-04-11 06:25:21.000000000 +0200
+++ new/ocaml-dune-1.9.3/src/findlib.ml 2019-05-06 05:59:29.000000000 +0200
@@ -438,12 +438,15 @@
let root_packages t =
let pkgs =
List.concat_map t.paths ~f:(fun dir ->
- Path.readdir_unsorted dir
- |> List.filter_map ~f:(fun name ->
- if Path.exists (Path.relative dir (name ^ "/META")) then
- Some (Lib_name.of_string_exn ~loc:None name)
- else
- None))
+ if not (Path.exists dir) then
+ []
+ else
+ Path.readdir_unsorted dir
+ |> List.filter_map ~f:(fun name ->
+ if Path.exists (Path.relative dir (name ^ "/META")) then
+ Some (Lib_name.of_string_exn ~loc:None name)
+ else
+ None))
|> Lib_name.Set.of_list
in
let builtins = Lib_name.Set.of_list (Lib_name.Map.keys t.builtins) in
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-dune-1.9.1/src/install.ml new/ocaml-dune-1.9.3/src/install.ml
--- old/ocaml-dune-1.9.1/src/install.ml 2019-04-11 06:25:21.000000000 +0200
+++ new/ocaml-dune-1.9.3/src/install.ml 2019-05-06 05:59:29.000000000 +0200
@@ -1,30 +1,91 @@
open! Stdune
open Import
-module Section = struct
- module T = struct
- type t =
- | Lib
- | Lib_root
- | Libexec
- | Libexec_root
- | Bin
- | Sbin
- | Toplevel
- | Share
- | Share_root
- | Etc
- | Doc
- | Stublibs
- | Man
- | Misc
+module Section0 = struct
+ type t =
+ | Lib
+ | Lib_root
+ | Libexec
+ | Libexec_root
+ | Bin
+ | Sbin
+ | Toplevel
+ | Share
+ | Share_root
+ | Etc
+ | Doc
+ | Stublibs
+ | Man
+ | Misc
- let compare : t -> t -> Ordering.t = compare
- end
+ let compare : t -> t -> Ordering.t = compare
+end
+
+(* The path after the man section mangling done by opam-installer.
+ This roughly follows [add_man_section_dir] in [src/format/opamFile.ml] in opam. *)
+module Dst : sig
+ type t
+
+ val to_string : t -> string
+
+ val to_install_file : t -> src_basename:string -> section:Section0.t -> string option
+ val of_install_file : string option -> src_basename:string -> section:Section0.t -> t
- include T
+ val explicit : string -> t
+ val compare : t -> t -> Ordering.t
+ val infer : src_basename:string -> Section0.t -> t
+end = struct
- module Map = Map.Make(T)
+ type t = string
+
+ let to_string t = t
+ let explicit t = t
+
+ let compare = compare
+
+ let man_subdir s =
+ let s = match String.drop_suffix ~suffix:".gz" s with
+ | Some s -> s
+ | None -> s
+ in
+ match String.rsplit2 ~on:'.' s with
+ | None -> None
+ | Some (_, "") -> None
+ | Some (_, r) ->
+ match r.[0] with
+ | '1'..'8' as c -> Some (sprintf "man%c" c)
+ | _ -> None
+
+ let infer ~src_basename:p section =
+ match section with
+ | Section0.Man ->
+ begin
+ match man_subdir p with
+ | Some subdir -> Filename.concat subdir p
+ | None -> p
+ end
+ | _ -> p
+
+ let of_install_file t ~src_basename ~section = match t with
+ | None -> infer ~src_basename section
+ | Some s -> s
+
+ let to_install_file t ~src_basename ~section =
+ match t with
+ | s ->
+ let s' = infer ~src_basename section in
+ if String.equal s s'
+ then
+ None
+ else
+ Some s
+
+end
+
+module Section = struct
+ include Section0
+
+ module Map = Map.Make(Section0)
let to_string = function
| Lib -> "lib"
@@ -152,28 +213,15 @@
| Man -> t.man
| Misc -> Exn.code_error "Install.Paths.get" []
- let man_subdir p =
- match Filename.split_extension_after_dot p with
- | (_, "") -> None
- | (_, man_section) -> Some ("man" ^ man_section)
-
let install_path t section p =
- let section_path = get t section in
- match section with
- | Man ->
- begin
- match man_subdir p with
- | Some subdir -> Path.L.relative section_path [subdir; p]
- | None -> Path.relative section_path p
- end
- | _ -> Path.relative section_path p
+ Path.relative (get t section) (Dst.to_string p)
end
end
module Entry = struct
type t =
{ src : Path.t
- ; dst : string option
+ ; dst : Dst.t
; section : Section.t
}
@@ -181,7 +229,7 @@
let c = Path.compare x.src y.src in
if c <> Eq then c
else
- let c = Option.compare String.compare x.dst y.dst in
+ let c = Dst.compare x.dst y.dst in
if c <> Eq then c
else
Section.compare x.section y.section
@@ -205,6 +253,12 @@
else
dst
in
+ let dst = match dst with
+ | None ->
+ Dst.infer ~src_basename:(Path.basename src) section
+ | Some s ->
+ Dst.explicit s
+ in
{ src
; dst
; section
@@ -214,19 +268,7 @@
let relative_installed_path t ~paths =
let main_dir = Section.Paths.get paths t.section in
- let dst =
- match t.dst with
- | Some x -> x
- | None ->
- let dst = Path.basename t.src in
- match t.section with
- | Man -> begin
- match String.rsplit2 dst ~on:'.' with
- | None -> dst
- | Some (_, sec) -> sprintf "man%s/%s" sec dst
- end
- | _ -> dst
- in
+ let dst = Dst.to_string t.dst in
Path.relative main_dir dst
let add_install_prefix t ~paths ~prefix =
@@ -238,7 +280,14 @@
Path.reach i_want_to_install_the_file_as
~from:opam_will_install_in_this_dir
in
- { t with dst = Some dst }
+ { t with dst = Dst.explicit dst }
+
+ let of_install_file ~src ~dst ~section =
+ { src;
+ section;
+ dst = Dst.of_install_file ~section ~src_basename:(Path.basename src) dst;
+ }
+
end
let files entries =
@@ -257,7 +306,9 @@
List.sort ~compare:Entry.compare entries
|> List.iter ~f:(fun (e : Entry.t) ->
let src = Path.to_string e.src in
- match e.dst with
+ match
+ Dst.to_install_file ~src_basename:(Path.basename e.src) ~section:e.section e.dst
+ with
| None -> pr " %S" src
| Some dst -> pr " %S {%S}" src dst);
pr "]");
@@ -299,18 +350,12 @@
| List (_, l) ->
List.map l ~f:(function
| String (_, src) ->
- { Entry.
- src = Path.of_string src
- ; dst = None
- ; section
- }
+ let src = Path.of_string src in
+ Entry.of_install_file ~src ~dst:None ~section
| Option (_, String (_, src),
[String (_, dst)]) ->
- { Entry.
- src = Path.of_string src
- ; dst = Some dst
- ; section
- }
+ let src = Path.of_string src in
+ Entry.of_install_file ~src ~dst:(Some dst) ~section
| v ->
fail (pos_of_opam_value v)
"Invalid value in .install file")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-dune-1.9.1/src/install.mli new/ocaml-dune-1.9.3/src/install.mli
--- old/ocaml-dune-1.9.1/src/install.mli 2019-04-11 06:25:21.000000000 +0200
+++ new/ocaml-dune-1.9.3/src/install.mli 2019-05-06 05:59:29.000000000 +0200
@@ -2,6 +2,10 @@
open! Stdune
+module Dst : sig
+ type t
+end
+
module Section : sig
type t =
| Lib
@@ -51,14 +55,15 @@
-> unit
-> t
- val install_path : t -> section -> string -> Path.t
+ val install_path : t -> section -> Dst.t -> Path.t
end with type section := t
end
module Entry : sig
+
type t = private
{ src : Path.t
- ; dst : string option
+ ; dst : Dst.t
; section : Section.t
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-dune-1.9.1/src/install_rules.ml new/ocaml-dune-1.9.3/src/install_rules.ml
--- old/ocaml-dune-1.9.1/src/install_rules.ml 2019-04-11 06:25:21.000000000 +0200
+++ new/ocaml-dune-1.9.3/src/install_rules.ml 2019-05-06 05:59:29.000000000 +0200
@@ -365,8 +365,7 @@
List.map files ~f:(fun fb ->
let loc = File_binding.Expanded.src_loc fb in
let src = File_binding.Expanded.src fb in
- let dst = Option.map ~f:Path.Local.to_string
- (File_binding.Expanded.dst fb) in
+ let dst = File_binding.Expanded.dst fb in
( Some loc
, Install.Entry.make section src ?dst
)))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-dune-1.9.1/src/lib.ml new/ocaml-dune-1.9.3/src/lib.ml
--- old/ocaml-dune-1.9.1/src/lib.ml 2019-04-11 06:25:21.000000000 +0200
+++ new/ocaml-dune-1.9.3/src/lib.ml 2019-05-06 05:59:29.000000000 +0200
@@ -205,8 +205,9 @@
; resolved_selects : Resolved_select.t list
; user_written_deps : Dune_file.Lib_deps.t
; implements : t Or_exn.t option
- ; (* this field cannot be forced until the library is instantiated *)
+ ; (* these fields cannot be forced until the library is instantiated *)
default_implementation : t Or_exn.t Lazy.t option
+ ; implementations : t Or_exn.t list Variant.Map.t Lazy.t option
; (* This is mutable to avoid this error:
{[
@@ -752,25 +753,27 @@
end
(* Find implementation that matches given variants *)
-let rec find_implementation_for db lib ~variants =
+let find_implementation_for lib ~variants =
+ assert (Option.is_some lib.info.virtual_);
match variants with
| None -> Ok None
| Some (loc, variants_set) ->
- let available_implementations = db.find_implementations lib.name in
- Variant.Set.fold variants_set
- ~init:[]
- ~f:(fun variant acc ->
- List.rev_append acc
- (Variant.Map.Multi.find available_implementations variant))
- |> List.sort_uniq ~compare:(fun (a:Lib_info.t) (b:Lib_info.t) ->
- match Lib_name.compare a.name b.name with
- | Eq -> Path.compare a.src_dir b.src_dir
- | x -> x)
- |> fun x -> match x, db.parent with
- | [], None -> Ok None
- | [], Some db -> find_implementation_for db lib ~variants
- | [elem], _ -> Ok (Some elem)
- | conflict, _ ->
+ let available_implementations =
+ Lazy.force (Option.value_exn lib.implementations)
+ in
+ let* candidates =
+ Variant.Set.fold variants_set
+ ~init:[]
+ ~f:(fun variant acc ->
+ List.rev_append acc
+ (Variant.Map.Multi.find available_implementations variant))
+ |> Result.List.all
+ in
+ match candidates with
+ | [] -> Ok None
+ | [elem] -> Ok (Some elem)
+ | conflict ->
+ let conflict = List.map conflict ~f:(fun lib -> lib.info) in
Error (Error (Multiple_implementations_for_virtual_lib
{ lib = lib.info
; loc
@@ -778,6 +781,16 @@
; conflict
}))
+let find_implementations db name =
+ let rec loop acc db =
+ let implementations = db.find_implementations name in
+ let acc = Variant.Map.Multi.rev_union acc implementations in
+ match db.parent with
+ | None -> acc
+ | Some db -> loop acc db
+ in
+ loop Variant.Map.empty db
+
let rec instantiate db name (info : Lib_info.t) ~stack ~hidden =
let id, stack =
Dep_stack.create_and_push stack name info.src_dir
@@ -803,6 +816,23 @@
in
let default_implementation =
Option.map info.default_implementation ~f:(fun l -> lazy (resolve l)) in
+ let implementations =
+ Option.map info.virtual_ ~f:(fun _ -> lazy (
+ let available_implementations = find_implementations db name in
+ let seen_libs = ref Set.empty in
+ Variant.Map.map available_implementations ~f:(
+ List.filter_map ~f:(fun (impl : Lib_info.t) ->
+ match resolve (impl.loc, impl.name) with
+ | Error _ as e -> Some e
+ | Ok lib ->
+ if Set.mem !seen_libs lib then
+ None
+ else begin
+ seen_libs := Set.add !seen_libs lib;
+ Some (Ok lib)
+ end
+ ))))
+ in
let requires, pps, resolved_selects =
resolve_user_deps db info.requires ~allow_private_deps ~pps:info.pps ~stack
in
@@ -835,6 +865,7 @@
; sub_systems = Sub_system_name.Map.empty
; implements
; default_implementation
+ ; implementations
}
in
t.sub_systems <-
@@ -1026,7 +1057,7 @@
Assertion: libraries is a list of virtual libraries with no implementation.
The goal is to find which libraries can safely be defaulted. *)
-and resolve_default_libraries db libraries ~variants =
+and resolve_default_libraries libraries ~variants =
(* Map from a vlib to vlibs that are implemented in the transitive closure of
its default impl. *)
let vlib_status = Vlib_visit.create () in
@@ -1037,23 +1068,20 @@
| None -> Ok true
| Some x -> let+ x = x in x <> vlib
in
- let name_to_lib (loc, name) =
- resolve_dep db name ~allow_private_deps:true ~loc
- ~stack:Dep_stack.empty
- in
(* Either by variants or by default. *)
let impl_for vlib =
- find_implementation_for db vlib ~variants
- >>| function
- | Some x -> Some (name_to_lib (x.loc, x.name))
- | None -> Option.map ~f:Lazy.force vlib.default_implementation
+ find_implementation_for vlib ~variants >>= function
+ | Some impl -> Ok (Some impl)
+ | None ->
+ begin match vlib.default_implementation with
+ | None -> Ok None
+ | Some d -> Result.map ~f:Option.some (Lazy.force d)
+ end
in
let impl_different_from_vlib_default vlib (impl : lib) =
- impl_for vlib >>= function
- | None -> Ok true
- | Some lib ->
- let+ lib = lib in
- lib <> impl
+ impl_for vlib >>| function
+ | None -> true
+ | Some lib -> lib <> impl
in
let library_is_default lib =
match Map.find !vlib_default_parent lib with
@@ -1096,11 +1124,16 @@
handling virtual lib. *)
Ok ())
in
- (* If the library has an implementation according to variants. *)
- let* impl = impl_for lib in
- Result.Option.iter impl ~f:(visit ~stack:(lib.info :: stack) (Some lib))
- (* If the library is a virtual library with a default
- implementation. *)
+ (* If the library has an implementation according to variants or default
+ impl. *)
+ if Option.is_none lib.info.virtual_ then
+ Ok ()
+ else
+ let* impl = impl_for lib in
+ begin match impl with
+ | None -> Ok ()
+ | Some impl -> visit ~stack:(lib.info :: stack) (Some lib) impl
+ end
)
in
(* For each virtual library we know which vlibs will be implemented when
@@ -1109,10 +1142,6 @@
List.filter_map ~f:library_is_default libraries
and closure_with_overlap_checks db ts ~stack:orig_stack ~linking ~variants =
- let name_to_lib name loc =
- resolve_dep (Option.value_exn db) name
- ~allow_private_deps:true ~loc ~stack:Dep_stack.empty
- in
let visited = ref Map.empty in
let unimplemented = ref Vlib.Unimplemented.empty in
let res = ref [] in
@@ -1165,14 +1194,13 @@
!unimplemented
|> Vlib.Unimplemented.fold ~init:([], []) ~f:(fun lib (lst, def) ->
let* impl =
- find_implementation_for (Option.value_exn db) lib ~variants in
+ find_implementation_for lib ~variants in
match impl, lib.default_implementation with
| None, Some _ ->
Ok (lst, (lib :: def))
| None, None ->
Ok (lst, def)
- | Some (impl_info : Lib_info.t), _ ->
- let* impl = name_to_lib impl_info.name impl_info.loc in
+ | Some (impl : lib), _ ->
Ok (impl :: lst, def))
in
(* Manage unimplemented libraries that have a default implementation. *)
@@ -1180,7 +1208,7 @@
| [], [] ->
Ok ()
| [], def ->
- resolve_default_libraries (Option.value_exn db) def ~variants
+ resolve_default_libraries def ~variants
>>= handle ~stack
| lst, _ ->
handle lst ~stack
@@ -1278,6 +1306,24 @@
(virtual_lib, Variant.Map.of_list_exn [content]))
|> Lib_name.Map.of_list_reduce ~f:Variant.Map.Multi.rev_union
+ (* implementations tagged with a variant are only variant when the they
+ implement a virtual library from the same project. *)
+ let check_valid_implementations (libmap : resolve_result Lib_name.Map.t) =
+ Lib_name.Map.iter libmap ~f:(function
+ | Found (lib : Lib_info.t) ->
+ begin match lib.implements, lib.variant with
+ | Some (loc, implements), Some variant ->
+ if not (Lib_name.Map.mem libmap implements) then
+ Errors.fail loc
+ "Library implementation %a for variant %a implements a library \
+ outside the project. This is forbidden."
+ Lib_name.pp implements Variant.pp variant
+ | _, _ -> ()
+ end
+ | Redirect (_, _) (* skip b/c [Found] covers *) -> ()
+ | Hidden (_, _) -> assert false
+ | Not_found -> assert false)
+
let create_from_library_stanzas ?parent ~lib_config stanzas =
let variant_map =
List.map stanzas ~f:(fun (dir, (conf : Dune_file.Library.t)) ->
@@ -1320,6 +1366,7 @@
(Loc.to_file_colon_line loc1)
(Loc.to_file_colon_line loc2)
in
+ check_valid_implementations map;
create () ?parent
~resolve:(fun name ->
Lib_name.Map.find map name
@@ -1330,11 +1377,11 @@
~all:(fun () -> Lib_name.Map.keys map)
let create_from_findlib ?(external_lib_deps_mode=false) findlib =
- let variant_map =
+ let variant_map = lazy (
Findlib.all_packages findlib
|> List.map ~f:Lib_info.of_dune_lib
|> create_variant_map
- in
+ ) in
create ()
~resolve:(fun name ->
match Findlib.find findlib name with
@@ -1350,7 +1397,7 @@
| Hidden pkg ->
Hidden (Lib_info.of_dune_lib pkg, "unsatisfied 'exist_if'"))
~find_implementations:(fun virt ->
- Lib_name.Map.find variant_map virt
+ Lib_name.Map.find (Lazy.force variant_map) virt
|> Option.value ~default:Variant.Map.empty)
~all:(fun () ->
Findlib.all_packages findlib
@@ -1649,3 +1696,5 @@
~modules:(Some lib_modules)
~main_module_name:(Result.ok_exn (main_module_name lib))
~sub_systems:(Sub_system.dump_config lib)
+
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-dune-1.9.1/test/blackbox-tests/dune.inc new/ocaml-dune-1.9.3/test/blackbox-tests/dune.inc
--- old/ocaml-dune-1.9.1/test/blackbox-tests/dune.inc 2019-04-11 06:25:21.000000000 +0200
+++ new/ocaml-dune-1.9.3/test/blackbox-tests/dune.inc 2019-05-06 05:59:29.000000000 +0200
@@ -604,6 +604,14 @@
(progn (run %{exe:cram.exe} -test run.t) (diff? run.t run.t.corrected)))))
(alias
+ (name github2123)
+ (deps (package dune) (source_tree test-cases/github2123))
+ (action
+ (chdir
+ test-cases/github2123
+ (progn (run %{exe:cram.exe} -test run.t) (diff? run.t run.t.corrected)))))
+
+(alias
(name github24)
(deps (package dune) (source_tree test-cases/github24))
(action
@@ -1337,6 +1345,14 @@
(progn (run %{exe:cram.exe} -test run.t) (diff? run.t run.t.corrected)))))
(alias
+ (name variants-multi-project)
+ (deps (package dune) (source_tree test-cases/variants-multi-project))
+ (action
+ (chdir
+ test-cases/variants-multi-project
+ (progn (run %{exe:cram.exe} -test run.t) (diff? run.t run.t.corrected)))))
+
+(alias
(name vlib)
(deps (package dune) (source_tree test-cases/vlib))
(action
@@ -1462,6 +1478,7 @@
(alias github1946)
(alias github20)
(alias github2033)
+ (alias github2123)
(alias github24)
(alias github25)
(alias github534)
@@ -1549,6 +1566,7 @@
(alias utop)
(alias utop-default)
(alias variants)
+ (alias variants-multi-project)
(alias vlib)
(alias vlib-default-impl)
(alias windows-diff)
@@ -1627,6 +1645,7 @@
(alias github1946)
(alias github20)
(alias github2033)
+ (alias github2123)
(alias github24)
(alias github25)
(alias github534)
@@ -1695,6 +1714,7 @@
(alias unreadable-src)
(alias upgrader)
(alias variants)
+ (alias variants-multi-project)
(alias vlib)
(alias vlib-default-impl)
(alias windows-diff)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/coq/base/dune new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/coq/base/dune
--- old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/coq/base/dune 2019-04-11 06:25:21.000000000 +0200
+++ new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/coq/base/dune 2019-05-06 05:59:29.000000000 +0200
@@ -1,4 +1,4 @@
-(coqlib
+(coq.theory
(name basic)
(public_name base.basic)
(modules :standard)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/coq/ml_lib/theories/dune new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/coq/ml_lib/theories/dune
--- old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/coq/ml_lib/theories/dune 2019-04-11 06:25:21.000000000 +0200
+++ new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/coq/ml_lib/theories/dune 2019-05-06 05:59:29.000000000 +0200
@@ -1,4 +1,4 @@
-(coqlib
+(coq.theory
(name Plugin)
(public_name ml_lib.Plugin)
(synopsis "Test Plugin")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/coq/rec_module/dune new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/coq/rec_module/dune
--- old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/coq/rec_module/dune 2019-04-11 06:25:21.000000000 +0200
+++ new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/coq/rec_module/dune 2019-05-06 05:59:29.000000000 +0200
@@ -1,4 +1,4 @@
-(coqlib
+(coq.theory
(name rec_module)
(public_name rec.module)
(modules :standard)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/coq/run.t new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/coq/run.t
--- old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/coq/run.t 2019-04-11 06:25:21.000000000 +0200
+++ new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/coq/run.t 2019-05-06 05:59:29.000000000 +0200
@@ -32,9 +32,9 @@
$ dune build --root base --display short --debug-dependency-path @default
Entering directory 'base'
lib: [
- "_build/install/default/lib/base/META" {"META"}
- "_build/install/default/lib/base/dune-package" {"dune-package"}
- "_build/install/default/lib/base/opam" {"opam"}
+ "_build/install/default/lib/base/META"
+ "_build/install/default/lib/base/dune-package"
+ "_build/install/default/lib/base/opam"
]
lib_root: [
"_build/install/default/lib/coq/user-contrib/basic/bar.vo" {"coq/user-contrib/basic/bar.vo"}
@@ -44,9 +44,9 @@
$ dune build --root rec_module --display short --debug-dependency-path @default
Entering directory 'rec_module'
lib: [
- "_build/install/default/lib/rec/META" {"META"}
- "_build/install/default/lib/rec/dune-package" {"dune-package"}
- "_build/install/default/lib/rec/opam" {"opam"}
+ "_build/install/default/lib/rec/META"
+ "_build/install/default/lib/rec/dune-package"
+ "_build/install/default/lib/rec/opam"
]
lib_root: [
"_build/install/default/lib/coq/user-contrib/rec_module/a/bar.vo" {"coq/user-contrib/rec_module/a/bar.vo"}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/gen-opam-install-file/run.t new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/gen-opam-install-file/run.t
--- old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/gen-opam-install-file/run.t 2019-04-11 06:25:21.000000000 +0200
+++ new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/gen-opam-install-file/run.t 2019-05-06 05:59:29.000000000 +0200
@@ -6,9 +6,9 @@
Warning: jbuild files are deprecated, please convert this file to a dune file instead.
Note: You can use "dune upgrade" to convert your project to dune.
lib: [
- "_build/install/default/lib/foo/META" {"META"}
- "_build/install/default/lib/foo/dune-package" {"dune-package"}
- "_build/install/default/lib/foo/opam" {"opam"}
+ "_build/install/default/lib/foo/META"
+ "_build/install/default/lib/foo/dune-package"
+ "_build/install/default/lib/foo/opam"
"_build/install/default/lib/foo/ppx_rewriter_dune/foo_ppx_rewriter_dune$ext_lib" {"ppx_rewriter_dune/foo_ppx_rewriter_dune$ext_lib"}
"_build/install/default/lib/foo/ppx_rewriter_dune/foo_ppx_rewriter_dune.cma" {"ppx_rewriter_dune/foo_ppx_rewriter_dune.cma"}
"_build/install/default/lib/foo/ppx_rewriter_dune/foo_ppx_rewriter_dune.cmi" {"ppx_rewriter_dune/foo_ppx_rewriter_dune.cmi"}
@@ -36,20 +36,20 @@
$ dune build --root stubs
Entering directory 'stubs'
lib: [
- "_build/install/default/lib/foo/META" {"META"}
- "_build/install/default/lib/foo/cfoo.h" {"cfoo.h"}
- "_build/install/default/lib/foo/dune-package" {"dune-package"}
- "_build/install/default/lib/foo/foo$ext_lib" {"foo$ext_lib"}
- "_build/install/default/lib/foo/foo.cma" {"foo.cma"}
- "_build/install/default/lib/foo/foo.cmi" {"foo.cmi"}
- "_build/install/default/lib/foo/foo.cmt" {"foo.cmt"}
- "_build/install/default/lib/foo/foo.cmx" {"foo.cmx"}
- "_build/install/default/lib/foo/foo.cmxa" {"foo.cmxa"}
- "_build/install/default/lib/foo/foo.cmxs" {"foo.cmxs"}
- "_build/install/default/lib/foo/foo.js" {"foo.js"}
- "_build/install/default/lib/foo/foo.ml" {"foo.ml"}
- "_build/install/default/lib/foo/libfoo_stubs$ext_lib" {"libfoo_stubs$ext_lib"}
- "_build/install/default/lib/foo/opam" {"opam"}
+ "_build/install/default/lib/foo/META"
+ "_build/install/default/lib/foo/cfoo.h"
+ "_build/install/default/lib/foo/dune-package"
+ "_build/install/default/lib/foo/foo$ext_lib"
+ "_build/install/default/lib/foo/foo.cma"
+ "_build/install/default/lib/foo/foo.cmi"
+ "_build/install/default/lib/foo/foo.cmt"
+ "_build/install/default/lib/foo/foo.cmx"
+ "_build/install/default/lib/foo/foo.cmxa"
+ "_build/install/default/lib/foo/foo.cmxs"
+ "_build/install/default/lib/foo/foo.js"
+ "_build/install/default/lib/foo/foo.ml"
+ "_build/install/default/lib/foo/libfoo_stubs$ext_lib"
+ "_build/install/default/lib/foo/opam"
]
stublibs: [
"_build/install/default/lib/stublibs/dllfoo_stubs$ext_dll"
@@ -60,12 +60,12 @@
$ dune build --root install-stanza
Entering directory 'install-stanza'
lib: [
- "_build/install/default/lib/foo/META" {"META"}
- "_build/install/default/lib/foo/dune-package" {"dune-package"}
- "_build/install/default/lib/foo/opam" {"opam"}
+ "_build/install/default/lib/foo/META"
+ "_build/install/default/lib/foo/dune-package"
+ "_build/install/default/lib/foo/opam"
]
share: [
- "_build/install/default/share/foo/foobar" {"foobar"}
+ "_build/install/default/share/foo/foobar"
"_build/install/default/share/foo/share1"
]
@@ -74,12 +74,12 @@
$ dune build --root exe
Entering directory 'exe'
lib: [
- "_build/install/default/lib/foo/META" {"META"}
- "_build/install/default/lib/foo/dune-package" {"dune-package"}
- "_build/install/default/lib/foo/opam" {"opam"}
+ "_build/install/default/lib/foo/META"
+ "_build/install/default/lib/foo/dune-package"
+ "_build/install/default/lib/foo/opam"
]
bin: [
- "_build/install/default/bin/bar" {"bar"}
+ "_build/install/default/bin/bar"
]
mld files are installed
@@ -87,9 +87,9 @@
$ dune build --root mld
Entering directory 'mld'
lib: [
- "_build/install/default/lib/foo/META" {"META"}
- "_build/install/default/lib/foo/dune-package" {"dune-package"}
- "_build/install/default/lib/foo/opam" {"opam"}
+ "_build/install/default/lib/foo/META"
+ "_build/install/default/lib/foo/dune-package"
+ "_build/install/default/lib/foo/opam"
]
doc: [
"_build/install/default/doc/foo/odoc-pages/doc.mld" {"odoc-pages/doc.mld"}
@@ -100,19 +100,19 @@
$ dune build --root lib-unwrapped
Entering directory 'lib-unwrapped'
lib: [
- "_build/install/default/lib/foo/META" {"META"}
- "_build/install/default/lib/foo/dune-package" {"dune-package"}
- "_build/install/default/lib/foo/foo$ext_lib" {"foo$ext_lib"}
- "_build/install/default/lib/foo/foo.cma" {"foo.cma"}
- "_build/install/default/lib/foo/foo.cmi" {"foo.cmi"}
- "_build/install/default/lib/foo/foo.cmt" {"foo.cmt"}
- "_build/install/default/lib/foo/foo.cmti" {"foo.cmti"}
- "_build/install/default/lib/foo/foo.cmx" {"foo.cmx"}
- "_build/install/default/lib/foo/foo.cmxa" {"foo.cmxa"}
- "_build/install/default/lib/foo/foo.cmxs" {"foo.cmxs"}
- "_build/install/default/lib/foo/foo.ml" {"foo.ml"}
- "_build/install/default/lib/foo/foo.mli" {"foo.mli"}
- "_build/install/default/lib/foo/opam" {"opam"}
+ "_build/install/default/lib/foo/META"
+ "_build/install/default/lib/foo/dune-package"
+ "_build/install/default/lib/foo/foo$ext_lib"
+ "_build/install/default/lib/foo/foo.cma"
+ "_build/install/default/lib/foo/foo.cmi"
+ "_build/install/default/lib/foo/foo.cmt"
+ "_build/install/default/lib/foo/foo.cmti"
+ "_build/install/default/lib/foo/foo.cmx"
+ "_build/install/default/lib/foo/foo.cmxa"
+ "_build/install/default/lib/foo/foo.cmxs"
+ "_build/install/default/lib/foo/foo.ml"
+ "_build/install/default/lib/foo/foo.mli"
+ "_build/install/default/lib/foo/opam"
]
wrapped lib with lib interface module
@@ -120,27 +120,27 @@
$ dune build --root lib-wrapped-alias
Entering directory 'lib-wrapped-alias'
lib: [
- "_build/install/default/lib/foo/META" {"META"}
- "_build/install/default/lib/foo/bar.ml" {"bar.ml"}
- "_build/install/default/lib/foo/bar.mli" {"bar.mli"}
- "_build/install/default/lib/foo/dune-package" {"dune-package"}
- "_build/install/default/lib/foo/foo$ext_lib" {"foo$ext_lib"}
- "_build/install/default/lib/foo/foo.cma" {"foo.cma"}
- "_build/install/default/lib/foo/foo.cmi" {"foo.cmi"}
- "_build/install/default/lib/foo/foo.cmt" {"foo.cmt"}
- "_build/install/default/lib/foo/foo.cmx" {"foo.cmx"}
- "_build/install/default/lib/foo/foo.cmxa" {"foo.cmxa"}
- "_build/install/default/lib/foo/foo.cmxs" {"foo.cmxs"}
- "_build/install/default/lib/foo/foo.ml" {"foo.ml"}
- "_build/install/default/lib/foo/foo__.cmi" {"foo__.cmi"}
- "_build/install/default/lib/foo/foo__.cmt" {"foo__.cmt"}
- "_build/install/default/lib/foo/foo__.cmx" {"foo__.cmx"}
- "_build/install/default/lib/foo/foo__.ml" {"foo__.ml"}
- "_build/install/default/lib/foo/foo__Bar.cmi" {"foo__Bar.cmi"}
- "_build/install/default/lib/foo/foo__Bar.cmt" {"foo__Bar.cmt"}
- "_build/install/default/lib/foo/foo__Bar.cmti" {"foo__Bar.cmti"}
- "_build/install/default/lib/foo/foo__Bar.cmx" {"foo__Bar.cmx"}
- "_build/install/default/lib/foo/opam" {"opam"}
+ "_build/install/default/lib/foo/META"
+ "_build/install/default/lib/foo/bar.ml"
+ "_build/install/default/lib/foo/bar.mli"
+ "_build/install/default/lib/foo/dune-package"
+ "_build/install/default/lib/foo/foo$ext_lib"
+ "_build/install/default/lib/foo/foo.cma"
+ "_build/install/default/lib/foo/foo.cmi"
+ "_build/install/default/lib/foo/foo.cmt"
+ "_build/install/default/lib/foo/foo.cmx"
+ "_build/install/default/lib/foo/foo.cmxa"
+ "_build/install/default/lib/foo/foo.cmxs"
+ "_build/install/default/lib/foo/foo.ml"
+ "_build/install/default/lib/foo/foo__.cmi"
+ "_build/install/default/lib/foo/foo__.cmt"
+ "_build/install/default/lib/foo/foo__.cmx"
+ "_build/install/default/lib/foo/foo__.ml"
+ "_build/install/default/lib/foo/foo__Bar.cmi"
+ "_build/install/default/lib/foo/foo__Bar.cmt"
+ "_build/install/default/lib/foo/foo__Bar.cmti"
+ "_build/install/default/lib/foo/foo__Bar.cmx"
+ "_build/install/default/lib/foo/opam"
]
wrapped lib without lib interface module
@@ -148,21 +148,21 @@
$ dune build --root lib-wrapped-no-alias
Entering directory 'lib-wrapped-no-alias'
lib: [
- "_build/install/default/lib/foo/META" {"META"}
- "_build/install/default/lib/foo/bar.ml" {"bar.ml"}
- "_build/install/default/lib/foo/bar.mli" {"bar.mli"}
- "_build/install/default/lib/foo/dune-package" {"dune-package"}
- "_build/install/default/lib/foo/foo$ext_lib" {"foo$ext_lib"}
- "_build/install/default/lib/foo/foo.cma" {"foo.cma"}
- "_build/install/default/lib/foo/foo.cmi" {"foo.cmi"}
- "_build/install/default/lib/foo/foo.cmt" {"foo.cmt"}
- "_build/install/default/lib/foo/foo.cmx" {"foo.cmx"}
- "_build/install/default/lib/foo/foo.cmxa" {"foo.cmxa"}
- "_build/install/default/lib/foo/foo.cmxs" {"foo.cmxs"}
- "_build/install/default/lib/foo/foo.ml" {"foo.ml"}
- "_build/install/default/lib/foo/foo__Bar.cmi" {"foo__Bar.cmi"}
- "_build/install/default/lib/foo/foo__Bar.cmt" {"foo__Bar.cmt"}
- "_build/install/default/lib/foo/foo__Bar.cmti" {"foo__Bar.cmti"}
- "_build/install/default/lib/foo/foo__Bar.cmx" {"foo__Bar.cmx"}
- "_build/install/default/lib/foo/opam" {"opam"}
+ "_build/install/default/lib/foo/META"
+ "_build/install/default/lib/foo/bar.ml"
+ "_build/install/default/lib/foo/bar.mli"
+ "_build/install/default/lib/foo/dune-package"
+ "_build/install/default/lib/foo/foo$ext_lib"
+ "_build/install/default/lib/foo/foo.cma"
+ "_build/install/default/lib/foo/foo.cmi"
+ "_build/install/default/lib/foo/foo.cmt"
+ "_build/install/default/lib/foo/foo.cmx"
+ "_build/install/default/lib/foo/foo.cmxa"
+ "_build/install/default/lib/foo/foo.cmxs"
+ "_build/install/default/lib/foo/foo.ml"
+ "_build/install/default/lib/foo/foo__Bar.cmi"
+ "_build/install/default/lib/foo/foo__Bar.cmt"
+ "_build/install/default/lib/foo/foo__Bar.cmti"
+ "_build/install/default/lib/foo/foo__Bar.cmx"
+ "_build/install/default/lib/foo/opam"
]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/github2123/dune new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/github2123/dune
--- old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/github2123/dune 1970-01-01 01:00:00.000000000 +0100
+++ new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/github2123/dune 2019-05-06 05:59:29.000000000 +0200
@@ -0,0 +1,3 @@
+(install
+ (section lib)
+ (files (mirage-xen.pc as ../pkgconfig/mirage-xen.pc)))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/github2123/dune-project new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/github2123/dune-project
--- old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/github2123/dune-project 1970-01-01 01:00:00.000000000 +0100
+++ new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/github2123/dune-project 2019-05-06 05:59:29.000000000 +0200
@@ -0,0 +1 @@
+(lang dune 1.9)
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/github2123/run.t new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/github2123/run.t
--- old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/github2123/run.t 1970-01-01 01:00:00.000000000 +0100
+++ new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/github2123/run.t 2019-05-06 05:59:29.000000000 +0200
@@ -0,0 +1,3 @@
+ $ dune build @install
+ $ cat foo.install | grep mirage-xen
+ "_build/install/default/lib/pkgconfig/mirage-xen.pc" {"../pkgconfig/mirage-xen.pc"}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/install-with-var/dune new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/install-with-var/dune
--- old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/install-with-var/dune 2019-04-11 06:25:21.000000000 +0200
+++ new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/install-with-var/dune 1970-01-01 01:00:00.000000000 +0100
@@ -1,4 +0,0 @@
-(install
- (section man)
- (files (a-man-page.1 as a-man-page.%{context_name}.1) another-man-page.3)
-)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/install-with-var/run.t new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/install-with-var/run.t
--- old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/install-with-var/run.t 2019-04-11 06:25:21.000000000 +0200
+++ new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/install-with-var/run.t 2019-05-06 05:59:29.000000000 +0200
@@ -1,10 +1,26 @@
`dune install` should handle destination directories that don't exist
+ $ cat > dune < (install
+ > (section man)
+ > (files
+ > (man-page-a.1 as man-page-a.%{context_name}.1) ; incorrect usage!
+ > (man-page-b.1 as man1/man-page-b.%{context_name}.1)
+ > another-man-page.3)
+ > )
+ > EOF
+
$ dune build @install
$ dune install --prefix install --libdir lib
Installing install/lib/foo/META
Installing install/lib/foo/dune-package
Installing install/lib/foo/opam
- Installing install/man/man1/a-man-page.default.1
+ Installing install/man/man-page-a.default.1
+ Installing install/man/man1/man-page-b.default.1
Installing install/man/man3/another-man-page.3
+ $ cat foo.install | grep man
+ man: [
+ "_build/install/default/man/man-page-a.default.1" {"man-page-a.default.1"}
+ "_build/install/default/man/man1/man-page-b.default.1"
+ "_build/install/default/man/man3/another-man-page.3"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/private-modules/run.t new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/private-modules/run.t
--- old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/private-modules/run.t 2019-04-11 06:25:21.000000000 +0200
+++ new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/private-modules/run.t 2019-05-06 05:59:29.000000000 +0200
@@ -17,6 +17,6 @@
"_build/install/default/lib/lib/foo/priv2.cmt" {"foo/priv2.cmt"}
"_build/install/default/lib/lib/foo/priv2.cmx" {"foo/priv2.cmx"}
"_build/install/default/lib/lib/foo/priv2.ml" {"foo/priv2.ml"}
- "_build/install/default/lib/lib/lib__Priv.cmt" {"lib__Priv.cmt"}
- "_build/install/default/lib/lib/lib__Priv.cmx" {"lib__Priv.cmx"}
- "_build/install/default/lib/lib/priv.ml" {"priv.ml"}
+ "_build/install/default/lib/lib/lib__Priv.cmt"
+ "_build/install/default/lib/lib/lib__Priv.cmx"
+ "_build/install/default/lib/lib/priv.ml"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/reason/run.t new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/reason/run.t
--- old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/reason/run.t 2019-04-11 06:25:21.000000000 +0200
+++ new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/reason/run.t 2019-05-06 05:59:29.000000000 +0200
@@ -5,50 +5,50 @@
Bar
Foo
lib: [
- "_build/install/default/lib/rlib/META" {"META"}
- "_build/install/default/lib/rlib/bar.mli" {"bar.mli"}
- "_build/install/default/lib/rlib/bar.re" {"bar.re"}
- "_build/install/default/lib/rlib/cppome.re" {"cppome.re"}
- "_build/install/default/lib/rlib/cppome.rei" {"cppome.rei"}
- "_build/install/default/lib/rlib/dune-package" {"dune-package"}
- "_build/install/default/lib/rlib/foo.ml" {"foo.ml"}
- "_build/install/default/lib/rlib/foo.rei" {"foo.rei"}
- "_build/install/default/lib/rlib/hello.re" {"hello.re"}
- "_build/install/default/lib/rlib/hello.rei" {"hello.rei"}
- "_build/install/default/lib/rlib/opam" {"opam"}
- "_build/install/default/lib/rlib/pped.re" {"pped.re"}
- "_build/install/default/lib/rlib/pped.rei" {"pped.rei"}
- "_build/install/default/lib/rlib/rlib$ext_lib" {"rlib$ext_lib"}
- "_build/install/default/lib/rlib/rlib.cma" {"rlib.cma"}
- "_build/install/default/lib/rlib/rlib.cmi" {"rlib.cmi"}
- "_build/install/default/lib/rlib/rlib.cmt" {"rlib.cmt"}
- "_build/install/default/lib/rlib/rlib.cmx" {"rlib.cmx"}
- "_build/install/default/lib/rlib/rlib.cmxa" {"rlib.cmxa"}
- "_build/install/default/lib/rlib/rlib.cmxs" {"rlib.cmxs"}
- "_build/install/default/lib/rlib/rlib.ml" {"rlib.ml"}
- "_build/install/default/lib/rlib/rlib__Bar.cmi" {"rlib__Bar.cmi"}
- "_build/install/default/lib/rlib/rlib__Bar.cmt" {"rlib__Bar.cmt"}
- "_build/install/default/lib/rlib/rlib__Bar.cmti" {"rlib__Bar.cmti"}
- "_build/install/default/lib/rlib/rlib__Bar.cmx" {"rlib__Bar.cmx"}
- "_build/install/default/lib/rlib/rlib__Cppome.cmi" {"rlib__Cppome.cmi"}
- "_build/install/default/lib/rlib/rlib__Cppome.cmt" {"rlib__Cppome.cmt"}
- "_build/install/default/lib/rlib/rlib__Cppome.cmti" {"rlib__Cppome.cmti"}
- "_build/install/default/lib/rlib/rlib__Cppome.cmx" {"rlib__Cppome.cmx"}
- "_build/install/default/lib/rlib/rlib__Foo.cmi" {"rlib__Foo.cmi"}
- "_build/install/default/lib/rlib/rlib__Foo.cmt" {"rlib__Foo.cmt"}
- "_build/install/default/lib/rlib/rlib__Foo.cmti" {"rlib__Foo.cmti"}
- "_build/install/default/lib/rlib/rlib__Foo.cmx" {"rlib__Foo.cmx"}
- "_build/install/default/lib/rlib/rlib__Hello.cmi" {"rlib__Hello.cmi"}
- "_build/install/default/lib/rlib/rlib__Hello.cmt" {"rlib__Hello.cmt"}
- "_build/install/default/lib/rlib/rlib__Hello.cmti" {"rlib__Hello.cmti"}
- "_build/install/default/lib/rlib/rlib__Hello.cmx" {"rlib__Hello.cmx"}
- "_build/install/default/lib/rlib/rlib__Pped.cmi" {"rlib__Pped.cmi"}
- "_build/install/default/lib/rlib/rlib__Pped.cmt" {"rlib__Pped.cmt"}
- "_build/install/default/lib/rlib/rlib__Pped.cmti" {"rlib__Pped.cmti"}
- "_build/install/default/lib/rlib/rlib__Pped.cmx" {"rlib__Pped.cmx"}
+ "_build/install/default/lib/rlib/META"
+ "_build/install/default/lib/rlib/bar.mli"
+ "_build/install/default/lib/rlib/bar.re"
+ "_build/install/default/lib/rlib/cppome.re"
+ "_build/install/default/lib/rlib/cppome.rei"
+ "_build/install/default/lib/rlib/dune-package"
+ "_build/install/default/lib/rlib/foo.ml"
+ "_build/install/default/lib/rlib/foo.rei"
+ "_build/install/default/lib/rlib/hello.re"
+ "_build/install/default/lib/rlib/hello.rei"
+ "_build/install/default/lib/rlib/opam"
+ "_build/install/default/lib/rlib/pped.re"
+ "_build/install/default/lib/rlib/pped.rei"
+ "_build/install/default/lib/rlib/rlib$ext_lib"
+ "_build/install/default/lib/rlib/rlib.cma"
+ "_build/install/default/lib/rlib/rlib.cmi"
+ "_build/install/default/lib/rlib/rlib.cmt"
+ "_build/install/default/lib/rlib/rlib.cmx"
+ "_build/install/default/lib/rlib/rlib.cmxa"
+ "_build/install/default/lib/rlib/rlib.cmxs"
+ "_build/install/default/lib/rlib/rlib.ml"
+ "_build/install/default/lib/rlib/rlib__Bar.cmi"
+ "_build/install/default/lib/rlib/rlib__Bar.cmt"
+ "_build/install/default/lib/rlib/rlib__Bar.cmti"
+ "_build/install/default/lib/rlib/rlib__Bar.cmx"
+ "_build/install/default/lib/rlib/rlib__Cppome.cmi"
+ "_build/install/default/lib/rlib/rlib__Cppome.cmt"
+ "_build/install/default/lib/rlib/rlib__Cppome.cmti"
+ "_build/install/default/lib/rlib/rlib__Cppome.cmx"
+ "_build/install/default/lib/rlib/rlib__Foo.cmi"
+ "_build/install/default/lib/rlib/rlib__Foo.cmt"
+ "_build/install/default/lib/rlib/rlib__Foo.cmti"
+ "_build/install/default/lib/rlib/rlib__Foo.cmx"
+ "_build/install/default/lib/rlib/rlib__Hello.cmi"
+ "_build/install/default/lib/rlib/rlib__Hello.cmt"
+ "_build/install/default/lib/rlib/rlib__Hello.cmti"
+ "_build/install/default/lib/rlib/rlib__Hello.cmx"
+ "_build/install/default/lib/rlib/rlib__Pped.cmi"
+ "_build/install/default/lib/rlib/rlib__Pped.cmt"
+ "_build/install/default/lib/rlib/rlib__Pped.cmti"
+ "_build/install/default/lib/rlib/rlib__Pped.cmx"
]
bin: [
- "_build/install/default/bin/refmt" {"refmt"}
+ "_build/install/default/bin/refmt"
]
virtual libraries in reason
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/toplevel-stanza/variants/dune-project new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/toplevel-stanza/variants/dune-project
--- old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/toplevel-stanza/variants/dune-project 2019-04-11 06:25:21.000000000 +0200
+++ new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/toplevel-stanza/variants/dune-project 2019-05-06 05:59:29.000000000 +0200
@@ -1 +1,2 @@
-(lang dune 1.9)
\ No newline at end of file
+(lang dune 1.9)
+(using library_variants 0.1)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/variants/dune-package/dune-project new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/variants/dune-package/dune-project
--- old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/variants/dune-package/dune-project 2019-04-11 06:25:21.000000000 +0200
+++ new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/variants/dune-package/dune-project 2019-05-06 05:59:29.000000000 +0200
@@ -1,2 +1,3 @@
(lang dune 1.9)
(name a)
+(using library_variants 0.1)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/variants/external/exe/dune-project new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/variants/external/exe/dune-project
--- old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/variants/external/exe/dune-project 2019-04-11 06:25:21.000000000 +0200
+++ new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/variants/external/exe/dune-project 2019-05-06 05:59:29.000000000 +0200
@@ -1 +1,2 @@
-(lang dune 1.9)
\ No newline at end of file
+(lang dune 1.9)
+(using library_variants 0.1)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/variants/external/lib/dune-project new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/variants/external/lib/dune-project
--- old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/variants/external/lib/dune-project 2019-04-11 06:25:21.000000000 +0200
+++ new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/variants/external/lib/dune-project 2019-05-06 05:59:29.000000000 +0200
@@ -1 +1,2 @@
-(lang dune 1.9)
\ No newline at end of file
+(lang dune 1.9)
+(using library_variants 0.1)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/variants/multiple-implementations-for-variants/dune-project new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/variants/multiple-implementations-for-variants/dune-project
--- old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/variants/multiple-implementations-for-variants/dune-project 2019-04-11 06:25:21.000000000 +0200
+++ new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/variants/multiple-implementations-for-variants/dune-project 2019-05-06 05:59:29.000000000 +0200
@@ -1,2 +1,3 @@
(lang dune 1.9)
(using fmt 1.1)
+(using library_variants 0.1)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/variants/resolution-priority/dune-project new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/variants/resolution-priority/dune-project
--- old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/variants/resolution-priority/dune-project 2019-04-11 06:25:21.000000000 +0200
+++ new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/variants/resolution-priority/dune-project 2019-05-06 05:59:29.000000000 +0200
@@ -1 +1,2 @@
-(lang dune 1.9)
\ No newline at end of file
+(lang dune 1.9)
+(using library_variants 0.1)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/variants/same-lib-in-multiple-scopes/dune-project new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/variants/same-lib-in-multiple-scopes/dune-project
--- old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/variants/same-lib-in-multiple-scopes/dune-project 2019-04-11 06:25:21.000000000 +0200
+++ new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/variants/same-lib-in-multiple-scopes/dune-project 2019-05-06 05:59:29.000000000 +0200
@@ -1 +1,2 @@
-(lang dune 1.9)
\ No newline at end of file
+(lang dune 1.9)
+(using library_variants 0.1)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/variants/same-lib-in-multiple-scopes/test/dune-project new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/variants/same-lib-in-multiple-scopes/test/dune-project
--- old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/variants/same-lib-in-multiple-scopes/test/dune-project 2019-04-11 06:25:21.000000000 +0200
+++ new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/variants/same-lib-in-multiple-scopes/test/dune-project 2019-05-06 05:59:29.000000000 +0200
@@ -1 +1,2 @@
-(lang dune 1.9)
\ No newline at end of file
+(lang dune 1.9)
+(using library_variants 0.1)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/variants/variant-not-implementation/dune-project new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/variants/variant-not-implementation/dune-project
--- old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/variants/variant-not-implementation/dune-project 2019-04-11 06:25:21.000000000 +0200
+++ new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/variants/variant-not-implementation/dune-project 2019-05-06 05:59:29.000000000 +0200
@@ -1 +1,2 @@
-(lang dune 1.9)
\ No newline at end of file
+(lang dune 1.9)
+(using library_variants 0.1)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/variants/variant-with-concrete-impl/dune-project new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/variants/variant-with-concrete-impl/dune-project
--- old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/variants/variant-with-concrete-impl/dune-project 2019-04-11 06:25:21.000000000 +0200
+++ new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/variants/variant-with-concrete-impl/dune-project 2019-05-06 05:59:29.000000000 +0200
@@ -1 +1,2 @@
-(lang dune 1.9)
\ No newline at end of file
+(lang dune 1.9)
+(using library_variants 0.1)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/variants/variants-base/dune-project new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/variants/variants-base/dune-project
--- old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/variants/variants-base/dune-project 2019-04-11 06:25:21.000000000 +0200
+++ new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/variants/variants-base/dune-project 2019-05-06 05:59:29.000000000 +0200
@@ -1 +1,2 @@
-(lang dune 1.9)
\ No newline at end of file
+(lang dune 1.9)
+(using library_variants 0.1)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/variants-multi-project/prj1/dune new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/variants-multi-project/prj1/dune
--- old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/variants-multi-project/prj1/dune 1970-01-01 01:00:00.000000000 +0100
+++ new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/variants-multi-project/prj1/dune 2019-05-06 05:59:29.000000000 +0200
@@ -0,0 +1,4 @@
+(library
+ (name vlibfoo)
+ (public_name vlibfoo)
+ (virtual_modules vlibfoo))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/variants-multi-project/prj1/dune-project new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/variants-multi-project/prj1/dune-project
--- old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/variants-multi-project/prj1/dune-project 1970-01-01 01:00:00.000000000 +0100
+++ new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/variants-multi-project/prj1/dune-project 2019-05-06 05:59:29.000000000 +0200
@@ -0,0 +1,2 @@
+(lang dune 1.9)
+(using library_variants 0.1)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/variants-multi-project/prj1/vlibfoo.mli new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/variants-multi-project/prj1/vlibfoo.mli
--- old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/variants-multi-project/prj1/vlibfoo.mli 1970-01-01 01:00:00.000000000 +0100
+++ new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/variants-multi-project/prj1/vlibfoo.mli 2019-05-06 05:59:29.000000000 +0200
@@ -0,0 +1 @@
+val implme : unit -> unit
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/variants-multi-project/prj2/dune new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/variants-multi-project/prj2/dune
--- old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/variants-multi-project/prj2/dune 1970-01-01 01:00:00.000000000 +0100
+++ new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/variants-multi-project/prj2/dune 2019-05-06 05:59:29.000000000 +0200
@@ -0,0 +1,5 @@
+(library
+ (name impl)
+ (public_name impl)
+ (implements vlibfoo)
+ (variant somevariant))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/variants-multi-project/prj2/dune-project new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/variants-multi-project/prj2/dune-project
--- old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/variants-multi-project/prj2/dune-project 1970-01-01 01:00:00.000000000 +0100
+++ new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/variants-multi-project/prj2/dune-project 2019-05-06 05:59:29.000000000 +0200
@@ -0,0 +1,2 @@
+(lang dune 1.9)
+(using library_variants 0.1)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/variants-multi-project/prj2/vlibfoo.ml new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/variants-multi-project/prj2/vlibfoo.ml
--- old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/variants-multi-project/prj2/vlibfoo.ml 1970-01-01 01:00:00.000000000 +0100
+++ new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/variants-multi-project/prj2/vlibfoo.ml 2019-05-06 05:59:29.000000000 +0200
@@ -0,0 +1 @@
+let implme () = print_endline "foobar"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/variants-multi-project/run.t new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/variants-multi-project/run.t
--- old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/variants-multi-project/run.t 1970-01-01 01:00:00.000000000 +0100
+++ new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/variants-multi-project/run.t 2019-05-06 05:59:29.000000000 +0200
@@ -0,0 +1,9 @@
+Implementation of library from another project is not allowed when tagged with
+variant.
+
+ $ dune build
+ File "prj2/dune", line 4, characters 13-20:
+ 4 | (implements vlibfoo)
+ ^^^^^^^
+ Error: Library implementation vlibfoo for variant "somevariant" implements a library outside the project. This is forbidden.
+ [1]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/vlib/run.t new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/vlib/run.t
--- old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/vlib/run.t 2019-04-11 06:25:21.000000000 +0200
+++ new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/vlib/run.t 2019-05-06 05:59:29.000000000 +0200
@@ -165,35 +165,35 @@
$ dune build --root install-file
Entering directory 'install-file'
lib: [
- "_build/install/default/lib/vlib/META" {"META"}
- "_build/install/default/lib/vlib/dune-package" {"dune-package"}
- "_build/install/default/lib/vlib/foo.mli" {"foo.mli"}
- "_build/install/default/lib/vlib/opam" {"opam"}
- "_build/install/default/lib/vlib/vlib.cmi" {"vlib.cmi"}
- "_build/install/default/lib/vlib/vlib.cmo" {"vlib.cmo"}
- "_build/install/default/lib/vlib/vlib.cmt" {"vlib.cmt"}
- "_build/install/default/lib/vlib/vlib.cmx" {"vlib.cmx"}
- "_build/install/default/lib/vlib/vlib.ml" {"vlib.ml"}
- "_build/install/default/lib/vlib/vlib$ext_obj" {"vlib$ext_obj"}
- "_build/install/default/lib/vlib/vlib__Foo.cmi" {"vlib__Foo.cmi"}
- "_build/install/default/lib/vlib/vlib__Foo.cmti" {"vlib__Foo.cmti"}
+ "_build/install/default/lib/vlib/META"
+ "_build/install/default/lib/vlib/dune-package"
+ "_build/install/default/lib/vlib/foo.mli"
+ "_build/install/default/lib/vlib/opam"
+ "_build/install/default/lib/vlib/vlib.cmi"
+ "_build/install/default/lib/vlib/vlib.cmo"
+ "_build/install/default/lib/vlib/vlib.cmt"
+ "_build/install/default/lib/vlib/vlib.cmx"
+ "_build/install/default/lib/vlib/vlib.ml"
+ "_build/install/default/lib/vlib/vlib$ext_obj"
+ "_build/install/default/lib/vlib/vlib__Foo.cmi"
+ "_build/install/default/lib/vlib/vlib__Foo.cmti"
]
lib: [
- "_build/install/default/lib/impl/META" {"META"}
- "_build/install/default/lib/impl/dune-package" {"dune-package"}
- "_build/install/default/lib/impl/foo.ml" {"foo.ml"}
- "_build/install/default/lib/impl/impl$ext_lib" {"impl$ext_lib"}
- "_build/install/default/lib/impl/impl.cma" {"impl.cma"}
- "_build/install/default/lib/impl/impl.cmxa" {"impl.cmxa"}
- "_build/install/default/lib/impl/impl.cmxs" {"impl.cmxs"}
- "_build/install/default/lib/impl/opam" {"opam"}
- "_build/install/default/lib/impl/vlib__Foo.cmi" {"vlib__Foo.cmi"}
- "_build/install/default/lib/impl/vlib__Foo.cmt" {"vlib__Foo.cmt"}
- "_build/install/default/lib/impl/vlib__Foo.cmx" {"vlib__Foo.cmx"}
- "_build/install/default/lib/impl/vlib__impl__.cmi" {"vlib__impl__.cmi"}
- "_build/install/default/lib/impl/vlib__impl__.cmt" {"vlib__impl__.cmt"}
- "_build/install/default/lib/impl/vlib__impl__.cmx" {"vlib__impl__.cmx"}
- "_build/install/default/lib/impl/vlib__impl__.ml" {"vlib__impl__.ml"}
+ "_build/install/default/lib/impl/META"
+ "_build/install/default/lib/impl/dune-package"
+ "_build/install/default/lib/impl/foo.ml"
+ "_build/install/default/lib/impl/impl$ext_lib"
+ "_build/install/default/lib/impl/impl.cma"
+ "_build/install/default/lib/impl/impl.cmxa"
+ "_build/install/default/lib/impl/impl.cmxs"
+ "_build/install/default/lib/impl/opam"
+ "_build/install/default/lib/impl/vlib__Foo.cmi"
+ "_build/install/default/lib/impl/vlib__Foo.cmt"
+ "_build/install/default/lib/impl/vlib__Foo.cmx"
+ "_build/install/default/lib/impl/vlib__impl__.cmi"
+ "_build/install/default/lib/impl/vlib__impl__.cmt"
+ "_build/install/default/lib/impl/vlib__impl__.cmx"
+ "_build/install/default/lib/impl/vlib__impl__.ml"
]
Implementations may refer to virtual library's modules
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/vlib-default-impl/default-impl/dune-project new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/vlib-default-impl/default-impl/dune-project
--- old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/vlib-default-impl/default-impl/dune-project 2019-04-11 06:25:21.000000000 +0200
+++ new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/vlib-default-impl/default-impl/dune-project 2019-05-06 05:59:29.000000000 +0200
@@ -1 +1,2 @@
-(lang dune 1.9)
\ No newline at end of file
+(lang dune 1.9)
+(using library_variants 0.1)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/vlib-default-impl/default-impl-not-virtual-lib/dune-project new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/vlib-default-impl/default-impl-not-virtual-lib/dune-project
--- old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/vlib-default-impl/default-impl-not-virtual-lib/dune-project 2019-04-11 06:25:21.000000000 +0200
+++ new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/vlib-default-impl/default-impl-not-virtual-lib/dune-project 2019-05-06 05:59:29.000000000 +0200
@@ -1 +1,2 @@
-(lang dune 1.9)
\ No newline at end of file
+(lang dune 1.9)
+(using library_variants 0.1)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/vlib-default-impl/dependency-cycle/dune-project new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/vlib-default-impl/dependency-cycle/dune-project
--- old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/vlib-default-impl/dependency-cycle/dune-project 2019-04-11 06:25:21.000000000 +0200
+++ new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/vlib-default-impl/dependency-cycle/dune-project 2019-05-06 05:59:29.000000000 +0200
@@ -1 +1,2 @@
-(lang dune 1.9)
\ No newline at end of file
+(lang dune 1.9)
+(using library_variants 0.1)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/vlib-default-impl/dune-package/dune-project new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/vlib-default-impl/dune-package/dune-project
--- old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/vlib-default-impl/dune-package/dune-project 2019-04-11 06:25:21.000000000 +0200
+++ new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/vlib-default-impl/dune-package/dune-project 2019-05-06 05:59:29.000000000 +0200
@@ -1,2 +1,3 @@
(lang dune 1.9)
(name a)
+(using library_variants 0.1)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/vlib-default-impl/external/exe/dune-project new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/vlib-default-impl/external/exe/dune-project
--- old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/vlib-default-impl/external/exe/dune-project 2019-04-11 06:25:21.000000000 +0200
+++ new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/vlib-default-impl/external/exe/dune-project 2019-05-06 05:59:29.000000000 +0200
@@ -1 +1,2 @@
-(lang dune 1.9)
\ No newline at end of file
+(lang dune 1.9)
+(using library_variants 0.1)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/vlib-default-impl/external/lib/dune-project new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/vlib-default-impl/external/lib/dune-project
--- old/ocaml-dune-1.9.1/test/blackbox-tests/test-cases/vlib-default-impl/external/lib/dune-project 2019-04-11 06:25:21.000000000 +0200
+++ new/ocaml-dune-1.9.3/test/blackbox-tests/test-cases/vlib-default-impl/external/lib/dune-project 2019-05-06 05:59:29.000000000 +0200
@@ -1 +1,2 @@
-(lang dune 1.9)
\ No newline at end of file
+(lang dune 1.9)
+(using library_variants 0.1)