dart-sdk/tools/run_pub.py
Rico Wind f3c6339206 Switch over testing pub seperately from the the normal packages
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.
2015-06-09 08:12:51 +02:00

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())