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

Unified Diff: tools/patch_sdk.dart

Issue 2986303003: Switch FE to use the libraries.json format. (Closed)
Patch Set: fix issues found on bots Created 3 years, 4 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « pkg/front_end/tool/fasta_perf.dart ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/patch_sdk.dart
diff --git a/tools/patch_sdk.dart b/tools/patch_sdk.dart
index 8e86120e9c5a7e37327dc2c5850a840f4c7adccf..97e2e12c8c95400bf74a578d9094bbbba212099f 100644
--- a/tools/patch_sdk.dart
+++ b/tools/patch_sdk.dart
@@ -108,7 +108,7 @@ Future _main(List<String> argv) async {
libContents = _updateLibraryMetadata(sdkOut, libContents);
var sdkLibraries = _getSdkLibraries(libContents);
- Map<String, String> locations = <String, String>{};
+ var locations = <String, Map<String, String>>{};
// Enumerate core libraries and apply patches
for (SdkLibrary library in sdkLibraries) {
@@ -125,7 +125,10 @@ Future _main(List<String> argv) async {
Uri packages = Uri.base.resolveUri(new Uri.file(packagesFile));
await _writeSync(
- librariesJson.toFilePath(), JSON.encode({"libraries": locations}));
+ librariesJson.toFilePath(),
+ JSON.encode({
+ mode: {"libraries": locations}
+ }));
var flags = new TargetFlags();
var target = forVm
@@ -141,6 +144,22 @@ Future _main(List<String> argv) async {
var base = path.fromUri(Platform.script);
Uri dartDir =
new Uri.directory(path.dirname(path.dirname(path.absolute(base))));
+
+ String vmserviceJson = JSON.encode({
+ 'vm': {
+ "libraries": {
+ '_vmservice': {
+ 'uri': '${dartDir.resolve('sdk/lib/vmservice/vmservice.dart')}'
+ },
+ 'vmservice_io': {
+ 'uri':
+ '${dartDir.resolve('runtime/bin/vmservice/vmservice_io.dart')}'
+ },
+ }
+ }
+ });
+ Uri vmserviceJsonUri = outDirUri.resolve("lib/vmservice_libraries.json");
+ await _writeSync(vmserviceJsonUri.toFilePath(), vmserviceJson);
var program = await kernelForProgram(
Uri.parse('dart:$vmserviceName'),
new CompilerOptions()
@@ -148,11 +167,7 @@ Future _main(List<String> argv) async {
// TODO(sigmund): investigate. This should be outline, but it breaks
// vm-debug tests. Issue #30111
..sdkSummary = platform
- ..dartLibraries = <String, Uri>{
- '_vmservice': dartDir.resolve('sdk/lib/vmservice/vmservice.dart'),
- 'vmservice_io':
- dartDir.resolve('runtime/bin/vmservice/vmservice_io.dart'),
- }
+ ..librariesSpecificationUri = vmserviceJsonUri
..packagesFileUri = packages);
Uri vmserviceUri = outDirUri.resolve('$vmserviceName.dill');
// TODO(sigmund): remove. This is a workaround because in the VM
@@ -333,7 +348,7 @@ String _updateLibraryMetadata(String sdkOut, String libContents) {
/// Copy internal libraries that are developed outside the sdk folder into the
/// patched_sdk folder. For the VM< this includes files under 'runtime/bin/',
/// for flutter, this is includes also the ui library.
-_copyExtraLibraries(String sdkOut, Map<String, String> locations) {
+_copyExtraLibraries(String sdkOut, Map<String, Map<String, String>> locations) {
if (forDart2js) return;
var base = path.fromUri(Platform.script);
var dartDir = path.dirname(path.dirname(path.absolute(base)));
@@ -341,7 +356,7 @@ _copyExtraLibraries(String sdkOut, Map<String, String> locations) {
var builtinLibraryIn = path.join(dartDir, 'runtime', 'bin', 'builtin.dart');
var builtinLibraryOut = path.join(sdkOut, '_builtin', '_builtin.dart');
_writeSync(builtinLibraryOut, readInputFile(builtinLibraryIn));
- locations['_builtin'] = path.join('_builtin', '_builtin.dart');
+ addLocation(locations, '_builtin', path.join('_builtin', '_builtin.dart'));
if (forFlutter) {
// Flutter repo has this layout:
@@ -356,7 +371,7 @@ _copyExtraLibraries(String sdkOut, Map<String, String> locations) {
var uiLibraryOut = path.join(sdkOut, 'ui', name);
_writeSync(uiLibraryOut, readInputFile(file.path));
}
- locations['ui'] = 'ui/ui.dart';
+ addLocation(locations, 'ui', path.join('ui', 'ui.dart'));
if (!forFlutterRelease) {
// vmservice should be present unless we build release flavor of Flutter.
@@ -368,22 +383,23 @@ _copyExtraLibraries(String sdkOut, Map<String, String> locations) {
var libraryOut = path.join(sdkOut, 'vmservice_io', file);
_writeSync(libraryOut, readInputFile(libraryIn));
}
- locations['vmservice_sky'] =
- path.join('vmservice_io', 'vmservice_io.dart');
- locations['_vmservice'] = path.join('vmservice', 'vmservice.dart');
+ addLocation(locations, 'vmservice_sky',
+ path.join('vmservice_io', 'vmservice_io.dart'));
+ addLocation(
+ locations, '_vmservice', path.join('vmservice', 'vmservice.dart'));
}
}
}
_applyPatch(SdkLibrary library, String sdkLibIn, String patchIn, String sdkOut,
- Map<String, String> locations) {
+ Map<String, Map<String, String>> locations) {
var libraryOut = path.join(sdkLibIn, library.path);
var libraryIn = libraryOut;
var libraryFile = getInputFile(libraryIn, canBeMissing: true);
if (libraryFile != null) {
- locations[Uri.parse(library.shortName).path] =
- path.relative(libraryOut, from: sdkLibIn);
+ addLocation(locations, Uri.parse(library.shortName).path,
+ path.relative(libraryOut, from: sdkLibIn));
var outPaths = <String>[libraryOut];
var libraryContents = libraryFile.readAsStringSync();
@@ -806,3 +822,9 @@ List<SdkLibrary> _getSdkLibraries(String contents) {
parseCompilationUnit(contents).accept(libraryBuilder);
return libraryBuilder.librariesMap.sdkLibraries;
}
+
+void addLocation(Map<String, Map<String, String>> locations, String libraryName,
+ String libraryPath) {
+ assert(locations[libraryName] == null);
+ locations[libraryName] = {'uri': '${path.toUri(libraryPath)}'};
+}
« no previous file with comments | « pkg/front_end/tool/fasta_perf.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698