Parallel compilation fails due to missing file dependencies
I spotted a handful of missing dependencies in the Makefile, which appear to prevent the code build in parallel (depending on luck, especially when building from clean).
I do not claim this is an exhaustive list, as of course dependency errors can still be stochastic [1], but the code is now building with make clean; make -j X
for X in chease
, chease_imas
, chease_imas_hdf5
.
Proposed patch attached below:
diff --git a/src-f90/Makefile b/src-f90/Makefile
index ab8ed3f..1567bca 100644
--- a/src-f90/Makefile
+++ b/src-f90/Makefile
@@ -467,7 +467,7 @@ assign_chease_codeparameters_choices.o: prec_const.o globals.o xml2eg_c.o xml_fi
$(F90) $(F90FLAGS_parser) -c assign_chease_codeparameters_choices.f90
xml2eg.o: xml2eg.f90
$(F90) $(F90FLAGS_parser_nor8) -c xml2eg.f90
-xml_file_reader.o:
+xml_file_reader.o: euitm_schemas.o
$(F90) $(F90FLAGS_parser) -c xml_file_reader.f90
atcoef.o: globals.o
auxval.o: globals.o
@@ -506,7 +506,7 @@ chease_imas_effxml_module.o: globals.o equilibrium_euitm_module.o $(MODS_f90_xml
sed "s/reflist/$(reflistorchoices)/" temp_chease_module.f90 > chease_imas_effxml_module.f90;rm temp_chease_module.f90
$(F90) $(F90FLAGS_O0) -c chease_imas_effxml_module.f90 $(INCL_FUTILS) $(INCL_HDF5)
chipsi.o: globals.o
-chipsimetrics.o: globals.o
+chipsimetrics.o: globals.o interpos_source.o
cint.o: globals.o
cocos_module.o: itm_types.o
conver.o: globals.o
@@ -552,11 +552,11 @@ gdataext.o: prec_const.o
genout.o: prec_const.o globals.o
gijlin.o: globals.o
gloadd.o: globals.o interpol.o interpos_source.o
-globals.o: prec_const.o
+globals.o: prec_const.o euitm_schemas.o
globals_init.o: globals.o
gloqua.o: globals.o interpol.o interpos_source.o
gloqua_imas.o: globals.o interpol.o interpos_source.o
-guess.o: globals.o interpol.o
+guess.o: globals.o interpol.o interpos_source.o
iarray.o: globals.o
identa.o: globals.o BNDIND.inc
identb.o: globals.o
@@ -569,7 +569,7 @@ isamin.o: globals.o
ismax.o: globals.o
ismin.o: globals.o
isofind.o: globals.o
-isofun.o: globals.o
+isofun.o: globals.o interpos_source.o
isrchfge.o: globals.o
issum.o: globals.o
itipr.o: globals.o
@@ -593,7 +593,7 @@ msplcy.o: globals.o
mspline.o: globals.o
nerat.o: globals.o interpol.o
nonlin.o: globals.o
-norept.o: globals.o interpol.o
+norept.o: globals.o interpol.o interpos_source.o
ntridg.o: globals.o
oarray.o: globals.o
ogyropsi.o: globals.o
@@ -607,7 +607,7 @@ outpen.o: globals.o
output.o: globals.o interpol.o COMDAT.inc interpos_source.o
outxt.o: globals.o
packme.o: globals.o interpol.o
-packmep.o: globals.o
+packmep.o: globals.o interpos_source.o
page.o: globals.o
polyfun.o: globals.o
polynm.o: globals.o interpol.o
@@ -637,7 +637,7 @@ rscale.o: globals.o
rvar.o: globals.o
rvar2.o: globals.o
rzbound.o: globals.o
-runtim.o: prec_const.o
+runtim.o: prec_const.o globals.o
scopyr.o: prec_const.o
setupa.o: globals.o
setupb.o: globals.o
@@ -677,7 +677,7 @@ write_itm_with_rout.o: globals.o
write_ogyropsi.o: prec_const.o
write_ogyropsi_hdf5.o: prec_const.o $(FUTILS)/lib$(futils).a
wrtext.o: globals.o
-wrtplot.o: globals.o interpol.o COMDAT.inc
+wrtplot.o: globals.o interpol.o COMDAT.inc interpos_source.o
wrtbin.o: globals.o interpol.o COMDAT.inc interpos_source.o
wrtasc.o: globals.o interpol.o COMDAT.inc
wrtmat.o: globals.o interpol.o COMDAT.inc
@@ -690,4 +690,11 @@ outgyropsi.o: globals.o
outgyropsi_hdf5.o:globals.o
hamada.o: globals.o interpol.o interpos_source.o
neoart.o: globals.o interpos_source.o
-interpos_source.o: prec_const.o
+interpos_source.o: prec_const.o checknanos_module.o
+
+# IMAS
+load_imas_with_rout.o: globals.o
+write_imas_with_rout.o: globals.o
+copy_itm_to_ids_equilibrium.o: globals.o
+copy_ids_to_itm_equilibrium.o: globals.o
+equilibrium_euitm_module.o: euitm_schemas.o
[1] I have some scripts I made some time ago which do a more systematic test and reconstruction of the dependencies, I can dig them out in future if there are more problems.
Edited by Thomas Hayward-Schneider