diff --git a/.github/workflows/testing.yml b/.github/workflows/testing.yml index 5744552646c..725f8a91832 100644 --- a/.github/workflows/testing.yml +++ b/.github/workflows/testing.yml @@ -72,7 +72,7 @@ jobs: env: INIT: "false" CIME_MODEL: "cesm" - CIME_DRIVER: "mct" + CIME_DRIVER: "nuopc" UPDATE_CIME: "true" GIT_SHALLOW: "true" CIME_TEST_PLATFORM: ubuntu-latest @@ -101,6 +101,8 @@ jobs: username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} strategy: + # allow all jobs to finish + fail-fast: false matrix: model: ["e3sm", "cesm"] driver: ["mct", "nuopc"] @@ -108,6 +110,9 @@ jobs: # exclude nuopc driver when running e3sm tests - model: "e3sm" driver: "nuopc" + # exclude mct driver when running cesm tests + - model: "cesm" + driver: "mct" steps: - name: Checkout code uses: actions/checkout@v2 diff --git a/CIME/BuildTools/configure.py b/CIME/BuildTools/configure.py index 4cd9059e5db..7cb884a625f 100755 --- a/CIME/BuildTools/configure.py +++ b/CIME/BuildTools/configure.py @@ -145,13 +145,13 @@ def __init__(self, compiler, mpilib, debug, comp_interface, threading=False): "DEBUG": debug, "COMP_INTERFACE": comp_interface, "PIO_VERSION": 2, - "SMP_PRESENT": threading, + "BUILD_THREADED": threading, "MODEL": get_model(), "SRCROOT": get_src_root(), } def get_build_threaded(self): - return self.get_value("SMP_PRESENT") + return self.get_value("BUILD_THREADED") def get_case_root(self): """Returns the root directory for this case.""" diff --git a/CIME/Tools/Makefile b/CIME/Tools/Makefile index b11e0135589..e3ddb9c2042 100644 --- a/CIME/Tools/Makefile +++ b/CIME/Tools/Makefile @@ -48,7 +48,7 @@ ifeq ($(strip $(SMP)),TRUE) THREADDIR = threads compile_threaded = TRUE else - ifeq ($(strip $(SMP_PRESENT)),TRUE) + ifeq ($(strip $(BUILD_THREADED)),TRUE) THREADDIR = threads compile_threaded = TRUE else diff --git a/CIME/XML/machines.py b/CIME/XML/machines.py index a9536d74572..ec26438f1f0 100644 --- a/CIME/XML/machines.py +++ b/CIME/XML/machines.py @@ -150,18 +150,22 @@ def list_available_machines(self): Return a list of machines defined for a given CIME_MODEL """ machines = [] - if self.get_version() < 3: - nodes = self.get_children("machine") - for node in nodes: - mach = self.get(node, "MACH") - machines.append(mach) - else: - machines = [ + nodes = self.get_children("machine") + for node in nodes: + mach = self.get(node, "MACH") + machines.append(mach) + if self.get_version() == 3.0: + machdirs = [ os.path.basename(f.path) for f in os.scandir(self.machines_dir) if f.is_dir() ] - machines.remove("cmake_macros") + machdirs.remove("cmake_macros") + machdirs.remove("userdefined_laptop_template") + for mach in machdirs: + if mach not in machines: + machines.append(mach) + machines.sort() return machines diff --git a/CIME/build.py b/CIME/build.py index b8d481b80d8..3f5c57ca998 100644 --- a/CIME/build.py +++ b/CIME/build.py @@ -45,7 +45,7 @@ "OS", "PIO_VERSION", "SHAREDLIBROOT", - "SMP_PRESENT", + "BUILD_THREADED", "USE_ESMF_LIB", "USE_MOAB", "CAM_CONFIG_OPTS", diff --git a/CIME/case/case_clone.py b/CIME/case/case_clone.py index 737d26564b3..7b81e0e91b5 100644 --- a/CIME/case/case_clone.py +++ b/CIME/case/case_clone.py @@ -107,7 +107,7 @@ def create_clone( if exeroot is not None: expect( not keepexe, - "create_case_clone: if keepexe is True, " "then exeroot cannot be set", + "create_case_clone: if keepexe is True, then exeroot cannot be set", ) newcase.set_value("EXEROOT", exeroot) if rundir is not None: @@ -219,8 +219,6 @@ def create_clone( ) ) - newcase.case_setup() - return newcase diff --git a/CIME/case/case_setup.py b/CIME/case/case_setup.py index e05bf29ccbe..0ff856f5673 100644 --- a/CIME/case/case_setup.py +++ b/CIME/case/case_setup.py @@ -345,7 +345,7 @@ def _case_setup_impl( case.initialize_derived_attributes() - case.set_value("SMP_PRESENT", case.get_build_threaded()) + case.set_value("BUILD_THREADED", case.get_build_threaded()) else: case.check_pelayouts_require_rebuild(models) @@ -361,7 +361,7 @@ def _case_setup_impl( cost_per_node = case.get_value("COSTPES_PER_NODE") case.set_value("COST_PES", case.num_nodes * cost_per_node) threaded = case.get_build_threaded() - case.set_value("SMP_PRESENT", threaded) + case.set_value("BUILD_THREADED", threaded) if threaded and case.total_tasks * case.thread_count > cost_per_node: smt_factor = max( 1.0, int(case.get_value("MAX_TASKS_PER_NODE") / cost_per_node) diff --git a/CIME/data/config/xml_schemas/config_machines_template.xml b/CIME/data/config/xml_schemas/config_machines_template.xml index 99c2bc72581..de361c16265 100644 --- a/CIME/data/config/xml_schemas/config_machines_template.xml +++ b/CIME/data/config/xml_schemas/config_machines_template.xml @@ -1,17 +1,12 @@ - + SITE VENDOR platform, os is ---, xx pes/node, batch system is --- - - .*.cheyenne.ucar.edu - LINUX diff --git a/CIME/data/config/xml_schemas/env_mach_specific.xsd b/CIME/data/config/xml_schemas/env_mach_specific.xsd index 7778635592b..3c7a3a0d679 100644 --- a/CIME/data/config/xml_schemas/env_mach_specific.xsd +++ b/CIME/data/config/xml_schemas/env_mach_specific.xsd @@ -11,7 +11,7 @@ - + @@ -138,7 +138,7 @@ - + diff --git a/CIME/non_py/cprnc b/CIME/non_py/cprnc index d6971c90d09..5e2ca5bb5a2 160000 --- a/CIME/non_py/cprnc +++ b/CIME/non_py/cprnc @@ -1 +1 @@ -Subproject commit d6971c90d09d1bed5f3797eef383299b4fec1c0a +Subproject commit 5e2ca5bb5a2956339b60f270df868593e954420b diff --git a/CIME/tests/test_sys_cime_case.py b/CIME/tests/test_sys_cime_case.py index 6ca9a92168e..dabea7d9600 100644 --- a/CIME/tests/test_sys_cime_case.py +++ b/CIME/tests/test_sys_cime_case.py @@ -236,7 +236,7 @@ def test_cime_case_build_threaded_1(self): ) with Case(casedir, read_only=False) as case: - build_threaded = case.get_value("SMP_PRESENT") + build_threaded = case.get_value("BUILD_THREADED") self.assertFalse(build_threaded) build_threaded = case.get_build_threaded() @@ -254,7 +254,7 @@ def test_cime_case_build_threaded_2(self): ) with Case(casedir, read_only=False) as case: - build_threaded = case.get_value("SMP_PRESENT") + build_threaded = case.get_value("BUILD_THREADED") self.assertTrue(build_threaded) build_threaded = case.get_build_threaded() diff --git a/CIME/tests/test_sys_create_newcase.py b/CIME/tests/test_sys_create_newcase.py index 1d240c9ee1f..a0f07a001b6 100644 --- a/CIME/tests/test_sys_create_newcase.py +++ b/CIME/tests/test_sys_create_newcase.py @@ -109,10 +109,12 @@ def test_a_createnewcase(self): new_batch_command = case.get_value( "BATCH_COMMAND_FLAGS", subgroup="case.run" ) - self.assertTrue( - "fred" in new_batch_command, - msg="Failed to update JOB_QUEUE in BATCH_COMMAND_FLAGS", - ) + self.assertTrue( + "fred" in new_batch_command, + msg="Failed to update JOB_QUEUE in BATCH_COMMAND_FLAGS {}".format( + new_batch_command + ), + ) # Trying to set values outside of context manager should fail case = Case(testdir, read_only=False) diff --git a/CIME/tests/test_unit_xml_machines.py b/CIME/tests/test_unit_xml_machines.py index 831359380fe..d051a5d7d3e 100644 --- a/CIME/tests/test_unit_xml_machines.py +++ b/CIME/tests/test_unit_xml_machines.py @@ -78,10 +78,10 @@ /opt/ubuntu/pe/netcdf-hdf5parallel/4.8.1.3/gnu/9.1/ $SHELL{dirname $(dirname $(which pnetcdf_version))} - + 128M - + cores @@ -126,10 +126,10 @@ /opt/ubuntu/pe/netcdf-hdf5parallel/4.8.1.3/gnu/9.1/ $SHELL{dirname $(dirname $(which pnetcdf_version))} - + 128M - + cores diff --git a/Externals.cfg b/Externals.cfg index 01537b54197..1941bd3d53a 100644 --- a/Externals.cfg +++ b/Externals.cfg @@ -1,19 +1,19 @@ [ccs_config] -tag = ccs_config_cesm0.0.76 +tag = ccs_config_cesm0.0.88 protocol = git repo_url = https://github.com/ESMCI/ccs_config_cesm local_path = ccs_config required = True [cmeps] -tag = cmeps0.14.38 +tag = cmeps0.14.47 protocol = git repo_url = https://github.com/ESCOMP/CMEPS.git local_path = components/cmeps required = True [cdeps] -tag = cdeps1.0.19 +tag = cdeps1.0.26 protocol = git repo_url = https://github.com/ESCOMP/CDEPS.git local_path = components/cdeps @@ -21,14 +21,14 @@ externals = Externals_CDEPS.cfg required = True [cpl7] -tag = cpl77.0.6 +tag = cpl77.0.8 protocol = git repo_url = https://github.com/ESCOMP/CESM_CPL7andDataComps local_path = components/cpl7 required = True [share] -tag = share1.0.17 +tag = share1.0.18 protocol = git repo_url = https://github.com/ESCOMP/CESM_share local_path = share @@ -42,7 +42,7 @@ local_path = libraries/mct required = True [parallelio] -tag = pio2_6_0 +tag = pio2_6_2 protocol = git repo_url = https://github.com/NCAR/ParallelIO local_path = libraries/parallelio diff --git a/docker/config_machines.xml b/docker/config_machines.xml index ea60a2cfbb3..242150d750c 100644 --- a/docker/config_machines.xml +++ b/docker/config_machines.xml @@ -3,7 +3,7 @@ Docker - docker + LINUX gnu,gnuX diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh index e57ed141718..86df76f2276 100755 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -27,7 +27,7 @@ function clone_repo() { extras="${extras} --depth 1" fi - echo "Cloning branch ${branch} of ${repo} into ${path} using ${flags}" + echo "Cloning branch ${branch} of ${repo} into ${path} with flags: ${flags}" git clone -b "${branch}" ${extras} "${repo}" "${path}" || true } @@ -156,17 +156,21 @@ function init_cesm() { clone_repo "${CESM_REPO}" "${install_path}" "${CESM_BRANCH:-master}" fi - cd "${install_path}" + pushd "${install_path}" + + pushd "${install_path}/cime" - echo "Checking out externals" + echo "Checking out externals from `pwd`" - "${install_path}/manage_externals/checkout_externals" + "${install_path}/manage_externals/checkout_externals" -v + + popd fixup_mct "${install_path}/libraries/mct" update_cime "${install_path}/cime/" - cd "${install_path}/cime" + pushd "${install_path}/cime" # Need to run manage_externals again incase branch changes externals instructions # "${install_path}/manage_externals/checkout_externals -e cime/Externals_cime.cfg" @@ -203,7 +207,7 @@ function init_cime() { cd "${install_path}" - "/src/CESM/manage_externals/checkout_externals" + "/src/CESM/manage_externals/checkout_externals" -v fixup_mct "${install_path}/libraries/mct"