#!/usr/bin/env python3 # Copyright (c) 2013, the Flutter project authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be found # in the LICENSE file. import os import platform import subprocess import sys sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), 'test_scripts/test/'))) from common import catch_sigterm, wait_for_sigterm def Main(): """ Executes the test-scripts with required environment variables. It acts like /usr/bin/env, but provides some extra functionality to dynamically set up the environment variables. """ # Ensures the signals can be correctly forwarded to the subprocesses. catch_sigterm() os.environ['SRC_ROOT'] = os.path.abspath(os.path.join(os.path.dirname(__file__), '../../../')) # Flutter uses a different repo structure and fuchsia sdk is not in the # third_party/, so images root and sdk root need to be explicitly set. os.environ['FUCHSIA_IMAGES_ROOT'] = os.path.join(os.environ['SRC_ROOT'], 'fuchsia/images/') assert platform.system() == 'Linux', 'Unsupported OS ' + platform.system() os.environ['FUCHSIA_SDK_ROOT'] = os.path.join(os.environ['SRC_ROOT'], 'fuchsia/sdk/linux/') os.environ['FUCHSIA_GN_SDK_ROOT'] = os.path.join( os.environ['SRC_ROOT'], 'flutter/tools/fuchsia/gn-sdk/src' ) if os.getenv('DOWNLOAD_FUCHSIA_SDK') == 'True': sdk_path = os.environ['FUCHSIA_SDK_PATH'] assert sdk_path.endswith('/linux-amd64/core.tar.gz') assert not sdk_path.startswith('/') os.environ['FUCHSIA_SDK_OVERRIDE' ] = 'gs://fuchsia-artifacts/' + sdk_path[:-len('/linux-amd64/core.tar.gz')] with subprocess.Popen(sys.argv[1:]) as proc: try: proc.wait() except: # Use terminate / SIGTERM to allow the subprocess exiting cleanly. proc.terminate() return proc.returncode if __name__ == '__main__': sys.exit(Main())