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

Side by Side Diff: pkg/dev_compiler/tool/global_compile.dart

Issue 2363053003: Update global_compile tool (Closed)
Patch Set: Format Created 4 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
« no previous file with comments | « pkg/dev_compiler/lib/src/compiler/reify_coercions.dart ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env dart 1 #!/usr/bin/env dart
2 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file 2 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
3 // for details. All rights reserved. Use of this source code is governed by a 3 // for details. All rights reserved. Use of this source code is governed by a
4 // BSD-style license that can be found in the LICENSE file. 4 // BSD-style license that can be found in the LICENSE file.
5 5
6 import 'dart:async'; 6 import 'dart:async';
7 import 'dart:io'; 7 import 'dart:io';
8 8
9 import 'package:analyzer/analyzer.dart' 9 import 'package:analyzer/analyzer.dart'
10 show 10 show
(...skipping 10 matching lines...) Expand all
21 21
22 void main(List<String> args) { 22 void main(List<String> args) {
23 // Parse flags. 23 // Parse flags.
24 var parser = new ArgParser() 24 var parser = new ArgParser()
25 ..addOption('out', 25 ..addOption('out',
26 help: 'Output file (defaults to "out.js")', 26 help: 'Output file (defaults to "out.js")',
27 abbr: 'o', 27 abbr: 'o',
28 defaultsTo: 'out.js') 28 defaultsTo: 'out.js')
29 ..addFlag('unsafe-force-compile', 29 ..addFlag('unsafe-force-compile',
30 help: 'Generate code with undefined behavior', negatable: false) 30 help: 'Generate code with undefined behavior', negatable: false)
31 ..addFlag('emit-metadata',
32 help: 'Preserve annotations in generated code', negatable: false)
31 ..addOption('package-root', 33 ..addOption('package-root',
32 help: 'Directory containing packages', 34 help: 'Directory containing packages',
33 abbr: 'p', 35 abbr: 'p',
34 defaultsTo: 'packages/') 36 defaultsTo: 'packages/')
35 ..addFlag('log', help: 'Show individual build commands') 37 ..addFlag('log', help: 'Show individual build commands')
36 ..addOption('tmp', 38 ..addOption('tmp',
37 help: 39 help:
38 'Directory for temporary artifacts (defaults to a system tmp directo ry)'); 40 'Directory for temporary artifacts (defaults to a system tmp directo ry)');
39 41
40 var options = parser.parse(args); 42 var options = parser.parse(args);
41 if (options.rest.length != 1) { 43 if (options.rest.length != 1) {
42 throw 'Expected a single dart entrypoint.'; 44 throw 'Expected a single dart entrypoint.';
43 } 45 }
44 var entry = options.rest.first; 46 var entry = options.rest.first;
45 var outfile = options['out'] as String; 47 var outfile = options['out'] as String;
46 var packageRoot = options['package-root'] as String; 48 var packageRoot = options['package-root'] as String;
47 var unsafe = options['unsafe-force-compile'] as bool; 49 var unsafe = options['unsafe-force-compile'] as bool;
48 var log = options['log'] as bool; 50 var log = options['log'] as bool;
49 var tmp = options['tmp'] as String; 51 var tmp = options['tmp'] as String;
52 var metadata = options['emit-metadata'] as bool;
50 53
51 // Build an invocation to dartdevc 54 // Build an invocation to dartdevc
52 var dartPath = Platform.resolvedExecutable; 55 var dartPath = Platform.resolvedExecutable;
53 var ddcPath = path.dirname(path.dirname(Platform.script.toFilePath())); 56 var ddcPath = path.dirname(path.dirname(Platform.script.toFilePath()));
54 var template = [ 57 var template = [
55 '$ddcPath/bin/dartdevc.dart', 58 '$ddcPath/bin/dartdevc.dart',
56 '--no-source-map', // Invalid as we're just concatenating files below 59 '--modules=legacy', // TODO(vsm): Change this to use common format.
60 '--single-out-file',
61 '--inline-source-map',
57 '-p', 62 '-p',
58 packageRoot 63 packageRoot
59 ]; 64 ];
65 if (metadata) {
66 template.add('--emit-metadata');
67 }
60 if (unsafe) { 68 if (unsafe) {
61 template.add('--unsafe-force-compile'); 69 template.add('--unsafe-force-compile');
62 } 70 }
63 71
64 // Compute the transitive closure 72 // Compute the transitive closure
65 var total = new Stopwatch()..start(); 73 var total = new Stopwatch()..start();
66 var partial = new Stopwatch()..start(); 74 var partial = new Stopwatch()..start();
67 75
68 // TODO(vsm): We're using the analyzer just to compute the import/export/part 76 // TODO(vsm): We're using the analyzer just to compute the import/export/part
69 // dependence graph. This is expensive. Is there a lighterweight way to do 77 // dependence graph. This is expensive. Is there a lighterweight way to do
70 // this? 78 // this?
71 transitiveFiles(entry, Directory.current.path, packageRoot); 79 transitiveFiles(entry, Directory.current.path, packageRoot);
72 orderModules(); 80 orderModules();
73 computeTransitiveDependences(); 81 computeTransitiveDependences();
74 82
75 var graphTime = partial.elapsedMilliseconds / 1000; 83 var graphTime = partial.elapsedMilliseconds / 1000;
76 print('Computed global build graph in $graphTime seconds'); 84 print('Computed global build graph in $graphTime seconds');
77 85
78 // Prepend Dart runtime files to the output 86 // Prepend Dart runtime files to the output
79 var out = new File(outfile); 87 var out = new File(outfile);
80 var dartLibrary = 88 var dartLibrary =
81 new File(path.join(ddcPath, 'lib', 'runtime', 'dart_library.js')) 89 new File(path.join(ddcPath, 'lib', 'js', 'legacy', 'dart_library.js'))
82 .readAsStringSync(); 90 .readAsStringSync();
83 out.writeAsStringSync(dartLibrary); 91 out.writeAsStringSync(dartLibrary);
84 var dartSdk = new File(path.join(ddcPath, 'lib', 'runtime', 'dart_sdk.js')) 92 var dartSdk =
85 .readAsStringSync(); 93 new File(path.join(ddcPath, 'lib', 'js', 'legacy', 'dart_sdk.js'))
94 .readAsStringSync();
86 out.writeAsStringSync(dartSdk, mode: FileMode.APPEND); 95 out.writeAsStringSync(dartSdk, mode: FileMode.APPEND);
87 96
88 // Linearize module concatenation for deterministic output 97 // Linearize module concatenation for deterministic output
89 var last = new Future.value(); 98 var last = new Future.value();
90 for (var module in orderedModules) { 99 for (var module in orderedModules) {
91 linearizerMap[module] = last; 100 linearizerMap[module] = last;
92 var completer = new Completer(); 101 var completer = new Completer();
93 completerMap[module] = completer; 102 completerMap[module] = completer;
94 last = completer.future; 103 last = completer.future;
95 } 104 }
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after
271 var uri = _resolveDirective(d); 280 var uri = _resolveDirective(d);
272 processDependence(entryPoint, canonicalize(uri, entryDir)); 281 processDependence(entryPoint, canonicalize(uri, entryDir));
273 transitiveFiles(uri, entryDir, packageRoot); 282 transitiveFiles(uri, entryDir, packageRoot);
274 } else if (d is PartDirective) { 283 } else if (d is PartDirective) {
275 var uri = _resolveDirective(d); 284 var uri = _resolveDirective(d);
276 processFile(canonicalize(uri, entryDir)); 285 processFile(canonicalize(uri, entryDir));
277 } 286 }
278 } 287 }
279 } 288 }
280 } 289 }
OLDNEW
« no previous file with comments | « pkg/dev_compiler/lib/src/compiler/reify_coercions.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698