mirror of https://github.com/roytam1/UXP
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1.5 KiB
47 lines
1.5 KiB
# This Source Code Form is subject to the terms of the Mozilla Public |
|
# License, v. 2.0. If a copy of the MPL was not distributed with this |
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/. |
|
|
|
import expandlibs_exec |
|
import sys |
|
import threading |
|
import time |
|
|
|
def periodically_print_status(proc): |
|
""" |
|
Print something to the console every 20 minutes to prevent the build job |
|
from getting killed when linking a large binary. |
|
Check status of the linker every 0.5 seconds. |
|
""" |
|
idleTime = 0 |
|
while proc.returncode is None: |
|
time.sleep(0.5) |
|
idleTime += 0.5 |
|
if idleTime > 20 * 60: |
|
print "Still linking, 20 minutes passed..." |
|
sys.stdout.flush() |
|
idleTime = 0 |
|
|
|
def wrap_linker(args): |
|
""" |
|
Execute |args| and pass resulting |proc| object to a second thread that |
|
will track the status of the started |proc|. |
|
""" |
|
|
|
# This needs to be a list in order for the callback to set the |
|
# variable properly with python-2's scoping rules. |
|
t = [None] |
|
def callback(proc): |
|
t[0] = threading.Thread(target=periodically_print_status, |
|
args=(proc,)) |
|
t[0].start() |
|
exitcode = expandlibs_exec.main(args, proc_callback=callback) |
|
# Wait for the background thread to finish. |
|
t[0].join() |
|
return exitcode |
|
|
|
if __name__ == "__main__": |
|
if len(sys.argv) < 2: |
|
print >>sys.stderr, "Usage: link.py <commandline>" |
|
sys.exit(1) |
|
sys.exit(wrap_linker(sys.argv[1:]))
|
|
|