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 <[email protected]> + +- 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 <module_prefix>) (public_name <package.lib_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 <<EOF + > (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)
