Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2021-10-04 05:12:35 +0300
committerCampbell Barton <ideasman42@gmail.com>2021-10-04 05:12:35 +0300
commite0e7a5522f20699e4ffeeef793545f954db790da (patch)
treeb9be416df315da196ef2b478c5d5d1e93fec1709
parente7274dedc4475e15cd06a7c83ec9e0d477f13314 (diff)
project_source_info: queue_processes() now waits for jobs to finish
queue_processes() - used for some of the "make check_*" utilities, wasn't waiting for all jobs to finish before returning. This conflicted with running cleanup operations.
-rw-r--r--build_files/cmake/project_source_info.py12
1 files changed, 10 insertions, 2 deletions
diff --git a/build_files/cmake/project_source_info.py b/build_files/cmake/project_source_info.py
index d2ed80022ca..c2ba7e5b11c 100644
--- a/build_files/cmake/project_source_info.py
+++ b/build_files/cmake/project_source_info.py
@@ -243,7 +243,9 @@ def build_defines_as_args() -> List[str]:
# use this module.
def queue_processes(
process_funcs: Sequence[Tuple[Callable[..., subprocess.Popen[Any]], Tuple[Any, ...]]],
+ *,
job_total: int =-1,
+ sleep: float = 0.1,
) -> None:
""" Takes a list of function arg pairs, each function must return a process
"""
@@ -271,14 +273,20 @@ def queue_processes(
if len(processes) <= job_total:
break
- else:
- time.sleep(0.1)
+ time.sleep(sleep)
sys.stdout.flush()
sys.stderr.flush()
processes.append(func(*args))
+ # Don't return until all jobs have finished.
+ while 1:
+ processes[:] = [p for p in processes if p.poll() is None]
+ if not processes:
+ break
+ time.sleep(sleep)
+
def main() -> None:
if not os.path.exists(join(CMAKE_DIR, "CMakeCache.txt")):