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:

  1. 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; yelmo is pinned to its climber-x branch. 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 own src/ tree.
  2. Manifest — write .configme/manifest.toml so the checkout is self-describing regardless of its directory name.
  3. Link each component into the directories where the build expects it (e.g. yelmo/fesm-utils -> ../fesm-utils).
  4. Configure — generate a system-specific Makefile for every package from shared machine/compiler fragments, with the netCDF paths detected automatically.
  5. 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.
  6. Extras — install runme if it is missing, create .runme_config, and clone the CLIMBER-X input-data repository (hosted on GitLab) into input/.

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/input

Once configme install finishes, choose a model flavor and build it as shown in Compile and run.