What configme install yelmo does
This page is for context only. The recommended way to install Yelmo is to run configme install yelmo (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 Yelmo checkout and the packages it needs:
fesm-utils,FastHydrology,elsaandtracer, inside the checkout. - Manifest: write
.configme/manifest.toml, so the checkout is self-describing regardless of its directory name. - Link
fesm-utilsintoFastHydrology,elsaandtracer. - Configure: generate a system-specific
Makefilefor each package from shared machine/compiler fragments, with the netCDF paths detected automatically (nf-config,nc-config). - Build
fesm-utils(LIS, FFTW, SHTns and the utilities), in a serial and an OpenMP variant. This is the slow step (~10–30 min);configmeasks before running it (--build-depsbuilds without asking).
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 dkrz_levante machine with the ifx compiler, where $ROOT is the checkout directory; substitute your own machine and compiler.
#!/usr/bin/env bash
# Generated by `configme install` — reproduces this install.
set -euo pipefail
# --- clone primary ---
git clone git@github.com:fesmc/yelmo.git $ROOT
# target=yelmo machine=dkrz_levante compiler=ifx
# --- clone components ---
git clone git@github.com:fesmc/fesm-utils.git $ROOT/fesm-utils
git clone git@github.com:fesmc/FastHydrology.git $ROOT/FastHydrology
git clone git@github.com:fesmc/elsa.git $ROOT/elsa
git clone git@github.com:fesmc/tracer.git $ROOT/tracer
# --- manifest ---
mkdir -p $ROOT/.configme # write .configme/manifest.toml
# --- links ---
ln -s ../fesm-utils $ROOT/FastHydrology/fesm-utils
ln -s ../fesm-utils $ROOT/elsa/fesm-utils
ln -s ../fesm-utils $ROOT/tracer/fesm-utils
# --- configure (per package) ---
(cd $ROOT/fesm-utils && configme config fesm-utils -m dkrz_levante -c ifx)
# fesm-utils: build (serial, omp):
(cd $ROOT/fesm-utils && make openmp=0 all)
(cd $ROOT/fesm-utils && make openmp=1 all)
(cd $ROOT/FastHydrology && configme config FastHydrology -m dkrz_levante -c ifx)
(cd $ROOT/elsa && configme config elsa -m dkrz_levante -c ifx)
(cd $ROOT/tracer && configme config tracer -m dkrz_levante -c ifx)
(cd $ROOT && configme config yelmo -m dkrz_levante -c ifx)FastHydrology, elsa and tracer are compiled by Yelmo’s own Makefile, as part of make yelmo-static.