X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=src%2Fmain.ml;h=ba4a1958d4743ce34b97a58157897fd044707167;hb=a70987f316ab4b948bf941ddea8fb6ccef09da4f;hp=9890dbaa08a35bfe1b08dd1cb861e51cf5fa9827;hpb=0aead2922062dc8a4e7dc88fe7776f92ac6c232a;p=goals.git diff --git a/src/main.ml b/src/main.ml index 9890dba..ba4a195 100644 --- a/src/main.ml +++ b/src/main.ml @@ -77,13 +77,19 @@ let main () = if Cmdline.debug_flag () then Ast.print_env stderr env; - (* Run the target expressions. *) - Run.run_targets_to_completion env targets + (* Construct the dependency DAG with the root(s) being the targets. *) + let dag = Deps.create env targets in + + (* Run the jobs. *) + let state = Deps.new_state dag Run.goal_runner Run.exists_runner in + let next_job () = Deps.next_job state in + let retire_job job = Deps.retire_job state job in + let string_of_job job = Deps.string_of_job job in + Jobs.run next_job retire_job string_of_job let () = try main () with | Failure msg | Sys_error msg -> - Run.stop_all (); prerr_endline ("*** error: " ^ msg); exit 1