Generate and use dep-file for --preview-dart-2 (#15077)

* Use depfile in --preview-dart-2 mode.

* Generate and use frontend_server.d to guard against reusing outdated dill files when frontend_server changes.
This commit is contained in:
Alexander Aprelev 2018-03-02 11:33:13 -08:00 committed by GitHub
parent bcdbed9628
commit 673c5485ae
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 20 additions and 1 deletions

View file

@ -438,9 +438,9 @@ abstract class BaseFlutterTask extends DefaultTask {
if (buildMode != "debug") {
args "--precompiled"
} else {
args "--depfile", "${intermediateDir}/snapshot_blob.bin.d"
if (!previewDart2) {
args "--snapshot", "${intermediateDir}/snapshot_blob.bin"
args "--depfile", "${intermediateDir}/snapshot_blob.bin.d"
}
}
args "--working-dir", "${intermediateDir}/flutter_assets"
@ -508,6 +508,12 @@ class FlutterTask extends BaseFlutterTask {
if (snapshotter != null) {
sources = sources.plus(snapshotter)
}
if (previewDart2) {
FileCollection frontendServer = readDependencies(project.file("${intermediateDir}/frontend_server.d"))
if (frontendServer != null) {
sources = sources.plus(frontendServer)
}
}
if (localEngineSrcPath != null) {
sources = sources.plus(project.files("$localEngineSrcPath/$localEngine"))
}

View file

@ -367,6 +367,7 @@ Future<String> _buildAotSnapshot(
sdkRoot: artifacts.getArtifactPath(Artifact.flutterPatchedSdkPath),
mainPath: mainPath,
outputFilePath: kApplicationKernelPath,
depFilePath: dependencies,
extraFrontEndOptions: extraFrontEndOptions,
linkPlatformKernelIn : true,
aot : true,
@ -376,6 +377,10 @@ Future<String> _buildAotSnapshot(
printError('Compiler terminated unexpectedly.');
return null;
}
// Write path to frontend_server, since things need to be re-generated when
// that changes.
await outputDir.childFile('frontend_server.d')
.writeAsString('frontend_server.d: ${artifacts.getArtifactPath(Artifact.frontendServerSnapshotForEngineDartSdk)}\n');
genSnapshotCmd.addAll(<String>[
'--reify-generic-functions',

View file

@ -59,6 +59,7 @@ Future<String> compile(
{String sdkRoot,
String mainPath,
String outputFilePath,
String depFilePath,
bool linkPlatformKernelIn: false,
bool aot: false,
bool trackWidgetCreation: false,
@ -96,6 +97,9 @@ Future<String> compile(
if (outputFilePath != null) {
command.addAll(<String>['--output-dill', outputFilePath]);
}
if (depFilePath != null) {
command.addAll(<String>['--depfile', depFilePath]);
}
if (extraFrontEndOptions != null)
command.addAll(extraFrontEndOptions);

View file

@ -80,11 +80,15 @@ Future<Null> build({
incrementalCompilerByteStorePath: fs.path.absolute(getIncrementalCompilerByteStoreDirectory()),
mainPath: fs.file(mainPath).absolute.path,
outputFilePath: applicationKernelFilePath,
depFilePath: depfilePath,
trackWidgetCreation: trackWidgetCreation,
);
if (kernelBinaryFilename == null) {
throwToolExit('Compiler terminated unexpectedly on $mainPath');
}
await fs.directory(getBuildDirectory()).childFile('frontend_server.d')
.writeAsString('frontend_server.d: ${artifacts.getArtifactPath(Artifact.frontendServerSnapshotForEngineDartSdk)}\n');
kernelContent = new DevFSFileContent(fs.file(kernelBinaryFilename));
}