New cookbook discussing various strategies for creating modulefiles for
packages with multiple builds depending on previously loaded compiler,
MPI libraries etc. (E.g. handling different "flavors" of packages)
Declaration of $_mlstatus (evaluation status variable) cannot be
done as part of generated code passed to `eval` statement. If $_mlstatus
is declared or re-declared as part of evaluated code, defined value
cannot be retrieved afterward in `module` subroutine.
To be able to retrieve the value of $_mlstatus set within generated code
evaluation yet avoiding warnings of a 'use strict;' mode, temporarily
disable variable strictness.
Since this variable is always rendered it might be evaluated in a strict
scope and fail with the following error: `Global symbol "$_mlstatus"
requires explicit package name (did you forget to declare "my
$_mlstatus"?)`
Enable to pass a specific Python interpreter command name or location at
configure step with `--with-python` option. Specified command name or
location should be found on build system only if building from git
repository.
Adapt configure script and Makefile to detect `python` command location
and set it as shebang for `createmodule.py` and `gitlog2changelog.py`.
If python command is not found python3 then python2 are searched.
Abort download of icdiff, nagelfar or tclsh83 after 2 timeouts of 5
seconds and record download failure for icdiff to avoid mt script to
attempt a new download tentative every time it is called.
Inhibit output generated by scripts evaluated by createmodule.sh and
createmodule.py to ensure these outputs will not get in the way when
analyzing the environment change done by the evaluated scripts.
Fixes#309
Fix createmodule.sh script to correctly analyses environment when shell
functions are found defined in it. These shell function definitions are
skipped.
Check at configure step if pre-built documents are available, if found
Sphinx-related makefile rules are inhibited. Otherwise Sphinx
availability is tested and documentation build is disabled if not found.
No more exclusion of project-related or installation documents from git
archive distribution. Enable makefile rules relative to Sphinx
documentation build even if not building from git repository. With
release distribution tarballs nothing changes as document is pre-built
in these archives. When working from a `git archive` export, these
Sphinx rules will help to build docs.
In case Modules is built from a `git archive` distribution, generate a
bare ChangeLog file only referring to the NEWS document. Always include
gitlog2changelog.py tool in distributions, but do not run it if not
building from a git repository.
Make `git archive` substitute .version.inc.in with commit hash, date and
refs. Compute MODULES_BUILD and MODULES_BUILD_DATE from these
informations in ./configure and Makefile if not working from git
repository.