mirror of
https://github.com/dart-lang/sdk
synced 2024-09-22 16:33:32 +00:00
f3c6339206
This will call a new test script that Natalie will fill in the blanks of for pub testing. This also moves pub from third_party/pkg_tested into third_party/pkg. The corresponding changes to the buildbot is here: http://src.chromium.org/viewvc/chrome?revision=295555&view=revision R=nweiz@google.com, whesse@google.com BUG= Review URL: https://codereview.chromium.org//1166093002.
105 lines
3.5 KiB
Python
Executable file
105 lines
3.5 KiB
Python
Executable file
#!/usr/bin/env python
|
|
# Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
|
|
# for details. All rights reserved. Use of this source code is governed by a
|
|
# BSD-style license that can be found in the LICENSE file.
|
|
"""Used to run pub before the SDK has been built"""
|
|
|
|
import argparse
|
|
import os
|
|
import platform
|
|
import subprocess
|
|
import sys
|
|
|
|
SCRIPT_DIR = os.path.dirname(sys.argv[0])
|
|
DART_ROOT = os.path.realpath(os.path.join(SCRIPT_DIR, '..'))
|
|
PUB_PATH = os.path.join(DART_ROOT, 'third_party/pkg/pub/bin/pub.dart')
|
|
CANARY_PATH = os.path.join(DART_ROOT, 'tools', 'canary.dart')
|
|
|
|
usage = """run_pub.py --package-root=<package root>"""
|
|
|
|
def BuildArguments():
|
|
result = argparse.ArgumentParser(usage=usage)
|
|
result.add_argument("--package-root", help="package root", default=None)
|
|
result.add_argument("--dart-executable", help="dart binary", default=None)
|
|
return result
|
|
|
|
def ProcessOptions(options, args):
|
|
return ((options.package_root != None) and
|
|
(options.dart_executable != None))
|
|
|
|
def GetPrebuiltDartExecutablePath(suffix):
|
|
osdict = {'Darwin':'macos', 'Linux':'linux', 'Windows':'windows'}
|
|
system = platform.system()
|
|
executable_name = 'dart'
|
|
if system == 'Windows':
|
|
executable_name = 'dart.exe'
|
|
try:
|
|
osname = osdict[system]
|
|
except KeyError:
|
|
print >>sys.stderr, ('WARNING: platform "%s" not supported') % (system)
|
|
return None;
|
|
return os.path.join(DART_ROOT,
|
|
'tools',
|
|
'testing',
|
|
'bin',
|
|
osname,
|
|
executable_name + suffix)
|
|
|
|
def RunPub(dart, pkg_root, args):
|
|
return subprocess.call([dart, '--package-root=' + pkg_root, PUB_PATH] + args)
|
|
|
|
def TryRunningExecutable(dart_executable, pkg_root):
|
|
try:
|
|
return subprocess.call([dart_executable,
|
|
'--package-root=' + pkg_root,
|
|
CANARY_PATH]) == 42
|
|
except:
|
|
return False;
|
|
|
|
def DisplayBootstrapWarning():
|
|
print """\
|
|
|
|
|
|
WARNING: Your system cannot run the prebuilt Dart executable. Using the
|
|
bootstrap Dart executable will make Debug builds long.
|
|
Please see Wiki for instructions on replacing prebuilt Dart executable.
|
|
|
|
https://code.google.com/p/dart/wiki/ReplacingPrebuiltDartExecutable
|
|
|
|
"""
|
|
|
|
def FindDartExecutable(fallback_executable, package_root):
|
|
# If requested, use the bootstrap binary instead of the prebuilt
|
|
# executable.
|
|
if os.getenv('DART_USE_BOOTSTRAP_BIN') != None:
|
|
return fallback_executable
|
|
# Try to find a working prebuilt dart executable.
|
|
dart_executable = GetPrebuiltDartExecutablePath('')
|
|
if TryRunningExecutable(dart_executable, package_root):
|
|
return dart_executable
|
|
dart_executable = GetPrebuiltDartExecutablePath('-arm')
|
|
if TryRunningExecutable(dart_executable, package_root):
|
|
return dart_executable
|
|
dart_executable = GetPrebuiltDartExecutablePath('-mips')
|
|
if TryRunningExecutable(dart_executable, package_root):
|
|
return dart_executable
|
|
# If the system cannot execute a prebuilt dart executable, use the bootstrap
|
|
# executable instead.
|
|
DisplayBootstrapWarning()
|
|
return fallback_executable
|
|
|
|
def main():
|
|
# Parse the options.
|
|
parser = BuildArguments()
|
|
(options, args) = parser.parse_known_args()
|
|
if not ProcessOptions(options, args):
|
|
parser.print_help()
|
|
return 1
|
|
dart_executable = FindDartExecutable(options.dart_executable,
|
|
options.package_root)
|
|
return RunPub(dart_executable, options.package_root, args)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
sys.exit(main())
|