Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update opam-format to opam-file-format new type definition #4298

Merged
merged 6 commits into from
Dec 1, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .travis-ci.sh
Original file line number Diff line number Diff line change
Expand Up @@ -418,7 +418,7 @@ fi
# The SHA is fixed so that upstream changes shouldn't affect CI. The SHA needs
# to be moved forwards when a new version of OCaml is added to ensure that the
# ocaml-system package is available at the correct version.
opam init --bare default git+https://github.com/ocaml/opam-repository#$OPAM_REPO_SHA
opam init --bare default git+https://github.com/ocaml/opam-repository#$OPAM_TEST_REPO_SHA
opam switch create default ocaml-system
eval $(opam env)
opam install lwt
Expand Down
3 changes: 2 additions & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,8 @@ env:
global:
- OPAMBSVERSION=2.1.0-alpha2
# This should be identical to the value in appveyor.yml
- OPAM_REPO_SHA=6877131f0
- OPAM_REPO_SHA=88c17a663
- OPAM_TEST_REPO_SHA=6877131f0

jobs:
include:
Expand Down
3 changes: 2 additions & 1 deletion appveyor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@ environment:
CYG_MIRROR: http://mirrors.kernel.org/sourceware/cygwin/
DEP_MODE: lib-ext
# This should be identical to the value in .travis.yml
OPAM_REPO_SHA: 6877131f0
OPAM_REPO_SHA: 88c17a663
OPAM_TEST_REPO_SHA: 6877131f0
matrix:
- CYG_ROOT: cygwin
CYG_ARCH: x86
Expand Down
2 changes: 1 addition & 1 deletion appveyor_test.sh
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#!/bin/bash

opam init -y -a --compiler=ocaml.4.11.1 git+https://github.com/ocaml/opam-repository#$OPAM_REPO_SHA
opam init -y -a --compiler=ocaml.4.11.1 git+https://github.com/ocaml/opam-repository#$OPAM_TEST_REPO_SHA
eval $(opam config env)
opam install -y -v ocamlfind
3 changes: 3 additions & 0 deletions master_changes.md
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,9 @@ New option/command/subcommand are prefixed with ◈.
## State
*

