| Index: tools/observatory_tool.py
|
| diff --git a/tools/observatory_tool.py b/tools/observatory_tool.py
|
| index adf103fde62b31c32ee4ab930f40256ae9c9de62..90c2aa272f81eae443184164dbfefa871ea37938 100755
|
| --- a/tools/observatory_tool.py
|
| +++ b/tools/observatory_tool.py
|
| @@ -14,7 +14,8 @@ import utils
|
|
|
| SCRIPT_DIR = os.path.dirname(sys.argv[0])
|
| DART_ROOT = os.path.realpath(os.path.join(SCRIPT_DIR, '..'))
|
| -RUN_PUB = os.path.join(DART_ROOT, 'tools/run_pub.py')
|
| +PUB_PATH = os.path.join(DART_ROOT, 'third_party', 'pkg',
|
| + 'pub', 'bin', 'pub.dart')
|
| IGNORE_PATTERNS = shutil.ignore_patterns(
|
| '*.map',
|
| '*.concat.js',
|
| @@ -26,7 +27,7 @@ IGNORE_PATTERNS = shutil.ignore_patterns(
|
| '*.log',
|
| '*~')
|
|
|
| -usage = """obs_tool.py [options]"""
|
| +usage = """observatory_tool.py [options]"""
|
|
|
| def BuildArguments():
|
| result = argparse.ArgumentParser(usage=usage)
|
| @@ -41,64 +42,69 @@ def BuildArguments():
|
|
|
| def ProcessOptions(options, args):
|
| # Required options.
|
| - if (options.command == None) or (options.directory == None):
|
| + if options.command is None or options.directory is None:
|
| return False
|
| - # If we have a pub executable, we are running from the dart-sdk.
|
| - if (options.pub_executable != None):
|
| - return True
|
| - if (options.sdk != None):
|
| - # Use the checked in pub executable by default.
|
| - options.pub_executable = utils.CheckedInPubPath()
|
| - return True
|
| - # Otherwise, we need a dart executable and a package root.
|
| - return ((options.package_root != None) and
|
| - (options.dart_executable != None))
|
| + # If we have a working pub executable, try and use that.
|
| + # TODO(whesse): Drop the pub-executable option if it isn't used.
|
| + if options.pub_executable is not None:
|
| + try:
|
| + if 0 == subprocess.call([options.pub_executable, '--version']):
|
| + return True
|
| + except OSError as e:
|
| + pass
|
| + options.pub_executable = None
|
| +
|
| + if options.sdk is not None and utils.CheckedInSdkCheckExecutable():
|
| + # Use the checked in pub executable.
|
| + options.pub_snapshot = os.path.join(utils.CheckedInSdkPath(),
|
| + 'bin',
|
| + 'snapshots',
|
| + 'pub.dart.snapshot');
|
| + try:
|
| + if 0 == subprocess.call([utils.CheckedInSdkExecutable(),
|
| + options.pub_snapshot,
|
| + '--version']):
|
| + return True
|
| + except OSError as e:
|
| + pass
|
| + options.pub_snapshot = None
|
| +
|
| + # We need a dart executable and a package root.
|
| + return (options.package_root is not None and
|
| + options.dart_executable is not None)
|
|
|
| def ChangeDirectory(directory):
|
| os.chdir(directory);
|
|
|
| -def PubGet(dart_executable, pub_executable, pkg_root, silent):
|
| - # Always remove pubspec.lock before running 'pub get'.
|
| - try:
|
| - os.remove('pubspec.lock');
|
| - except OSError as e:
|
| - pass
|
| - with open(os.devnull, 'wb') as silent_sink:
|
| - if (pub_executable != None):
|
| - return subprocess.call([pub_executable,
|
| - 'get',
|
| - '--offline'],
|
| - stdout=silent_sink if silent else None,
|
| - stderr=silent_sink if silent else None)
|
| - else:
|
| - return subprocess.call(['python',
|
| - RUN_PUB,
|
| - '--package-root=' + pkg_root,
|
| - '--dart-executable=' + dart_executable,
|
| - 'get',
|
| - '--offline'],
|
| - stdout=silent_sink if silent else None,
|
| - stderr=silent_sink if silent else None,)
|
| -
|
| -def PubBuild(dart_executable, pub_executable, pkg_root, silent, output_dir):
|
| +def DisplayBootstrapWarning():
|
| + print """\
|
| +
|
| +
|
| +WARNING: Your system cannot run the checked-in Dart SDK. Using the
|
| +bootstrap Dart executable will make debug builds slow.
|
| +Please see the Wiki for instructions on replacing the checked-in Dart SDK.
|
| +
|
| +https://github.com/dart-lang/sdk/wiki/The-checked-in-SDK-in--tools
|
| +
|
| +"""
|
| +
|
| +def PubCommand(dart_executable,
|
| + pub_executable,
|
| + pub_snapshot,
|
| + pkg_root,
|
| + command,
|
| + silent):
|
| with open(os.devnull, 'wb') as silent_sink:
|
| - if (pub_executable != None):
|
| - return subprocess.call([pub_executable,
|
| - 'build',
|
| - '--output',
|
| - output_dir],
|
| - stdout=silent_sink if silent else None,
|
| - stderr=silent_sink if silent else None,)
|
| + if pub_executable is not None:
|
| + executable = [pub_executable]
|
| + elif pub_snapshot is not None:
|
| + executable = [utils.CheckedInSdkExecutable(), pub_snapshot]
|
| else:
|
| - return subprocess.call(['python',
|
| - RUN_PUB,
|
| - '--package-root=' + pkg_root,
|
| - '--dart-executable=' + dart_executable,
|
| - 'build',
|
| - '--output',
|
| - output_dir],
|
| - stdout=silent_sink if silent else None,
|
| - stderr=silent_sink if silent else None,)
|
| + DisplayBootstrapWarning()
|
| + executable = [dart_executable, '--package-root=' + pkg_root, PUB_PATH]
|
| + return subprocess.call(executable + command,
|
| + stdout=silent_sink if silent else None,
|
| + stderr=silent_sink if silent else None)
|
|
|
| def Deploy(input_dir, output_dir):
|
| shutil.rmtree(output_dir)
|
| @@ -117,16 +123,24 @@ def RewritePubSpec(input_path, output_path, search, replace):
|
| def ExecuteCommand(options, args):
|
| cmd = options.command
|
| if (cmd == 'get'):
|
| - return PubGet(options.dart_executable,
|
| - options.pub_executable,
|
| - options.package_root,
|
| - options.silent)
|
| + # Always remove pubspec.lock before running 'pub get'.
|
| + try:
|
| + os.remove('pubspec.lock');
|
| + except OSError as e:
|
| + pass
|
| + return PubCommand(options.dart_executable,
|
| + options.pub_executable,
|
| + options.pub_snapshot,
|
| + options.package_root,
|
| + ['get', '--offline'],
|
| + options.silent)
|
| elif (cmd == 'build'):
|
| - return PubBuild(options.dart_executable,
|
| - options.pub_executable,
|
| - options.package_root,
|
| - options.silent,
|
| - args[0])
|
| + return PubCommand(options.dart_executable,
|
| + options.pub_executable,
|
| + options.pub_snapshot,
|
| + options.package_root,
|
| + ['build', '--output', args[0]],
|
| + options.silent)
|
| elif (cmd == 'deploy'):
|
| Deploy('build', 'deployed')
|
| elif (cmd == 'rewrite'):
|
| @@ -142,8 +156,6 @@ def main():
|
| if not ProcessOptions(options, args):
|
| parser.print_help()
|
| return 1
|
| - if os.getenv('DART_USE_BOOTSTRAP_BIN') != None:
|
| - dart_executable = options.dart_executable
|
| # Calculate absolute paths before changing directory.
|
| if (options.package_root != None):
|
| options.package_root = os.path.abspath(options.package_root)
|
| @@ -151,6 +163,8 @@ def main():
|
| options.dart_executable = os.path.abspath(options.dart_executable)
|
| if (options.pub_executable != None):
|
| options.pub_executable = os.path.abspath(options.pub_executable)
|
| + if (options.pub_snapshot != None):
|
| + options.pub_snapshot = os.path.abspath(options.pub_snapshot)
|
| if len(args) == 1:
|
| args[0] = os.path.abspath(args[0])
|
| # Pub must be run from the project's root directory.
|
| @@ -158,4 +172,4 @@ def main():
|
| return ExecuteCommand(options, args)
|
|
|
| if __name__ == '__main__':
|
| - sys.exit(main());
|
| + sys.exit(main());
|
|
|