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]); |
+ })); |
}); |
} |