From 5a5d83e7f9aa2b358697712f94bcc4495242b0e4 Mon Sep 17 00:00:00 2001 From: Reid Kleckner Date: Fri, 7 Apr 2017 01:23:15 +0000 Subject: [lit] Fix Darwin pickling errors with process pools For a function to be pickle-able, it has to be in the top-level of a real Python module. So, I made one for this code snippet. git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@299738 91177308-0d34-0410-b5e6-96231b3b80d8 --- unittests/lit.common.unit.cfg | 11 ++++++++--- unittests/lit_unittest_cfg_utils.py | 4 ++++ 2 files changed, 12 insertions(+), 3 deletions(-) create mode 100644 unittests/lit_unittest_cfg_utils.py (limited to 'unittests') diff --git a/unittests/lit.common.unit.cfg b/unittests/lit.common.unit.cfg index 475b22d41..42df60433 100644 --- a/unittests/lit.common.unit.cfg +++ b/unittests/lit.common.unit.cfg @@ -35,6 +35,11 @@ if config.host_os == 'Darwin': # of large mmap'd regions (terabytes) by the kernel. lit_config.parallelism_groups["darwin-64bit-sanitizer"] = 3 - def darwin_sanitizer_parallelism_group_func(test): - return "darwin-64bit-sanitizer" if "x86_64" in test.file_path else "" - config.darwin_sanitizer_parallelism_group_func = darwin_sanitizer_parallelism_group_func + # The test config gets pickled and sent to multiprocessing workers, and that + # only works for code if it is stored at the top level of some module. + # Therefore, we have to put the code in a .py file, add it to path, and import + # it to store it in the config. + site.addsitedir(os.path.dirname(__file__)) + import lit_unittest_cfg_utils + config.darwin_sanitizer_parallelism_group_func = \ + lit_unittest_cfg_utils.darwin_sanitizer_parallelism_group_func diff --git a/unittests/lit_unittest_cfg_utils.py b/unittests/lit_unittest_cfg_utils.py new file mode 100644 index 000000000..ff7b1ee01 --- /dev/null +++ b/unittests/lit_unittest_cfg_utils.py @@ -0,0 +1,4 @@ +# Put all 64-bit sanitizer tests in the darwin-64bit-sanitizer parallelism +# group. This will only run three of them concurrently. +def darwin_sanitizer_parallelism_group_func(test): + return "darwin-64bit-sanitizer" if "x86_64" in test.file_path else "" -- cgit v1.2.3