Index: tools/patch_sdk.dart |
diff --git a/tools/patch_sdk.dart b/tools/patch_sdk.dart |
index 633d76290e6e4c65e6ac5331b3c51a589dab567e..2feead9f779ea63bdc04ae6720afeaa0545de0ef 100644 |
--- a/tools/patch_sdk.dart |
+++ b/tools/patch_sdk.dart |
@@ -10,6 +10,7 @@ import 'dart:io'; |
import 'dart:isolate' show RawReceivePort; |
import 'dart:async'; |
import 'dart:math' as math; |
+import 'dart:convert' show JSON; |
import 'package:analyzer/analyzer.dart'; |
import 'package:analyzer/src/generated/sdk.dart'; |
@@ -95,18 +96,25 @@ Future _main(List<String> argv) async { |
if (forVm) libContents = _updateLibraryMetadata(sdkOut, libContents); |
var sdkLibraries = _getSdkLibraries(libContents); |
+ Map<String, String> locations = <String, String>{}; |
+ |
// Enumerate core libraries and apply patches |
for (SdkLibrary library in sdkLibraries) { |
if (forDart2js && library.isVmLibrary) continue; |
if (forVm && library.isDart2JsLibrary) continue; |
- _applyPatch(library, sdkLibIn, patchIn, sdkOut); |
+ _applyPatch(library, sdkLibIn, patchIn, sdkOut, locations); |
} |
- if (forVm) _copyExtraVmLibraries(sdkOut); |
+ if (forVm) _copyExtraVmLibraries(sdkOut, locations); |
Uri platform = outDirUri.resolve('platform.dill.tmp'); |
Uri outline = outDirUri.resolve('outline.dill'); |
+ Uri librariesJson = outDirUri.resolve("lib/libraries.json"); |
Uri packages = Uri.base.resolveUri(new Uri.file(packagesFile)); |
+ |
+ await _writeSync( |
+ librariesJson.toFilePath(), JSON.encode({"libraries": locations})); |
+ |
if (forVm) { |
await fasta.compilePlatform(outDirUri, platform, |
packages: packages, outlineOutput: outline); |
@@ -131,11 +139,11 @@ Future _main(List<String> argv) async { |
// patched_dart2js_sdk to patched_sdk to ensure that file already exists. |
await fasta.writeDepsFile(Platform.script, |
Uri.base.resolveUri(new Uri.file("$outDir.d")), platformFinalLocation, |
+ sdk: outDirUri, |
packages: packages, |
platform: |
forVm ? platform : outDirUri.resolve('../patched_sdk/platform.dill'), |
- extraDependencies: deps, |
- verbose: false); |
+ extraDependencies: deps); |
await new File.fromUri(platform).rename(platformFinalLocation.toFilePath()); |
} |
@@ -183,7 +191,7 @@ String _updateLibraryMetadata(String sdkOut, String libContents) { |
/// Copy internal libraries that are developed under 'runtime/bin/' to the |
/// patched_sdk folder. |
-_copyExtraVmLibraries(String sdkOut) { |
+_copyExtraVmLibraries(String sdkOut, Map<String, String> locations) { |
var base = path.fromUri(Platform.script); |
var dartDir = path.dirname(path.dirname(path.absolute(base))); |
@@ -197,6 +205,7 @@ _copyExtraVmLibraries(String sdkOut) { |
var builtinLibraryIn = path.join(dartDir, 'runtime', 'bin', dartFile); |
var builtinLibraryOut = path.join(sdkOut, vmLibrary, '${vmLibrary}.dart'); |
_writeSync(builtinLibraryOut, readInputFile(builtinLibraryIn)); |
+ locations[vmLibrary] = path.join(vmLibrary, '${vmLibrary}.dart'); |
} |
for (var file in ['loader.dart', 'server.dart', 'vmservice_io.dart']) { |
@@ -204,15 +213,18 @@ _copyExtraVmLibraries(String sdkOut) { |
var libraryOut = path.join(sdkOut, 'vmservice_io', file); |
_writeSync(libraryOut, readInputFile(libraryIn)); |
} |
+ locations["vmservice_io"] = "vmservice_io/vmservice_io.dart"; |
} |
-_applyPatch( |
- SdkLibrary library, String sdkLibIn, String patchIn, String sdkOut) { |
+_applyPatch(SdkLibrary library, String sdkLibIn, String patchIn, String sdkOut, |
+ 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); |
var outPaths = <String>[libraryOut]; |
var libraryContents = libraryFile.readAsStringSync(); |