diff --git a/.travis.yml b/.travis.yml index 26024bec..2d204aad 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,7 +12,7 @@ before_script: script: - ./setup_environment.py - source ./quantum_package.rc - - qp_create_ninja.py --production ./config/gfortran.cfg + - qp_create_ninja.py create --production ./config/gfortran.cfg - ninja - cd ocaml ; make ; cd - - cd testing_no_regression ; ./unit_test.py diff --git a/scripts/compilation/qp_create_ninja.py b/scripts/compilation/qp_create_ninja.py index d2b5a37d..e780939c 100755 --- a/scripts/compilation/qp_create_ninja.py +++ b/scripts/compilation/qp_create_ninja.py @@ -1,7 +1,9 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- """ -Usage: qp_create_ninja.py (--development | --production) CONFIG_FILE +Usage: qp_create_ninja.py create (--development | --production) CONFIG_FILE + qp_create_ninja.py update + """ import os @@ -10,6 +12,7 @@ import glob from os.path import join from collections import namedtuple from collections import defaultdict +import pickle try: from module_handler import ModuleHandler @@ -378,7 +381,8 @@ def ninja_irpf90_make_rule(): # c m d # # ~#~#~ # - l_cmd = ["cd $module"] + l_flag + ["irpf90 $include_dir $IRPF90_FLAGS"] + l_cmd = ["cd $module", "rm -rf IRPF90_temp IRPF90_man" + ] + l_flag + ["irpf90 $include_dir $IRPF90_FLAGS"] # ~#~#~#~#~#~ # # s t r i n g # @@ -555,7 +559,7 @@ def ninja_binaries_rule(): # c m d # # ~#~#~ # - l_cmd = ["cd $module", "ninja -C IRPF90_temp $out"] + l_cmd = ["cd $module/IRPF90_temp", "ninja $out"] # ~#~#~#~#~#~ # # s t r i n g # @@ -589,6 +593,22 @@ def ninja_binaries_build(path_module, l_children, d_binaries): ninja_module_path), " module = {0}".format(path_module.abs), ""] + l_string += ["build module_{0}: phony {1}".format(path_module.rel, + " ".join(l_abs_bin)), ""] + + return l_string + + +# +# |\/| _ _| | _ +# | | (_) (_| |_| | (/_ +# +def create_module_ninja(): + """ + In a module create a build.ninja + """ + + l_string = ["rule all:"] return l_string @@ -624,13 +644,58 @@ def ninja_dot_tree_build(path_module): return l_string +# +# |\/| _ _| | _ +# | | (_) (_| |_| | (/_ +# + + +def create_ninja_module(path_module): + path_ninja_root = join(QP_ROOT, "build.ninja") + + l_string = [ + "rule update_ninja_common", " command = qp_create_ninja.py update", + "", "rule make_local_binaries", + " command = ninja -f {0} module_{1}".format(path_ninja_root, + path_module.rel), "" + ] + + l_string += ["rule make_all_binaries", + " command = ninja -f {0}".format(path_ninja_root), ""] + + l_string += ["build dumy_target: update_ninja_common", "", + "build all: make_all_binaries dumy_target", "", + "build local: make_local_binaries dumy_target", + "default local", ""] + + path_ninja_cur = join(path_module.abs, "build.ninja") + with open(path_ninja_cur, "w") as f: + f.write("\n".join(l_string)) + # # |\/| _. o ._ # | | (_| | | | # if __name__ == "__main__": - arguments = docopt(__doc__) + + pickle_path = os.path.join(QP_ROOT, "config", "qp_create_ninja.pickle") + + if arguments["update"]: + try: + with open(pickle_path, 'rb') as handle: + arguments = pickle.load(handle) + except IOError: + print "You need to create first my friend" + sys.exit(1) + + elif arguments["create"]: + + arguments["CONFIG_FILE"] = os.path.realpath(arguments["CONFIG_FILE"]) + + with open(pickle_path, 'wb') as handle: + pickle.dump(arguments, handle) + pwd_config_file = arguments["CONFIG_FILE"] # _ @@ -704,6 +769,9 @@ if __name__ == "__main__": for module_to_compile in l_module: + if arguments["--development"]: + create_ninja_module(module_to_compile) + # ~#~#~#~#~#~#~#~ # # S y m l i n k # # ~#~#~#~#~#~#~#~ # diff --git a/src/Determinants/README.rst b/src/Determinants/README.rst index 34392b7a..f0497d7f 100644 --- a/src/Determinants/README.rst +++ b/src/Determinants/README.rst @@ -589,7 +589,7 @@ Documentation If true, The One body DM is calculated with ignoring the Double<->Doubles extra diag elements -`pouet `_ +`pouet `_ Undocumented @@ -783,7 +783,7 @@ Documentation be set before calling this function. -`routine `_ +`routine `_ Undocumented