Skip to content

Commit

Permalink
backed out changes to buildlib and buildcpp
Browse files Browse the repository at this point in the history
  • Loading branch information
mvertens committed Aug 20, 2024
1 parent b3a1989 commit ac91156
Show file tree
Hide file tree
Showing 4 changed files with 224 additions and 75 deletions.
4 changes: 2 additions & 2 deletions cime_config/buildcpp
Original file line number Diff line number Diff line change
Expand Up @@ -89,10 +89,10 @@ def buildcpp(case):
if pio_typename == "pnetcdf":
blom_cppdefs = blom_cppdefs + " -DPNETCDF"

if ocn_grid in ["tnx2v1", "tnx1v4", "tnx0.5v1", "tnx0.25v1", "tnx0.25v3", "tnx0.25v4", "tnx0.125v4"]:
if ocn_grid in ["tnx2v1", "tnx1.5v1", "tnx1v1", "tnx1v3", "tnx1v4", "tnx0.25v1", "tnx0.25v3", "tnx0.25v4", "tnx0.125v4"]:
blom_cppdefs = blom_cppdefs + " -DARCTIC"

if ocn_grid in [ "tnx1v4", "tnx0.5v1", "tnx0.25v1", "tnx0.25v3", "tnx0.25v4", "tnx0.125v4"]:
if ocn_grid in ["gx1v5", "gx1v6", "tnx1v1", "tnx1v3", "tnx1v4", "tnx0.25v1", "tnx0.25v3", "tnx0.25v4", "tnx0.125v4"]:
blom_cppdefs = blom_cppdefs + " -DLEVITUS2X"

if turbclo or tracers:
Expand Down
84 changes: 11 additions & 73 deletions cime_config/buildlib
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ from standard_script_setup import *
from CIME.case import Case
from CIME.utils import run_cmd, expect
from CIME.buildlib import parse_input
from CIME.build import get_standard_makefile_args

logger = logging.getLogger(__name__)

Expand All @@ -25,81 +24,20 @@ def _main_func():

caseroot, libroot, bldroot = parse_input(sys.argv)

with Case(caseroot, read_only=False) as case:
# run buildlib variant based on detection of cesm/cime version

comp_root_dir_ocn = case.get_value("COMP_ROOT_DIR_OCN")
comp_root_dir_ocn = Case(caseroot).get_value("COMP_ROOT_DIR_OCN")

# call buildcpp to set the cppdefs
cmd = os.path.join(os.path.join(comp_root_dir_ocn, "cime_config", "buildcpp"))
logger.info(" ...calling blom buildcpp to set build time options")
try:
mod = imp.load_source("buildcpp", cmd)
blom_cppdefs = mod.buildcpp(case)
except:
raise

with Case(caseroot) as case:

casetools = case.get_value("CASETOOLS")
complib = os.path.join(libroot, "libocn.a")
gmake_j = case.get_value("GMAKE_J")
gmake = case.get_value("GMAKE")
makefile = os.path.join(casetools, "Makefile")

# create Filepath file

filepath_file = os.path.join(bldroot, "Filepath")

if not os.path.isfile(filepath_file):

objroot = case.get_value("OBJROOT")
comp_root_dir_ocn = case.get_value("COMP_ROOT_DIR_OCN")
turbclo = case.get_value("BLOM_TURBULENT_CLOSURE")
tracers = case.get_value("BLOM_TRACER_MODULES")
driver = case.get_value("COMP_INTERFACE")

paths = [os.path.join(caseroot, "SourceMods", "src.blom"),
os.path.join(objroot, "ocn", "src"),
os.path.join(comp_root_dir_ocn, "ben02"),
os.path.join(comp_root_dir_ocn, "cesm"),
os.path.join(comp_root_dir_ocn, "fuk95"),
os.path.join(comp_root_dir_ocn, "channel"),
os.path.join(comp_root_dir_ocn, "single_column"),
os.path.join(comp_root_dir_ocn, "pkgs", "CVMix-src", "src", "shared"),
os.path.join(comp_root_dir_ocn, "phy"),
os.path.join(comp_root_dir_ocn, "trc"),
os.path.join(comp_root_dir_ocn, "idlage")]

if tracers != 0:
for module in tracers.split():
if module == "iage":
continue
elif module == "ecosys":
paths.append(os.path.join(comp_root_dir_ocn, "hamocc"))
paths.append(os.path.join(comp_root_dir_ocn, "pkgs", "M4AGO-sinking-scheme", "src"))
else:
expect(False, "tracer module {} is not recognized".format(module))

if driver == "mct":
paths.append(os.path.join(comp_root_dir_ocn, "drivers", "mct"))
elif driver == "nuopc":
paths.append(os.path.join(comp_root_dir_ocn, "drivers", "nuopc"))
else:
expect(False, "Driver {} is not supported".format(driver))

