diff options
author | Angelos Evripiotis <jevripiotis@bloomberg.net> | 2019-08-01 10:37:18 +0100 |
---|---|---|
committer | Angelos Evripiotis <jevripiotis@bloomberg.net> | 2019-08-15 10:05:10 +0100 |
commit | bfd4d7a47143486646c10a309501d9a67b7a2f82 (patch) | |
tree | 87940ac12001f8f48dc4fb9658e2aebc1c498fe6 | |
parent | affa26ae150d6eacc7a67b1d3b733e9d904566e7 (diff) | |
download | buildstream-bfd4d7a47143486646c10a309501d9a67b7a2f82.tar.gz |
_frontend/cli: support 'BST_FORCE_START_METHOD'
Allow users to force the start method via a 'BST_FORCE_START_METHOD'
environment variable. This enables testing of the 'spawn' and
'forkserver' methods on platforms that don't require them.
-rw-r--r-- | src/buildstream/_frontend/cli.py | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/buildstream/_frontend/cli.py b/src/buildstream/_frontend/cli.py index 81ee4ad83..20eaf2960 100644 --- a/src/buildstream/_frontend/cli.py +++ b/src/buildstream/_frontend/cli.py @@ -1,3 +1,4 @@ +import multiprocessing import os import sys from contextlib import ExitStack @@ -219,6 +220,18 @@ def override_main(self, args=None, prog_name=None, complete_var=None, .format(stream.name), err=True) sys.exit(-1) + # We can only set the global multiprocessing start method once; for that + # reason we're advised to do it inside the entrypoint, where it is easy to + # ensure the code path is only followed once. + if 'BST_FORCE_START_METHOD' in os.environ: + multiprocessing.set_start_method(os.environ['BST_FORCE_START_METHOD']) + print( + "BST_FORCE_START_METHOD: multiprocessing start method forced to:", + os.environ['BST_FORCE_START_METHOD'], + file=sys.stderr, + flush=True, + ) + original_main(self, args=args, prog_name=prog_name, complete_var=None, standalone_mode=standalone_mode, **extra) |