<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://hpc-wiki.info/hpc/index.php?action=history&amp;feed=atom&amp;title=Admin_Guide_Easybuild</id>
	<title>Admin Guide Easybuild - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://hpc-wiki.info/hpc/index.php?action=history&amp;feed=atom&amp;title=Admin_Guide_Easybuild"/>
	<link rel="alternate" type="text/html" href="https://hpc-wiki.info/hpc/index.php?title=Admin_Guide_Easybuild&amp;action=history"/>
	<updated>2026-05-26T11:16:12Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.35.9</generator>
	<entry>
		<id>https://hpc-wiki.info/hpc/index.php?title=Admin_Guide_Easybuild&amp;diff=4826&amp;oldid=prev</id>
		<title>Kamil-braschke-0d3e@uni-wuppertal.de: /* Hooks */</title>
		<link rel="alternate" type="text/html" href="https://hpc-wiki.info/hpc/index.php?title=Admin_Guide_Easybuild&amp;diff=4826&amp;oldid=prev"/>
		<updated>2022-04-05T10:55:58Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Hooks&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 10:55, 5 April 2022&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l121&quot; &gt;Line 121:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 121:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[https://easybuild.readthedocs.io/en/latest/Hooks.html Hooks] are small Python scripts which can directly influence the build process. These can be e.g. used to make site-specific adjustment to Easyconfig file without the need to create a completely new one each time.&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[https://easybuild.readthedocs.io/en/latest/Hooks.html Hooks] are small Python scripts which can directly influence the build process. These can be e.g. used to make site-specific adjustment to Easyconfig file without the need to create a completely new one each time.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;An example hook script is given below, which adds some slurm specific configuration, adds flags to every OpenMPI build and points to &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;an &lt;/del&gt;license file for intel software installations:&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;An example hook script is given below, which adds some slurm specific configuration, adds flags to every OpenMPI build and points to &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;a &lt;/ins&gt;license file for intel software installations:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;import sys, os&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;import sys, os&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l169&quot; &gt;Line 169:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 169:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         self.log.info(&amp;quot;[pre-configure hook] Adding %s&amp;quot; % extra_opts)&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         self.log.info(&amp;quot;[pre-configure hook] Adding %s&amp;quot; % extra_opts)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         self.cfg.update(&amp;#039;configopts&amp;#039;, extra_opts)&amp;lt;/source&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         self.cfg.update(&amp;#039;configopts&amp;#039;, extra_opts)&amp;lt;/source&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Toolchains ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Toolchains ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key hpc_wiki:diff::1.12:old-4497:rev-4826 --&gt;
&lt;/table&gt;</summary>
		<author><name>Kamil-braschke-0d3e@uni-wuppertal.de</name></author>
	</entry>
	<entry>
		<id>https://hpc-wiki.info/hpc/index.php?title=Admin_Guide_Easybuild&amp;diff=4497&amp;oldid=prev</id>
		<title>Mukund-pondkule-6a11@uni-paderborn.de at 17:56, 9 December 2020</title>
		<link rel="alternate" type="text/html" href="https://hpc-wiki.info/hpc/index.php?title=Admin_Guide_Easybuild&amp;diff=4497&amp;oldid=prev"/>
		<updated>2020-12-09T17:56:29Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 17:56, 9 December 2020&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot; &gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:HPC-Admin|Easybuild]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:HPC-Admin|Easybuild]]&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;nowiki /&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:HPC.NRW-Best-Practices|Easybuild]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:HPC.NRW-Best-Practices|Easybuild]]&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;nowiki /&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Easybuild]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Easybuild]]&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;nowiki /&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;{{DISPLAYTITLE:Easybuild (Admin Guide)}}&amp;lt;nowiki /&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Introduction ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Introduction ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key hpc_wiki:diff::1.12:old-3895:rev-4497 --&gt;
