diff inst/import_ufl_FunctionSpace.m @ 231:e3f57f92fa66

Avoid just-in-time compilation when not needed * inst/private/check_hash.m: check whether the previous compilation used the same ufl file * inst/private/save_hash.m: save to disk ufl file's md5sum for future comparison * inst/private/check_oct_files.m: ensure the expected oct files are present * inst/import_ufl_*.m: add checks using the logic above
author Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
date Sat, 14 Jun 2014 15:27:43 +0200
parents 0de6ca5e31a2
children 072aee55bb75
line wrap: on
line diff
--- a/inst/import_ufl_FunctionSpace.m	Fri Jun 13 18:45:40 2014 +0200
+++ b/inst/import_ufl_FunctionSpace.m	Sat Jun 14 15:27:43 2014 +0200
@@ -33,24 +33,27 @@
     error ("import_ufl_FunctionSpace: first argument is not a valid string");
   endif
 
-  n = length (mfilename ("fullpath")) - length (mfilename());
-  path = strtrunc(mfilename ("fullpath"), n);
+  if (check_hash (var_prob) || ! check_oct_files (var_prob, "FunctionSpace"))
+    n = length (mfilename ("fullpath")) - length (mfilename());
+    path = strtrunc(mfilename ("fullpath"), n);
 
-  private = fullfile (path, "include/");
-  output = generate_fs (var_prob);
-  output += generate_makefile (var_prob, private);
-  if output != 0
-    error ("Compilation failed");
-  else
-    [output, textfile] = system (sprintf ("make -f Makefile_%s fs", var_prob));
+    private = fullfile (path, "include/");
+    output = generate_fs (var_prob);
+    output += generate_makefile (var_prob, private);
     if output != 0
-      display (text);
       error ("Compilation failed");
-    endif
-    [output, textfile] = system (sprintf ("make -f Makefile_%s clean", var_prob));
-    if output != 0
-      display (text);
-      error ("Compilation failed");
+    else
+      [output, textfile] = system (sprintf ("make -f Makefile_%s fs", var_prob));
+      if output != 0
+        display (text);
+        error ("Compilation failed");
+      endif
+      [output, textfile] = system (sprintf ("make -f Makefile_%s clean", var_prob));
+      if output != 0
+        display (text);
+        error ("Compilation failed");
+      endif
+      save_hash (var_prob);
     endif
   endif