with open(filepath_file, "w") as filepath:
filepath.write("\n".join(paths))
filepath.write("\n")

# build the library

cmd = "{} complib -j {} MODEL=blom COMPLIB={} -f {} USER_CPPDEFS=\"{}\" {} " \
.format(gmake, gmake_j, complib, makefile, blom_cppdefs, get_standard_makefile_args(case))

rc, out, err = run_cmd(cmd, from_dir=bldroot)
if os.path.exists(os.path.join(caseroot,"env_workflow.xml")):
cmd = "{} {} {} {}".format(os.path.join(comp_root_dir_ocn, "cime_config", "buildlib_2.2"), caseroot, libroot, bldroot)
rc, out, err = run_cmd(cmd)
expect(rc == 0, "Command %s failed rc=%d\nout=%s\nerr=%s" % (cmd, rc, out, err))

logger.info("Command %s completed with output %s\nerr %s", cmd, out, err)
print(out)
else:
cmd = "{} {} {} {}".format(os.path.join(comp_root_dir_ocn, "cime_config", "buildlib_2.1"), caseroot, libroot, bldroot)
rc, out, err = run_cmd(cmd)
expect(rc == 0, "Command %s failed rc=%d\nout=%s\nerr=%s" % (cmd, rc, out, err))
print(out)

###############################################################################

Expand Down
104 changes: 104 additions & 0 deletions cime_config/buildlib_2.1
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
#!/usr/bin/env python

"""
build blom library
"""
import os, shutil, sys, glob, imp

_CIMEROOT = os.environ.get("CIMEROOT")
if _CIMEROOT is None:
raise SystemExit("ERROR: must set CIMEROOT environment variable")
sys.path.append(os.path.join(_CIMEROOT, "scripts", "Tools"))

from standard_script_setup import *

from CIME.case import Case
from CIME.utils import run_cmd, expect
from CIME.buildlib import parse_input

logger = logging.getLogger(__name__)

###############################################################################
def _main_func():
###############################################################################

caseroot, libroot, bldroot = parse_input(sys.argv)

with Case(caseroot, read_only=False) as case:

comp_root_dir_ocn = case.get_value("COMP_ROOT_DIR_OCN")

# call buildcpp to set the cppdefs
cmd = os.path.join(os.path.join(comp_root_dir_ocn, "cime_config", "buildcpp"))
logger.info(" ...calling blom buildcpp to set build time options")
try:
mod = imp.load_source("buildcpp", cmd)
blom_cppdefs = mod.buildcpp(case)
except:
raise

with Case(caseroot) as case:

casetools = case.get_value("CASETOOLS")
complib = os.path.join(libroot, "libocn.a")
gmake_j = case.get_value("GMAKE_J")
gmake = case.get_value("GMAKE")
makefile = os.path.join(casetools, "Makefile")

# create Filepath file

filepath_file = os.path.join(bldroot, "Filepath")

if not os.path.isfile(filepath_file):

objroot = case.get_value("OBJROOT")
comp_root_dir_ocn = case.get_value("COMP_ROOT_DIR_OCN")
turbclo = case.get_value("BLOM_TURBULENT_CLOSURE")
tracers = case.get_value("BLOM_TRACER_MODULES")
driver = case.get_value("COMP_INTERFACE")

paths = [os.path.join(caseroot, "SourceMods", "src.blom"),
os.path.join(objroot, "ocn", "src"),
os.path.join(comp_root_dir_ocn, "ben02"),
os.path.join(comp_root_dir_ocn, "cesm"),
os.path.join(comp_root_dir_ocn, "fuk95"),
os.path.join(comp_root_dir_ocn, "channel"),
os.path.join(comp_root_dir_ocn, "single_column"),
os.path.join(comp_root_dir_ocn, "pkgs", "CVMix-src", "src", "shared"),
os.path.join(comp_root_dir_ocn, "pkgs", "M4AGO-sinking-scheme", "src"),
os.path.join(comp_root_dir_ocn, "phy")]

if turbclo != 0 and tracers != 0:
paths.append(os.path.join(comp_root_dir_ocn, "trc"))

if tracers != 0:
for module in tracers.split():
if module == "iage":
paths.append(os.path.join(comp_root_dir_ocn, "idlage"))
elif module == "ecosys":
paths.append(os.path.join(comp_root_dir_ocn, "hamocc"))
else:
expect(False, "tracer module {} is not recognized".format(module))

expect(driver != "nuopc", "NUOPC driver not supported")
if driver == "mct":
paths.append(os.path.join(comp_root_dir_ocn, "drivers", "mct"))

