From 39ddeb52b07752437b6dd45d3606000b7018cf89 Mon Sep 17 00:00:00 2001 From: Alexander Aprelev Date: Tue, 20 Feb 2018 10:02:00 -0800 Subject: [PATCH] Fix snapshot fingerprint check for --preview-dart-2. (#14775) * Fix snapshot fingerprint check for --preview-dart-2. * Remove printTraces --- .../lib/src/commands/build_aot.dart | 47 ++++++++++--------- 1 file changed, 24 insertions(+), 23 deletions(-) diff --git a/packages/flutter_tools/lib/src/commands/build_aot.dart b/packages/flutter_tools/lib/src/commands/build_aot.dart index e10679c5667..86dcc042aa8 100644 --- a/packages/flutter_tools/lib/src/commands/build_aot.dart +++ b/packages/flutter_tools/lib/src/commands/build_aot.dart @@ -335,6 +335,30 @@ Future _buildAotSnapshot( ]); } + final String genSnapshotInputFile = previewDart2 ? kApplicationKernelPath : mainPath; + final SnapshotType snapshotType = new SnapshotType(platform, buildMode); + final File fingerprintFile = fs.file('$dependencies.fingerprint'); + final List fingerprintFiles = [fingerprintFile, fs.file(dependencies)] + ..addAll(inputPaths.map(fs.file)) + ..addAll(outputPaths.map(fs.file)); + if (fingerprintFiles.every((File file) => file.existsSync())) { + try { + final String json = await fingerprintFile.readAsString(); + final Fingerprint oldFingerprint = new Fingerprint.fromJson(json); + final Set snapshotInputPaths = await readDepfile(dependencies) + ..add(genSnapshotInputFile) + ..addAll(outputPaths); + final Fingerprint newFingerprint = Snapshotter.createFingerprint(snapshotType, genSnapshotInputFile, snapshotInputPaths); + if (oldFingerprint == newFingerprint) { + printStatus('Skipping AOT snapshot build. Fingerprint match.'); + return outputPath; + } + } catch (e) { + // Log exception and continue, this step is a performance improvement only. + printTrace('Rebuilding snapshot due to fingerprint check error: $e'); + } + } + if (previewDart2) { mainPath = await compile( sdkRoot: artifacts.getArtifactPath(Artifact.flutterPatchedSdkPath), @@ -358,29 +382,6 @@ Future _buildAotSnapshot( genSnapshotCmd.add(mainPath); - final SnapshotType snapshotType = new SnapshotType(platform, buildMode); - final File fingerprintFile = fs.file('$dependencies.fingerprint'); - final List fingerprintFiles = [fingerprintFile, fs.file(dependencies)] - ..addAll(inputPaths.map(fs.file)) - ..addAll(outputPaths.map(fs.file)); - if (fingerprintFiles.every((File file) => file.existsSync())) { - try { - final String json = await fingerprintFile.readAsString(); - final Fingerprint oldFingerprint = new Fingerprint.fromJson(json); - final Set snapshotInputPaths = await readDepfile(dependencies) - ..add(mainPath) - ..addAll(outputPaths); - final Fingerprint newFingerprint = Snapshotter.createFingerprint(snapshotType, mainPath, snapshotInputPaths); - if (oldFingerprint == newFingerprint) { - printStatus('Skipping AOT snapshot build. Fingerprint match.'); - return outputPath; - } - } catch (e) { - // Log exception and continue, this step is a performance improvement only. - printTrace('Rebuilding snapshot due to fingerprint check error: $e'); - } - } - final RunResult results = await runAsync(genSnapshotCmd); if (results.exitCode != 0) { printError('Dart snapshot generator failed with exit code ${results.exitCode}');