Unverified Commit a5af29e8 authored by Jonah Williams's avatar Jonah Williams Committed by GitHub

Revert "Lazily download artifacts (Part II) (#27735)" (#27895)

This reverts commit 76061c4f.
parent 76061c4f
...@@ -134,7 +134,4 @@ class _FuchsiaAttachCommand extends AttachCommand { ...@@ -134,7 +134,4 @@ class _FuchsiaAttachCommand extends AttachCommand {
Cache.flutterRoot = '$originalWorkingDirectory/third_party/dart-pkg/git/flutter'; Cache.flutterRoot = '$originalWorkingDirectory/third_party/dart-pkg/git/flutter';
return super.runCommand(); return super.runCommand();
} }
@override
Future<void> updateCache() async {}
} }
...@@ -84,6 +84,7 @@ BuildApp() { ...@@ -84,6 +84,7 @@ BuildApp() {
local framework_path="${FLUTTER_ROOT}/bin/cache/artifacts/engine/${artifact_variant}" local framework_path="${FLUTTER_ROOT}/bin/cache/artifacts/engine/${artifact_variant}"
AssertExists "${framework_path}"
AssertExists "${project_path}" AssertExists "${project_path}"
local derived_dir="${SOURCE_ROOT}/Flutter" local derived_dir="${SOURCE_ROOT}/Flutter"
...@@ -117,12 +118,6 @@ BuildApp() { ...@@ -117,12 +118,6 @@ BuildApp() {
flutter_podspec="${LOCAL_ENGINE}/Flutter.podspec" flutter_podspec="${LOCAL_ENGINE}/Flutter.podspec"
fi fi
# If the framework path does not exist, ensure that it is downloaded.
if [[ ! -e "$1" ]]; then
FLUTTER_ALREADY_LOCKED = "true"
RunCommand "${FLUTTER_ROOT}/bin/flutter" precache --suppress-analytics
fi
if [[ -e "${project_path}/.ios" ]]; then if [[ -e "${project_path}/.ios" ]]; then
RunCommand rm -rf -- "${derived_dir}/engine" RunCommand rm -rf -- "${derived_dir}/engine"
mkdir "${derived_dir}/engine" mkdir "${derived_dir}/engine"
......
...@@ -37,8 +37,7 @@ Future<List<int>> _attempt(Uri url, {bool onlyHeaders = false}) async { ...@@ -37,8 +37,7 @@ Future<List<int>> _attempt(Uri url, {bool onlyHeaders = false}) async {
printTrace('Downloading: $url'); printTrace('Downloading: $url');
HttpClient httpClient; HttpClient httpClient;
if (context[HttpClientFactory] != null) { if (context[HttpClientFactory] != null) {
final HttpClientFactory httpClientFactory = context[HttpClientFactory]; httpClient = (context[HttpClientFactory] as HttpClientFactory)(); // ignore: avoid_as
httpClient = httpClientFactory();
} else { } else {
httpClient = HttpClient(); httpClient = HttpClient();
} }
...@@ -65,9 +64,9 @@ Future<List<int>> _attempt(Uri url, {bool onlyHeaders = false}) async { ...@@ -65,9 +64,9 @@ Future<List<int>> _attempt(Uri url, {bool onlyHeaders = false}) async {
// If we're making a HEAD request, we're only checking to see if the URL is // If we're making a HEAD request, we're only checking to see if the URL is
// valid. // valid.
if (onlyHeaders) { if (onlyHeaders) {
return (response.statusCode == HttpStatus.ok) ? <int>[] : null; return (response.statusCode == 200) ? <int>[] : null;
} }
if (response.statusCode != HttpStatus.ok) { if (response.statusCode != 200) {
if (response.statusCode > 0 && response.statusCode < 500) { if (response.statusCode > 0 && response.statusCode < 500) {
throwToolExit( throwToolExit(
'Download failed.\n' 'Download failed.\n'
......
This diff is collapsed.
...@@ -4,8 +4,6 @@ ...@@ -4,8 +4,6 @@
import 'dart:async'; import 'dart:async';
import '../build_info.dart';
import '../globals.dart';
import '../runner/flutter_command.dart'; import '../runner/flutter_command.dart';
import 'build_aot.dart'; import 'build_aot.dart';
import 'build_apk.dart'; import 'build_apk.dart';
...@@ -38,19 +36,4 @@ abstract class BuildSubCommand extends FlutterCommand { ...@@ -38,19 +36,4 @@ abstract class BuildSubCommand extends FlutterCommand {
BuildSubCommand() { BuildSubCommand() {
requiresPubspecYaml(); requiresPubspecYaml();
} }
@override
Future<void> updateCache() async {
final BuildInfo buildInfo = getBuildInfo();
bool skipUnknown = false;
if (buildInfo.mode == null || buildInfo.targetPlatform == null) {
skipUnknown = true;
}
await cache.updateAll(
buildModes: buildInfo.mode != null ? <BuildMode>[buildInfo.mode] : <BuildMode>[],
targetPlatforms: buildInfo.targetPlatform != null ? <TargetPlatform>[buildInfo.targetPlatform] : <TargetPlatform>[],
clobber: false,
skipUnknown: skipUnknown,
);
}
} }
...@@ -5,8 +5,6 @@ ...@@ -5,8 +5,6 @@
import 'dart:async'; import 'dart:async';
import '../android/apk.dart'; import '../android/apk.dart';
import '../build_info.dart';
import '../globals.dart';
import '../project.dart'; import '../project.dart';
import '../runner/flutter_command.dart' show FlutterCommandResult; import '../runner/flutter_command.dart' show FlutterCommandResult;
import 'build.dart'; import 'build.dart';
...@@ -51,23 +49,4 @@ class BuildApkCommand extends BuildSubCommand { ...@@ -51,23 +49,4 @@ class BuildApkCommand extends BuildSubCommand {
); );
return null; return null;
} }
@override
Future<void> updateCache() async {
final BuildInfo buildInfo = getBuildInfo();
await cache.updateAll(
buildModes: <BuildMode>[
buildInfo.mode,
BuildMode.debug,
],
targetPlatforms: <TargetPlatform>[
TargetPlatform.android_arm,
TargetPlatform.android_arm64,
TargetPlatform.android_x64,
TargetPlatform.android_x86
],
clobber: false,
skipUnknown: true,
);
}
} }
...@@ -5,8 +5,6 @@ ...@@ -5,8 +5,6 @@
import 'dart:async'; import 'dart:async';
import '../android/app_bundle.dart'; import '../android/app_bundle.dart';
import '../build_info.dart';
import '../globals.dart';
import '../project.dart'; import '../project.dart';
import '../runner/flutter_command.dart' show FlutterCommandResult; import '../runner/flutter_command.dart' show FlutterCommandResult;
import 'build.dart'; import 'build.dart';
...@@ -49,20 +47,4 @@ class BuildAppBundleCommand extends BuildSubCommand { ...@@ -49,20 +47,4 @@ class BuildAppBundleCommand extends BuildSubCommand {
); );
return null; return null;
} }
@override
Future<void> updateCache() async {
final BuildInfo buildInfo = getBuildInfo();
await cache.updateAll(
buildModes: <BuildMode>[
buildInfo.mode,
],
targetPlatforms: <TargetPlatform>[
TargetPlatform.android_arm,
TargetPlatform.android_arm64,
],
clobber: false,
skipUnknown: true,
);
}
} }
...@@ -48,16 +48,10 @@ class BuildIOSCommand extends BuildSubCommand { ...@@ -48,16 +48,10 @@ class BuildIOSCommand extends BuildSubCommand {
@override @override
final String description = 'Build an iOS application bundle (Mac OS X host only).'; final String description = 'Build an iOS application bundle (Mac OS X host only).';
@override
Future<void> validateCommand() async {
defaultBuildMode = forSimulator ? BuildMode.debug : BuildMode.release;
return super.validateCommand();
}
bool get forSimulator => argResults['simulator'];
@override @override
Future<FlutterCommandResult> runCommand() async { Future<FlutterCommandResult> runCommand() async {
final bool forSimulator = argResults['simulator'];
defaultBuildMode = forSimulator ? BuildMode.debug : BuildMode.release;
if (getCurrentHostPlatform() != HostPlatform.darwin_x64) if (getCurrentHostPlatform() != HostPlatform.darwin_x64)
throwToolExit('Building for iOS is only supported on the Mac.'); throwToolExit('Building for iOS is only supported on the Mac.');
......
...@@ -211,10 +211,7 @@ class CreateCommand extends FlutterCommand { ...@@ -211,10 +211,7 @@ class CreateCommand extends FlutterCommand {
throwToolExit('Neither the --flutter-root command line flag nor the FLUTTER_ROOT environment ' throwToolExit('Neither the --flutter-root command line flag nor the FLUTTER_ROOT environment '
'variable was specified. Unable to find package:flutter.', exitCode: 2); 'variable was specified. Unable to find package:flutter.', exitCode: 2);
await Cache.instance.updateAll( await Cache.instance.updateAll();
skipUnknown: true,
clobber: false,
);
final String flutterRoot = fs.path.absolute(Cache.flutterRoot); final String flutterRoot = fs.path.absolute(Cache.flutterRoot);
......
...@@ -6,7 +6,6 @@ import 'dart:async'; ...@@ -6,7 +6,6 @@ import 'dart:async';
import '../base/common.dart'; import '../base/common.dart';
import '../doctor.dart'; import '../doctor.dart';
import '../globals.dart';
import '../runner/flutter_command.dart'; import '../runner/flutter_command.dart';
class DoctorCommand extends FlutterCommand { class DoctorCommand extends FlutterCommand {
...@@ -49,12 +48,4 @@ class DoctorCommand extends FlutterCommand { ...@@ -49,12 +48,4 @@ class DoctorCommand extends FlutterCommand {
final bool success = await doctor.diagnose(androidLicenses: argResults['android-licenses'], verbose: verbose); final bool success = await doctor.diagnose(androidLicenses: argResults['android-licenses'], verbose: verbose);
return FlutterCommandResult(success ? ExitStatus.success : ExitStatus.warning); return FlutterCommandResult(success ? ExitStatus.success : ExitStatus.warning);
} }
@override
Future<void> updateCache() async {
await cache.updateAll(
clobber: false,
skipUnknown: true,
);
}
} }
...@@ -223,6 +223,8 @@ class IdeConfigCommand extends FlutterCommand { ...@@ -223,6 +223,8 @@ class IdeConfigCommand extends FlutterCommand {
throwToolExit('Currently, the only supported IDE is IntelliJ\n$usage', exitCode: 2); throwToolExit('Currently, the only supported IDE is IntelliJ\n$usage', exitCode: 2);
} }
await Cache.instance.updateAll();
if (argResults['update-templates']) { if (argResults['update-templates']) {
_handleTemplateUpdate(); _handleTemplateUpdate();
return null; return null;
......
...@@ -4,7 +4,6 @@ ...@@ -4,7 +4,6 @@
import 'dart:async'; import 'dart:async';
import '../cache.dart';
import '../globals.dart'; import '../globals.dart';
import '../runner/flutter_command.dart'; import '../runner/flutter_command.dart';
...@@ -12,8 +11,6 @@ class PrecacheCommand extends FlutterCommand { ...@@ -12,8 +11,6 @@ class PrecacheCommand extends FlutterCommand {
PrecacheCommand() { PrecacheCommand() {
argParser.addFlag('all-platforms', abbr: 'a', negatable: false, argParser.addFlag('all-platforms', abbr: 'a', negatable: false,
help: 'Precache artifacts for all platforms.'); help: 'Precache artifacts for all platforms.');
argParser.addFlag('force', abbr: 'f', negatable: false,
help: 'Force download of new cached artifacts');
} }
@override @override
...@@ -27,18 +24,14 @@ class PrecacheCommand extends FlutterCommand { ...@@ -27,18 +24,14 @@ class PrecacheCommand extends FlutterCommand {
@override @override
Future<FlutterCommandResult> runCommand() async { Future<FlutterCommandResult> runCommand() async {
if (argResults['all-platforms']) { if (argResults['all-platforms'])
cache.includeAllPlatforms = true; cache.includeAllPlatforms = true;
}
final UpdateResult result = cache.isUpToDate(skipUnknown: false); if (cache.isUpToDate())
if (result.isUpToDate && !result.clobber && !argResults['force']) {
printStatus('Already up-to-date.'); printStatus('Already up-to-date.');
} else { else
await cache.updateAll( await cache.updateAll();
skipUnknown: false,
clobber: argResults['force'] || result.clobber, return null;
);
}
return const FlutterCommandResult(ExitStatus.success);
} }
} }
...@@ -61,34 +61,6 @@ abstract class RunCommandBase extends FlutterCommand { ...@@ -61,34 +61,6 @@ abstract class RunCommandBase extends FlutterCommand {
bool get traceStartup => argResults['trace-startup']; bool get traceStartup => argResults['trace-startup'];
String get route => argResults['route']; String get route => argResults['route'];
@override
bool get shouldUpdateCache => true;
@override
Future<void> updateCache() async {
final BuildInfo buildInfo = getBuildInfo();
final BuildMode buildMode = buildInfo.mode ?? BuildMode.debug;
final Set<TargetPlatform> targetPlatforms = Set<TargetPlatform>();
if (buildInfo.targetPlatform != null) {
targetPlatforms.add(buildInfo.targetPlatform);
}
await for (Device device in deviceManager.getAllConnectedDevices()) {
targetPlatforms.add(await device.targetPlatform);
}
if (targetPlatforms.contains(TargetPlatform.android_arm) || targetPlatforms.contains(TargetPlatform.android_arm64)) {
targetPlatforms.add(TargetPlatform.android_x64);
targetPlatforms.add(TargetPlatform.android_x86);
targetPlatforms.add(TargetPlatform.android_arm);
targetPlatforms.add(TargetPlatform.android_arm64);
}
await cache.updateAll(
buildModes: <BuildMode>[buildMode],
targetPlatforms: targetPlatforms.toList(),
clobber: false,
skipUnknown: false,
);
}
} }
class RunCommand extends RunCommandBase { class RunCommand extends RunCommandBase {
......
...@@ -323,43 +323,30 @@ abstract class FlutterCommand extends Command<void> { ...@@ -323,43 +323,30 @@ abstract class FlutterCommand extends Command<void> {
} }
BuildMode getBuildMode() { BuildMode getBuildMode() {
bool debug; final List<bool> modeFlags = <bool>[argResults['debug'], argResults['profile'], argResults['release']];
bool profile; if (modeFlags.where((bool flag) => flag).length > 1)
bool release;
if (argParser.options.containsKey('debug')) {
debug = argResults['debug'];
} else {
debug = _defaultBuildMode == BuildMode.debug;
}
if (argParser.options.containsKey('profile')) {
profile = argResults['profile'];
} else {
profile = _defaultBuildMode == BuildMode.profile;
}
if (argParser.options.containsKey('release')) {
release = argResults['release'];
} else {
release = _defaultBuildMode == BuildMode.release;
}
if (debug && profile || debug && release || release && profile) {
throw UsageException('Only one of --debug, --profile, or --release can be specified.', null); throw UsageException('Only one of --debug, --profile, or --release can be specified.', null);
}
final bool dynamicFlag = argParser.options.containsKey('dynamic') final bool dynamicFlag = argParser.options.containsKey('dynamic')
? argResults['dynamic'] ? argResults['dynamic']
: false; : false;
if (debug) { if (argResults['debug']) {
if (dynamicFlag) { if (dynamicFlag)
throw ToolExit('Error: --dynamic requires --release or --profile.'); throw ToolExit('Error: --dynamic requires --release or --profile.');
}
return BuildMode.debug; return BuildMode.debug;
} }
if (profile) { if (argResults['profile'])
return dynamicFlag ? BuildMode.dynamicProfile : BuildMode.profile; return dynamicFlag ? BuildMode.dynamicProfile : BuildMode.profile;
} if (argResults['release'])
if (release) {
return dynamicFlag ? BuildMode.dynamicRelease : BuildMode.release; return dynamicFlag ? BuildMode.dynamicRelease : BuildMode.release;
}
if (_defaultBuildMode == BuildMode.debug && dynamicFlag)
throw ToolExit('Error: --dynamic requires --release or --profile.');
if (_defaultBuildMode == BuildMode.release && dynamicFlag)
return BuildMode.dynamicRelease;
if (_defaultBuildMode == BuildMode.profile && dynamicFlag)
return BuildMode.dynamicProfile;
return _defaultBuildMode; return _defaultBuildMode;
} }
...@@ -397,7 +384,7 @@ abstract class FlutterCommand extends Command<void> { ...@@ -397,7 +384,7 @@ abstract class FlutterCommand extends Command<void> {
'--patch-number (${argResults['patch-number']}) must be an int.', null); '--patch-number (${argResults['patch-number']}) must be an int.', null);
} }
List<String> extraFrontEndOptions = String extraFrontEndOptions =
argParser.options.containsKey(FlutterOptions.kExtraFrontEndOptions) argParser.options.containsKey(FlutterOptions.kExtraFrontEndOptions)
? argResults[FlutterOptions.kExtraFrontEndOptions] ? argResults[FlutterOptions.kExtraFrontEndOptions]
: null; : null;
...@@ -406,9 +393,9 @@ abstract class FlutterCommand extends Command<void> { ...@@ -406,9 +393,9 @@ abstract class FlutterCommand extends Command<void> {
for (String expFlag in argResults[FlutterOptions.kEnableExperiment]) { for (String expFlag in argResults[FlutterOptions.kEnableExperiment]) {
final String flag = '--enable-experiment=' + expFlag; final String flag = '--enable-experiment=' + expFlag;
if (extraFrontEndOptions != null) { if (extraFrontEndOptions != null) {
extraFrontEndOptions.add(flag); extraFrontEndOptions += ',' + flag;
} else { } else {
extraFrontEndOptions = <String>[flag]; extraFrontEndOptions = flag;
} }
} }
} }
...@@ -434,9 +421,9 @@ abstract class FlutterCommand extends Command<void> { ...@@ -434,9 +421,9 @@ abstract class FlutterCommand extends Command<void> {
baselineDir: argParser.options.containsKey('baseline-dir') baselineDir: argParser.options.containsKey('baseline-dir')
? argResults['baseline-dir'] ? argResults['baseline-dir']
: null, : null,
extraFrontEndOptions: extraFrontEndOptions?.join(', '), extraFrontEndOptions: extraFrontEndOptions,
extraGenSnapshotOptions: argParser.options.containsKey(FlutterOptions.kExtraGenSnapshotOptions) extraGenSnapshotOptions: argParser.options.containsKey(FlutterOptions.kExtraGenSnapshotOptions)
? argResults[FlutterOptions.kExtraGenSnapshotOptions]?.join(', ') ? argResults[FlutterOptions.kExtraGenSnapshotOptions]
: null, : null,
buildSharedLibrary: argParser.options.containsKey('build-shared-library') buildSharedLibrary: argParser.options.containsKey('build-shared-library')
? argResults['build-shared-library'] ? argResults['build-shared-library']
...@@ -526,19 +513,6 @@ abstract class FlutterCommand extends Command<void> { ...@@ -526,19 +513,6 @@ abstract class FlutterCommand extends Command<void> {
); );
} }
/// A hook called to populate the cache with a particular target platform
/// or build mode.
///
/// If a command requires specific artifacts, it is it's responsibility to
/// request them here.
Future<void> updateCache() async {
// Only download the minimum set of binaries.
await cache.updateAll(
clobber: false,
skipUnknown: true,
);
}
/// Perform validation then call [runCommand] to execute the command. /// Perform validation then call [runCommand] to execute the command.
/// Return a [Future] that completes with an exit code /// Return a [Future] that completes with an exit code
/// indicating whether execution was successful. /// indicating whether execution was successful.
...@@ -549,11 +523,11 @@ abstract class FlutterCommand extends Command<void> { ...@@ -549,11 +523,11 @@ abstract class FlutterCommand extends Command<void> {
@mustCallSuper @mustCallSuper
Future<FlutterCommandResult> verifyThenRunCommand(String commandPath) async { Future<FlutterCommandResult> verifyThenRunCommand(String commandPath) async {
await validateCommand(); await validateCommand();
// Populate the cache. We call this before pub get below so that the sky_engine // Populate the cache. We call this before pub get below so that the sky_engine
// package is available in the flutter cache for pub to find. // package is available in the flutter cache for pub to find.
if (shouldUpdateCache) { if (shouldUpdateCache)
await updateCache(); await cache.updateAll();
}
if (shouldRunPub) { if (shouldRunPub) {
await pubGet(context: PubContext.getVerifyContext(name)); await pubGet(context: PubContext.getVerifyContext(name));
......
This diff is collapsed.
...@@ -42,12 +42,7 @@ void main() { ...@@ -42,12 +42,7 @@ void main() {
testUsingContext('honors shouldUpdateCache true', () async { testUsingContext('honors shouldUpdateCache true', () async {
final DummyFlutterCommand flutterCommand = DummyFlutterCommand(shouldUpdateCache: true); final DummyFlutterCommand flutterCommand = DummyFlutterCommand(shouldUpdateCache: true);
await flutterCommand.run(); await flutterCommand.run();
verify(cache.updateAll( verify(cache.updateAll()).called(1);
buildModes: anyNamed('buildModes'),
clobber: anyNamed('clobber'),
skipUnknown: anyNamed('skipUnknown'),
targetPlatforms: anyNamed('targetPlatforms')
)).called(1);
}, },
overrides: <Type, Generator>{ overrides: <Type, Generator>{
Cache: () => cache, Cache: () => cache,
......
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