diff -r 84f716e72fa3 -r d115d50a19c0 src/Pure/ML/ml_statistics.scala --- a/src/Pure/ML/ml_statistics.scala Fri Aug 07 22:28:04 2020 +0200 +++ b/src/Pure/ML/ml_statistics.scala Fri Aug 07 22:57:14 2020 +0200 @@ -28,6 +28,7 @@ /* monitor process */ def monitor(pid: Long, + stats_dir: String = "", delay: Time = Time.seconds(0.5), consume: Properties.T => Unit = Console.println) { @@ -42,7 +43,10 @@ if (props.nonEmpty) consume(props) } - Bash.process("exec \"$POLYML_EXE\" -q --use src/Pure/ML/ml_statistics.ML --eval " + + val env_prefix = + if (stats_dir.isEmpty) "" else "export POLYSTATSDIR=" + Bash.string(stats_dir) + "\n" + + Bash.process(env_prefix + "exec \"$POLYML_EXE\" -q --use src/Pure/ML/ml_statistics.ML --eval " + Bash.string("ML_Statistics.monitor " + ML_Syntax.print_long(pid) + " " + ML_Syntax.print_double(delay.seconds)), cwd = Path.explode("~~").file) @@ -79,8 +83,11 @@ private def ml_statistics(msg: Prover.Protocol_Output): Boolean = synchronized { msg.properties match { - case Markup.ML_Statistics(pid) => - monitoring = Future.thread("ML_statistics") { monitor(pid, consume = consume) } + case Markup.ML_Statistics(pid, stats_dir) => + monitoring = + Future.thread("ML_statistics") { + monitor(pid, stats_dir = stats_dir, consume = consume) + } true case _ => false }