| 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)}'};
|
| +}
|
|
|