config/link.py
author Ting-Yu Lin <tlin@mozilla.com>
Mon, 14 Nov 2016 18:11:45 +0800
changeset 324036 aaf70a7cd344ceb7ea9c78d7807bb15283918d0f
parent 316356 22d95521160beb0c26e6dcee7c979e0cb617bb56
permissions -rw-r--r--
Bug 1316549 Part 2 - Fix assertion failure: aRadiusY > 0 in FloatInfo::XInterceptAtY(). r=dbaron We need to consider the case when only one of the four corner radius is specified. The two reftests are added to test 'border-top-right-radius' and 'border-bottom-right-radius', respectively. MozReview-Commit-ID: De2fXcb6ypP

# 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:]))