Commit 48685ba9 authored by François Bobot's avatar François Bobot

Autodetection: new semantic of provers-detection-data.conf

Don't use anymore the family argument.

1) For every block, for every executable call the prover using the
version switch and add the prover to the configuration if the version
match one of the version_ok or version_old but none of the version_bad
2) We consider that an executable name which appears in a block, but
which version isn't a version_ok, version_old or version_bad has an
unknown version
3) For every executable which have an unknown version, we add the
prover using the first block that contains it.

So the order of the block is used only when the version of an
executable appears in none of the block.

A block with more than one exec fields is now the same thing than if
you split the block into blocks containing one field.

New message field that allows to print a message when a prover is
detected. If a message is not present, we print ", Ok." if the version
is good (version_good) and not old, and " (it is an old version)." if
the version is old (version_old).

The field command can be missing in a block, in that case the block
defines a version known to be buggy: no prover config is generated.
parent 36d297f2
[ATP alt-ergo-model]
[ATP alt-ergo]
name = "Alt-Ergo"
exec = "alt-ergo"
exec = "alt-ergo-0.95-dev"
version_switch = "-version"
version_regexp = "\\([0-9.]+\\(-dev\\)?\\)"
version_ok = "0.95-dev"
version_bad = "0.94"
version_bad = "0.93.1"
version_bad = "0.93"
version_bad = "0.92.3"
version_bad = "0.92.2"
version_bad = "0.92.1"
version_bad = "0.92"
version_bad = "0.91"
version_bad = "0.9"
version_bad = "0.8"
command = "'@LOCALBIN@why3-cpulimit' %T %m -s %e -timelimit %t -model %f"
driver = "drivers/alt_ergo_model.drv"
editor = "altgr-ergo"
......@@ -26,15 +16,6 @@ exec = "alt-ergo-0.94"
version_switch = "-version"
version_regexp = "\\([0-9.]+\\)"
version_ok = "0.94"
version_bad = "0.93.1"
version_bad = "0.93"
version_bad = "0.92.3"
version_bad = "0.92.2"
version_bad = "0.92.1"
version_bad = "0.92"
version_bad = "0.91"
version_bad = "0.9"
version_bad = "0.8"
command = "'@LOCALBIN@why3-cpulimit' %t %m -s %e %f"
driver = "drivers/alt_ergo.drv"
editor = "altgr-ergo"
......@@ -48,13 +29,6 @@ version_switch = "-version"
version_regexp = "\\([0-9.]+\\)"
version_ok = "0.93.1"
version_ok = "0.93"
version_bad = "0.92.3"
version_bad = "0.92.2"
version_bad = "0.92.1"
version_bad = "0.92"
version_bad = "0.91"
version_bad = "0.9"
version_bad = "0.8"
command = "'@LOCALBIN@why3-cpulimit' %t %m -s %e %f"
driver = "drivers/alt_ergo_0.93.drv"
......@@ -81,7 +55,7 @@ version_old = "0.8"
command = "'@LOCALBIN@why3-cpulimit' %t %m -s %e %f"
driver = "drivers/alt_ergo_bare.drv"
[ATP cvc3-2.4]
[ATP cvc3]
name = "CVC3"
exec = "cvc3"
exec = "cvc3-2.4.1"
......@@ -90,21 +64,17 @@ version_switch = "-version"
version_regexp = "This is CVC3 version \\([^ \n]+\\)"
version_ok = "2.4.1"
version_old = "2.4"
version_bad = "2.2"
version_bad = "2.1"
# the -timeout option is unreliable in CVC3 2.4.1
command = "'@LOCALBIN@why3-cpulimit' %t %m -s %e %f"
driver = "drivers/cvc3.drv"
[ATP cvc3-2.2]
[ATP cvc3]
name = "CVC3"
exec = "cvc3"
exec = "cvc3-2.2"
exec = "cvc3-2.1"
version_switch = "-version"
version_regexp = "This is CVC3 version \\([^ \n]+\\)"
version_bad = "2.4.1"
version_bad = "2.4"
version_ok = "2.2"
version_old = "2.1"
# we pass time 0 to why3-cpulimit to avoid race
......@@ -157,7 +127,7 @@ version_old = "0.11.2"
command = "'@LOCALBIN@why3-cpulimit' %t %m -s %e -Eprecision=70"
driver = "drivers/gappa.drv"
[ATP gappa016dev]
[ATP gappa]
name = "Gappa+dev"
exec = "gappa-0.16.0+dev"
version_switch = "--version"
......@@ -166,7 +136,7 @@ version_ok = "0.16.0"
command = "'@LOCALBIN@why3-cpulimit' %t %m -s %e -Eprecision=70"
driver = "drivers/gappa.drv"
[ATP gappa015]
[ATP gappa]
name = "Gappa"
exec = "gappa-0.15.1"
version_switch = "--version"
......@@ -175,7 +145,7 @@ version_ok = "0.15.1"
command = "'@LOCALBIN@why3-cpulimit' %t %m -s %e -Eprecision=70"
driver = "drivers/gappa.drv"
[ATP gappa014]
[ATP gappa]
name = "Gappa"
exec = "gappa-0.14.1"
version_switch = "--version"
......@@ -226,27 +196,17 @@ version_regexp = "Version: \\([^ \n\r]+\\)"
command = "'@LOCALBIN@why3-cpulimit' %t %m -s %e %f"
driver = "drivers/verit.drv"
[ATP z3-4]
[ATP z3]
name = "Z3"
exec = "z3"
exec = "z3-4.0"
version_switch = "-version"
version_regexp = "Z3 version \\([^ \n\r]+\\)"
version_ok = "4.0"
version_bad = "3.2"
version_bad = "3.1"
version_bad = "3.0"
version_bad = "2.19"
version_bad = "2.18"
version_bad = "2.17"
version_bad = "2.16"
version_bad = "2.2"
version_bad = "2.1"
version_bad = "1.3"
driver = "drivers/z3.drv"
command = "'@LOCALBIN@why3-cpulimit' %t %m -s %e -smt2 -rs:42 %f"
[ATP z3-3]
[ATP z3]
name = "Z3"
exec = "z3"
exec = "z3-3.2"
......@@ -254,22 +214,14 @@ exec = "z3-3.1"
exec = "z3-3.0"
version_switch = "-version"
version_regexp = "Z3 version \\([^ \n\r]+\\)"
version_bad = "4.0"
version_ok = "3.2"
version_old = "3.1"
version_old = "3.0"
version_bad = "2.19"
version_bad = "2.18"
version_bad = "2.17"
version_bad = "2.16"
version_bad = "2.2"
version_bad = "2.1"
version_bad = "1.3"
driver = "drivers/z3.drv"
# the -T is unreliable in Z3 3.2
command = "'@LOCALBIN@why3-cpulimit' %t %m -s %e -smt2 -rs:42 %f"
[ATP z3-2]
[ATP z3]
name = "Z3"
exec = "z3"
exec = "z3-2.19"
......@@ -278,17 +230,10 @@ exec = "z3-2.17"
exec = "z3-2.16"
version_switch = "-version"
version_regexp = "Z3 version \\([^ \n\r]+\\)"
version_bad = "4.0"
version_bad = "3.2"
version_bad = "3.1"
version_bad = "3.0"
version_ok = "2.19"
version_old = "2.18"
version_old = "2.17"
version_old = "2.16"
version_bad = "2.2"
version_bad = "2.1"
version_bad = "1.3"
driver = "drivers/z3.drv"
command = "'@LOCALBIN@why3-cpulimit' %t %m -s %e -smt2 -rs:42 \
PHASE_SELECTION=0 \
......@@ -310,7 +255,7 @@ DELAY_UNITS_THRESHOLD=16 \
#ASYNC_COMMANDS=false
#NNF_SK_HACK=true
[ATP z3-2]
[ATP z3]
name = "Z3"
exec = "z3"
exec = "z3-2.2"
......@@ -318,9 +263,6 @@ exec = "z3-2.1"
exec = "z3-1.3"
version_switch = "-version"
version_regexp = "Z3 version \\([^ \n\r]+\\)"
version_bad = "3.2"
version_bad = "3.1"
version_bad = "3.0"
version_old = "2.2"
version_old = "2.1"
version_old = "1.3"
......@@ -337,6 +279,15 @@ version_ok = "8.3pl3"
version_ok = "8.3pl2"
version_ok = "8.3pl1"
version_ok = "8.3"
command = "'@LOCALBIN@why3-cpulimit' 0 %m -s %e -I %l/coq-tactic -R %l/coq Why3 -l %f"
driver = "drivers/coq.drv"
editor = "coqide"
[ITP coq]
name = "Coq"
exec = "coqtop -batch"
version_switch = "-v"
version_regexp = "The Coq Proof Assistant, version \\([^ \n]+\\)"
version_old = "8.2pl2"
version_old = "8.2pl1"
version_old = "8.2"
......
......@@ -70,7 +70,7 @@ let option_list = Arg.align [
(let id = ref "" in
[Arg.Set_string id;
Arg.String (fun name -> Queue.add (!id, name) prover_bins)]),
"<id> <file> Add a new prover executable";
"<id><file> Add a new prover executable";
"--list-prover-ids", Arg.Set opt_list_prover_ids,
" List known prover families";
"--install-plugin", Arg.String add_plugin,
......
This diff is collapsed.
......@@ -228,9 +228,12 @@ let padd_string c s i =
then String.sub s 0 i
else s
(** usefule function on char *)
(** useful function on char *)
let is_uppercase c = 'A' <= c && c <= 'Z'
let concat_non_empty sep l =
String.concat sep (List.filter (fun s -> s <> "") l)
(* Set and Map on ints and strings *)
module Int = struct type t = int let compare = Pervasives.compare end
......
......@@ -155,6 +155,8 @@ val ends_with : string -> string -> bool
val padd_string : char -> string -> int -> string
(** extract or padd the given string in order to have the given length *)
val concat_non_empty : string -> string list -> string
(* useful function on char *)
val is_uppercase : char -> bool
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment