<html>#2397: incorporate envssetup into Cactus option list
<table style='border-spacing: 1ex 0pt; '>
<tr><td style='text-align:right'> Reporter:</td><td>Roland Haas</td></tr>
<tr><td style='text-align:right'>   Status:</td><td>new</td></tr>
<tr><td style='text-align:right'>Milestone:</td><td></td></tr>
<tr><td style='text-align:right'>  Version:</td><td></td></tr>
<tr><td style='text-align:right'>     Type:</td><td>enhancement</td></tr>
<tr><td style='text-align:right'> Priority:</td><td>major</td></tr>
<tr><td style='text-align:right'>Component:</td><td>Cactus</td></tr>
</table>

<p>Currently, on clusters that use environment modules, simfactory uses the envsetup entry of the machine definition files to load modules required by the option list.</p>
<p>This ties together option list and machine definition file, making it hard to offer different “flavors” of the same machine.</p>
<p>It should be possible to instead use the information in envsetup in the Cactus option list. Since this implies that “make” needs to change its own environment the simplest way to achieve that is to have the top level Makefile load the environment then pass everything down one level:</p>
<div class="codehilite language-plaintext"><pre><span></span><span class="c">%:</span>
  <span class="n">export</span> <span class="n">ENV_VAR</span><span class="p">=</span>&quot;<span class="n">somesetting</span>&quot; <span class="p">;</span> $<span class="p">(</span><span class="n">MAKE</span><span class="p">)</span> <span class="o">-</span><span class="n">f</span> <span class="n">Makefile</span><span class="p">.</span><span class="nb">real</span> $<span class="p">(</span><span class="n">MAKECMDGOALS</span><span class="p">)</span>
</pre></div>


<p>or one can try something like wrapping two Makefiles in one</p>
<div class="codehilite"><pre><span></span><span class="nl">.PHONY:</span> <span class="nf">all</span>
<span class="nl">.SILENT:</span>

<span class="nf">ifneq</span> <span class="p">(</span><span class="no">$</span><span class="p">(</span><span class="no">MODULES_LOADED</span><span class="p">),</span> <span class="no">yes</span><span class="p">)</span>
<span class="err">%:</span>
    <span class="nf">export</span> <span class="no">ENV_VAR</span><span class="err">=&quot;</span><span class="no">dummy</span><span class="err">&quot;</span> <span class="c">; make MODULES_LOADED=yes $(MAKECMDGOALS)</span>
<span class="no">else</span>

<span class="nl">all:</span>
    <span class="nf">echo</span> <span class="err">&quot;</span><span class="no">ENV_VAR</span> <span class="no">is</span> <span class="no">$$ENV_VAR</span><span cla
<p>--<br/>
Ticket URL: <a href='https://bitbucket.org/einsteintoolkit/tickets/issues/2397/incorporate-envssetup-into-cactus-option'>https://bitbucket.org/einsteintoolkit/tickets/issues/2397/incorporate-envssetup-into-cactus-option</a></p>
</html>