buildman: Allow builds to terminate cleanly

It is annoying that buildman does not respond cleanly to Ctrl-C or SIGINT,
particularly on machines with lots of CPUS. Unfortunately queue.join()
blocks the main thread and does not allow it to see the signal. Use a
separate thread instead,

Signed-off-by: Simon Glass <sjg@chromium.org>
master
Simon Glass 8 years ago committed by sjg
parent a556eeebaa
commit d436e38189
  1. 8
      tools/buildman/builder.py

@ -14,6 +14,7 @@ import Queue
import shutil
import string
import sys
import threading
import time
import builderthread
@ -1443,8 +1444,11 @@ class Builder:
job.step = self._step
self.queue.put(job)
# Wait until all jobs are started
self.queue.join()
term = threading.Thread(target=self.queue.join)
term.setDaemon(True)
term.start()
while term.isAlive():
term.join(100)
# Wait until we have processed all output
self.out_queue.join()

Loading…
Cancel
Save