with open(filepath_file, "w") as filepath:
filepath.write("\n".join(paths))
filepath.write("\n")

# build the library

cmd = "{} complib -j {} MODEL=blom COMPLIB={} -f {} USER_CPPDEFS=\"{}\"" \
.format(gmake, gmake_j, complib, makefile, blom_cppdefs)

rc, out, err = run_cmd(cmd, from_dir=bldroot)
expect(rc == 0, "Command %s failed rc=%d\nout=%s\nerr=%s" % (cmd, rc, out, err))

logger.info("Command %s completed with output %s\nerr %s", cmd, out, err)

###############################################################################

if __name__ == "__main__":
_main_func()
107 changes: 107 additions & 0 deletions cime_config/buildlib_2.2
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
#!/usr/bin/env python

"""
build blom library
"""
import os, shutil, sys, glob, imp

_CIMEROOT = os.environ.get("CIMEROOT")
if _CIMEROOT is None:
raise SystemExit("ERROR: must set CIMEROOT environment variable")
sys.path.append(os.path.join(_CIMEROOT, "scripts", "Tools"))

from standard_script_setup import *

from CIME.case import Case
from CIME.utils import run_cmd, expect
from CIME.buildlib import parse_input
from CIME.build import get_standard_makefile_args

logger = logging.getLogger(__name__)

###############################################################################
def _main_func():
###############################################################################

caseroot, libroot, bldroot = parse_input(sys.argv)

with Case(caseroot, read_only=False) as case:

comp_root_dir_ocn = case.get_value("COMP_ROOT_DIR_OCN")

# call buildcpp to set the cppdefs
cmd = os.path.join(os.path.join(comp_root_dir_ocn, "cime_config", "buildcpp"))
logger.info(" ...calling blom buildcpp to set build time options")
try:
mod = imp.load_source("buildcpp", cmd)
blom_cppdefs = mod.buildcpp(case)
except:
raise

with Case(caseroot) as case:

casetools = case.get_value("CASETOOLS")
complib = os.path.join(libroot, "libocn.a")
gmake_j = case.get_value("GMAKE_J")
gmake = case.get_value("GMAKE")
makefile = os.path.join(casetools, "Makefile")

# create Filepath file

filepath_file = os.path.join(bldroot, "Filepath")

if not os.path.isfile(filepath_file):

objroot = case.get_value("OBJROOT")
comp_root_dir_ocn = case.get_value("COMP_ROOT_DIR_OCN")
turbclo = case.get_value("BLOM_TURBULENT_CLOSURE")
tracers = case.get_value("BLOM_TRACER_MODULES")
driver = case.get_value("COMP_INTERFACE")

paths = [os.path.join(caseroot, "SourceMods", "src.blom"),
os.path.join(objroot, "ocn", "src"),
os.path.join(comp_root_dir_ocn, "ben02"),
os.path.join(comp_root_dir_ocn, "cesm"),
os.path.join(comp_root_dir_ocn, "fuk95"),
os.path.join(comp_root_dir_ocn, "channel"),
os.path.join(comp_root_dir_ocn, "single_column"),
os.path.join(comp_root_dir_ocn, "pkgs", "CVMix-src", "src", "shared"),
os.path.join(comp_root_dir_ocn, "phy"),
os.path.join(comp_root_dir_ocn, "trc"),
os.path.join(comp_root_dir_ocn, "idlage")]

if tracers != 0:
for module in tracers.split():
if module == "iage":
continue
elif module == "ecosys":
paths.append(os.path.join(comp_root_dir_ocn, "hamocc"))
paths.append(os.path.join(comp_root_dir_ocn, "pkgs", "M4AGO-sinking-scheme", "src"))
else:
expect(False, "tracer module {} is not recognized".format(module))

if driver == "mct":
paths.append(os.path.join(comp_root_dir_ocn, "drivers", "mct"))
elif driver == "nuopc":
paths.append(os.path.join(comp_root_dir_ocn, "drivers", "nuopc"))
else:
expect(False, "Driver {} is not supported".format(driver))

with open(filepath_file, "w") as filepath:
filepath.write("\n".join(paths))
filepath.write("\n")

# build the library

cmd = "{} complib -j {} MODEL=blom COMPLIB={} -f {} USER_CPPDEFS=\"{}\" {} " \
.format(gmake, gmake_j, complib, makefile, blom_cppdefs, get_standard_makefile_args(case))

rc, out, err = run_cmd(cmd, from_dir=bldroot)
expect(rc == 0, "Command %s failed rc=%d\nout=%s\nerr=%s" % (cmd, rc, out, err))

logger.info("Command %s completed with output %s\nerr %s", cmd, out, err)

###############################################################################

if __name__ == "__main__":
_main_func()

0 comments on commit ac91156

Please sign in to comment.