A path through this book¶
The number in the filename is not the reading order. A task enters a level. The level names a part.¶
A path through this book is a task, then a level, then a part.¶
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. |
|
A module will not load. |
|
A recipe for software that has none. |
|
A port from conda-forge or Spack. |
|
A SeisSol-shaped port that also has an old easyconfig. |
|
A stack on a machine with none. |
|
A ReFrame test of an installed module. |
|
EasyBuild is the wrong tool. |
RecipeReader¶
Level A: read a recipe¶
One hour. No installations are present. 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 |
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 |
|---|---|
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. 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 |
|---|---|
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. 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.