OLD | NEW |
1 #!/usr/bin/env dart | 1 #!/usr/bin/env dart |
2 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 2 // Copyright (c) 2015, 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 /// Command line tool to merge the SDK libraries and our patch files. | 6 /// Command line tool to merge the SDK libraries and our patch files. |
7 /// This is currently designed as an offline tool, but we could automate it. | 7 /// This is currently designed as an offline tool, but we could automate it. |
8 | 8 |
9 import 'dart:io'; | 9 import 'dart:io'; |
10 import 'dart:isolate' show RawReceivePort; | 10 import 'dart:isolate' show RawReceivePort; |
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
113 | 113 |
114 Uri platform = outDirUri.resolve('platform.dill.tmp'); | 114 Uri platform = outDirUri.resolve('platform.dill.tmp'); |
115 Uri outline = outDirUri.resolve('outline.dill'); | 115 Uri outline = outDirUri.resolve('outline.dill'); |
116 Uri librariesJson = outDirUri.resolve("lib/libraries.json"); | 116 Uri librariesJson = outDirUri.resolve("lib/libraries.json"); |
117 Uri packages = Uri.base.resolveUri(new Uri.file(packagesFile)); | 117 Uri packages = Uri.base.resolveUri(new Uri.file(packagesFile)); |
118 | 118 |
119 await _writeSync( | 119 await _writeSync( |
120 librariesJson.toFilePath(), JSON.encode({"libraries": locations})); | 120 librariesJson.toFilePath(), JSON.encode({"libraries": locations})); |
121 | 121 |
122 if (forVm || forFlutter) { | 122 if (forVm || forFlutter) { |
123 var vmserviceName = forVm ? 'vmservice_io' : 'vmservice_sky'; | |
124 var targetName = forVm ? 'vm_fasta' : 'flutter_fasta'; | |
125 Uri vmserviceUri = outDirUri.resolve('$vmserviceName.dill'); | |
126 await fasta.compilePlatform(outDirUri, platform, | 123 await fasta.compilePlatform(outDirUri, platform, |
127 packages: packages, | 124 packages: packages, |
128 outlineOutput: outline, | 125 outlineOutput: outline, |
129 backendTarget: forVm ? 'vm_fasta' : 'flutter_fasta'); | 126 backendTarget: forVm ? 'vm_fasta' : 'flutter_fasta'); |
| 127 } else { |
| 128 await dart2js.compilePlatform(outDirUri, platform, |
| 129 packages: packages, outlineOutput: outline); |
| 130 } |
| 131 |
| 132 if (forVm) { |
| 133 var base = path.fromUri(Platform.script); |
| 134 Uri repositoryDir = |
| 135 new Uri.directory(path.dirname(path.dirname(path.absolute(base)))); |
| 136 var vmserviceName = 'vmservice_io'; |
| 137 Uri vmserviceSdk = repositoryDir.resolve('runtime/bin/vmservice_sdk/'); |
| 138 Uri vmserviceUri = outDirUri.resolve('$vmserviceName.dill'); |
| 139 // TODO(sigmundch): Specify libraries.json directly instead of "--sdk" |
| 140 // after #29882 is fixed. |
130 await fasta.compile([ | 141 await fasta.compile([ |
131 "--sdk=$outDirUri", | 142 "--sdk=$vmserviceSdk", |
132 "--platform=$outline", | 143 "--platform=$outline", |
133 "--target=$targetName", | 144 "--target=vm_fasta", |
134 "--packages=$packages", | 145 "--packages=$packages", |
135 "dart:$vmserviceName", | 146 "dart:$vmserviceName", |
136 "-o", | 147 "-o", |
137 "$vmserviceUri", | 148 "$vmserviceUri", |
138 ]); | 149 ]); |
139 } else { | |
140 await dart2js.compilePlatform(outDirUri, platform, | |
141 packages: packages, outlineOutput: outline); | |
142 } | 150 } |
143 | 151 |
144 Uri platformFinalLocation = outDirUri.resolve('platform.dill'); | 152 Uri platformFinalLocation = outDirUri.resolve('platform.dill'); |
145 | 153 |
146 // We generate a dependency file for GN to properly regenerate the patched sdk | 154 // We generate a dependency file for GN to properly regenerate the patched sdk |
147 // folder, outline.dill and platform.dill files when necessary: either when | 155 // folder, outline.dill and platform.dill files when necessary: either when |
148 // the sdk sources change or when this script is updated. In particular: | 156 // the sdk sources change or when this script is updated. In particular: |
149 // | 157 // |
150 // - sdk changes: we track the actual sources we are compiling. If we are | 158 // - sdk changes: we track the actual sources we are compiling. If we are |
151 // building the dart2js sdk, this includes the dart2js-specific patch | 159 // building the dart2js sdk, this includes the dart2js-specific patch |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
236 _copyExtraLibraries(String sdkOut, Map<String, String> locations) { | 244 _copyExtraLibraries(String sdkOut, Map<String, String> locations) { |
237 if (forDart2js) return; | 245 if (forDart2js) return; |
238 var base = path.fromUri(Platform.script); | 246 var base = path.fromUri(Platform.script); |
239 var dartDir = path.dirname(path.dirname(path.absolute(base))); | 247 var dartDir = path.dirname(path.dirname(path.absolute(base))); |
240 | 248 |
241 var builtinLibraryIn = path.join(dartDir, 'runtime', 'bin', 'builtin.dart'); | 249 var builtinLibraryIn = path.join(dartDir, 'runtime', 'bin', 'builtin.dart'); |
242 var builtinLibraryOut = path.join(sdkOut, '_builtin', '_builtin.dart'); | 250 var builtinLibraryOut = path.join(sdkOut, '_builtin', '_builtin.dart'); |
243 _writeSync(builtinLibraryOut, readInputFile(builtinLibraryIn)); | 251 _writeSync(builtinLibraryOut, readInputFile(builtinLibraryIn)); |
244 locations['_builtin'] = path.join('_builtin', '_builtin.dart'); | 252 locations['_builtin'] = path.join('_builtin', '_builtin.dart'); |
245 | 253 |
246 for (var file in ['loader.dart', 'server.dart', 'vmservice_io.dart']) { | |
247 var libraryIn = path.join(dartDir, 'runtime', 'bin', 'vmservice', file); | |
248 var libraryOut = path.join(sdkOut, 'vmservice_io', file); | |
249 _writeSync(libraryOut, readInputFile(libraryIn)); | |
250 } | |
251 | |
252 locations[forVm ? "vmservice_io" : "vmservice_sky"] = | |
253 path.join('vmservice_io', 'vmservice_io.dart'); | |
254 locations["_vmservice"] = path.join('vmservice', 'vmservice.dart'); | |
255 | |
256 if (forFlutter) { | 254 if (forFlutter) { |
257 // Flutter repo has this layout: | 255 // Flutter repo has this layout: |
258 // engine/src/ | 256 // engine/src/ |
259 // dart/ | 257 // dart/ |
260 // flutter/ | 258 // flutter/ |
261 var srcDir = path.dirname(path.dirname(path.dirname(path.absolute(base)))); | 259 var srcDir = path.dirname(path.dirname(path.dirname(path.absolute(base)))); |
262 var uiLibraryInDir = path.join(srcDir, 'flutter', 'lib', 'ui'); | 260 var uiLibraryInDir = path.join(srcDir, 'flutter', 'lib', 'ui'); |
263 for (var file in new Directory(uiLibraryInDir).listSync()) { | 261 for (var file in new Directory(uiLibraryInDir).listSync()) { |
264 if (!file.path.endsWith('.dart')) continue; | 262 if (!file.path.endsWith('.dart')) continue; |
265 var name = path.basename(file.path); | 263 var name = path.basename(file.path); |
(...skipping 410 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
676 if (diff != 0) return diff; | 674 if (diff != 0) return diff; |
677 return end - other.end; | 675 return end - other.end; |
678 } | 676 } |
679 } | 677 } |
680 | 678 |
681 List<SdkLibrary> _getSdkLibraries(String contents) { | 679 List<SdkLibrary> _getSdkLibraries(String contents) { |
682 var libraryBuilder = new SdkLibrariesReader_LibraryBuilder(forDart2js); | 680 var libraryBuilder = new SdkLibrariesReader_LibraryBuilder(forDart2js); |
683 parseCompilationUnit(contents).accept(libraryBuilder); | 681 parseCompilationUnit(contents).accept(libraryBuilder); |
684 return libraryBuilder.librariesMap.sdkLibraries; | 682 return libraryBuilder.librariesMap.sdkLibraries; |
685 } | 683 } |
OLD | NEW |