From a70382a6dde42f8aa9d25b995c6761998c79e393 Mon Sep 17 00:00:00 2001 From: Erwan Jahier <erwan.jahier@univ-grenoble-alpes.fr> Date: Wed, 25 Jan 2023 10:54:28 +0100 Subject: [PATCH] feat: try to build the .cmxs (via make) in case of a dynlink error --- lib/sasacore/simuState.ml | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/lib/sasacore/simuState.ml b/lib/sasacore/simuState.ml index eaa88394..aaa67170 100644 --- a/lib/sasacore/simuState.ml +++ b/lib/sasacore/simuState.ml @@ -1,4 +1,4 @@ -(* Time-stamp: <modified the 19/01/2023 (at 11:08) by Erwan Jahier> *) +(* Time-stamp: <modified the 25/01/2023 (at 10:47) by Erwan Jahier> *) open Register open Topology @@ -179,7 +179,7 @@ let (env_rif_decl: SasArg.t -> 'v Process.t list -> string) = (List.map (fun (base, tstr) -> Printf.sprintf "\"%s\":%s" base tstr) ssl) -let (make : bool -> string array -> 'v t) = +let rec (make : bool -> string array -> 'v t) = fun dynlink argv -> let args = try SasArg.parse argv; @@ -335,10 +335,14 @@ let (make : bool -> string array -> 'v t) = } with | Dynlink.Error e -> - Printf.eprintf " [sasa] Error when dynlinking (Sasacore.make): %s\n%!" - (Dynlink.error_message e); - flush_all(); - exit 2 + let res = Sys.command (Printf.sprintf "make %s.cmxs"(Filename.remove_extension args.topo)) in + if res = 0 then make dynlink argv else ( + Printf.eprintf " [sasa] %s\n%!" + (Dynlink.error_message e); + Printf.eprintf " [sasa] It looks like you didn't compile your Ocaml algorithm.\n%!"; + flush_all(); + exit res + ) | e -> Printf.eprintf " [sasa] Error (Sasacore.make): %s\n%!" (Printexc.to_string e); flush_all(); -- GitLab