A path through this book

a task enters an hour-sized level in RecipeReader, StackWalker, or ReframeReader

The number in the filename is not the reading order. A task enters a level. The level names a part.

task to level to part

A path through this book is a task, then a level, then a part.

levels A B C through RecipeReader, then StackWalker and ReframeReader

The path is a task and a level, then a part. RecipeReader, StackWalker, ReframeReader stay the names.

Filenames keep a number to allow the source tree to sort. That number does not indicate a reading order. The page is the curriculum and contains hour-sized levels with named prerequisite edges. A reader arrives with a task. The map can be entered at any point. The book consists of three parts, each represented by a page. RecipeReader provides the file and the build. StackWalker provides a tree on a machine that may not have built it. ReframeReader provides four kinds of testing, then ReFrame. The levels are hour-sized entries into those parts. Numbering does not represent the curriculum.

By task

Task

Read

A build just failed.

Reading a failed build

A module will not load.

The robot and What “installed” means

A recipe for software that has none.

Writing one from nothing

A port from conda-forge or Spack.

eb-stack ports a recipe and bumps one

A SeisSol-shaped port that also has an old easyconfig.

SeisSol, from a Spack recipe to a PR

A stack on a machine with none.

EESSI, somebody else’s stack

A ReFrame test of an installed module.

A ReFrame test is a class

EasyBuild is the wrong tool.

the afterword

RecipeReader

Level A: read a recipe

One hour. No installations are present. No configuration is required.

Read

For

the tutorial

predicting what EasyBuild will do with a file

An easyconfig is Python

why the file is Python, and what that costs

A toolchain is a hierarchy

which dependencies a toolchain permits

The file is evaluated. The robot walks the tree. An easyblock runs the steps. Open a file. Write name = 'thing', version = '1.0', and a toolchain the site has. That is the first typed-in recipe.

Level B: understand why a build fails

Two hours. The level where most support tickets reside. Requires level A.

Read

For

A pin is for one generation

why a version is a pin and not a floor

The robot

what --robot resolves, and in what order

A versionsuffix is part of the name

why a suffix is identity

What “installed” means

what a sanity check asserts

A checksum is a claim about bytes

what a checksum does and does not promise

Level C: work on a machine

Estimated time: two hours. Requires level A. Level B speeds it up. Reading a failed build covers reading the error block and the log. Standing where the build stood covers standing in the build’s own environment. Build your own, without asking anyone covers installing with no admin rights. Your first week on somebody’s stack covers three tasks of the kind handed to a newcomer. Use level C when something is failing. Reading a failed build is intended for that situation.

Level D: read the machinery

Three hours. B and C are required. Read How a build executes for the eighteen steps and which parameter belongs to which owner. Read The isolation policy for the visibility constraints of a build. Read Build dependencies are not dependencies for the three dependency kinds. Read What a toolchain injects for toolchainopts. Read What a toolchain injects for optarch. Read Patches, and what a patch is relative to for strip levels. Read Patches, and what a patch is relative to for applying cleanly versus applying correctly. Read What a module exports for the user‑facing interface.

Level E: write a recipe

Three hours. Needs D.

Read

For

Writing one from nothing

an easyconfig for software that has none

One easyconfig, many installs

exts_list and bundles

Languages that bring their own package manager

Python, R, Rust and the ecosystem with no easyblock

Extensions, and what an entry in exts_list inherits

what an exts_list entry inherits, and what it does not

Writing an easyblock

when a parameter is not enough

Testing, and the four things it can mean

the four things called testing

Testing, and the four things it can mean names the fourth kind and stops. ReframeReader is that kind.

StackWalker

Level F: distribute a stack

CernVM-FS and The same stack somewhere else. Two hours. The artifact is a mounted tree rather than a tarball.

ReframeReader

The official tutorial, the CSCS webinar, ExCALIBUR-tests and the EESSI suite each follow the same sequence. The sequence consists of a test class, the pipeline, the configuration file, a performance number, and the portable suite. There are two levels. The grain matches the recipe.

Level G: write a ReFrame test

A ReFrame test is a class, The pipeline has six stages, The configuration file is the machine, and A performance function is a number with a unit. Two hours.

Level H: run a portable suite

Two hours. Needs G. Parameters multiply the suite compares parameter against variable and explores the cartesian product. A portable test leaves the machine in the config explains why valid_systems = ['snellius'] is the trap. Software maps to tests describes the mapping file, the CSCS layout, and the three uses. Reading a failed ReFrame run covers the stage directory, rfm_job.out, and --restore-session.

Whenever

Not a level.

Read eb-stack ports a recipe and bumps one when port a conda-forge or Spack recipe, or bump a generation.

Read Inspect writes a work queue, not a recipe when inspecting artifacts and the residual queue.

Read Format, lint and check are three different questions when formatting, linting and checking.

Read A stack lock is not a package lock when performing whole‑stack lock, build list, and diff.

Read A campaign finding is a typed failure, not a log when reviewing typed campaign findings.

Read A wrapper is the range EasyBuild will not write when handling ModuleRC, wrapping, and -Dr.

Read locks, bwrap, Python, and datasets when installing those four surfaces.

Read Four things that actually happened when examining the failures in full, with the diagnosis.

Read the glossary when a word in this book means something specific.

Read What to remember when a page was read last week.

Read the exercises when a session is being run, or a self‑check is needed.

Read references when consulting the papers the pages cite.

Read the afterword when deciding whether to use EasyBuild at all.