Skip to content

Commit 5d52792

Browse files
committed
Deployed 83a33cb with MkDocs version: 1.6.1
1 parent cd843bc commit 5d52792

8 files changed

Lines changed: 356 additions & 260 deletions

File tree

2025-LUST/2_Using/2_02_creating_easyconfig_files/index.html

Lines changed: 164 additions & 106 deletions
Large diffs are not rendered by default.

2025-LUST/2_Using/2_03_external_modules/index.html

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4559,10 +4559,15 @@ <h2 id="what-are-external-modules">What are external modules?<a class="headerlin
45594559
<p>For such dependencies, EasyBuild will:</p>
45604560
<ul>
45614561
<li>
4562-
<p>load the module before initiating the software build and install procedure</p>
4562+
<p>load the module before initiating the software build and install procedure,</p>
45634563
</li>
45644564
<li>
4565-
<p>include a <code>module load</code> statement in the generated module file (for runtime dependencies)</p>
4565+
<p>include a <code>module load</code> statement in the generated module file (for runtime dependencies),</p>
4566+
</li>
4567+
<li>
4568+
<p>create <code>EBROOT*</code> and <code>EBVERSION*</code> environment variables if proper metadata is defined
4569+
for the external module (see later in this section). The latter can be picked up by
4570+
easyblocks just as the corresponding variables set by regular EasyBuild-installed modules.</p>
45664571
</li>
45674572
</ul>
45684573
<div class="admonition note">
@@ -4600,8 +4605,12 @@ <h2 id="easybuild-metadata-for-external-modules">EasyBuild Metadata for external
46004605
<span class="na">prefix</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">FFTW_DIR/..</span>
46014606
<span class="na">version</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">3.3.8.10</span>
46024607
</code></pre></div></p>
4603-
<p>The environment variable <code>$EBROOTFFTW</code> will also be defined according to the <code>prefix</code> specified in the metadata file.</p>
4604-
<p>On LUMI, users in generally don't need to be too concerned about the metadata file as the EasyBuild-user (and other hidden
4608+
<p>The environment variable <code>$EBROOTFFTW</code> will also be defined according to the <code>prefix</code> specified in the metadata file,
4609+
which is always pointing to an environment variable and starting a path relative from there.</p>
4610+
<p>As a result of this definition, to a correctly written easyblock, the <code>cray-fftw/3.3.8.10</code> module will appear as
4611+
if it is the EasyBuild-installed <code>FFTW/3.3.8.10</code> module and during the installation process, the environment
4612+
variables <code>EBROOTFFTW</code> and <code>EBVERSIONFFTW</code> will be defined as expected.</p>
4613+
<p>On LUMI, users don't need to be too concerned about the metadata file as the EasyBuild-user (and other hidden
46054614
EasyBuild configuration modules) take care of pointing to the right metadata file, which is specific for each version of the
46064615
Cray PE and hence each version of the LUMI software stack.</p>
46074616
<hr />
@@ -4626,7 +4635,7 @@ <h2 id="easybuild-metadata-for-external-modules">EasyBuild Metadata for external
46264635
<span class="md-icon" title="Last update">
46274636
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg>
46284637
</span>
4629-
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="April 30, 2025 09:07:39">April 30, 2025</span>
4638+
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="May 6, 2025 15:20:25">May 6, 2025</span>
46304639
</span>
46314640

46324641

2025-LUST/2_Using/2_04_implementing_easyblocks/index.html

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -800,6 +800,15 @@
800800
<nav class="md-nav" aria-label="Easyconfig parameters">
801801
<ul class="md-nav__list">
802802

803+
<li class="md-nav__item">
804+
<a href="#reading-parameters" class="md-nav__link">
805+
<span class="md-ellipsis">
806+
Reading parameters
807+
</span>
808+
</a>
809+
810+
</li>
811+
803812
<li class="md-nav__item">
804813
<a href="#updating-parameters" class="md-nav__link">
805814
<span class="md-ellipsis">
@@ -4783,6 +4792,15 @@
47834792
<nav class="md-nav" aria-label="Easyconfig parameters">
47844793
<ul class="md-nav__list">
47854794

