diff --git a/.github/workflows/testing.yml b/.github/workflows/testing.yml index 6089ec98adf..3ddf29c1663 100644 --- a/.github/workflows/testing.yml +++ b/.github/workflows/testing.yml @@ -213,7 +213,7 @@ jobs: - name: Cache inputdata uses: actions/cache@v3 with: - path: /home/cime/inputdata + path: /root/storage/inputdata key: inputdata-2 - name: Install uv uses: astral-sh/setup-uv@v7 diff --git a/doc/requirements.txt b/doc/requirements.txt index bedeb8ab75d..5415ccaf0b3 100644 --- a/doc/requirements.txt +++ b/doc/requirements.txt @@ -1,8 +1,8 @@ -sphinx +sphinx<8.0 sphinxcontrib-programoutput sphinx-rtd-theme sphinx-copybutton evv4esm xmlschema sphinx-toolbox -sphinx-autobuild \ No newline at end of file +sphinx-autobuild diff --git a/doc/source/contributing-guide.rst b/doc/source/contributing-guide.rst index 5fbb9cb4f78..e43b1785f92 100644 --- a/doc/source/contributing-guide.rst +++ b/doc/source/contributing-guide.rst @@ -161,7 +161,7 @@ following example assumes the model is checked out in ``$SRC_PATH``. .. code-block:: bash - docker run -it --rm --hostname docker -e CIME_MODEL=e3sm -v ${SRC_PATH}:/root/model -v ./storage:/root/storage -v ./inputdata:/root/inputdata -w /root/E3SM/cime ghcr.io/esmci/cime:latest bash + docker run -it --rm --hostname docker -e CIME_MODEL=e3sm -v ${SRC_PATH}:/root/model -v ./storage:/root/storage -w /root/E3SM/cime ghcr.io/esmci/cime:latest bash This example will drop into a shell where CIME commands or tests can be run. The options are broken down below. @@ -169,8 +169,7 @@ The options are broken down below. - ``--hostname docker`` is required to tell CIME which machine definition to use. - ``-e CIME_MODEL=e3sm`` defines the model. - ``-v ${SRC_PATH}:/root/E3SM`` passes through the model source. -- ``-v ./inputdata:/root/inputdata`` persistent input data. -- ``-v ./storage:/root/storage`` persistent cases, baselines, timings, etc. +- ``-v ./storage:/root/storage`` persist all data; cases, baselines, archive, inputdata. the bind mounts can be broken out if you only want to persist certain input/outputs. - ``-w /root/E3SM/cime`` set the current working directory to CIME's root. - ``ghcr.io/esmci/cime:latest`` container image. - ``bash`` the command to run in the container. diff --git a/docker/.cime/config_machines.v2.xml b/docker/.cime/config_machines.v2.xml index b36a660488a..e93b632c6c7 100644 --- a/docker/.cime/config_machines.v2.xml +++ b/docker/.cime/config_machines.v2.xml @@ -12,8 +12,8 @@ /root/storage/timings CIME /root/storage/cases - /root/inputdata - /root/inputdata-clmforc + /root/storage/inputdata + /root/storage/inputdata-clmforc /root/storage/archive/$CASE /root/storage/baselines/$COMPILER /root/storage/tools/cprnc diff --git a/docker/.cime/docker/config_machines.xml b/docker/.cime/docker/config_machines.xml index 3aee97ec316..c0ea01f4b05 100644 --- a/docker/.cime/docker/config_machines.xml +++ b/docker/.cime/docker/config_machines.xml @@ -11,8 +11,8 @@ /root/storage/timings CIME /root/storage/cases - /root/inputdata - /root/inputdata-clmforc + /root/storage/inputdata + /root/storage/inputdata-clmforc /root/storage/archive/$CASE /root/storage/baselines/$COMPILER /root/storage/tools/cprnc diff --git a/docker/Dockerfile b/docker/Dockerfile index 526cac2b2a5..de90ef73365 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -58,10 +58,10 @@ RUN curl -LsSf https://astral.sh/uv/install.sh | sh \ COPY docker/entrypoint.sh /entrypoint.sh RUN SKIP_ENTRYPOINT=true source /entrypoint.sh \ - && mkdir -p /root/{tools,inputdata,cases,timings,archive,baselines} \ + && mkdir -p /root/storage/{tools,inputdata,cases,timings,archive,baselines} \ && download_input_data -COPY --from=cprnc /root/tools/cprnc /root/tools/cprnc +COPY --from=cprnc /root/storage/tools/cprnc /root/storage/tools/cprnc COPY docker/.cime /root/.cime ENTRYPOINT ["/entrypoint.sh"] diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh index ca1c38537a4..d11c2373484 100755 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -6,10 +6,12 @@ export LOGNAME="${USER}" # Set static home path where .cime exists and container entrypoint options SKIP_ENTRYPOINT="${SKIP_ENTRYPOINT:-false}" +STORAGE_DIR="${HOME}/storage" # Build the cprnc tool from CIME sources function build_cprnc() { cprnc_dir="${CPRNC_DIR:-${PWD}/CIME/non_py/cprnc}" + tools_dir="${STORAGE_DIR}/tools" if [[ ! -e "${cprnc_dir}" ]]; then echo "CPRNC path does not exist. Change to CIME's root directory." @@ -22,10 +24,10 @@ function build_cprnc() { make - mkdir "${HOME}/tools" + [[ ! -e "${tools_dir}" ]] && mkdir -p "${tools_dir}" # Needs to be copied into the machines configured tool path - cp cprnc "${HOME}/tools/cprnc" + cp cprnc "${tools_dir}/cprnc" popd || exit 1 } @@ -34,16 +36,16 @@ function build_cprnc() { # Download input data needed for model setup # required for grid generation tests function download_input_data() { - mkdir -p "${HOME}/inputdata/cpl/gridmaps/oQU240" - mkdir -p "${HOME}/inputdata/share/domains" + mkdir -p "${STORAGE_DIR}/inputdata/cpl/gridmaps/oQU240" + mkdir -p "${STORAGE_DIR}/inputdata/share/domains" - wget -O "${HOME}/inputdata/cpl/gridmaps/oQU240/map_oQU240_to_ne4np4_aave.160614.nc" \ + wget -O "${STORAGE_DIR}/inputdata/cpl/gridmaps/oQU240/map_oQU240_to_ne4np4_aave.160614.nc" \ https://portal.nersc.gov/project/e3sm/inputdata/cpl/gridmaps/oQU240/map_oQU240_to_ne4np4_aave.160614.nc - wget -O "${HOME}/inputdata/share/domains/domain.ocn.ne4np4_oQU240.160614.nc" \ + wget -O "${STORAGE_DIR}/inputdata/share/domains/domain.ocn.ne4np4_oQU240.160614.nc" \ https://portal.nersc.gov/project/e3sm/inputdata/share/domains/domain.ocn.ne4np4_oQU240.160614.nc - wget -O "${HOME}/inputdata/share/domains/domain.lnd.ne4np4_oQU240.160614.nc" \ + wget -O "${STORAGE_DIR}/inputdata/share/domains/domain.lnd.ne4np4_oQU240.160614.nc" \ https://portal.nersc.gov/project/e3sm/inputdata/share/domains/domain.lnd.ne4np4_oQU240.160614.nc }