What configme install climber-x does
This page is for context only. The recommended way to install CLIMBER-X is to run configme install climber-x (see the Quick start); you do not need to run any of the commands below by hand. They are reproduced here so you can see exactly what configme clones, configures, links, and builds on your behalf.
configme install performs the following phases:
- Clone the CLIMBER-X checkout and each component repository it needs. The open components (
fesm-utils,coordinates,yelmo) are cloned at the CLIMBER-X root;yelmois pinned to itsclimber-xbranch. The private components (bgc,vilma) are attempted too, but a clone failure (no access) is a soft skip recorded as “unavailable” — never a hard failure. They live inside CLIMBER-X’s ownsrc/tree. - Manifest — write
.configme/manifest.tomlso the checkout is self-describing regardless of its directory name. - Link each component into the directories where the build expects it (e.g.
yelmo/fesm-utils -> ../fesm-utils). - Configure — generate a system-specific
Makefilefor every package from shared machine/compiler fragments, with the netCDF paths detected automatically. - Build
fesm-utils(LIS + FFTW + utils). This is the slow step (~10-30 min), which is why it is folded into the install rather than run separately. - Extras — install
runmeif it is missing, create.runme_config, and clone the CLIMBER-X input-data repository (hosted on GitLab) intoinput/.
Each run also writes the exact commands it executed to a .install.sh script in the checkout, so any install is reproducible. The script below is the equivalent for the pik_hpc2024 machine with the ifx compiler; substitute your own machine and compiler, and note that the netCDF paths (NC_FROOT / NC_CROOT) and the install root ($CLIMBERXROOT) are filled in automatically for your system.
#!/usr/bin/env bash
# Generated by `configme install` — reproduces this install.
set -euo pipefail
# target=climber-x machine=pik_hpc2024 compiler=ifx
# --- clone ---
git clone git@github.com:cxesmc/climber-x.git $CLIMBERXROOT
git clone git@github.com:fesmc/fesm-utils.git $CLIMBERXROOT/fesm-utils
# fesm-utils/utils: component of fesm-utils (not cloned)
git clone git@github.com:fesmc/coordinates.git $CLIMBERXROOT/coordinates
git clone git@github.com:fesmc/yelmo.git $CLIMBERXROOT/yelmo
(cd $CLIMBERXROOT/yelmo && git checkout climber-x)
git clone git@github.com:cxesmc/bgc.git $CLIMBERXROOT/src/bgc # private (soft skip without access)
(cd $CLIMBERXROOT/src/bgc && git submodule update --init --recursive) # M4AGO submodule
git clone git@github.com:cxesmc/vilma.git $CLIMBERXROOT/src/vilma # private (soft skip without access)
# --- manifest ---
mkdir -p $CLIMBERXROOT/.configme # write .configme/manifest.toml
# --- links ---
ln -s ../fesm-utils $CLIMBERXROOT/yelmo/fesm-utils
# --- configure (per package) ---
# fesm-utils: build with autotools (slow, ~10-30 min):
(cd $CLIMBERXROOT/fesm-utils && NC_FROOT=<auto-detected> NC_CROOT=<auto-detected> ./build.py --variant both -m pik_hpc2024 -c ifx)
(cd $CLIMBERXROOT/fesm-utils/utils && configme config fesm-utils/utils -m pik_hpc2024 -c ifx)
# fesm-utils/utils: build (serial, omp):
(cd $CLIMBERXROOT/fesm-utils/utils && make openmp=0 fesmutils-static)
(cd $CLIMBERXROOT/fesm-utils/utils && make openmp=1 fesmutils-static)
(cd $CLIMBERXROOT/coordinates && configme config coordinates -m pik_hpc2024 -c ifx)
(cd $CLIMBERXROOT/yelmo && configme config yelmo -m pik_hpc2024 -c ifx)
# bgc: clone-only (configme does not configure it)
# vilma: clone-only (configme does not configure it)
(cd $CLIMBERXROOT && configme config climber-x -m pik_hpc2024 -c ifx)
# --- extras ---
command -v runme >/dev/null 2>&1 || pip install git+https://github.com/fesmc/runme
# runme_config: create .runme_config and set hpc/account
runme --config # or: cp .runme/runme_config .runme_config
git clone https://gitlab.pik-potsdam.de/cxesmc/climber-x-input.git $CLIMBERXROOT/inputOnce configme install finishes, choose a model flavor and build it as shown in Compile and run.