mirror of
https://gitlab.com/ita1024/waf.git
synced 2024-11-22 01:46:15 +01:00
Add EnvContext to simplify configuration-dependent command definition
This commit is contained in:
parent
e0080e9f58
commit
e35d3628d2
18
ChangeLog
18
ChangeLog
@ -10,26 +10,30 @@ NEW IN WAF 1.9
|
||||
- Merge ${FOO}${BAR} flags in commands executed without a shell (no space added)
|
||||
- Interpret empty command-line defines as integer values #1704
|
||||
- Waf tools are not cached on "waf configure" by default anymore; pass conf.load(.., cache=True)
|
||||
- Enable a consistent progress bar output #1641
|
||||
- New --profile command-line option
|
||||
- Add ${VAR?X} constructs in script expressions to enable simple conditional outputs
|
||||
- Enable 'waf dist' to package arbitrary symlinks in tarballs #1719
|
||||
|
||||
* Performance highlights:
|
||||
- Reduce the key size in bld.task_sigs by adding bld.node_sigs and bld.imp_sigs
|
||||
- Remove __hash__ and __eq__ from Context, Node and Task #1629
|
||||
- Make lazy visual studio detection the default
|
||||
- Remove the uses of run_once that creates unfree-able memory
|
||||
- Enable a consistent progress bar output #1641
|
||||
- Reduce the memory footprint of Task objects, up to 50% memory reduction on large builds
|
||||
- Enabled pre-forked builds by default to achieve faster builds, up to 2x speedup on short-lived processes
|
||||
- Remove the uses of run_once that can consume a lot of memory
|
||||
- Enable pre-forked builds by default to achieve faster builds, up to 2x speedup on short-lived processes
|
||||
|
||||
* API changes:
|
||||
- The minimum Python version required is Python 2.5
|
||||
- Remove the duplicate split functions from Utils
|
||||
- Remove the duplicate split() functions from Utils
|
||||
- Remove the command called "update"
|
||||
- Add Task.get_cwd()
|
||||
- Remove Utils.nogc
|
||||
- Modify Utils.run_once so that it accepts a list of *args
|
||||
- Improve the task consumer in Runner.py
|
||||
- Rewrote the main task consumer in Runner.py for performance purposes
|
||||
- Use relative paths in apply_incpaths by default (and absolute ones when paths cross drives)
|
||||
- Remove Configure.err_handler
|
||||
- Remove TaskBase.attr() as it was never used
|
||||
- Remove TaskBase.attr() which was never used
|
||||
- Task.sig_vars, Task.sig_explit_deps and Task.sig_implicit_deps return None
|
||||
- Better consistency between check_cfg and check_cc variables
|
||||
- Subclass waflib.Build.ConfiguredContext to enable configuration-dependent user commands
|
||||
|
||||
|
2
TODO
2
TODO
@ -1,8 +1,6 @@
|
||||
Waf 1.9
|
||||
-------
|
||||
|
||||
* Better consistency between check_cfg and check_cc variables
|
||||
* Let more context commands depend on the configuration
|
||||
* Rework qt5
|
||||
* Regexps for extension-based processing
|
||||
* Other issues listed on https://github.com/waf-project/waf/issues
|
||||
|
18
docs/book/examples/configuration_contexts/wscript
Normal file
18
docs/book/examples/configuration_contexts/wscript
Normal file
@ -0,0 +1,18 @@
|
||||
#! /usr/bin/env python
|
||||
# encoding: utf-8
|
||||
|
||||
"""
|
||||
Call 'waf configure display'
|
||||
"""
|
||||
|
||||
def configure(conf):
|
||||
pass
|
||||
|
||||
from waflib.Build import EnvContext
|
||||
class fu_class(EnvContext):
|
||||
cmd = 'display'
|
||||
|
||||
def display(self):
|
||||
print(self.env.PREFIX)
|
||||
|
||||
|
@ -1348,3 +1348,12 @@ class StepContext(BuildContext):
|
||||
return pattern.match(node.abspath())
|
||||
return match
|
||||
|
||||
class EnvContext(BuildContext):
|
||||
"""Subclass EnvContext to create commands that require configuration data in 'env'"""
|
||||
fun = cmd = None
|
||||
def execute(self):
|
||||
self.restore()
|
||||
if not self.all_envs:
|
||||
self.load_envs()
|
||||
self.recurse([self.run_dir])
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user