&lt;/table&gt;</summary>
		<author><name>Mukund-pondkule-6a11@uni-paderborn.de</name></author>
	</entry>
	<entry>
		<id>https://hpc-wiki.info/hpc/index.php?title=Admin_Guide_Easybuild&amp;diff=3895&amp;oldid=prev</id>
		<title>Robert-schade-e757@uni-paderborn.de at 15:39, 2 November 2020</title>
		<link rel="alternate" type="text/html" href="https://hpc-wiki.info/hpc/index.php?title=Admin_Guide_Easybuild&amp;diff=3895&amp;oldid=prev"/>
		<updated>2020-11-02T15:39:10Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 15:39, 2 November 2020&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot; &gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:HPC-Admin|Easybuild]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:HPC-Admin|Easybuild]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:HPC.NRW-Best-Practices|Easybuild]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:HPC.NRW-Best-Practices|Easybuild]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category:Easybuild]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key hpc_wiki:diff::1.12:old-3851:rev-3895 --&gt;
&lt;/table&gt;</summary>
		<author><name>Robert-schade-e757@uni-paderborn.de</name></author>
	</entry>
	<entry>
		<id>https://hpc-wiki.info/hpc/index.php?title=Admin_Guide_Easybuild&amp;diff=3851&amp;oldid=prev</id>
		<title>Robert-schade-e757@uni-paderborn.de at 14:16, 2 November 2020</title>
		<link rel="alternate" type="text/html" href="https://hpc-wiki.info/hpc/index.php?title=Admin_Guide_Easybuild&amp;diff=3851&amp;oldid=prev"/>
		<updated>2020-11-02T14:16:17Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 14:16, 2 November 2020&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot; &gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:HPC-Admin]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:HPC-Admin&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;|Easybuild&lt;/ins&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:HPC.NRW-Best-Practices]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:HPC.NRW-Best-Practices&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;|Easybuild&lt;/ins&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key hpc_wiki:diff::1.12:old-3769:rev-3851 --&gt;
&lt;/table&gt;</summary>
		<author><name>Robert-schade-e757@uni-paderborn.de</name></author>
	</entry>
	<entry>
		<id>https://hpc-wiki.info/hpc/index.php?title=Admin_Guide_Easybuild&amp;diff=3769&amp;oldid=prev</id>
		<title>Robert-schade-e757@uni-paderborn.de at 16:48, 31 October 2020</title>
		<link rel="alternate" type="text/html" href="https://hpc-wiki.info/hpc/index.php?title=Admin_Guide_Easybuild&amp;diff=3769&amp;oldid=prev"/>
		<updated>2020-10-31T16:48:25Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 16:48, 31 October 2020&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l170&quot; &gt;Line 170:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 170:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Toolchains ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Toolchains ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;About every 6 months EasyBuild releases new &amp;#039;&amp;#039;toolchains&amp;#039;&amp;#039; which combine a set of specific modules for compilers, MPI and numerical libraries (cf. [https://easybuild.readthedocs.io/en/latest/Common-toolchains.html common toolchains]). The two most common are: * intel + intelcuda –&amp;amp;gt; icc/ifort, iMPI, MKL * foss + fosscuda –&amp;amp;gt; gcc, OpenMPI, OpenBLAS, LAPACK, ScaLAPACK, FFTW&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;About every 6 months EasyBuild releases new &amp;#039;&amp;#039;toolchains&amp;#039;&amp;#039; which combine a set of specific modules for compilers, MPI and numerical libraries (cf. [https://easybuild.readthedocs.io/en/latest/Common-toolchains.html common toolchains]). The two most common are:  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* intel + intelcuda –&amp;amp;gt; icc/ifort, iMPI, MKL  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* foss + fosscuda –&amp;amp;gt; gcc, OpenMPI, OpenBLAS, LAPACK, ScaLAPACK, FFTW&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Modules ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Modules ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key hpc_wiki:diff::1.12:old-3766:rev-3769 --&gt;
