Skip to content

Commit 945a14f

Browse files
authored
Merge pull request #5983 from dra27/defined-filter
Don't display undefined variable warnings when evaluating the `?` operator
2 parents 936cf1e + 01c317d commit 945a14f

File tree

3 files changed

+39
-10
lines changed

3 files changed

+39
-10
lines changed

master_changes.md

+1
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ users)
5151
## Var/Option
5252

5353
## Update / Upgrade
54+
* [BUG] Stop triggering "Undefined filter variable variable" warning for `?variable` [#5983 @dra27]
5455

5556
## Tree
5657
* [BUG] Fix `opam tree --with-*` assigning the `with-*` variables to unrequested packages [#5919 @kit-ty-kate @rjbou - fix #5755]

src/state/opamSwitchState.ml

+20-10
Original file line numberDiff line numberDiff line change
@@ -884,8 +884,17 @@ let avoid_version st nv =
884884
has_avoid_flag)
885885
+! false)
886886

887+
let undefined_filter_variable nv v =
888+
(if OpamFormatConfig.(!r.strict) then
889+
OpamConsole.error_and_exit `File_error
890+
"Undefined filter variable %s in dependencies of %s"
891+
else
892+
log
893+
"ERR: Undefined filter variable %s in dependencies of %s")
894+
(OpamVariable.Full.to_string v) (OpamPackage.to_string nv)
895+
887896
let package_env_t st ~force_dev_deps ~test ~doc ~dev_setup
888-
~requested_allpkgs nv v =
897+
~requested_allpkgs ?(err_undefined=true) nv v =
889898
if List.mem v OpamPackageVar.predefined_depends_variables then
890899
match OpamVariable.Full.to_string v with
891900
| "dev" ->
@@ -899,19 +908,17 @@ let package_env_t st ~force_dev_deps ~test ~doc ~dev_setup
899908
| _ -> None (* Computation delayed to the solver *)
900909
else
901910
let r = OpamPackageVar.resolve_switch ~package:nv st v in
902-
if r = None then
903-
(if OpamFormatConfig.(!r.strict) then
904-
OpamConsole.error_and_exit `File_error
905-
"Undefined filter variable %s in dependencies of %s"
906-
else
907-
log
908-
"ERR: Undefined filter variable %s in dependencies of %s")
909-
(OpamVariable.Full.to_string v) (OpamPackage.to_string nv);
911+
if err_undefined && r = None then
912+
undefined_filter_variable nv v;
910913
r
911914

912915
let get_dependencies_t st ~force_dev_deps ~test ~doc ~dev_setup
913916
~requested_allpkgs deps opams =
914917
let filter_undefined nv =
918+
let warn_undefined v =
919+
if not (List.mem v OpamPackageVar.predefined_depends_variables) then
920+
undefined_filter_variable nv v
921+
in
915922
OpamFormula.map (fun (name, fc) ->
916923
let fc =
917924
OpamFormula.map (function
@@ -923,6 +930,9 @@ let get_dependencies_t st ~force_dev_deps ~test ~doc ~dev_setup
923930
"Undefined filter variable %s in dependencies of %s"
924931
(OpamVariable.to_string v) (OpamPackage.to_string nv);
925932
Atom (Filter (FBool false))
933+
| (Filter filter) as f ->
934+
List.iter warn_undefined (OpamFilter.variables filter);
935+
Atom f
926936
| f -> Atom f)
927937
fc
928938
in
@@ -931,7 +941,7 @@ let get_dependencies_t st ~force_dev_deps ~test ~doc ~dev_setup
931941
OpamPackage.Map.mapi (fun nv opam ->
932942
OpamFilter.partial_filter_formula
933943
(package_env_t st ~force_dev_deps ~test ~doc
934-
~dev_setup ~requested_allpkgs nv)
944+
~dev_setup ~requested_allpkgs ~err_undefined:false nv)
935945
(deps opam)
936946
|> filter_undefined nv) opams
937947

tests/reftests/resolve-variables.test

+18
Original file line numberDiff line numberDiff line change
@@ -81,3 +81,21 @@ The following actions will be performed:
8181
-> installed d.4
8282
-> installed foo.1
8383
Done.
84+
### OPAMYES=1 OPAMSTRICT=1
85+
### <REPO2/packages/undef/undef.1/opam>
86+
opam-version: "2.0"
87+
depends: "d" {?undefined-global & undefined-global != ""}
88+
### <REPO2/repo>
89+
opam-version: "2.0"
90+
### opam switch create undefined-globals --empty
91+
### opam repository add second ./REPO2 --this-switch
92+
[second] Initialised
93+
### opam repo remove default --this-switch
94+
### opam install undef
95+
The following actions will be performed:
96+
=== install 1 package
97+
- install undef 1
98+
99+
<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><>
100+
-> installed undef.1
101+
Done.

0 commit comments

Comments
 (0)