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
}