[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.

llvm-svn: 299738
diff --git a/compiler-rt/unittests/lit.common.unit.cfg b/compiler-rt/unittests/lit.common.unit.cfg
index 475b22d..42df604 100644
--- a/compiler-rt/unittests/lit.common.unit.cfg
+++ b/compiler-rt/unittests/lit.common.unit.cfg
@@ -35,6 +35,11 @@
   # 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