# Opam file format
* Update opam-format lib to opam-file-format end position and new type definition [#4298 @rjbou]

## Solver
* Fix missing conflict message when trying to remove required packages [#4362 @AltGr]
* Fix the Z3 backend for upgrades [#4393 @AltGr]
Expand Down
2 changes: 1 addition & 1 deletion opam-format.opam
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,6 @@ build: [
depends: [
"ocaml" {>= "4.02.3"}
"opam-core" {= version}
"opam-file-format" {>= "2.0.0~rc2"}
"opam-file-format" {>= "2.1.1"}
"dune" {>= "1.5.0"}
]
1 change: 1 addition & 0 deletions src/client/opamAction.ml
Original file line number Diff line number Diff line change
Expand Up @@ -404,6 +404,7 @@ let prepare_package_source st nv dir =
prepare_package_build (OpamPackageVar.resolve ~opam st) opam nv dir

let compilation_env t opam =
let open OpamParserTypes in
OpamEnv.get_full ~force_path:true t ~updates:([
"CDPATH", Eq, "", Some "shell env sanitization";
"MAKEFLAGS", Eq, "", Some "make env sanitization";
Expand Down
2 changes: 2 additions & 0 deletions src/client/opamArg.ml
Original file line number Diff line number Diff line change
Expand Up @@ -619,6 +619,8 @@ let atom_or_dir =
parse, print

let dep_formula =
let module OpamParser = OpamParser.FullPos in
let module OpamPrinter = OpamPrinter.FullPos in
let pp = OpamFormat.V.(package_formula `Conj (constraints version)) in
let parse str =
try
Expand Down
3 changes: 2 additions & 1 deletion src/client/opamCliMain.ml
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,8 @@ let check_and_run_external_commands () =
let env =
if has_init then
let updates =
["PATH", PlusEq, OpamFilename.Dir.to_string plugins_bin, None]
["PATH", OpamParserTypes.PlusEq,
OpamFilename.Dir.to_string plugins_bin, None]
in
OpamStateConfig.init ~root_dir ();
match OpamStateConfig.get_switch_opt () with
Expand Down
17 changes: 11 additions & 6 deletions src/client/opamConfigCommand.ml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
let log fmt = OpamConsole.log "CONFIG" fmt
let slog = OpamConsole.slog

open OpamParserTypes.FullPos
open OpamTypes
open OpamTypesBase
open OpamStateTypes
Expand Down Expand Up @@ -371,6 +372,9 @@ let switch_doc switch =
Printf.sprintf "switch %s"
(OpamConsole.colorise `bold (OpamSwitch.to_string switch))

module OpamParser = OpamParser.FullPos
module OpamPrinter = OpamPrinter.FullPos

(* General setting option function. Takes the [field] to update, the [value]
operation, [conf] the configuration according the config file (['config
confest]). If [inner] is set, it allows the modification of [InModifiable]
Expand Down Expand Up @@ -727,10 +731,10 @@ let set_var_global gt var value =
stv_find = (fun (k,_,_) -> k = var);
stv_config = gt.config;
stv_varstr = (fun v ->
OpamPrinter.Normalise.value (List (pos_null, [
Ident (pos_null, OpamVariable.to_string var);
String (pos_null, v);
String (pos_null, "Set through 'opam var'")
OpamPrinter.Normalise.value (nullify_pos @@ List (nullify_pos @@ [
nullify_pos @@ Ident (OpamVariable.to_string var);
nullify_pos @@ String v;
nullify_pos @@ String "Set through 'opam config set-var global'"
])));
stv_set_opt = (fun config value ->
let gt =
Expand All @@ -756,8 +760,9 @@ let set_var_switch gt ?st var value =
stv_varstr = (fun v ->
OpamStd.String.remove_suffix ~suffix:"\n" @@
OpamPrinter.Normalise.items
[Variable
(pos_null, OpamVariable.to_string var, String (pos_null, v))]);
[ nullify_pos @@ Variable
(nullify_pos @@ OpamVariable.to_string var,
nullify_pos @@ String v)]);
stv_set_opt = (fun swc value ->
set_opt_switch_t ~inner:true gt switch swc "variables" value);
stv_remove_elem = (fun rest switch_config ->
Expand Down
59 changes: 30 additions & 29 deletions src/client/opamListCommand.ml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
(**************************************************************************)

open OpamCompat
open OpamParserTypes.FullPos
open OpamTypes
open OpamStateTypes
open OpamStd.Op
Expand Down Expand Up @@ -176,22 +177,20 @@ let rec value_strings value =
let module SS = OpamStd.String.Set in
match value with
| Bool _ | Int _ -> SS.empty
| Ident (_, s) -> SS.singleton s
| String (_, s) -> SS.singleton s
| Relop (_, _, v1, v2)
| Logop (_, _, v1, v2)
| Env_binding (_, v1, _, v2) ->
SS.union (value_strings v1) (value_strings v2)
| Prefix_relop (_, _, v)
| Pfxop (_, _, v) ->
value_strings v
| List (_, l)
| Group (_, l) ->
List.fold_left (fun acc v -> SS.union acc (value_strings v))
SS.empty l
| Option (_, v, vl) ->
List.fold_left (fun acc v -> SS.union acc (value_strings v))
(value_strings v) vl
| Ident s -> SS.singleton s
| String s -> SS.singleton s
| Relop (_, v1, v2)
| Logop (_, v1, v2)
| Env_binding (v1, _, v2) ->
SS.union (value_strings v1.pelem) (value_strings v2.pelem)
| Prefix_relop (_, v) | Pfxop (_, v) ->
value_strings v.pelem
| List l | Group l ->
List.fold_left (fun acc v -> SS.union acc (value_strings v.pelem))
SS.empty l.pelem
| Option (v, vl) ->
List.fold_left (fun acc v -> SS.union acc (value_strings v.pelem))
(value_strings v.pelem) vl.pelem

let pattern_selector patterns =
let name_patt =
Expand Down Expand Up @@ -283,13 +282,14 @@ let apply_selector ~base st = function
let content_strings nv =
let opam = get_opam st nv in
if psel.fields = [] then
List.map (fun (_,v) -> value_strings v) (OpamFile.OPAM.to_list opam)
List.map (fun (_,v) -> value_strings v.pelem)
(OpamFile.OPAM.to_list opam)
else
try
List.map
(fun f -> match OpamFile.OPAM.print_field_as_syntax f opam with
| None -> OpamStd.String.Set.empty
| Some v -> value_strings v)
| Some v -> value_strings v.pelem)
psel.fields
with Not_found ->
OpamConsole.error_and_exit `Bad_arguments
Expand Down Expand Up @@ -326,10 +326,10 @@ let apply_selector ~base st = function
(try
let root = st.switch_global.root in
let switch =
List.find (fun sw ->
OpamFilename.remove_prefix (OpamPath.Switch.root root sw) file
<> OpamFilename.to_string file)
(OpamFile.Config.installed_switches st.switch_global.config)
List.find (fun sw ->
OpamFilename.remove_prefix (OpamPath.Switch.root root sw) file
<> OpamFilename.to_string file)
(OpamFile.Config.installed_switches st.switch_global.config)
in
let rel_name =
OpamFilename.remove_prefix (OpamPath.Switch.root root switch) file
Expand Down Expand Up @@ -483,14 +483,15 @@ let version_color st nv =
(if is_available nv then [] else [`crossed;`red])

let mini_field_printer ?(prettify=false) ?(normalise=false) =
let module OpamPrinter = OpamPrinter.FullPos in
if normalise then OpamPrinter.Normalise.value else
function
| String (_, s) when prettify -> s
| List (_, l) when prettify &&
List.for_all (function String _ -> true | _ -> false) l ->
OpamStd.List.concat_map ", " (function String (_, s) -> s | _ -> assert false) l
| List (_, l) -> OpamPrinter.value_list l
| f -> OpamPrinter.Normalise.value f
fun v -> match v.pelem with
| String s when prettify -> s
| List l when prettify &&
List.for_all (function {pelem=String _;_} -> true | _ -> false) l.pelem ->
OpamStd.List.concat_map ", " (function {pelem=String s;_} -> s | _ -> assert false) l.pelem
| List l -> OpamPrinter.value_list l
| _ -> OpamPrinter.Normalise.value v

let detail_printer ?prettify ?normalise ?(sort=false) st nv =
let open OpamStd.Option.Op in
Expand Down
1 change: 1 addition & 0 deletions src/client/opamListCommand.mli
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@

(** Functions handling the "opam list" subcommand *)

open OpamParserTypes.FullPos
open OpamTypes
open OpamStateTypes

Expand Down
Loading