Index: sdk/lib/_internal/pub_generated/lib/src/entrypoint.dart |
diff --git a/sdk/lib/_internal/pub_generated/lib/src/entrypoint.dart b/sdk/lib/_internal/pub_generated/lib/src/entrypoint.dart |
index 01f725e9be9a7ba52b13f87309485600c0744eae..f2266105b0ea240f14b3486a9f520d9a5181d021 100644 |
--- a/sdk/lib/_internal/pub_generated/lib/src/entrypoint.dart |
+++ b/sdk/lib/_internal/pub_generated/lib/src/entrypoint.dart |
@@ -284,48 +284,160 @@ class Entrypoint { |
return completer0.future; |
} |
Future precompileExecutables({Iterable<String> changed}) { |
- if (changed != null) changed = changed.toSet(); |
- var binDir = path.join('.pub', 'bin'); |
- var sdkVersionPath = path.join(binDir, 'sdk-version'); |
- var sdkMatches = |
- fileExists(sdkVersionPath) && |
- 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); |
+ final completer0 = new Completer(); |
+ scheduleMicrotask(() { |
+ try { |
+ join0() { |
+ var binDir = path.join('.pub', 'bin'); |
+ var sdkVersionPath = path.join(binDir, 'sdk-version'); |
+ var sdkMatches = |
+ fileExists(sdkVersionPath) && |
+ readTextFile(sdkVersionPath) == "${sdk.version}\n"; |
+ join1() { |
+ loadPackageGraph().then((x0) { |
+ try { |
+ var graph = x0; |
+ var executables = new Map.fromIterable( |
+ root.immediateDependencies, |
+ key: ((dep) => dep.name), |
+ value: ((dep) => _executablesForPackage(graph, dep.name, changed))); |
+ var it0 = executables.keys.toList().iterator; |
+ break0(x3) { |
+ join2() { |
+ join3() { |
+ log.progress("Precompiling executables", (() { |
+ final completer0 = new Completer(); |
+ scheduleMicrotask(() { |
+ try { |
+ ensureDir(binDir); |
+ writeTextFile(sdkVersionPath, "${sdk.version}\n"); |
+ var packagesToLoad = unionAll( |
+ executables.keys.map( |
+ graph.transitiveDependencies)).map(((package) => package.name)).toSet(); |
+ AssetEnvironment.create( |
+ this, |
+ BarbackMode.RELEASE, |
+ packages: packagesToLoad, |
+ useDart2JS: false).then((x0) { |
+ try { |
+ var environment = x0; |
+ environment.barback.errors.listen(((error) { |
+ log.error(log.red("Build error:\n$error")); |
+ })); |
+ waitAndPrintErrors( |
+ executables.keys.map(((package) { |
+ final completer0 = new Completer(); |
+ scheduleMicrotask(() { |
+ try { |
+ var dir = path.join(binDir, package); |
+ cleanDir(dir); |
+ environment.precompileExecutables( |
+ package, |
+ dir, |
+ executableIds: executables[package]).then((x0) { |
+ try { |
+ x0; |
+ completer0.complete(null); |
+ } catch (e0) { |
+ completer0.completeError(e0); |
+ } |
+ }, onError: (e1) { |
+ completer0.completeError(e1); |
+ }); |
+ } catch (e2) { |
+ completer0.completeError(e2); |
+ } |
+ }); |
+ return completer0.future; |
+ }))).then((x1) { |
+ try { |
+ x1; |
+ completer0.complete(null); |
+ } catch (e1) { |
+ completer0.completeError(e1); |
+ } |
+ }, onError: (e2) { |
+ completer0.completeError(e2); |
+ }); |
+ } catch (e0) { |
+ completer0.completeError(e0); |
+ } |
+ }, onError: (e3) { |
+ completer0.completeError(e3); |
+ }); |
+ } catch (e4) { |
+ completer0.completeError(e4); |
+ } |
+ }); |
+ return completer0.future; |
+ })).then((x1) { |
+ try { |
+ x1; |
+ completer0.complete(null); |
+ } catch (e1) { |
+ completer0.completeError(e1); |
+ } |
+ }, onError: (e2) { |
+ completer0.completeError(e2); |
+ }); |
+ } |
+ if (executables.isEmpty) { |
+ completer0.complete(null); |
+ } else { |
+ join3(); |
+ } |
+ } |
+ if (!sdkMatches) { |
+ deleteEntry(binDir); |
+ join2(); |
+ } else { |
+ join2(); |
+ } |
+ } |
+ continue0(x4) { |
+ if (it0.moveNext()) { |
+ Future.wait([]).then((x2) { |
+ var package = it0.current; |
+ join4() { |
+ continue0(null); |
+ } |
+ if (executables[package].isEmpty) { |
+ executables.remove(package); |
+ join4(); |
+ } else { |
+ join4(); |
+ } |
+ }); |
+ } else { |
+ break0(null); |
+ } |
+ } |
+ continue0(null); |
+ } catch (e0) { |
+ completer0.completeError(e0); |
+ } |
+ }, onError: (e3) { |
+ completer0.completeError(e3); |
+ }); |
+ } |
+ if (!sdkMatches) { |
+ changed = null; |
+ join1(); |
+ } else { |
+ join1(); |
+ } |
+ } |
+ if (changed != null) { |
+ changed = changed.toSet(); |
+ join0(); |
+ } else { |
+ join0(); |
+ } |
+ } catch (e4) { |
+ completer0.completeError(e4); |
} |
- if (!sdkMatches) deleteEntry(binDir); |
- if (executables.isEmpty) return null; |
- return log.progress("Precompiling executables", () { |
- ensureDir(binDir); |
- writeTextFile(sdkVersionPath, "${sdk.version}\n"); |
- 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")); |
- }); |
- return waitAndPrintErrors(executables.keys.map((package) { |
- var dir = path.join(binDir, package); |
- cleanDir(dir); |
- return environment.precompileExecutables( |
- package, |
- dir, |
- executableIds: executables[package]); |
- })); |
- }); |
- }); |
}); |
+ return completer0.future; |
} |
List<AssetId> _executablesForPackage(PackageGraph graph, String packageName, |
Set<String> changed) { |