&lt;/table&gt;</summary>
		<author><name>Robert-schade-e757@uni-paderborn.de</name></author>
	</entry>
	<entry>
		<id>https://hpc-wiki.info/hpc/index.php?title=Admin_Guide_Easybuild&amp;diff=3766&amp;oldid=prev</id>
		<title>Robert-schade-e757@uni-paderborn.de: Author Sebastian Potthoff</title>
		<link rel="alternate" type="text/html" href="https://hpc-wiki.info/hpc/index.php?title=Admin_Guide_Easybuild&amp;diff=3766&amp;oldid=prev"/>
		<updated>2020-10-30T18:45:36Z</updated>

		<summary type="html">&lt;p&gt;Author Sebastian Potthoff&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Category:HPC-Admin]]&lt;br /&gt;
[[Category:HPC.NRW-Best-Practices]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
EasyBuild (EB) is a Python framework to automate the process of software installations and the creation of environment modules in an HPC environment. Most installations are hereby directly compiled from source to create architecture optimized and performant builds. The following article shortly describes the first steps of how to set up EasyBuild. The main focus, however, lies on the description of a sustainable directory structure and configuration helping to keep an overview of installed software while beeing able to provide frequent updates of new versions. A more complete guide on how to set up EasyBuild can be found at the official [https://easybuild.readthedocs.io/en/latest/Installation.html documentation].&lt;br /&gt;
&lt;br /&gt;
== Setup ==&lt;br /&gt;
&lt;br /&gt;
=== Assumptions ===&lt;br /&gt;
&lt;br /&gt;
* /sw/easybuild/ is the main folder and accessible from all compute nodes&lt;br /&gt;
* /sw/easybuild/default will be the default path for your EB installation&lt;br /&gt;
* /sw/easybuild/stacks/skylake/2020a is a path for a specific CPU arch and software stack&lt;br /&gt;
* CentOS 7 (otherwise the list of dependencies for EB can vary)&lt;br /&gt;
* LMOD &amp;amp;gt;= v8.3.4 (the current versions from the OpenHPC repos are &amp;#039;&amp;#039;&amp;#039;not&amp;#039;&amp;#039;&amp;#039; sufficient)&lt;br /&gt;
* Python 3 (You can also use Python 2, but at this point you really shouldn’t)&lt;br /&gt;
&lt;br /&gt;
=== Initial installation and configuration ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;# INSTALL SYSTEM DEPS&lt;br /&gt;
yum install epel-release&lt;br /&gt;
yum install python3 git gcc gcc-c++ libibverbs-devel patch openssl-devel &lt;br /&gt;
&lt;br /&gt;
# DOWNLOAD THE BOOTSTRAP EB SCRIPT AND BOOTSTRAP EB&lt;br /&gt;
curl -O https://raw.githubusercontent.com/easybuilders/easybuild-framework/develop/easybuild/scripts/bootstrap_eb.py&lt;br /&gt;
python3 bootstrap_eb.py /sw/easybuild/default&lt;br /&gt;
&lt;br /&gt;
# UPDATE $MODULEPATH, AND LOAD THE EasyBuild MODULE&lt;br /&gt;
module use /sw/easybuild/default/modules/all # add this to your bashrc&lt;br /&gt;
module load EasyBuild&lt;br /&gt;
&lt;br /&gt;
# CREATE DIRS AND A FIRST CONFIGFILE FOR YOUR CPU ARCHITECTURE&lt;br /&gt;
mkdir -p /sw/easybuild/configfiles # directory for your configs&lt;br /&gt;
mkdir -p /sw/easybuild/sources&lt;br /&gt;
mkdir -p /sw/easybuild/stacks/skylake/2020a&lt;br /&gt;
&lt;br /&gt;
vim /sw/easybuild/configfiles/skylake-2020a.cf # Enter the values from the example below&lt;br /&gt;
&lt;br /&gt;
# CREATE AN ALIAS IN YOUR BASHRC FOR EVERY SPECIFIC CONFIGFILE, E.G&lt;br /&gt;
alias ebsky-2020a=&amp;#039;eb --configfile=/sw/easybuild/configfiles/skylake-2020a.cfg&amp;#039;&lt;br /&gt;
&lt;br /&gt;
# YOU CAN LIST ALL AVAILABLE CONFIG OPTIONS WITH&lt;br /&gt;
eb -a&lt;br /&gt;
# OR YOU REDIRECT THE OUTPUT OF eb --confighelp TO GET AN ANNOTADED CONFIGFILE&lt;br /&gt;
eb --confighelp &amp;gt;&amp;gt; myconfig.cfg&lt;br /&gt;
&lt;br /&gt;
# TO SHOW YOUR CURRENT EB CONFIGURATION USE&lt;br /&gt;
eb --show-config&lt;br /&gt;
ebsky-2020a --show-config&lt;br /&gt;
&lt;br /&gt;
#NOTE: If you install software with EB and just use &amp;#039;eb&amp;#039; you will install it into your default folder!&amp;lt;/source&amp;gt;&lt;br /&gt;
=== Example usage of EasyBuild ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;# Basic usage&lt;br /&gt;
eb -h # short help&lt;br /&gt;
eb -H # complete list of all options&lt;br /&gt;
&lt;br /&gt;
# Dry-run installation of the foss-2020a toolchain&lt;br /&gt;
ebsky-2020a foss-2020a.eb -r -D # -D == dry-run / -r == install deps&lt;br /&gt;
ebsky-2020a foss-2020a.eb -r -M # -M == show only missing dependencies&lt;br /&gt;
&lt;br /&gt;
# Real installation with all deps&lt;br /&gt;
ebsky-2020a foss-2020a.eb -r&amp;lt;/source&amp;gt;&lt;br /&gt;
== Folder structure ==&lt;br /&gt;
&lt;br /&gt;
Inside of &amp;lt;code&amp;gt;/sw/easybuild/stacks/&amp;lt;/code&amp;gt; , a folder for every supported CPU architecture is created (broadwell, skylake, etc.). These contain subfolders of the specific EB toolchain release &amp;#039;&amp;#039;dates&amp;#039;&amp;#039; (i.e. 2018b, 2019a etc.) where one finds the modules and installed software. In addition the folders &amp;lt;code&amp;gt;configfiles&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;hooks&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;sources&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;easybuild_repo&amp;lt;/code&amp;gt; can be found here. The easybuild_repo folder is synced via a local git repository and contains a folder &amp;lt;code&amp;gt;archive&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;custom_easyconfigs&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;/sw&lt;br /&gt;
└── easybuild&lt;br /&gt;
    ├── configfiles&lt;br /&gt;
    ├── custom_easyconfigs&lt;br /&gt;
    ├── hooks   # --&amp;amp;gt; Python script which can alter the build process&lt;br /&gt;
    └── sources # --&amp;amp;gt; place to store all downloaded source-files; prevents downloading  a source multiple times&lt;br /&gt;
    ├── stacks&lt;br /&gt;
        ├── broadwell&lt;br /&gt;
        ├── skylake&lt;br /&gt;
            └── 2018b&lt;br /&gt;
            └── 2019a&lt;br /&gt;
                ├── modules&lt;br /&gt;
                └── software&lt;br /&gt;
            ├── ...&lt;br /&gt;
        ├── ...&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Further Configuration of Easybuild ==&lt;br /&gt;
&lt;br /&gt;
=== Config files ===&lt;br /&gt;
&lt;br /&gt;
For every toolchain release there exists a &amp;#039;&amp;#039;base configuration&amp;#039;&amp;#039; file inside the folder &amp;lt;code&amp;gt;configfiles&amp;lt;/code&amp;gt;. Personal settings of different admins can be made in local config.cfg files in &amp;lt;code&amp;gt;~/.config/easybuild/&amp;lt;/code&amp;gt;. Configfiles can be used via&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;eb --configfile=/PATH/TO/CONFIG.CFG&amp;lt;/pre&amp;gt;&lt;br /&gt;
Files which are listed within &amp;lt;code&amp;gt;--configfile&amp;lt;/code&amp;gt; are treated first.&lt;br /&gt;
&lt;br /&gt;
Example of a basic &amp;#039;&amp;#039;skylake-2020a.cfg&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;[config]&lt;br /&gt;
prefix = /sw/easybuild/stacks/skylake/2020a&lt;br /&gt;
module-naming-scheme = HierarchicalMNS&lt;br /&gt;
sourcepath=/sw/easybuild/sources/&lt;br /&gt;
robot-paths=/sw/easybuild/custom_easyconfigs:%(DEFAULT_ROBOT_PATHS)s&lt;br /&gt;
group-writable-installdir=true&amp;lt;/pre&amp;gt;&lt;br /&gt;
Using different config files for different architectures and toolchain releases helps to handle heterogeneous systems and to keep an overview of installed software.&lt;br /&gt;
&lt;br /&gt;
Create a bash alias for every config file for ease of use.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;alias ebsky-2020a=&amp;#039;eb --configfile=/sw/easybuild/configfiles/skylake-2020a.cfg&amp;#039;&amp;lt;/source&amp;gt;&lt;br /&gt;
=== Archive and self written Easyconfig files ===&lt;br /&gt;
&lt;br /&gt;
After every successful build, the used &amp;#039;&amp;#039;Easyconfig&amp;#039;&amp;#039; file will be be archived in &amp;lt;code&amp;gt;stacks/$ARCH/$RELEASE/easybuild_repo/&amp;lt;/code&amp;gt;. Self-written Easyconfig files can be stored in the folder &amp;lt;code&amp;gt;custom_easyconfigs&amp;lt;/code&amp;gt; and will be considered when searching for software. A guide on how to write your own easyconfig file can be found [https://easybuild.readthedocs.io/en/latest/Writing_easyconfig_files.html here].&lt;br /&gt;
&lt;br /&gt;
=== SLURM integration ===&lt;br /&gt;
&lt;br /&gt;
SLURM can be used as a [https://easybuild.readthedocs.io/en/latest/Submitting_jobs.html job] backend to compile multiple programs at the same time. Dependencies will be resolved automatically and the order of running jobs is taken care of. Use the flags &amp;lt;code&amp;gt;--job&amp;lt;/code&amp;gt; when you run eb. You can add the following to your config files. Modify appropriately.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;job-backend=Slurm&lt;br /&gt;
job-cores=&amp;lt;NCORES&amp;gt;&lt;br /&gt;
job-max-jobs=&amp;lt;NJOBS&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
=== Hooks ===&lt;br /&gt;
&lt;br /&gt;
[https://easybuild.readthedocs.io/en/latest/Hooks.html Hooks] are small Python scripts which can directly influence the build process. These can be e.g. used to make site-specific adjustment to Easyconfig file without the need to create a completely new one each time.&lt;br /&gt;
&lt;br /&gt;
An example hook script is given below, which adds some slurm specific configuration, adds flags to every OpenMPI build and points to an license file for intel software installations:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;import sys, os&lt;br /&gt;
from easybuild.tools.build_log import print_msg&lt;br /&gt;
from distutils.version import LooseVersion&lt;br /&gt;
&lt;br /&gt;
def start_hook(*args, **opts):&lt;br /&gt;
    if &amp;quot;--job&amp;quot; in sys.argv:&lt;br /&gt;
        # Check if env var was set&lt;br /&gt;
        slurm_partition = os.getenv(&amp;quot;SBATCH_PARTITION&amp;quot;)&lt;br /&gt;
        if slurm_partition is not None:&lt;br /&gt;
            print_msg(&amp;quot;[start-hook] SLURM_PARTITION ENV VAR set: %s.&amp;quot;%slurm_partition)&lt;br /&gt;
        else:&lt;br /&gt;
            slurm_partition = &amp;quot;normal&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        slurm_mem_per_node = os.getenv(&amp;quot;SBATCH_MEM_PER_NODE&amp;quot;)&lt;br /&gt;
        if slurm_mem_per_node is not None:&lt;br /&gt;
            print_msg(&amp;quot;[start-hook] SLURM_MEM_PER_NODE ENV VAR set: %s.&amp;quot;%slurm_mem_per_node)&lt;br /&gt;
        else:&lt;br /&gt;
            slurm_mem_per_node = &amp;quot;36G&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        import easybuild.tools.job.slurm as slurm&lt;br /&gt;
        class slurm_job(slurm.SlurmJob):&lt;br /&gt;
            def __init__(self, *args, **opts):&lt;br /&gt;
                super(slurm_job, self).__init__(*args, **opts)&lt;br /&gt;
                self.job_specs[&amp;#039;partition&amp;#039;] = slurm_partition&lt;br /&gt;
                self.job_specs[&amp;#039;mem&amp;#039;] = slurm_mem_per_node&lt;br /&gt;
                self.job_specs[&amp;#039;time&amp;#039;] = &amp;#039;12:00:00&amp;#039;&lt;br /&gt;
        slurm.SlurmJob = slurm_job&lt;br /&gt;
        print_msg(&amp;quot;[start-hook] using partition &amp;lt;&amp;lt; %s &amp;gt;&amp;gt; &amp;quot;%slurm_partition)&lt;br /&gt;
&lt;br /&gt;
def pre_prepare_hook(self, *args, **kwargs):&lt;br /&gt;
    # SET PATH TO INTEL LICENSE FILE&lt;br /&gt;
    if self.name in [&amp;quot;icc&amp;quot;, &amp;quot;ifort&amp;quot;, &amp;quot;itac&amp;quot;, &amp;quot;VTune&amp;quot;]:&lt;br /&gt;
        self.cfg[&amp;#039;license_file&amp;#039;] = &amp;quot;/sw/licenses/USE_SERVER.lic&amp;quot;&lt;br /&gt;
        self.log.info(&amp;quot;[pre-prepare hook] Setting path to license file: %s&amp;quot; % self.cfg[&amp;#039;license_file&amp;#039;] )&lt;br /&gt;
        print_msg(&amp;quot;Intel license file: %s&amp;quot; % self.cfg[&amp;#039;license_file&amp;#039;])&lt;br /&gt;
&lt;br /&gt;
def pre_configure_hook(self, *args, **kwargs):&lt;br /&gt;
    if self.name == &amp;#039;OpenMPI&amp;#039;:&lt;br /&gt;
        extra_opts = &amp;quot;&amp;quot;&lt;br /&gt;
        # Enable slurm and pmi support&lt;br /&gt;
        extra_opts += &amp;quot;--with-slurm --with-pmi&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        # Now add the options&lt;br /&gt;
        self.log.info(&amp;quot;[pre-configure hook] Adding %s&amp;quot; % extra_opts)&lt;br /&gt;
        self.cfg.update(&amp;#039;configopts&amp;#039;, extra_opts)&amp;lt;/source&amp;gt;&lt;br /&gt;
== Toolchains ==&lt;br /&gt;
&lt;br /&gt;
About every 6 months EasyBuild releases new &amp;#039;&amp;#039;toolchains&amp;#039;&amp;#039; which combine a set of specific modules for compilers, MPI and numerical libraries (cf. [https://easybuild.readthedocs.io/en/latest/Common-toolchains.html common toolchains]). The two most common are: * intel + intelcuda –&amp;amp;gt; icc/ifort, iMPI, MKL * foss + fosscuda –&amp;amp;gt; gcc, OpenMPI, OpenBLAS, LAPACK, ScaLAPACK, FFTW&lt;br /&gt;
&lt;br /&gt;
== Modules ==&lt;br /&gt;
&lt;br /&gt;
Modules in this example are automatically created using the [https://easybuilders.github.io/easybuild/files/hust14_paper.pdf hierarchical module naming scheme]. There are other options (the default being the &amp;#039;&amp;#039;EasyBuildModuleNamingScheme&amp;#039;&amp;#039;) available as well as the option to create your own site-specific module naming scheme. See this [https://github.com/easybuilders/easybuild/wiki/Using-a-custom-module-naming-scheme link].&lt;br /&gt;
&lt;br /&gt;
=== Meta-modules ===&lt;br /&gt;
&lt;br /&gt;
A meta-module in this case is a module which makes a different module path available to the user while taking care of the correct path for the current architecture. An example of such a module is given below. These modules can e.g. reside in folder /sw/easybuild/meta-module/palma. The &amp;#039;&amp;#039;software&amp;#039;&amp;#039; in this example case is called palma and the versions correspond the EB toolchain releases, i.e. 2019b.lua, 2020a.lua etc. The &amp;lt;code&amp;gt;CPU_ARCH&amp;lt;/code&amp;gt; environment variable which is used here, is exported in a &amp;lt;code&amp;gt;modules.sh&amp;lt;/code&amp;gt; script within &amp;lt;code&amp;gt;/etc/profile.d&amp;lt;/code&amp;gt; via &amp;lt;code&amp;gt;CPU_ARCH=$(cat /sys/devices/cpu/caps/pmu_name)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;lua&amp;quot;&amp;gt;help([==[&lt;br /&gt;
&lt;br /&gt;
Description&lt;br /&gt;
===========&lt;br /&gt;
This is a meta module giving you access to the PALMA 2020a software stack. Software on PALMA is build using the&lt;br /&gt;
EasyBuild Python Framework.&lt;br /&gt;
&lt;br /&gt;
Supported CPU Architectures: skylake&lt;br /&gt;
&lt;br /&gt;
More information&lt;br /&gt;
================&lt;br /&gt;
 - PALMA: https://confluence.uni-muenster.de/display/HPC&lt;br /&gt;
 - EasyBuild: https://easybuild.readthedocs.io&lt;br /&gt;
]==])&lt;br /&gt;
&lt;br /&gt;
whatis([==[This is a meta module giving you access to the PALMA 2020a software stack. Software on PALMA is build using&lt;br /&gt;
 the EasyBuild Python Framework.]==])&lt;br /&gt;
whatis([==[PALMA: https://confluence.uni-muenster.de/display/HPC]==])&lt;br /&gt;
whatis([==[EasyBuild: https://easybuild.readthedocs.io]==])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local version = &amp;quot;2020a&amp;quot;&lt;br /&gt;
local root = &amp;quot;/sw/easybuild/stacks&amp;quot;&lt;br /&gt;
local cpu_arch = os.getenv(&amp;quot;CPU_ARCH&amp;quot;)&lt;br /&gt;
local suffix = &amp;quot;/modules/all/Core&amp;quot;&lt;br /&gt;
local hostname = subprocess(&amp;quot;hostname -s&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
-- LmodMessage(&amp;quot;cpu_arch = &amp;quot;, cpu_arch)&lt;br /&gt;
-- LmodMessage(&amp;quot;hostname = &amp;quot;, hostname)&lt;br /&gt;
&lt;br /&gt;
local cpu_arch = os.getenv(&amp;quot;CPU_ARCH&amp;quot;)&lt;br /&gt;
if (string.find(hostname, &amp;quot;^r13n[01-12].*&amp;quot;)) then&lt;br /&gt;
    cpu_arch = cpu_arch .. &amp;quot;-IB&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- ONLY SKYLAKE HAS THIS TOOLCHAIN AT THE MOMENT&lt;br /&gt;
if (cpu_arch ~= &amp;quot;skylake&amp;quot;) then&lt;br /&gt;
    -- THROWS AN ERROR MESSAGE AND EXIT&lt;br /&gt;
    LmodError(version, &amp;quot;IS NOT YET AVAILABLE ON THE &amp;quot;, cpu_arch,  &amp;quot;ARCHITECTURE.&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
conflict(&amp;quot;palma&amp;quot;)&lt;br /&gt;
prepend_path(&amp;quot;MODULEPATH&amp;quot;, pathJoin(root, cpu_arch, version, suffix))&lt;br /&gt;
-- add_property(&amp;quot;lmod&amp;quot;,)&amp;lt;/source&amp;gt;&lt;br /&gt;
=== Using the correct modules path ===&lt;br /&gt;
&lt;br /&gt;
We created a &amp;lt;code&amp;gt;modules.sh&amp;lt;/code&amp;gt; file inside of &amp;lt;code&amp;gt;/etc/profile.d/&amp;lt;/code&amp;gt; on the compute and login nodes instead of symlinking directly to &amp;lt;code&amp;gt;lmod/init/profile&amp;lt;/code&amp;gt;. This deals with some issues Lmod encounters with slurm. In case of an interactive slurm session, it also has to reset &amp;lt;code&amp;gt;$MODULEPATH&amp;lt;/code&amp;gt; before updating/reloading the currently loaded modules. Otherwise updating the modules will not unload the old path since we might be on a node with a different architecture than on the login node.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;#!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
# NOTE: In a slurm batch job (non-interactive, non-login) this file is not sourced.&lt;br /&gt;
#       Only the file where $BASH_ENV points to is sourced in this case.&lt;br /&gt;
 &lt;br /&gt;
# CPU ARCH ENV VARIABLE FOR META MODULES&lt;br /&gt;
if [ -f &amp;quot;/sys/devices/cpu/caps/pmu_name&amp;quot; ];then&lt;br /&gt;
    export CPU_ARCH=`cat /sys/devices/cpu/caps/pmu_name`&lt;br /&gt;
fi&lt;br /&gt;
 &lt;br /&gt;
# Special treatment if we are in an interactive slurm session&lt;br /&gt;
if [ ! -z &amp;quot;$SLURM_NODELIST&amp;quot; ];then&lt;br /&gt;
  echo &amp;quot;YOU ARE NOW IN AN INTERACTIVE SLURM JOB&amp;quot;&lt;br /&gt;
  # Reset module path&lt;br /&gt;
  export MODULEPATH=/sw/easybuild/meta-modules/&lt;br /&gt;
  # Update the currently loaded modules to account for architecture specific paths&lt;br /&gt;
  module update&lt;br /&gt;
  # re-source the bash init to gain module autocomplete functionality in an interactive session&lt;br /&gt;
  . /opt/lmod/lmod/init/bash &amp;gt;/dev/null&lt;br /&gt;
  return&lt;br /&gt;
fi&lt;br /&gt;
 &lt;br /&gt;
# Enable bash module support&lt;br /&gt;
. /opt/lmod/lmod/init/profile &amp;gt;/dev/null&amp;lt;/source&amp;gt;&lt;br /&gt;
== Improvements ==&lt;br /&gt;
&lt;br /&gt;
* There are still a lot of (low-level) modules for system libraries exposed to the users –&amp;amp;gt; A solution can be using [https://easybuild.readthedocs.io/en/latest/Manipulating_dependencies.html#installing-dependencies-as-hidden-modules-using-hide-deps hidden modules]&lt;br /&gt;
* Instead of using meta-modules, one can use bind mounts on every node, such that the architecture specific folder points to a generall easybuild install folder (symlinks are know to cause issues)&lt;br /&gt;
* An automated build process for all architectures&lt;br /&gt;
* ‘module spider’ output pointing to toolchain instead of compiler plus MPI library&lt;/div&gt;</summary>
		<author><name>Robert-schade-e757@uni-paderborn.de</name></author>
	</entry>
</feed>