Granting this control allows the avoidance of issues such as accidentally
loading the "cython" module from from Cython itself, rather than the
"cython" waf tool.
Conflicts:
waflib/Configure.py
waflib/Context.py
- Assuming that an exception could have been raised, the worst thing
we do is presenting the wrong exception to the user.
- Actually, the exception is more precise now:
- if we want to load('pouet'), the error will always be::
``No module named pouet``.
- if we want to load('pouet.coin') the error will always be::
``No module named pouet.coin``
Before it could be either::
``No module named pouet.coin``
or::
``No module named coin``
subprocess.Popen() will give a proper error message if the first
argument is an absolute path, but if it's a bare command name, it will
complain with a "Permission Denied" error.
This change provides a clear error every time.
If speed is proven to have an impact on this code, we could add
the "Logs.verbose > 0" precondition or add memoization.
Ability to use a waflib.zip file with waf-zip entry point
Changes:
- created waf-zip entry point
- waflib.zip can created by doing::
zip waflib -9 waflib/*.py waflib/Tools/*.py waflib/extras/*.py
- the wscript also builds waflib.zip
- allow selecting which core tools to use (saves 31k for C/C++ only)
By default, everything is included.
- altered module loading functions to allow loading modules from a zip file.