@@ -91,22 +91,59 @@ let default_build_command =
9191 subst
9292 promote_install_files
9393 install)))
94+ and from_3_23 ~with_subst ~with_sites ~runtest =
95+ let subst = if with_subst then {| [ " dune" " subst" ] {dev} | } else " " in
96+ let promote_install_files =
97+ if with_sites then {| " --promote-install-files=false" | } else " "
98+ in
99+ let install =
100+ if with_sites
101+ then {| [ " dune" " install" " -p" name " --create-install-files" name ] | }
102+ else " "
103+ in
104+ lazy
105+ (Opam_file. parse_value
106+ (Lexbuf. from_string
107+ ~fname: " <internal>"
108+ (Printf. sprintf
109+ {|
110+ [
111+ % s
112+ [ " dune" " build" " -p" name " -j" jobs % s
113+ " %s" {with - test}
114+ " @doc" {with - doc}
115+ ]
116+ % s
117+ ]
118+ | }
119+ subst
120+ promote_install_files
121+ runtest
122+ install)))
94123 in
95- fun project ->
124+ fun project package ->
125+ let version = Dune_project. dune_version project in
126+ let with_subst = Toggle. enabled (snd (Dune_project. subst_config project)) in
127+ let with_sites = Dune_project. (is_extension_set project dune_site_extension) in
96128 Lazy. force
97- (let version = Dune_project. dune_version project in
98- if version < (1 , 11 )
129+ (if version < (1 , 11 )
99130 then before_1_11
100131 else if version < (2 , 7 )
101132 then from_1_11_before_2_7
102133 else if version < (2 , 9 )
103134 then from_2_7
104135 else if version < (3 , 0 )
105136 then from_2_9
106- else
107- from_3_0
108- ~with_subst: (Toggle. enabled (snd (Dune_project. subst_config project)))
109- ~with_sites: Dune_project. (is_extension_set project dune_site_extension))
137+ else if version < (3 , 23 )
138+ then from_3_0 ~with_subst ~with_sites
139+ else (
140+ match Package. exclusive_dir package with
141+ | None -> from_3_0 ~with_subst ~with_sites
142+ | Some (_loc , dir ) ->
143+ from_3_23
144+ ~with_subst
145+ ~with_sites
146+ ~runtest: (" @runtest/" ^ Path.Source. to_string dir)))
110147;;
111148
112149let var_of_sw sw : Package_constraint.Value.t =
@@ -291,7 +328,9 @@ let opam_fields project (package : Package.t) =
291328 | None | Some [] -> None
292329 | Some (_ :: _ as v ) -> Some (k, string_list v))
293330 in
294- let fields = [ " opam-version" , string " 2.0" ; " build" , default_build_command project ] in
331+ let fields =
332+ [ " opam-version" , string " 2.0" ; " build" , default_build_command project package ]
333+ in
295334 let fields = List. concat [ fields; list_fields; optional_fields; package_fields ] in
296335 if dune_version < (1 , 11 ) then fields else Opam_file.Create. normalise_field_order fields
297336;;
0 commit comments