@@ -90,7 +90,7 @@ <h1>Source code for mache.spack.env</h1><div class="highlight"><pre>
9090< span class ="kn "> from</ span > < span class ="w "> </ span > < span class ="nn "> jinja2</ span > < span class ="w "> </ span > < span class ="kn "> import</ span > < span class ="n "> Template</ span >
9191
9292< span class ="kn "> from</ span > < span class ="w "> </ span > < span class ="nn "> mache.machine_info</ span > < span class ="w "> </ span > < span class ="kn "> import</ span > < span class ="n "> MachineInfo</ span > < span class ="p "> ,</ span > < span class ="n "> discover_machine</ span >
93- < span class ="kn "> from</ span > < span class ="w "> </ span > < span class ="nn "> mache.spack.shared</ span > < span class ="w "> </ span > < span class ="kn "> import</ span > < span class ="n "> _get_yaml_data</ span >
93+ < span class ="kn "> from</ span > < span class ="w "> </ span > < span class ="nn "> mache.spack.shared</ span > < span class ="w "> </ span > < span class ="kn "> import</ span > < span class ="n "> _get_modules </ span > < span class =" p " > , </ span > < span class =" n " > _get_yaml_data</ span >
9494< span class ="kn "> from</ span > < span class ="w "> </ span > < span class ="nn "> mache.version</ span > < span class ="w "> </ span > < span class ="kn "> import</ span > < span class ="n "> __version__</ span >
9595
9696
@@ -176,6 +176,12 @@ <h1>Source code for mache.spack.env</h1><div class="highlight"><pre>
176176 < span class ="k "> if</ span > < span class ="n "> config_file</ span > < span class ="ow "> is</ span > < span class ="ow "> not</ span > < span class ="kc "> None</ span > < span class ="p "> :</ span >
177177 < span class ="n "> config</ span > < span class ="o "> .</ span > < span class ="n "> read</ span > < span class ="p "> (</ span > < span class ="n "> config_file</ span > < span class ="p "> )</ span >
178178
179+ < span class ="n "> section</ span > < span class ="o "> =</ span > < span class ="n "> config</ span > < span class ="p "> [</ span > < span class ="s1 "> 'spack'</ span > < span class ="p "> ]</ span >
180+
181+ < span class ="n "> with_modules</ span > < span class ="o "> =</ span > < span class ="n "> section</ span > < span class ="o "> .</ span > < span class ="n "> getboolean</ span > < span class ="p "> (</ span > < span class ="s1 "> 'modules_before'</ span > < span class ="p "> )</ span > < span class ="ow "> or</ span > < span class ="n "> section</ span > < span class ="o "> .</ span > < span class ="n "> getboolean</ span > < span class ="p "> (</ span >
182+ < span class ="s1 "> 'modules_after'</ span >
183+ < span class ="p "> )</ span >
184+
179185 < span class ="n "> yaml_data</ span > < span class ="o "> =</ span > < span class ="n "> _get_yaml_data</ span > < span class ="p "> (</ span >
180186 < span class ="n "> machine</ span > < span class ="p "> ,</ span >
181187 < span class ="n "> compiler</ span > < span class ="p "> ,</ span >
@@ -190,7 +196,11 @@ <h1>Source code for mache.spack.env</h1><div class="highlight"><pre>
190196 < span class ="k "> with</ span > < span class ="nb "> open</ span > < span class ="p "> (</ span > < span class ="n "> yaml_filename</ span > < span class ="p "> ,</ span > < span class ="s1 "> 'w'</ span > < span class ="p "> )</ span > < span class ="k "> as</ span > < span class ="n "> handle</ span > < span class ="p "> :</ span >
191197 < span class ="n "> handle</ span > < span class ="o "> .</ span > < span class ="n "> write</ span > < span class ="p "> (</ span > < span class ="n "> yaml_data</ span > < span class ="p "> )</ span >
192198
193- < span class ="n "> modules</ span > < span class ="o "> =</ span > < span class ="s1 "> ''</ span >
199+ < span class ="k "> if</ span > < span class ="n "> with_modules</ span > < span class ="p "> :</ span >
200+ < span class ="n "> mods</ span > < span class ="o "> =</ span > < span class ="n "> _get_modules</ span > < span class ="p "> (</ span > < span class ="n "> yaml_data</ span > < span class ="p "> )</ span >
201+ < span class ="n "> modules</ span > < span class ="o "> =</ span > < span class ="sa "> f</ span > < span class ="s1 "> 'module purge</ span > < span class ="se "> \n</ span > < span class ="si "> {</ span > < span class ="n "> mods</ span > < span class ="si "> }</ span > < span class ="s1 "> '</ span >
202+ < span class ="k "> else</ span > < span class ="p "> :</ span >
203+ < span class ="n "> modules</ span > < span class ="o "> =</ span > < span class ="s1 "> ''</ span >
194204
195205 < span class ="k "> for</ span > < span class ="n "> shell_filename</ span > < span class ="ow "> in</ span > < span class ="p "> [</ span > < span class ="sa "> f</ span > < span class ="s1 "> '</ span > < span class ="si "> {</ span > < span class ="n "> machine</ span > < span class ="si "> }</ span > < span class ="s1 "> .sh'</ span > < span class ="p "> ,</ span > < span class ="sa "> f</ span > < span class ="s1 "> '</ span > < span class ="si "> {</ span > < span class ="n "> machine</ span > < span class ="si "> }</ span > < span class ="s1 "> _</ span > < span class ="si "> {</ span > < span class ="n "> compiler</ span > < span class ="si "> }</ span > < span class ="s1 "> _</ span > < span class ="si "> {</ span > < span class ="n "> mpi</ span > < span class ="si "> }</ span > < span class ="s1 "> .sh'</ span > < span class ="p "> ]:</ span >
196206 < span class ="c1 "> # load modules, etc. for this machine</ span >
@@ -254,6 +264,7 @@ <h1>Source code for mache.spack.env</h1><div class="highlight"><pre>
254264 < span class ="n "> shell</ span > < span class ="p "> ,</ span >
255265 < span class ="n "> include_e3sm_lapack</ span > < span class ="o "> =</ span > < span class ="kc "> False</ span > < span class ="p "> ,</ span >
256266 < span class ="n "> include_e3sm_hdf5_netcdf</ span > < span class ="o "> =</ span > < span class ="kc "> False</ span > < span class ="p "> ,</ span >
267+ < span class ="n "> yaml_template</ span > < span class ="o "> =</ span > < span class ="kc "> None</ span > < span class ="p "> ,</ span >
257268< span class ="p "> ):</ span >
258269< span class ="w "> </ span > < span class ="sd "> """</ span >
259270< span class ="sd "> Get the non-spack modules, environment variables and compiler names for a</ span >
@@ -282,6 +293,11 @@ <h1>Source code for mache.spack.env</h1><div class="highlight"><pre>
282293< span class ="sd "> Whether to include the same hdf5, netcdf-c, netcdf-fortran and pnetcdf</ span >
283294< span class ="sd "> as used in E3SM</ span >
284295
296+ < span class ="sd "> yaml_template : str, optional</ span >
297+ < span class ="sd "> A jinja template for a yaml file to be used for the environment instead</ span >
298+ < span class ="sd "> of the mache template. This allows you to use compilers and other</ span >
299+ < span class ="sd "> modules that differ from E3SM.</ span >
300+
285301< span class ="sd "> Returns</ span >
286302< span class ="sd "> -------</ span >
287303< span class ="sd "> mpicc : str</ span >
@@ -310,10 +326,27 @@ <h1>Source code for mache.spack.env</h1><div class="highlight"><pre>
310326 < span class ="k "> if</ span > < span class ="n "> config</ span > < span class ="o "> .</ span > < span class ="n "> has_section</ span > < span class ="p "> (</ span > < span class ="s1 "> 'spack'</ span > < span class ="p "> ):</ span >
311327 < span class ="n "> section</ span > < span class ="o "> =</ span > < span class ="n "> config</ span > < span class ="p "> [</ span > < span class ="s1 "> 'spack'</ span > < span class ="p "> ]</ span >
312328
329+ < span class ="n "> with_modules</ span > < span class ="o "> =</ span > < span class ="n "> section</ span > < span class ="o "> .</ span > < span class ="n "> getboolean</ span > < span class ="p "> (</ span >
330+ < span class ="s1 "> 'modules_before'</ span >
331+ < span class ="p "> )</ span > < span class ="ow "> or</ span > < span class ="n "> section</ span > < span class ="o "> .</ span > < span class ="n "> getboolean</ span > < span class ="p "> (</ span > < span class ="s1 "> 'modules_after'</ span > < span class ="p "> )</ span >
313332 < span class ="k "> if</ span > < span class ="n "> config</ span > < span class ="o "> .</ span > < span class ="n "> has_option</ span > < span class ="p "> (</ span > < span class ="s1 "> 'spack'</ span > < span class ="p "> ,</ span > < span class ="s1 "> 'cray_compilers'</ span > < span class ="p "> ):</ span >
314333 < span class ="n "> cray_compilers</ span > < span class ="o "> =</ span > < span class ="n "> section</ span > < span class ="o "> .</ span > < span class ="n "> getboolean</ span > < span class ="p "> (</ span > < span class ="s1 "> 'cray_compilers'</ span > < span class ="p "> )</ span >
334+ < span class ="k "> else</ span > < span class ="p "> :</ span >
335+ < span class ="n "> with_modules</ span > < span class ="o "> =</ span > < span class ="kc "> False</ span >
315336
316337 < span class ="n "> mod_env_commands</ span > < span class ="o "> =</ span > < span class ="s1 "> 'module purge</ span > < span class ="se "> \n</ span > < span class ="s1 "> '</ span >
338+ < span class ="k "> if</ span > < span class ="n "> with_modules</ span > < span class ="p "> :</ span >
339+ < span class ="n "> yaml_data</ span > < span class ="o "> =</ span > < span class ="n "> _get_yaml_data</ span > < span class ="p "> (</ span >
340+ < span class ="n "> machine</ span > < span class ="p "> ,</ span >
341+ < span class ="n "> compiler</ span > < span class ="p "> ,</ span >
342+ < span class ="n "> mpi</ span > < span class ="p "> ,</ span >
343+ < span class ="n "> include_e3sm_lapack</ span > < span class ="p "> ,</ span >
344+ < span class ="n "> include_e3sm_hdf5_netcdf</ span > < span class ="p "> ,</ span >
345+ < span class ="n "> specs</ span > < span class ="o "> =</ span > < span class ="p "> [],</ span >
346+ < span class ="n "> yaml_template</ span > < span class ="o "> =</ span > < span class ="n "> yaml_template</ span > < span class ="p "> ,</ span >
347+ < span class ="p "> )</ span >
348+ < span class ="n "> mods</ span > < span class ="o "> =</ span > < span class ="n "> _get_modules</ span > < span class ="p "> (</ span > < span class ="n "> yaml_data</ span > < span class ="p "> )</ span >
349+ < span class ="n "> mod_env_commands</ span > < span class ="o "> =</ span > < span class ="sa "> f</ span > < span class ="s1 "> '</ span > < span class ="si "> {</ span > < span class ="n "> mod_env_commands</ span > < span class ="si "> }</ span > < span class ="se "> \n</ span > < span class ="si "> {</ span > < span class ="n "> mods</ span > < span class ="si "> }</ span > < span class ="se "> \n</ span > < span class ="s1 "> '</ span >
317350
318351 < span class ="k "> for</ span > < span class ="n "> shell_filename</ span > < span class ="ow "> in</ span > < span class ="p "> [</ span >
319352 < span class ="sa "> f</ span > < span class ="s1 "> '</ span > < span class ="si "> {</ span > < span class ="n "> machine</ span > < span class ="si "> }</ span > < span class ="s1 "> .</ span > < span class ="si "> {</ span > < span class ="n "> shell</ span > < span class ="si "> }</ span > < span class ="s1 "> '</ span > < span class ="p "> ,</ span >
0 commit comments