diff options
author | Nirbheek Chauhan <nirbheek@centricular.com> | 2017-11-12 20:57:53 +0530 |
---|---|---|
committer | Nirbheek Chauhan <nirbheek@centricular.com> | 2018-07-12 01:49:34 +0530 |
commit | 5112d0fac2e3b5cdc055e760f4c79d475cf447d4 (patch) | |
tree | 20cb1c7b88be6014960a48aa43c6db8bc67d381e /mesonbuild/backend/ninjabackend.py | |
parent | 43f7a750604d1293c4152976c6fc0315270572e6 (diff) | |
download | meson-nirbheek/custom-target-verbose.tar.gz |
custom targets: Add a 'console' kwarg for long-running commandsnirbheek/custom-target-verbose
Ninja buffers all commands and prints them only after they are
complete. Because of this, long-running commands such as `cargo
build` show no output at all and it's impossible to know if the
command is merely taking too long or is stuck somewhere.
To cater to such use-cases, Ninja has a 'pool' with depth 1 called
'console', and all processes in this pool have the following
properties:
1. stdout is connected to the program, so output can be seen in
real-time
2. The output of all other commands is buffered and displayed after
a command in this pool finishes running
3. Commands in this pool are executed serially (normal commands
continue to run in the background)
This feature is available since Ninja v1.5
https://ninja-build.org/manual.html#_the_literal_console_literal_pool
Diffstat (limited to 'mesonbuild/backend/ninjabackend.py')
-rw-r--r-- | mesonbuild/backend/ninjabackend.py | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py index 09c49049d..ac48b54b1 100644 --- a/mesonbuild/backend/ninjabackend.py +++ b/mesonbuild/backend/ninjabackend.py @@ -560,6 +560,8 @@ int dummy; abs_pdir = os.path.join(self.environment.get_build_dir(), self.get_target_dir(target)) os.makedirs(abs_pdir, exist_ok=True) elem.add_item('DEPFILE', rel_dfile) + if target.console: + elem.add_item('pool', 'console') cmd = self.replace_paths(target, cmd) elem.add_item('COMMAND', cmd) elem.add_item('description', desc.format(target.name, cmd_type)) |