diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml new file mode 100644 index 000000000..88b11c25c --- /dev/null +++ b/.github/workflows/build.yaml @@ -0,0 +1,48 @@ +on: + workflow_call: + inputs: + compiler: + type: string + required: true + +jobs: + test: + # This statement avoids failures in another instance (another compiler) to cancel this run + # it also prevents canceling the run using the cancel button on the github website + # another form (if: success() || failure()) should allow the cancel button to work but tests with that form didnt act as expected + if: always() + env: + CC: mpicc + FC: mpifort + CXX: mpicxx + CIME_MODEL: cesm + CIME_DRIVER: nuopc + # Since self runners can only run one step at a time this needs statement is not required + # needs: setup + runs-on: hpc-runner + defaults: + run: + shell: bash {0} + steps: + - name: Run ${{ inputs.compiler }} tests + # Allows the next step to run even if this one fails + continue-on-error: true + run: | + pwd + cd cime/scripts + module load cmake + # Need to use main queue to avoid memory overflow errors + qcmd -q main -v PROJECT=P93300606 -A P93300606 -l walltime=02:00:00 -- ./create_test --xml-machine derecho\ + --xml-category github --no-run --compiler ${{ inputs.compiler }} --test-id ${GITHUB_RUN_ID}${{ inputs.compiler }} + - name: check status + run: | + cd $SCRATCH + # if no fails and no passes in expected fails then cleanup and exit 0 otherwise exit 1 + ./cs.status.${GITHUB_RUN_ID}${{ inputs.compiler }} --fails-only --expected-fails-file $GITHUB_WORKSPACE/cime_config/testfiles/ExpectedTestFails.xml | grep FAIL | grep -v FAILURE + retcode=$? + if [ $retcode -eq 0 ]; then + exit 1 + fi + # tests pass, clean up + rm -fr *.${GITHUB_RUN_ID}${{ inputs.compiler }} + exit 0 \ No newline at end of file diff --git a/.github/workflows/derecho.yaml b/.github/workflows/derecho.yaml new file mode 100644 index 000000000..287940bd0 --- /dev/null +++ b/.github/workflows/derecho.yaml @@ -0,0 +1,32 @@ +name: cesm-derecho-hosted +run-name: ${{ github.actor }} is testing the project + +on: + pull_request: + branches: [ cesm3.0-alphabranch ] + types: [ labeled ] + +jobs: + + setup: + # only run this workflow if the label run-pr-tests is applied + if: ${{ github.event.label.name == 'run-pr-tests' }} + # currently hpc-runner is derecho.hpc.ucar.edu + runs-on: hpc-runner + + steps: + - name: Checkout code + uses: actions/checkout@v4 + - name: Run git-fleximod + run: | + pwd + module list + ./bin/git-fleximod update + + build: + strategy: + matrix: + compiler: [gnu, intel, intel-oneapi, nvhpc] + uses: ./.github/workflows/build.yaml + with: + compiler: ${{ matrix.compiler }} diff --git a/.github/workflows/fleximod_test.yaml b/.github/workflows/fleximod_test.yaml index f18dab136..760e33d27 100644 --- a/.github/workflows/fleximod_test.yaml +++ b/.github/workflows/fleximod_test.yaml @@ -1,8 +1,8 @@ on: push: - branches: [ master, cesm3.0-alphabranch ] + branches: [ cesm3.0-alphabranch ] pull_request: - branches: [ master, cesm3.0-alphabranch ] + branches: [ cesm3.0-alphabranch ] jobs: fleximod-test: runs-on: ubuntu-latest @@ -19,9 +19,7 @@ jobs: echo echo "Update complete, checking status" echo - $GITHUB_WORKSPACE/bin/git-fleximod status | tee status.out - grep testfails status.out || exit 0 - exit 1 + $GITHUB_WORKSPACE/bin/git-fleximod test # - name: Setup tmate session # if: ${{ failure() }} # uses: mxschmitt/action-tmate@v3 diff --git a/.gitmodules b/.gitmodules index 8978635ea..2c46ca554 100644 --- a/.gitmodules +++ b/.gitmodules @@ -30,14 +30,14 @@ path = ccs_config url = https://github.com/ESMCI/ccs_config_cesm.git fxDONOTUSEurl = https://github.com/ESMCI/ccs_config_cesm.git - fxtag = ccs_config_cesm1.0.8 + fxtag = ccs_config_cesm1.0.12 fxrequired = ToplevelRequired [submodule "cime"] path = cime url = https://github.com/ESMCI/cime fxDONOTUSEurl = https://github.com/ESMCI/cime - fxtag = cime6.1.29 + fxtag = cime6.1.46 fxrequired = ToplevelRequired [submodule "fms"] @@ -58,7 +58,7 @@ path = components/cam url = https://www.github.com/ESCOMP/CAM fxDONOTUSEurl = https://www.github.com/ESCOMP/CAM - fxtag = cam6_4_046 + fxtag = cam6_4_047 fxrequired = ToplevelRequired [submodule "clm"] @@ -80,7 +80,7 @@ url = https://github.com/ESCOMP/MOM_interface fxDONOTUSEurl = https://github.com/ESCOMP/MOM_interface fxrequired = ToplevelRequired - fxtag = mi_241104 + fxtag = mi_241122 [submodule "cism"] path = components/cism @@ -101,7 +101,7 @@ url = https://github.com/ESCOMP/CMEPS.git fxDONOTUSEurl = https://github.com/ESCOMP/CMEPS.git fxrequired = ToplevelRequired - fxtag = cmeps1.0.16 + fxtag = cmeps1.0.25 [submodule "rtm"] path = components/rtm diff --git a/.lib/git-fleximod/git_fleximod/cli.py b/.lib/git-fleximod/git_fleximod/cli.py index 208bc0468..ac9493cfc 100644 --- a/.lib/git-fleximod/git_fleximod/cli.py +++ b/.lib/git-fleximod/git_fleximod/cli.py @@ -2,27 +2,31 @@ import argparse from git_fleximod import utils -__version__ = "0.9.2" +__version__ = "0.9.3" def find_root_dir(filename=".gitmodules"): """ finds the highest directory in tree which contains a file called filename """ - d = Path.cwd() - root = Path(d.root) - dirlist = [] - dl = d - while dl != root: - dirlist.append(dl) - dl = dl.parent - dirlist.append(root) - dirlist.reverse() - - for dl in dirlist: - attempt = dl / filename - if attempt.is_file(): - return str(dl) - return None - + try: + root = utils.execute_subprocess(["git","rev-parse", "--show-toplevel"], + output_to_caller=True ).rstrip() + except: + d = Path.cwd() + root = Path(d.root) + dirlist = [] + dl = d + while dl != root: + dirlist.append(dl) + dl = dl.parent + dirlist.append(root) + dirlist.reverse() + + for dl in dirlist: + attempt = dl / filename + if attempt.is_file(): + return str(dl) + return None + return Path(root) def get_parser(): description = """ diff --git a/.lib/git-fleximod/git_fleximod/git_fleximod.py b/.lib/git-fleximod/git_fleximod/git_fleximod.py index 0851e9d09..13f35df95 100755 --- a/.lib/git-fleximod/git_fleximod/git_fleximod.py +++ b/.lib/git-fleximod/git_fleximod/git_fleximod.py @@ -342,7 +342,7 @@ def main(): excludelist=excludelist, ) if not gitmodules.sections(): - sys.exit("No submodule components found") + sys.exit(f"No submodule components found, root_dir={root_dir}") retval = 0 if action == "update": submodules_update(gitmodules, root_dir, fxrequired, force) diff --git a/.lib/git-fleximod/git_fleximod/submodule.py b/.lib/git-fleximod/git_fleximod/submodule.py index c939d54bc..75d9dd4eb 100644 --- a/.lib/git-fleximod/git_fleximod/submodule.py +++ b/.lib/git-fleximod/git_fleximod/submodule.py @@ -221,7 +221,7 @@ def sparse_checkout(self): if superroot: gitroot = superroot.strip() else: - gitroot = self.root_dir.strip() + gitroot = self.root_dir # Now need to move the .git dir to the submodule location rootdotgit = os.path.join(self.root_dir, ".git") while os.path.isfile(rootdotgit): diff --git a/.lib/git-fleximod/poetry.lock b/.lib/git-fleximod/poetry.lock index 3a74effcd..ac82fb0d9 100644 --- a/.lib/git-fleximod/poetry.lock +++ b/.lib/git-fleximod/poetry.lock @@ -30,13 +30,13 @@ dev = ["freezegun (>=1.0,<2.0)", "pytest (>=6.0)", "pytest-cov"] [[package]] name = "certifi" -version = "2024.6.2" +version = "2024.8.30" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2024.6.2-py3-none-any.whl", hash = "sha256:ddc6c8ce995e6987e7faf5e3f1b02b302836a0e5d98ece18392cb1a36c72ad56"}, - {file = "certifi-2024.6.2.tar.gz", hash = "sha256:3cd43f1c6fa7dedc5899d69d3ad0398fd018ad1a17fba83ddaf78aa46c747516"}, + {file = "certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8"}, + {file = "certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9"}, ] [[package]] diff --git a/.lib/git-fleximod/pyproject.toml b/.lib/git-fleximod/pyproject.toml index 619cdabe3..1d0419ad2 100644 --- a/.lib/git-fleximod/pyproject.toml +++ b/.lib/git-fleximod/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "git-fleximod" -version = "0.9.2" +version = "0.9.3" description = "Extended support for git-submodule and git-sparse-checkout" authors = ["Jim Edwards "] maintainers = ["Jim Edwards "] diff --git a/.lib/git-fleximod/tbump.toml b/.lib/git-fleximod/tbump.toml index 920ff0591..b432206a5 100644 --- a/.lib/git-fleximod/tbump.toml +++ b/.lib/git-fleximod/tbump.toml @@ -2,7 +2,7 @@ github_url = "https://github.com/jedwards4b/git-fleximod/" [version] -current = "0.9.2" +current = "0.9.3" # Example of a semver regexp. # Make sure this matches current_version before diff --git a/.lib/git-fleximod/tests/conftest.py b/.lib/git-fleximod/tests/conftest.py index 81edbe713..1dd1b86f3 100644 --- a/.lib/git-fleximod/tests/conftest.py +++ b/.lib/git-fleximod/tests/conftest.py @@ -32,7 +32,7 @@ def logger(): "submodule_name": "test_optional", "status1" : "test_optional MPIserial_2.5.0-3-gd82ce7c is out of sync with .gitmodules MPIserial_2.4.0", "status2" : "test_optional at tag MPIserial_2.4.0", - "status3" : "test_optional not checked out, out of sync at tag None, expected tag is MPIserial_2.4.0 (optional)", + "status3" : "test_optional not checked out, out of sync at tag MPIserial_2.5.1, expected tag is MPIserial_2.4.0 (optional)", "status4" : "test_optional at tag MPIserial_2.4.0", "gitmodules_content": """ [submodule "test_optional"] @@ -46,7 +46,7 @@ def logger(): "submodule_name": "test_alwaysoptional", "status1" : "test_alwaysoptional MPIserial_2.3.0 is out of sync with .gitmodules e5cf35c", "status2" : "test_alwaysoptional at hash e5cf35c", - "status3" : "out of sync at tag None, expected tag is e5cf35c", + "status3" : "out of sync at tag MPIserial_2.5.1, expected tag is e5cf35c", "status4" : "test_alwaysoptional at hash e5cf35c", "gitmodules_content": """ [submodule "test_alwaysoptional"] diff --git a/ccs_config b/ccs_config index e4ac80ef1..1ebe59402 160000 --- a/ccs_config +++ b/ccs_config @@ -1 +1 @@ -Subproject commit e4ac80ef142954e582b4065222145352f22cd3a4 +Subproject commit 1ebe59402bc19881a6d711084e27bdbe6c69149c diff --git a/cime b/cime index 2776043f0..29aa60f99 160000 --- a/cime +++ b/cime @@ -1 +1 @@ -Subproject commit 2776043f0d20d2bc1094afeb48e0cc242b0b0407 +Subproject commit 29aa60f999caa6c57f754ef123a4a235724777de diff --git a/cime_config/config_compsets.xml b/cime_config/config_compsets.xml index 099602a87..2f510da92 100644 --- a/cime_config/config_compsets.xml +++ b/cime_config/config_compsets.xml @@ -36,50 +36,64 @@ - grid (optional regular expression match for grid to work with the compset) - + - BLT1850 - 1850_CAM70%LT_CLM60%BGC-CROP_CICE_MOM6_MOSART_DGLC%NOEVOLVE_SWAV + B1850C_MTt4s + 1850C_CAM70%MT%CT4S_CLM60%BGC-CROP_CICE_MOM6%MARBL-BIO_MOSART_DGLC%NOEVOLVE_WW3 - - BLT1850_MARBL - 1850_CAM70%LT_CLM60%BGC-CROP_CICE_MOM6%MARBL-BIO_MOSART_DGLC%NOEVOLVE_SWAV + B1850CM + 1850C_CAM70%MT%CT4S_CLM60%BGC-CROP_CICE_MOM6%MARBL-BIO_MOSART_DGLC%NOEVOLVE_WW3 - - BMT1850_MARBL - 1850_CAM70%MT_CLM60%BGC-CROP_CICE_MOM6%MARBL-BIO_MOSART_DGLC%NOEVOLVE_SWAV - - BLTHIST - HIST_CAM70%LT_CLM60%BGC-CROP_CICE_MOM6_MOSART_DGLC%NOEVOLVE_SWAV + B1850C_MTso + 1850C_CAM70%MT_CLM60%BGC-CROP_CICE_MOM6%MARBL-BIO_MOSART_DGLC%NOEVOLVE_WW3 - BMT1850 - 1850_CAM70%MT_CLM60%BGC-CROP_CICE_MOM6_MOSART_DGLC%NOEVOLVE_SWAV + 1850C_CAM70%MT_CLM60%BGC-CROP_CICE_MOM6%MARBL-BIO_MOSART_DGLC%NOEVOLVE_WW3 - - BMT1850_MARBL - 1850_CAM70%MT_CLM60%BGC-CROP_CICE_MOM6%MARBL-BIO_MOSART_DGLC%NOEVOLVE_SWAV + BHISTC_MTso + HISTC_CAM70%MT_CLM60%BGC-CROP_CICE_MOM6%MARBL-BIO_MOSART_DGLC%NOEVOLVE_WW3 - BMTHIST - HIST_CAM70%MT_CLM60%BGC-CROP_CICE_MOM6_MOSART_DGLC%NOEVOLVE_SWAV + BHISTC_MTt4s + HISTC_CAM70%MT%CT4S_CLM60%BGC-CROP_CICE_MOM6%MARBL-BIO_MOSART_DGLC%NOEVOLVE_WW3 + + + BHISTCM + HISTC_CAM70%MT%CT4S_CLM60%BGC-CROP_CICE_MOM6%MARBL-BIO_MOSART_DGLC%NOEVOLVE_WW3 - - - - + + B1850C_LTso + 1850C_CAM70%LT_CLM60%BGC-CROP_CICE_MOM6%MARBL-BIO_MOSART_DGLC%NOEVOLVE_WW3 + + + BLT1850 + 1850C_CAM70%LT_CLM60%BGC-CROP_CICE_MOM6%MARBL-BIO_MOSART_DGLC%NOEVOLVE_WW3 + + + BHISTC_LTso + HISTC_CAM70%LT_CLM60%BGC-CROP_CICE_MOM6%MARBL-BIO_MOSART_DGLC%NOEVOLVE_WW3 + + + + B1850E_MTt4s + 1850E_CAM70%MT%CT4S_CLM60%BGC-CROP_CICE_MOM6%MARBL-BIO_MOSART_DGLC%NOEVOLVE_WW3 + + + B1850EM + 1850E_CAM70%MT%CT4S_CLM60%BGC-CROP_CICE_MOM6%MARBL-BIO_MOSART_DGLC%NOEVOLVE_WW3 + diff --git a/cime_config/config_pes.xml b/cime_config/config_pes.xml index 080f435ac..c940a51bc 100644 --- a/cime_config/config_pes.xml +++ b/cime_config/config_pes.xml @@ -75,7 +75,7 @@ 0 - + 20 ypd/ 7100 pe-hrs/simyr expected - + 5400 1792 1792 @@ -154,7 +154,7 @@ 3608 3300 4 - 1 + 64 5400 diff --git a/cime_config/testfiles/ExpectedTestFails.xml b/cime_config/testfiles/ExpectedTestFails.xml new file mode 100644 index 000000000..62ee74fdd --- /dev/null +++ b/cime_config/testfiles/ExpectedTestFails.xml @@ -0,0 +1,100 @@ + + + + + + + + + + + FAIL + CDEPS/#243 + + + + + diff --git a/cime_config/testlist_allactive.xml b/cime_config/testlist_allactive.xml index 59f5ec73c..750cd9bf8 100644 --- a/cime_config/testlist_allactive.xml +++ b/cime_config/testlist_allactive.xml @@ -53,6 +53,7 @@ + @@ -61,19 +62,86 @@ + - + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/components/cam b/components/cam index 98c35fcb0..47dd341f8 160000 --- a/components/cam +++ b/components/cam @@ -1 +1 @@ -Subproject commit 98c35fcb0aa62d4b51ebc437e3d5df185b17e817 +Subproject commit 47dd341f83afc1e1faf28fd4cb6e463629db4c19 diff --git a/components/cdeps b/components/cdeps index f6bc97483..4165d0657 160000 --- a/components/cdeps +++ b/components/cdeps @@ -1 +1 @@ -Subproject commit f6bc97483a1bfb7352c6c5610a13ed898a86990b +Subproject commit 4165d0657d6f60e8dba650e9a1771a1344972b76 diff --git a/components/cice b/components/cice index f14ec8339..eebe30a55 160000 --- a/components/cice +++ b/components/cice @@ -1 +1 @@ -Subproject commit f14ec8339bc5bc4a7a0664da5e247b5cfda531a1 +Subproject commit eebe30a55c114ac8456774e422f721d7504911e0 diff --git a/components/clm b/components/clm index a3459c540..6d8dad82e 160000 --- a/components/clm +++ b/components/clm @@ -1 +1 @@ -Subproject commit a3459c54022057a2d5711c7fffdf5b3524623857 +Subproject commit 6d8dad82ed98a0e51e315d42991459386dc2da96 diff --git a/components/cmeps b/components/cmeps index 5b7d76978..959e9a0b1 160000 --- a/components/cmeps +++ b/components/cmeps @@ -1 +1 @@ -Subproject commit 5b7d76978e2fdc661ec2de4ba9834b985decadc6 +Subproject commit 959e9a0b1aa3c602de4674f0553875efa8f6c1b6 diff --git a/components/mom b/components/mom index 298d20a2a..2ece02120 160000 --- a/components/mom +++ b/components/mom @@ -1 +1 @@ -Subproject commit 298d20a2a0c952eb185f8641e304028a4a58d5b5 +Subproject commit 2ece021207d3a235ac13bc3e68fc04d9050fde75 diff --git a/libraries/mpi-serial b/libraries/mpi-serial index 2c44fb3d3..39416b754 160000 --- a/libraries/mpi-serial +++ b/libraries/mpi-serial @@ -1 +1 @@ -Subproject commit 2c44fb3d327be7c6429894bc5d4de769f3486848 +Subproject commit 39416b754652bd281a89e86b37734aa5f3ffafd6 diff --git a/share b/share index f6f31fd61..3dd7edb12 160000 --- a/share +++ b/share @@ -1 +1 @@ -Subproject commit f6f31fd61cb8f80aee97311fcca64b3e26b0202c +Subproject commit 3dd7edb12d3fc109914f922f3131711cf0d7fbd4