[Bf-blender-cvs] [e0e7a5522f2] master: project_source_info: queue_processes() now waits for jobs to finish

Campbell Barton noreply at git.blender.org
Mon Oct 4 04:19:38 CEST 2021


Commit: e0e7a5522f20699e4ffeeef793545f954db790da
Author: Campbell Barton
Date:   Mon Oct 4 13:12:35 2021 +1100
Branches: master
https://developer.blender.org/rBe0e7a5522f20699e4ffeeef793545f954db790da

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.

===================================================================

M	build_files/cmake/project_source_info.py

===================================================================

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")):



More information about the Bf-blender-cvs mailing list