A path through this book¶
Filenames keep a number so the source tree sorts. That number is not a reading order. This page is the curriculum: hour-sized levels, prerequisite edges named. A reader arrives with a task. The map can be entered at any point. The book is three parts, each a page:
Part |
For |
|---|---|
the file and the build |
|
a tree on a machine that may not have built it |
|
four kinds of testing, then ReFrame |
Levels below are hour-sized entries into those parts. Numbering is not the curriculum.
By task¶
Task |
Read |
|---|---|
a build just failed |
|
a module will not load |
|
a recipe for software that has none |
|
a port from conda-forge or Spack |
|
a stack on a machine with none |
|
a ReFrame test of an installed module |
|
EasyBuild is the wrong tool |
The recipe¶
Level A. Read a recipe¶
One hour. No installations are present and no configuration is required.
Read |
For |
|---|---|
predicting what EasyBuild will do with a file |
|
why the file is Python, and what that costs |
|
which dependencies a toolchain permits |
Finally, an easyconfig can be read aloud. What it will download, which easyblock it will search for, and which dependencies it may use.
Level B. Understand why a build fails¶
Two hours, and the level where most support tickets reside. Requires level A.
Read |
For |
|---|---|
why a version is a pin and not a floor |
|
what |
|
why a suffix is identity |
|
what a sanity check asserts |
|
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.
Read |
For |
|---|---|
reading the error block and the log |
|
standing in the build’s own environment |
|
installing with no admin rights |
|
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. Build the machinery¶
Three hours.
Needs B and C. Read How a build executes for the eighteen steps, and which parameter belongs to which.
Read What a build is allowed to see for what a build is allowed to see.
Read Build dependencies are not dependencies for the three dependency kinds.
Read What a toolchain injects for toolchainopts and optarch.
Read Patches, and what a patch is relative to for strip levels, and applying cleanly against applying correctly.
Read What a module exports for what a user actually meets.
Level E. Write a recipe¶
Three hours. Needs D.
Read |
For |
|---|---|
an easyconfig for software that has none |
|
|
|
Python, R, Rust, and the ecosystem with no easyblock |
|
what an exts_list entry inherits, and what it does not |
|
when a parameter is not enough |
|
the four things called testing |
Testing, and the four things it can mean names the fourth kind and stops. The test is that kind.
Level F. Distribute a stack¶
Two hours. It needs A; the remainder is independent of B to E, which explains why it is placed last rather than hard.
Read |
For |
|---|---|
using a stack nobody at your site built |
|
how a stack reaches a machine, verified |
|
four machines, three routes |
|
the YAML list the bot builds |
|
comment, artefact, ingest |
|
a site stack next to EESSI |
|
why a site’s builds differ from a reading of the file |
The test¶
The official tutorial, the CSCS webinar, ExCALIBUR-tests and the EESSI suite each follow the same sequence: a test class, the pipeline, the configuration file, a performance number, and the portable suite. Two levels, same grain as the recipe.
Level G. Write a ReFrame test¶
Duration: two hours. Requires Testing, and the four things it can mean; What “installed” means accelerates the sanity comparison.
Read |
For |
|---|---|
a test is a decorated class, and the class decides it passed |
|
setup, compile, run, sanity, performance, cleanup |
|
systems, partitions, environments |
|
a figure of merit, a reference, a threshold |
|
when the test builds, when it loads a module |
Finally, a run-only test can be read aloud, detailing its execution, pass criteria, and the file that defines the permissible machine.
Level H. Run a portable suite¶
Two hours. Needs G.
Read |
For |
|---|---|
It compares |
|
It explains why |
|
It describes the mapping file, the CSCS layout, and the three uses. |
|
It covers the stage directory, |
Whenever¶
Not a level.
Read these when the question comes up.
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 Four EasyBuild 5 surfaces the earlier chapters skipped when installing locks, bwrap, and datasets.
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 the keypoints 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 chapters cite.
Read the afterword when deciding whether to use EasyBuild at all.