buildexe
#!/usr/bin/env python3
"""
build model executable
"""
import sys, os
_CIMEROOT = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..","..","..","..")
sys.path.append(os.path.join(_CIMEROOT, "scripts", "Tools"))
from standard_script_setup import *
from CIME.buildlib import parse_input
from CIME.case import Case
from CIME.utils import expect, run_cmd
logger = logging.getLogger(__name__)
###############################################################################
def _main_func():
###############################################################################
caseroot, libroot, _ = parse_input(sys.argv)
logger.info("Building a single executable version of target coupled model")
with Case(caseroot) as case:
casetools = case.get_value("CASETOOLS")
cimeroot = case.get_value("CIMEROOT")
exeroot = case.get_value("EXEROOT")
gmake = case.get_value("GMAKE")
gmake_j = case.get_value("GMAKE_J")
model = case.get_value("MODEL")
num_esp = case.get_value("NUM_COMP_INST_ESP")
os.environ["PIO_VERSION"] = str(case.get_value("PIO_VERSION"))
expect((num_esp is None) or (int(num_esp) == 1), "ESP component restricted to one instance")
with open('Filepath', 'w') as out:
out.write(os.path.join(caseroot, "SourceMods", "src.drv") + "\n")
out.write(os.path.join(cimeroot, "src", "drivers", "moab", "main") + "\n")
# build model executable
makefile = os.path.join(casetools, "Makefile")
exename = os.path.join(exeroot, model + ".exe")
cmd = "%s exec_se -j %d EXEC_SE=%s COMP_NAME=%s LIBROOT=%s -f %s "\
% (gmake, gmake_j, exename, "driver", libroot, makefile)
rc, out, _ = run_cmd(cmd, combine_output=True)
expect(rc==0,"Command %s failed rc=%d\nout=%s"%(cmd,rc,out))
logger.info(out)
###############################################################################
if __name__ == "__main__":
_main_func()