4795+
<li class="md-nav__item">
4796+
<a href="#reading-parameters" class="md-nav__link">
4797+
<span class="md-ellipsis">
4798+
Reading parameters
4799+
</span>
4800+
</a>
4801+
4802+
</li>
4803+
47864804
<li class="md-nav__item">
47874805
<a href="#updating-parameters" class="md-nav__link">
47884806
<span class="md-ellipsis">
@@ -4955,7 +4973,7 @@ <h2 id="generic-vs-software-specific-easyblocks">Generic vs software-specific ea
49554973
Typically this involves highly customised steps, for example specifying dedicated configuration options, creating
49564974
or adjusting specific files, executing non-standard shell commands, etc. Usually a custom implementation of the
49574975
sanity check is also included. Much of the work done in software-specific easyblocks can often also be done
4958-
in generic easyblocks using parameters such as <code>confdigopts</code> etc., but a software-specific easyblock can
4976+
in generic easyblocks using parameters such as <code>configopts</code> etc., but a software-specific easyblock can
49594977
hide some of that complexity from the user. Other software-specific easyblocks implement very specific
49604978
installation procedures that do not fit in one of the generic ones.</p>
49614979
<p>Using a generic easyblock requires specifying the <code>easyblock</code> parameter in the easyconfig file.
@@ -5005,7 +5023,7 @@ <h3 id="python-module-name-and-location">Python module name and location<a class
50055023
<ul>
50065024
<li><code>gcc.py</code> (for <em>GCC</em>)</li>
50075025
<li><code>netcdf_fortran.py</code> (for <em>netCDF-Fortran</em>)</li>
5008-
<li><code>gamess_us.py</code> (for <em>GAMESS (US)</em>)</li>
5026+
<li><code>gamess_us.py</code> (for <em>GAMESS-US</em>)</li>
50095027
</ul>
50105028
<p>The <code>get_module_path</code> function provided by the EasyBuild framework in the
50115029
<code>easybuild.framework.easyconfig.easyconfig</code> module returns the (full)
@@ -5029,8 +5047,8 @@ <h3 id="python-module-name-and-location">Python module name and location<a class
50295047
configuration option. As long as both the filename of the Python module and the name of the Python class
50305048
are correct, EasyBuild will use these easyblocks when needed.</p>
50315049
<p>On LUMI, the EasyBuild configuration modules take care of setting this parameter (using the corresponding environment
5032-
variable), pointing to custom easyblocks in the LUMI software stack itself and a repo (with a fixed name) that users
5033-
can create themselves. At this moment it does not yet include possible other easyblock repositories in other repositories.</p>
5050+
variable), pointing to custom easyblocks in the LUMI software stack itself, the repo for contributed easyconfigs,
5051+
and a repo (with a fixed name) that users can create themselves. </p>
50345052
<h2 id="structure-of-an-easyblock">Structure of an easyblock<a class="headerlink" href="#structure-of-an-easyblock" title="Permanent link">&para;</a></h2>
50355053
<p>The example below shows the overall structure of an easyblock:</p>
50365054
<div class="highlight"><pre><span></span><code><span class="kn">from</span><span class="w"> </span><span class="nn">easybuild.framework.easyblock</span><span class="w"> </span><span class="kn">import</span> <span class="n">EasyBlock</span>
@@ -5080,6 +5098,7 @@ <h2 id="deriving-from-existing-easyblocks">Deriving from existing easyblocks<a c
50805098
<span class="nb">super</span><span class="p">(</span><span class="n">EB_Example</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">configure_step</span><span class="p">()</span>
50815099
</code></pre></div>
50825100
<h2 id="easyconfig-parameters">Easyconfig parameters<a class="headerlink" href="#easyconfig-parameters" title="Permanent link">&para;</a></h2>
5101+
<h3 id="reading-parameters">Reading parameters<a class="headerlink" href="#reading-parameters" title="Permanent link">&para;</a></h3>
50835102
<p>All of the easyconfig parameters that are defined in an easyconfig file
50845103
are available via the <code>EasyConfig</code> instance that can be accessed through <code>self.cfg</code> in an easyblock.
50855104
For instance, if the easyconfig file specifies</p>
@@ -5207,6 +5226,8 @@ <h2 id="executing-shell-commands">Executing shell commands<a class="headerlink"
52075226
<p><code>std_qa=&lt;dict&gt;</code> to specify regular expression patterns for common questions, and the matching answer;</p>
52085227
</li>
52095228
</ul>
5229+
<p>In EasyBuild 5, the new function <code>run_shell_cmd</code> is introduced to replace these functions,
5230+
and both functions are deprecated and scheduled to be removed in EasyBuild 6.</p>
52105231
<h2 id="manipulating-environment-variables">Manipulating environment variables<a class="headerlink" href="#manipulating-environment-variables" title="Permanent link">&para;</a></h2>
52115232
<p>To (re)define environment variables, the <code>setvar</code> function provided by the
52125233
<a href="https://docs.easybuild.io/en/latest/api/easybuild.tools.environment.html"><code>easybuild.tools.environment</code></a>
@@ -5585,7 +5606,7 @@ <h3 id="exercise-i2">Exercise I.2<a class="headerlink" href="#exercise-i2" title
55855606
<span class="md-icon" title="Last update">
55865607
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg>
55875608
</span>
5588-
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="April 30, 2025 09:07:39">April 30, 2025</span>
5609+
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="May 6, 2025 15:20:25">May 6, 2025</span>
55895610
</span>
55905611

55915612

2025-LUST/3_Advanced/3_02_hooks/index.html

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4743,12 +4743,16 @@ <h2 id="why-hooks">Why hooks?<a class="headerlink" href="#why-hooks" title="Perm
47434743
<p>Some site have really large hook files to implement policies and modify standard EasyBuild build recipes, e.g.,</p>
47444744
<ul>
47454745
<li><a href="https://github.com/easybuilders/JSC/blob/2022/Custom_Hooks/eb_hooks.py">The hooks file from Jülich Supercomputing Centre</a></li>
4746-
<li>ComputeCanada <a href="https://github.com/ComputeCanada/easybuild-computecanada-config/blob/main/cc_hooks_common.py">cc_hooks_common.py</a>
4747-
and <a href="https://github.com/ComputeCanada/easybuild-computecanada-config/blob/main/cc_hooks_gentoo.py">cc_hooks_gento.py</a></li>
4746+
<li>Digital Research Alliance of Canada (formerly ComputeCanada)
4747+
<a href="https://github.com/ComputeCanada/easybuild-computecanada-config/blob/main/cc_hooks_common.py">cc_hooks_common.py</a>
4748+
and <a href="https://github.com/ComputeCanada/easybuild-computecanada-config/blob/main/2023/cc_hooks.py">2023/cc_hooks.py</a>
4749+
files</li>
47484750
<li><a href="https://github.com/EESSI/software-layer/blob/main/eb_hooks.py">The hooks file from the EESSI software stack</a>.
4749-
<a href="https://www.eessi-hpc.org/">EESSI</a> is an effort to build a software stack distributed via
4750-
<a href="https://cernvm.cern.ch/fs/">CernVM-FS</a> using EasyBuild to build all software.</li>
4751+
<a href="https://www.eessi.io/">EESSI</a> is an effort to build a software stack distributed via
4752+
<a href="https://cernvm.cern.ch/fs/">CernVM-FS</a> using EasyBuild to build all software.</li>
47514753
</ul>
4754+
<p>On LUMI we also use hooks, but the definition file is rather small. e/g/.
4755+
<a href="https://github.com/Lumi-supercomputer/LUMI-SoftwareStack/blob/main/easybuild/hooks/LUMI_site_hooks-22.08.py">the LUMI hooks file in use since LUMI/22.08</a>.</p>
47524756
<h2 id="implementing-and-using-hooks">Implementing and using hooks<a class="headerlink" href="#implementing-and-using-hooks" title="Permanent link">&para;</a></h2>
47534757
<p>Using hooks is done by implementing functions with specific names in a Python module,
47544758
and configuring EasyBuild to use them by specifying the path to the file that contains them
@@ -4778,6 +4782,8 @@ <h3 id="startend-hooks">Start/end hooks<a class="headerlink" href="#startend-hoo
47784782
<p>These hooks can be implementing by defining a function named <code>start_hook</code> and <code>end_hook</code>
47794783
in the Python module file that is provided via the <code>hooks</code> configuration option.
47804784
No arguments are provided when calling these hooks.</p>
4785+
<p><em>On LUMI, an end hook is used to clear the Lmod cache after installing software as otherwise
4786+
a newly installed module may not be found immediately.</em></p>
47814787
<h3 id="parse-hook">Parse hook<a class="headerlink" href="#parse-hook" title="Permanent link">&para;</a></h3>
47824788
<p>The <code>parse</code> hook is triggered right after an easyconfig file is being parsed,
47834789
<em>before</em> EasyBuild sets up its internal data structures based on the parsed easyconfig.</p>
@@ -4883,7 +4889,7 @@ <h3 id="manipulating-easyconfig-parameters">Manipulating easyconfig parameters<a
48834889
<span class="md-icon" title="Last update">
48844890
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg>
48854891
</span>
4886-
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="April 30, 2025 09:07:39">April 30, 2025</span>
4892+
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="May 6, 2025 16:08:56">May 6, 2025</span>
48874893
</span>
48884894

48894895

2025-LUST/3_Advanced/3_03_slurm_jobs/index.html

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4854,6 +4854,7 @@ <h3 id="job-backend">Job backend<a class="headerlink" href="#job-backend" title=
48544854
<div class="highlight"><pre><span></span><code><span class="nb">export</span><span class="w"> </span><span class="nv">EASYBUILD_JOB_BACKEND</span><span class="o">=</span><span class="s1">&#39;Slurm&#39;</span>
48554855
</code></pre></div>
48564856
<p>On LUMI this is taken care of in the EasyBuild configuration modules such as <code>EasyBuild-user</code>.</p>
4857+
<p>In EasyBuild v5.x the default is already Slurm, and GC3Pie is deprecated.</p>
48574858
<h3 id="job-resources">Job resources<a class="headerlink" href="#job-resources" title="Permanent link">&para;</a></h3>
48584859
<p>To submit an installation as a job, simply use <code>eb --job</code>:</p>
48594860
<div class="highlight"><pre><span></span><code>eb<span class="w"> </span>example.eb<span class="w"> </span>--job
@@ -4915,8 +4916,9 @@ <h3 id="temporary-log-files-and-build-directories">Temporary log files and build
49154916
<p>The problems for the temporary log files are twofold. First, they may end up in a place
49164917
that is not available on the compute nodes. E.g., for the same reasons as for the build
49174918
path, the LUMI EasyBuild configuration will place the temporary files in a subdirectory of
4918-
<code>$XDG_RUNTIME_DIR</code> on the loginnodes but a subdirectory of <code>/dev/shm/$USER</code> on the
4919-
compute nodes. The second problem however is that if an installation fails, those log files are
4919+
<code>$XDG_RUNTIME_DIR</code> on the loginnodes but a subdirectory of <code>/tmp/$sLURM_JOBID</code> on the
4920+
compute nodes (as that one should be cleaned up at the end of the job).
4921+
The second problem however is that if an installation fails, those log files are
49204922
not even accessible anymore which may leave you wondering about the actual cause of the failing
49214923
installation...</p>
49224924
<p>To remedy this, there are a couple of EasyBuild configuration options you can use:</p>
@@ -5075,7 +5077,7 @@ <h3 id="final-result">Final result<a class="headerlink" href="#final-result" tit
50755077
<span class="md-icon" title="Last update">
50765078
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg>
50775079
</span>
5078-
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="April 30, 2025 09:07:39">April 30, 2025</span>
5080+
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="May 6, 2025 16:08:56">May 6, 2025</span>
50795081
</span>
50805082

50815083

search/search_index.json

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)