mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-29 15:52:07 +00:00
43ddfab91c
This patch removes the memory usage tracking in the script that wraps the linking of the xul library. This patch also generalizes the wrapping of the xul linking process to all platforms. MozReview-Commit-ID: HyncF3aVwdx --HG-- extra : rebase_source : 8fb90c896dc57793d1c9d9aa4e8492dec8697e36
48 lines
1.5 KiB
Python
48 lines
1.5 KiB
Python
# 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:]))
|