Unverified Commit 43a106e9 authored by Chris Bracken's avatar Chris Bracken Committed by GitHub

Eliminate snapshot/depfile options to build bundle (#21507)

The --snapshot argument was only necessary in Dart 1. The --depfile
argument was only used in Dart 2 mode to pass to the kernel compiler,
but was inconsistent with the 'build aot' command, where the depfile was
always set to build/kernel_compile.d.

This patch updates 'build bundle' to emit the depfile to a location
consistent with the 'build aot' command; since it's not intended to be
user-configurable and flutter.gradle hardcodes the location to
build/kernel_compile.d either way, this patch also eliminates the
ability to configure the filename altogether.
parent a2acc6a3
...@@ -176,9 +176,7 @@ BuildApp() { ...@@ -176,9 +176,7 @@ BuildApp() {
build bundle \ build bundle \
--target-platform=ios \ --target-platform=ios \
--target="${target_path}" \ --target="${target_path}" \
--snapshot="${build_dir}/snapshot_blob.bin" \
--${build_mode} \ --${build_mode} \
--depfile="${build_dir}/snapshot_blob.bin.d" \
--asset-dir="${derived_dir}/flutter_assets" \ --asset-dir="${derived_dir}/flutter_assets" \
${precompilation_flag} \ ${precompilation_flag} \
${local_engine_flag} \ ${local_engine_flag} \
......
...@@ -409,11 +409,6 @@ abstract class BaseFlutterTask extends DefaultTask { ...@@ -409,11 +409,6 @@ abstract class BaseFlutterTask extends DefaultTask {
// first stage of AOT build in this mode, and it includes all the Dart // first stage of AOT build in this mode, and it includes all the Dart
// sources. // sources.
depfiles += project.files("${intermediateDir}/kernel_compile.d") depfiles += project.files("${intermediateDir}/kernel_compile.d")
// Include Core JIT kernel compiler depfile, since kernel compile is
// the first stage of JIT builds in this mode, and it includes all the
// Dart sources.
depfiles += project.files("${intermediateDir}/snapshot_blob.bin.d")
return depfiles return depfiles
} }
...@@ -495,8 +490,6 @@ abstract class BaseFlutterTask extends DefaultTask { ...@@ -495,8 +490,6 @@ abstract class BaseFlutterTask extends DefaultTask {
} }
if (buildMode == "release" || buildMode == "profile") { if (buildMode == "release" || buildMode == "profile") {
args "--precompiled" args "--precompiled"
} else {
args "--depfile", "${intermediateDir}/snapshot_blob.bin.d"
} }
args "--asset-dir", "${intermediateDir}/flutter_assets" args "--asset-dir", "${intermediateDir}/flutter_assets"
if (buildMode == "debug") { if (buildMode == "debug") {
......
...@@ -311,12 +311,10 @@ class AOTSnapshotter { ...@@ -311,12 +311,10 @@ class AOTSnapshotter {
if ((extraFrontEndOptions != null) && extraFrontEndOptions.isNotEmpty) if ((extraFrontEndOptions != null) && extraFrontEndOptions.isNotEmpty)
printTrace('Extra front-end options: $extraFrontEndOptions'); printTrace('Extra front-end options: $extraFrontEndOptions');
final String depfilePath = fs.path.join(outputPath, 'kernel_compile.d');
final CompilerOutput compilerOutput = await kernelCompiler.compile( final CompilerOutput compilerOutput = await kernelCompiler.compile(
sdkRoot: artifacts.getArtifactPath(Artifact.flutterPatchedSdkPath), sdkRoot: artifacts.getArtifactPath(Artifact.flutterPatchedSdkPath),
mainPath: mainPath, mainPath: mainPath,
outputFilePath: fs.path.join(outputPath, 'app.dill'), outputFilePath: fs.path.join(outputPath, 'app.dill'),
depFilePath: depfilePath,
extraFrontEndOptions: extraFrontEndOptions, extraFrontEndOptions: extraFrontEndOptions,
linkPlatformKernelIn: true, linkPlatformKernelIn: true,
aot: true, aot: true,
......
...@@ -18,8 +18,6 @@ import 'globals.dart'; ...@@ -18,8 +18,6 @@ import 'globals.dart';
const String defaultMainPath = 'lib/main.dart'; const String defaultMainPath = 'lib/main.dart';
const String defaultAssetBasePath = '.'; const String defaultAssetBasePath = '.';
const String defaultManifestPath = 'pubspec.yaml'; const String defaultManifestPath = 'pubspec.yaml';
String get defaultSnapshotPath => fs.path.join(getBuildDirectory(), 'snapshot_blob.bin');
String get defaultDepfilePath => fs.path.join(getBuildDirectory(), 'snapshot_blob.bin.d');
String get defaultApplicationKernelPath => fs.path.join(getBuildDirectory(), 'app.dill'); String get defaultApplicationKernelPath => fs.path.join(getBuildDirectory(), 'app.dill');
const String defaultPrivateKeyPath = 'privatekey.der'; const String defaultPrivateKeyPath = 'privatekey.der';
...@@ -36,9 +34,7 @@ Future<void> build({ ...@@ -36,9 +34,7 @@ Future<void> build({
BuildMode buildMode, BuildMode buildMode,
String mainPath = defaultMainPath, String mainPath = defaultMainPath,
String manifestPath = defaultManifestPath, String manifestPath = defaultManifestPath,
String snapshotPath,
String applicationKernelFilePath, String applicationKernelFilePath,
String depfilePath,
String privateKeyPath = defaultPrivateKeyPath, String privateKeyPath = defaultPrivateKeyPath,
String assetDirPath, String assetDirPath,
String packagesPath, String packagesPath,
...@@ -51,8 +47,6 @@ Future<void> build({ ...@@ -51,8 +47,6 @@ Future<void> build({
List<String> fileSystemRoots, List<String> fileSystemRoots,
String fileSystemScheme, String fileSystemScheme,
}) async { }) async {
snapshotPath ??= defaultSnapshotPath;
depfilePath ??= defaultDepfilePath;
assetDirPath ??= getAssetBuildDirectory(); assetDirPath ??= getAssetBuildDirectory();
packagesPath ??= fs.path.absolute(PackageMap.globalPackagesPath); packagesPath ??= fs.path.absolute(PackageMap.globalPackagesPath);
applicationKernelFilePath ??= defaultApplicationKernelPath; applicationKernelFilePath ??= defaultApplicationKernelPath;
...@@ -68,7 +62,6 @@ Future<void> build({ ...@@ -68,7 +62,6 @@ Future<void> build({
fs.path.absolute(getIncrementalCompilerByteStoreDirectory()), fs.path.absolute(getIncrementalCompilerByteStoreDirectory()),
mainPath: fs.file(mainPath).absolute.path, mainPath: fs.file(mainPath).absolute.path,
outputFilePath: applicationKernelFilePath, outputFilePath: applicationKernelFilePath,
depFilePath: depfilePath,
trackWidgetCreation: trackWidgetCreation, trackWidgetCreation: trackWidgetCreation,
extraFrontEndOptions: extraFrontEndOptions, extraFrontEndOptions: extraFrontEndOptions,
fileSystemRoots: fileSystemRoots, fileSystemRoots: fileSystemRoots,
......
...@@ -22,8 +22,6 @@ class BuildBundleCommand extends BuildSubCommand { ...@@ -22,8 +22,6 @@ class BuildBundleCommand extends BuildSubCommand {
..addOption('asset-base', help: 'Ignored. Will be removed.', hide: !verboseHelp) ..addOption('asset-base', help: 'Ignored. Will be removed.', hide: !verboseHelp)
..addOption('manifest', defaultsTo: defaultManifestPath) ..addOption('manifest', defaultsTo: defaultManifestPath)
..addOption('private-key', defaultsTo: defaultPrivateKeyPath) ..addOption('private-key', defaultsTo: defaultPrivateKeyPath)
..addOption('snapshot', defaultsTo: defaultSnapshotPath)
..addOption('depfile', defaultsTo: defaultDepfilePath)
..addOption('kernel-file', defaultsTo: defaultApplicationKernelPath) ..addOption('kernel-file', defaultsTo: defaultApplicationKernelPath)
..addOption('target-platform', ..addOption('target-platform',
defaultsTo: 'android-arm', defaultsTo: 'android-arm',
...@@ -85,9 +83,7 @@ class BuildBundleCommand extends BuildSubCommand { ...@@ -85,9 +83,7 @@ class BuildBundleCommand extends BuildSubCommand {
buildMode: buildMode, buildMode: buildMode,
mainPath: targetFile, mainPath: targetFile,
manifestPath: argResults['manifest'], manifestPath: argResults['manifest'],
snapshotPath: argResults['snapshot'],
applicationKernelFilePath: argResults['kernel-file'], applicationKernelFilePath: argResults['kernel-file'],
depfilePath: argResults['depfile'],
privateKeyPath: argResults['private-key'], privateKeyPath: argResults['private-key'],
assetDirPath: argResults['asset-dir'], assetDirPath: argResults['asset-dir'],
precompiledSnapshot: argResults['precompiled'], precompiledSnapshot: argResults['precompiled'],
......
...@@ -10,9 +10,11 @@ import 'package:usage/uuid/uuid.dart'; ...@@ -10,9 +10,11 @@ import 'package:usage/uuid/uuid.dart';
import 'artifacts.dart'; import 'artifacts.dart';
import 'base/common.dart'; import 'base/common.dart';
import 'base/context.dart'; import 'base/context.dart';
import 'base/file_system.dart';
import 'base/fingerprint.dart'; import 'base/fingerprint.dart';
import 'base/io.dart'; import 'base/io.dart';
import 'base/process_manager.dart'; import 'base/process_manager.dart';
import 'build_info.dart';
import 'globals.dart'; import 'globals.dart';
KernelCompiler get kernelCompiler => context[KernelCompiler]; KernelCompiler get kernelCompiler => context[KernelCompiler];
...@@ -74,7 +76,6 @@ class KernelCompiler { ...@@ -74,7 +76,6 @@ class KernelCompiler {
String sdkRoot, String sdkRoot,
String mainPath, String mainPath,
String outputFilePath, String outputFilePath,
String depFilePath,
bool linkPlatformKernelIn = false, bool linkPlatformKernelIn = false,
bool aot = false, bool aot = false,
List<String> entryPointsJsonFiles, List<String> entryPointsJsonFiles,
...@@ -93,24 +94,22 @@ class KernelCompiler { ...@@ -93,24 +94,22 @@ class KernelCompiler {
// TODO(cbracken): eliminate pathFilter. // TODO(cbracken): eliminate pathFilter.
// Currently the compiler emits buildbot paths for the core libs in the // Currently the compiler emits buildbot paths for the core libs in the
// depfile. None of these are available on the local host. // depfile. None of these are available on the local host.
Fingerprinter fingerprinter; final String depfilePath = fs.path.join(getBuildDirectory(), 'kernel_compile.d');
if (depFilePath != null) { final Fingerprinter fingerprinter = new Fingerprinter(
fingerprinter = new Fingerprinter( fingerprintPath: '$depfilePath.fingerprint',
fingerprintPath: '$depFilePath.fingerprint', paths: <String>[mainPath],
paths: <String>[mainPath], properties: <String, String>{
properties: <String, String>{ 'entryPoint': mainPath,
'entryPoint': mainPath, 'trackWidgetCreation': trackWidgetCreation.toString(),
'trackWidgetCreation': trackWidgetCreation.toString(), 'linkPlatformKernelIn': linkPlatformKernelIn.toString(),
'linkPlatformKernelIn': linkPlatformKernelIn.toString(), },
}, depfilePaths: <String>[depfilePath],
depfilePaths: <String>[depFilePath], pathFilter: (String path) => !path.startsWith('/b/build/slave/'),
pathFilter: (String path) => !path.startsWith('/b/build/slave/'), );
);
if (await fingerprinter.doesFingerprintMatch()) {
if (await fingerprinter.doesFingerprintMatch()) { printTrace('Skipping kernel compilation. Fingerprint match.');
printTrace('Skipping kernel compilation. Fingerprint match.'); return new CompilerOutput(outputFilePath, 0);
return new CompilerOutput(outputFilePath, 0);
}
} }
// This is a URI, not a file path, so the forward slash is correct even on Windows. // This is a URI, not a file path, so the forward slash is correct even on Windows.
...@@ -153,8 +152,8 @@ class KernelCompiler { ...@@ -153,8 +152,8 @@ class KernelCompiler {
if (outputFilePath != null) { if (outputFilePath != null) {
command.addAll(<String>['--output-dill', outputFilePath]); command.addAll(<String>['--output-dill', outputFilePath]);
} }
if (depFilePath != null && (fileSystemRoots == null || fileSystemRoots.isEmpty)) { if (fileSystemRoots == null || fileSystemRoots.isEmpty) {
command.addAll(<String>['--depfile', depFilePath]); command.addAll(<String>['--depfile', depfilePath]);
} }
if (fileSystemRoots != null) { if (fileSystemRoots != null) {
for (String root in fileSystemRoots) { for (String root in fileSystemRoots) {
...@@ -186,9 +185,7 @@ class KernelCompiler { ...@@ -186,9 +185,7 @@ class KernelCompiler {
.listen(_stdoutHandler.handler); .listen(_stdoutHandler.handler);
final int exitCode = await server.exitCode; final int exitCode = await server.exitCode;
if (exitCode == 0) { if (exitCode == 0) {
if (fingerprinter != null) { await fingerprinter.writeFingerprint();
await fingerprinter.writeFingerprint();
}
return _stdoutHandler.compilerOutput.future; return _stdoutHandler.compilerOutput.future;
} }
return null; return null;
......
...@@ -169,7 +169,6 @@ Hello! ...@@ -169,7 +169,6 @@ Hello!
incrementalCompilerByteStorePath: anyNamed('incrementalCompilerByteStorePath'), incrementalCompilerByteStorePath: anyNamed('incrementalCompilerByteStorePath'),
mainPath: anyNamed('mainPath'), mainPath: anyNamed('mainPath'),
outputFilePath: anyNamed('outputFilePath'), outputFilePath: anyNamed('outputFilePath'),
depFilePath: anyNamed('depFilePath'),
trackWidgetCreation: anyNamed('trackWidgetCreation'), trackWidgetCreation: anyNamed('trackWidgetCreation'),
extraFrontEndOptions: anyNamed('extraFrontEndOptions'), extraFrontEndOptions: anyNamed('extraFrontEndOptions'),
fileSystemRoots: anyNamed('fileSystemRoots'), fileSystemRoots: anyNamed('fileSystemRoots'),
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment