Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(216)

Side by Side Diff: sdk/lib/_internal/pub_generated/lib/src/executable.dart

Issue 599993004: Don't load transformers that aren't going to be used for an executable. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 library pub.executable; 1 library pub.executable;
2 import 'dart:async'; 2 import 'dart:async';
3 import 'dart:io'; 3 import 'dart:io';
4 import 'package:barback/barback.dart'; 4 import 'package:barback/barback.dart';
5 import 'package:path/path.dart' as p; 5 import 'package:path/path.dart' as p;
6 import 'package:stack_trace/stack_trace.dart'; 6 import 'package:stack_trace/stack_trace.dart';
7 import 'barback/asset_environment.dart'; 7 import 'barback/asset_environment.dart';
8 import 'entrypoint.dart'; 8 import 'entrypoint.dart';
9 import 'exit_codes.dart' as exit_codes; 9 import 'exit_codes.dart' as exit_codes;
10 import 'io.dart'; 10 import 'io.dart';
11 import 'log.dart' as log; 11 import 'log.dart' as log;
12 import 'utils.dart'; 12 import 'utils.dart';
13 Future<int> runExecutable(Entrypoint entrypoint, String package, 13 Future<int> runExecutable(Entrypoint entrypoint, String package,
14 String executable, Iterable<String> args, {bool isGlobal: false, 14 String executable, Iterable<String> args, {bool isGlobal: false,
15 BarbackMode mode}) { 15 BarbackMode mode}) {
16 final completer0 = new Completer(); 16 final completer0 = new Completer();
17 scheduleMicrotask(() { 17 scheduleMicrotask(() {
18 try { 18 try {
19 join0() { 19 join0() {
20 join1() { 20 join1() {
21 join2() { 21 join2() {
22 var localSnapshotPath =
23 p.join(".pub", "bin", package, "${executable}.dart.snapshot");
24 join3() { 22 join3() {
25 var rootDir = "bin"; 23 var localSnapshotPath =
26 var parts = p.split(executable); 24 p.join(".pub", "bin", package, "${executable}.dart.snapshot");
27 join4() { 25 join4() {
28 AssetEnvironment.create( 26 var rootDir = "bin";
29 entrypoint, 27 var parts = p.split(executable);
30 mode, 28 join5() {
31 useDart2JS: false).then((x0) { 29 var assetPath = "${p.url.joinAll(p.split(executable))}.dart";
32 try { 30 var id = new AssetId(package, assetPath);
33 var environment = x0; 31 AssetEnvironment.create(
34 environment.barback.errors.listen(((error) { 32 entrypoint,
35 log.error(log.red("Build error:\n$error")); 33 mode,
36 })); 34 useDart2JS: false,
37 var server; 35 entrypoints: [id]).then((x0) {
38 join5() { 36 try {
39 var assetPath = 37 var environment = x0;
40 "${p.url.joinAll(p.split(executable))}.dart"; 38 environment.barback.errors.listen(((error) {
41 var id = new AssetId(server.package, assetPath); 39 log.error(log.red("Build error:\n$error"));
42 completer0.complete( 40 }));
43 environment.barback.getAssetById(id).then(((_) { 41 var server;
44 final completer0 = new Completer(); 42 join6() {
45 scheduleMicrotask(() { 43 completer0.complete(
44 environment.barback.getAssetById(id).then(((_) {
45 final completer0 = new Completer();
46 scheduleMicrotask(() {
47 try {
48 var vmArgs = [];
49 vmArgs.add("--checked");
50 var relativePath =
51 p.url.relative(assetPath, from: p.url.joinAll( p.split(server.rootDirectory)));
52 vmArgs.add(
53 server.url.resolve(relativePath).toString());
54 vmArgs.addAll(args);
55 Process.start(
56 Platform.executable,
57 vmArgs).then((x0) {
58 try {
59 var process = x0;
60 process.stderr.listen(stderr.add);
61 process.stdout.listen(stdout.add);
62 stdin.listen(process.stdin.add);
63 completer0.complete(process.exitCode);
64 } catch (e0) {
65 completer0.completeError(e0);
66 }
67 }, onError: (e1) {
68 completer0.completeError(e1);
69 });
70 } catch (e2) {
71 completer0.completeError(e2);
72 }
73 });
74 return completer0.future;
75 })).catchError(((error, stackTrace) {
76 if (error is! AssetNotFoundException) throw error;
77 var message =
78 "Could not find ${log.bold(executable + ".dart")}" ;
79 if (package != entrypoint.root.name) {
80 message +=
81 " in package ${log.bold(server.package)}";
82 }
83 log.error("$message.");
84 log.fine(new Chain.forTrace(stackTrace));
85 return exit_codes.NO_INPUT;
86 })));
87 }
88 if (package == entrypoint.root.name) {
89 environment.serveDirectory(rootDir).then((x1) {
46 try { 90 try {
47 var vmArgs = []; 91 server = x1;
48 vmArgs.add("--checked"); 92 join6();
49 var relativePath = 93 } catch (e1) {
50 p.url.relative(assetPath, from: p.url.joinAll(p. split(server.rootDirectory))); 94 completer0.completeError(e1);
51 vmArgs.add(
52 server.url.resolve(relativePath).toString());
53 vmArgs.addAll(args);
54 Process.start(
55 Platform.executable,
56 vmArgs).then((x0) {
57 try {
58 var process = x0;
59 process.stderr.listen(stderr.add);
60 process.stdout.listen(stdout.add);
61 stdin.listen(process.stdin.add);
62 completer0.complete(process.exitCode);
63 } catch (e0) {
64 completer0.completeError(e0);
65 }
66 }, onError: (e1) {
67 completer0.completeError(e1);
68 });
69 } catch (e2) {
70 completer0.completeError(e2);
71 } 95 }
96 }, onError: (e2) {
97 completer0.completeError(e2);
72 }); 98 });
73 return completer0.future; 99 } else {
74 })).catchError(((error, stackTrace) {
75 if (error is! AssetNotFoundException) throw error;
76 var message =
77 "Could not find ${log.bold(executable + ".dart")}";
78 if (package != entrypoint.root.name) {
79 message += " in package ${log.bold(server.package)}";
80 }
81 log.error("$message.");
82 log.fine(new Chain.forTrace(stackTrace));
83 return exit_codes.NO_INPUT;
84 })));
85 }
86 if (package == entrypoint.root.name) {
87 environment.serveDirectory(rootDir).then((x1) {
88 try {
89 server = x1;
90 join5();
91 } catch (e1) {
92 completer0.completeError(e1);
93 }
94 }, onError: (e2) {
95 completer0.completeError(e2);
96 });
97 } else {
98 var dep =
99 entrypoint.root.immediateDependencies.firstWhere(
100 ((dep) => dep.name == package),
101 orElse: (() => null));
102 join6() {
103 environment.servePackageBinDirectory( 100 environment.servePackageBinDirectory(
104 package).then((x2) { 101 package).then((x2) {
105 try { 102 try {
106 server = x2; 103 server = x2;
107 join5(); 104 join6();
108 } catch (e3) { 105 } catch (e3) {
109 completer0.completeError(e3); 106 completer0.completeError(e3);
110 } 107 }
111 }, onError: (e4) { 108 }, onError: (e4) {
112 completer0.completeError(e4); 109 completer0.completeError(e4);
113 }); 110 });
114 } 111 }
115 if (dep == null) { 112 } catch (e0) {
116 join7() { 113 completer0.completeError(e0);
117 join6();
118 }
119 if (environment.graph.packages.containsKey(package)) {
120 dataError(
121 'Package "${package}" is not an immediate dependen cy.\n'
122 'Cannot run executables in transitive dependen cies.');
123 join7();
124 } else {
125 dataError(
126 'Could not find package "${package}". Did you forg et to ' 'add a dependency?');
127 join7();
128 }
129 } else {
130 join6();
131 }
132 } 114 }
133 } catch (e0) { 115 }, onError: (e5) {
134 completer0.completeError(e0); 116 completer0.completeError(e5);
135 } 117 });
136 }, onError: (e5) { 118 }
137 completer0.completeError(e5); 119 if (parts.length > 1) {
138 }); 120 assert(!isGlobal && package == entrypoint.root.name);
121 rootDir = parts.first;
122 join5();
123 } else {
124 executable = p.join("bin", executable);
125 join5();
126 }
139 } 127 }
140 if (parts.length > 1) { 128 if (!isGlobal &&
141 assert(!isGlobal && package == entrypoint.root.name); 129 fileExists(localSnapshotPath) &&
142 rootDir = parts.first; 130 mode == BarbackMode.RELEASE) {
143 join4(); 131 completer0.complete(
132 _runCachedExecutable(entrypoint, localSnapshotPath, args));
144 } else { 133 } else {
145 executable = p.join("bin", executable);
146 join4(); 134 join4();
147 } 135 }
148 } 136 }
149 if (!isGlobal && 137 if (p.extension(executable) == ".dart") {
150 fileExists(localSnapshotPath) && 138 executable = p.withoutExtension(executable);
151 mode == BarbackMode.RELEASE) { 139 join3();
152 completer0.complete(
153 _runCachedExecutable(entrypoint, localSnapshotPath, args));
154 } else { 140 } else {
155 join3(); 141 join3();
156 } 142 }
157 } 143 }
158 if (p.extension(executable) == ".dart") { 144 if (log.verbosity == log.Verbosity.NORMAL) {
159 executable = p.withoutExtension(executable); 145 log.verbosity = log.Verbosity.WARNING;
160 join2(); 146 join2();
161 } else { 147 } else {
162 join2(); 148 join2();
163 } 149 }
164 } 150 }
165 if (log.verbosity == log.Verbosity.NORMAL) { 151 if (entrypoint.root.name != package &&
166 log.verbosity = log.Verbosity.WARNING; 152 !entrypoint.root.immediateDependencies.any(((dep) => dep.name == pac kage))) {
167 join1(); 153 entrypoint.loadPackageGraph().then((x3) {
154 try {
155 var graph = x3;
156 join7() {
157 join1();
158 }
159 if (graph.packages.containsKey(package)) {
160 dataError(
161 'Package "${package}" is not an immediate dependency.\n'
162 'Cannot run executables in transitive dependencies.');
163 join7();
164 } else {
165 dataError(
166 'Could not find package "${package}". Did you forget to add a ' 'dependency?');
167 join7();
168 }
169 } catch (e6) {
170 completer0.completeError(e6);
171 }
172 }, onError: (e7) {
173 completer0.completeError(e7);
174 });
168 } else { 175 } else {
169 join1(); 176 join1();
170 } 177 }
171 } 178 }
172 if (mode == null) { 179 if (mode == null) {
173 mode = BarbackMode.RELEASE; 180 mode = BarbackMode.RELEASE;
174 join0(); 181 join0();
175 } else { 182 } else {
176 join0(); 183 join0();
177 } 184 }
178 } catch (e6) { 185 } catch (e8) {
179 completer0.completeError(e6); 186 completer0.completeError(e8);
180 } 187 }
181 }); 188 });
182 return completer0.future; 189 return completer0.future;
183 } 190 }
184 Future<int> runSnapshot(String path, Iterable<String> args, {recompile(), 191 Future<int> runSnapshot(String path, Iterable<String> args, {recompile(),
185 bool checked: false}) { 192 bool checked: false}) {
186 final completer0 = new Completer(); 193 final completer0 = new Completer();
187 scheduleMicrotask(() { 194 scheduleMicrotask(() {
188 try { 195 try {
189 var vmArgs = [path]..addAll(args); 196 var vmArgs = [path]..addAll(args);
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
263 }); 270 });
264 return completer0.future; 271 return completer0.future;
265 } 272 }
266 Future<int> _runCachedExecutable(Entrypoint entrypoint, String snapshotPath, 273 Future<int> _runCachedExecutable(Entrypoint entrypoint, String snapshotPath,
267 List<String> args) { 274 List<String> args) {
268 return runSnapshot(snapshotPath, args, checked: true, recompile: () { 275 return runSnapshot(snapshotPath, args, checked: true, recompile: () {
269 log.fine("Precompiled executable is out of date."); 276 log.fine("Precompiled executable is out of date.");
270 return entrypoint.precompileExecutables(); 277 return entrypoint.precompileExecutables();
271 }); 278 });
272 } 279 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698