| Index: sdk/lib/_internal/pub/lib/src/entrypoint.dart
|
| diff --git a/sdk/lib/_internal/pub/lib/src/entrypoint.dart b/sdk/lib/_internal/pub/lib/src/entrypoint.dart
|
| index 13aa2f63bd3669a61f6a4908d199f64697e85b4b..215dfe28736adba57a8d402948b7464cd3f6fece 100644
|
| --- a/sdk/lib/_internal/pub/lib/src/entrypoint.dart
|
| +++ b/sdk/lib/_internal/pub/lib/src/entrypoint.dart
|
| @@ -230,7 +230,7 @@ class Entrypoint {
|
|
|
| /// Precompiles all executables from dependencies that don't transitively
|
| /// depend on [this] or on a path dependency.
|
| - Future precompileExecutables({Iterable<String> changed}) {
|
| + Future precompileExecutables({Iterable<String> changed}) async {
|
| if (changed != null) changed = changed.toSet();
|
|
|
| var binDir = path.join('.pub', 'bin');
|
| @@ -243,44 +243,41 @@ class Entrypoint {
|
| readTextFile(sdkVersionPath) == "${sdk.version}\n";
|
| if (!sdkMatches) changed = null;
|
|
|
| - return loadPackageGraph().then((graph) {
|
| - var executables = new Map.fromIterable(root.immediateDependencies,
|
| - key: (dep) => dep.name,
|
| - value: (dep) => _executablesForPackage(graph, dep.name, changed));
|
| -
|
| - for (var package in executables.keys.toList()) {
|
| - if (executables[package].isEmpty) executables.remove(package);
|
| - }
|
| + var graph = await loadPackageGraph();
|
| + var executables = new Map.fromIterable(root.immediateDependencies,
|
| + key: (dep) => dep.name,
|
| + value: (dep) => _executablesForPackage(graph, dep.name, changed));
|
|
|
| - if (!sdkMatches) deleteEntry(binDir);
|
| - if (executables.isEmpty) return null;
|
| + for (var package in executables.keys.toList()) {
|
| + if (executables[package].isEmpty) executables.remove(package);
|
| + }
|
|
|
| - return log.progress("Precompiling executables", () {
|
| - ensureDir(binDir);
|
| + if (!sdkMatches) deleteEntry(binDir);
|
| + if (executables.isEmpty) return;
|
|
|
| - // Make sure there's a trailing newline so our version file matches the
|
| - // SDK's.
|
| - writeTextFile(sdkVersionPath, "${sdk.version}\n");
|
| + await log.progress("Precompiling executables", () async {
|
| + ensureDir(binDir);
|
|
|
| - var packagesToLoad =
|
| - unionAll(executables.keys.map(graph.transitiveDependencies))
|
| - .map((package) => package.name).toSet();
|
| - return AssetEnvironment.create(this, BarbackMode.RELEASE,
|
| - packages: packagesToLoad,
|
| - useDart2JS: false).then((environment) {
|
| - environment.barback.errors.listen((error) {
|
| - log.error(log.red("Build error:\n$error"));
|
| - });
|
| + // Make sure there's a trailing newline so our version file matches the
|
| + // SDK's.
|
| + writeTextFile(sdkVersionPath, "${sdk.version}\n");
|
|
|
| - return waitAndPrintErrors(executables.keys.map((package) {
|
| - var dir = path.join(binDir, package);
|
| - cleanDir(dir);
|
| - return environment.precompileExecutables(
|
| - package, dir,
|
| - executableIds: executables[package]);
|
| - }));
|
| - });
|
| + var packagesToLoad =
|
| + unionAll(executables.keys.map(graph.transitiveDependencies))
|
| + .map((package) => package.name).toSet();
|
| + var environment = await AssetEnvironment.create(this, BarbackMode.RELEASE,
|
| + packages: packagesToLoad,
|
| + useDart2JS: false);
|
| + environment.barback.errors.listen((error) {
|
| + log.error(log.red("Build error:\n$error"));
|
| });
|
| +
|
| + await waitAndPrintErrors(executables.keys.map((package) async {
|
| + var dir = path.join(binDir, package);
|
| + cleanDir(dir);
|
| + await environment.precompileExecutables(package, dir,
|
| + executableIds: executables[package]);
|
| + }));
|
| });
|
| }
|
|
|
|
|