Unverified Commit c0c6c60b authored by Alexander Aprelev's avatar Alexander Aprelev Committed by GitHub

Use already downloaded dart sdk for frontend_server. (#14702)

* Use already downloaded dart sdk for frontend_server.

This is follow-up to https://github.com/flutter/flutter/pull/14610

* Remove reference to engine dart-sdk from artifacts

* Remove unused imports

* WIP to switch back to solution where dart sdk is downloaded into bin/cache/dart-sdk, but it is 'flutter precache -a' that can download all dart sdks for other platforms under bin/cache/artifacts/engine/<platform>/dart-sdk

* Download all dart sdks when 'flutter precache -a'
parent 08db0d83
...@@ -24,7 +24,6 @@ enum Artifact { ...@@ -24,7 +24,6 @@ enum Artifact {
platformLibrariesJson, platformLibrariesJson,
flutterPatchedSdkPath, flutterPatchedSdkPath,
frontendServerSnapshotForEngineDartSdk, frontendServerSnapshotForEngineDartSdk,
engineDartSdkPath,
} }
String _artifactToFileName(Artifact artifact) { String _artifactToFileName(Artifact artifact) {
...@@ -52,8 +51,6 @@ String _artifactToFileName(Artifact artifact) { ...@@ -52,8 +51,6 @@ String _artifactToFileName(Artifact artifact) {
case Artifact.flutterPatchedSdkPath: case Artifact.flutterPatchedSdkPath:
assert(false, 'No filename for sdk path, should not be invoked'); assert(false, 'No filename for sdk path, should not be invoked');
return null; return null;
case Artifact.engineDartSdkPath:
return 'dart-sdk';
case Artifact.frontendServerSnapshotForEngineDartSdk: case Artifact.frontendServerSnapshotForEngineDartSdk:
return 'frontend_server.dart.snapshot'; return 'frontend_server.dart.snapshot';
} }
...@@ -164,7 +161,6 @@ class CachedArtifacts extends Artifacts { ...@@ -164,7 +161,6 @@ class CachedArtifacts extends Artifacts {
case Artifact.vmSnapshotData: case Artifact.vmSnapshotData:
case Artifact.isolateSnapshotData: case Artifact.isolateSnapshotData:
case Artifact.frontendServerSnapshotForEngineDartSdk: case Artifact.frontendServerSnapshotForEngineDartSdk:
case Artifact.engineDartSdkPath:
final String engineArtifactsPath = cache.getArtifactDirectory('engine').path; final String engineArtifactsPath = cache.getArtifactDirectory('engine').path;
final String platformDirName = getNameForTargetPlatform(platform); final String platformDirName = getNameForTargetPlatform(platform);
return fs.path.join(engineArtifactsPath, platformDirName, _artifactToFileName(artifact)); return fs.path.join(engineArtifactsPath, platformDirName, _artifactToFileName(artifact));
...@@ -248,8 +244,6 @@ class LocalEngineArtifacts extends Artifacts { ...@@ -248,8 +244,6 @@ class LocalEngineArtifacts extends Artifacts {
return _getFlutterPatchedSdkPath(); return _getFlutterPatchedSdkPath();
case Artifact.frontendServerSnapshotForEngineDartSdk: case Artifact.frontendServerSnapshotForEngineDartSdk:
return fs.path.join(_hostEngineOutPath, 'gen', _artifactToFileName(artifact)); return fs.path.join(_hostEngineOutPath, 'gen', _artifactToFileName(artifact));
case Artifact.engineDartSdkPath:
return fs.path.join(_hostEngineOutPath, 'dart-sdk');
} }
assert(false, 'Invalid artifact $artifact.'); assert(false, 'Invalid artifact $artifact.');
return null; return null;
......
...@@ -8,12 +8,10 @@ import 'package:meta/meta.dart'; ...@@ -8,12 +8,10 @@ import 'package:meta/meta.dart';
import 'base/context.dart'; import 'base/context.dart';
import 'base/file_system.dart'; import 'base/file_system.dart';
import 'base/io.dart';
import 'base/logger.dart'; import 'base/logger.dart';
import 'base/net.dart'; import 'base/net.dart';
import 'base/os.dart'; import 'base/os.dart';
import 'base/platform.dart'; import 'base/platform.dart';
import 'base/process_manager.dart';
import 'globals.dart'; import 'globals.dart';
/// A wrapper around the `bin/cache/` directory. /// A wrapper around the `bin/cache/` directory.
...@@ -118,32 +116,6 @@ class Cache { ...@@ -118,32 +116,6 @@ class Cache {
return _engineRevision; return _engineRevision;
} }
String _engineDartVersion;
String get engineDartVersion {
if (_engineDartVersion == null) {
final Directory engineDirectory = getArtifactDirectory('engine');
List<String> dartSdkBinParts;
if (platform.isLinux) {
dartSdkBinParts = <String>['linux-x64', 'dart-sdk', 'bin', 'dart'];
} else if (platform.isMacOS) {
dartSdkBinParts = <String>['darwin-x64', 'dart-sdk', 'bin', 'dart'];
} else if (platform.isWindows) {
dartSdkBinParts = <String>['windows-x64', 'dart-sdk', 'bin', 'dart.exe'];
} else {
// Unknown platform, we can't derive version.
return null;
}
final File dartSdkBin = engineDirectory.childFile(fs.path.joinAll(dartSdkBinParts));
final ProcessResult result = processManager.runSync(<String>[dartSdkBin.path, '--version']);
// https://github.com/dart-lang/sdk/issues/31481
// We can use the process utils directly when this is fixed instead of parsing stderr.
_engineDartVersion = result.stderr.trim().replaceAll('Dart VM version: ', '');
}
return _engineDartVersion;
}
static Cache get instance => context[Cache]; static Cache get instance => context[Cache];
/// Return the top-level directory in the cache; this is `bin/cache`. /// Return the top-level directory in the cache; this is `bin/cache`.
...@@ -364,7 +336,8 @@ class FlutterEngine extends CachedArtifact { ...@@ -364,7 +336,8 @@ class FlutterEngine extends CachedArtifact {
..addAll(_linuxBinaryDirs) ..addAll(_linuxBinaryDirs)
..addAll(_windowsBinaryDirs) ..addAll(_windowsBinaryDirs)
..addAll(_androidBinaryDirs) ..addAll(_androidBinaryDirs)
..addAll(_iosBinaryDirs); ..addAll(_iosBinaryDirs)
..addAll(_dartSdks);
else if (platform.isLinux) else if (platform.isLinux)
binaryDirs binaryDirs
..addAll(_linuxBinaryDirs) ..addAll(_linuxBinaryDirs)
...@@ -384,7 +357,6 @@ class FlutterEngine extends CachedArtifact { ...@@ -384,7 +357,6 @@ class FlutterEngine extends CachedArtifact {
List<List<String>> get _osxBinaryDirs => <List<String>>[ List<List<String>> get _osxBinaryDirs => <List<String>>[
<String>['darwin-x64', 'darwin-x64/artifacts.zip'], <String>['darwin-x64', 'darwin-x64/artifacts.zip'],
<String>['darwin-x64', 'dart-sdk-darwin-x64.zip'],
<String>['android-arm-profile/darwin-x64', 'android-arm-profile/darwin-x64.zip'], <String>['android-arm-profile/darwin-x64', 'android-arm-profile/darwin-x64.zip'],
<String>['android-arm-release/darwin-x64', 'android-arm-release/darwin-x64.zip'], <String>['android-arm-release/darwin-x64', 'android-arm-release/darwin-x64.zip'],
<String>['android-arm64-profile/darwin-x64', 'android-arm64-profile/darwin-x64.zip'], <String>['android-arm64-profile/darwin-x64', 'android-arm64-profile/darwin-x64.zip'],
...@@ -393,7 +365,6 @@ class FlutterEngine extends CachedArtifact { ...@@ -393,7 +365,6 @@ class FlutterEngine extends CachedArtifact {
List<List<String>> get _linuxBinaryDirs => <List<String>>[ List<List<String>> get _linuxBinaryDirs => <List<String>>[
<String>['linux-x64', 'linux-x64/artifacts.zip'], <String>['linux-x64', 'linux-x64/artifacts.zip'],
<String>['linux-x64', 'dart-sdk-linux-x64.zip'],
<String>['android-arm-profile/linux-x64', 'android-arm-profile/linux-x64.zip'], <String>['android-arm-profile/linux-x64', 'android-arm-profile/linux-x64.zip'],
<String>['android-arm-release/linux-x64', 'android-arm-release/linux-x64.zip'], <String>['android-arm-release/linux-x64', 'android-arm-release/linux-x64.zip'],
<String>['android-arm64-profile/linux-x64', 'android-arm64-profile/linux-x64.zip'], <String>['android-arm64-profile/linux-x64', 'android-arm64-profile/linux-x64.zip'],
...@@ -402,7 +373,6 @@ class FlutterEngine extends CachedArtifact { ...@@ -402,7 +373,6 @@ class FlutterEngine extends CachedArtifact {
List<List<String>> get _windowsBinaryDirs => <List<String>>[ List<List<String>> get _windowsBinaryDirs => <List<String>>[
<String>['windows-x64', 'windows-x64/artifacts.zip'], <String>['windows-x64', 'windows-x64/artifacts.zip'],
<String>['windows-x64', 'dart-sdk-windows-x64.zip'],
<String>['android-arm-profile/windows-x64', 'android-arm-profile/windows-x64.zip'], <String>['android-arm-profile/windows-x64', 'android-arm-profile/windows-x64.zip'],
<String>['android-arm-release/windows-x64', 'android-arm-release/windows-x64.zip'], <String>['android-arm-release/windows-x64', 'android-arm-release/windows-x64.zip'],
<String>['android-arm64-profile/windows-x64', 'android-arm64-profile/windows-x64.zip'], <String>['android-arm64-profile/windows-x64', 'android-arm64-profile/windows-x64.zip'],
...@@ -426,6 +396,12 @@ class FlutterEngine extends CachedArtifact { ...@@ -426,6 +396,12 @@ class FlutterEngine extends CachedArtifact {
<String>['ios-release', 'ios-release/artifacts.zip'], <String>['ios-release', 'ios-release/artifacts.zip'],
]; ];
List<List<String>> get _dartSdks => <List<String>> [
<String>['darwin-x64', 'dart-sdk-darwin-x64.zip'],
<String>['linux-x64', 'dart-sdk-linux-x64.zip'],
<String>['windows-x64', 'dart-sdk-windows-x64.zip'],
];
@override @override
bool isUpToDateInner() { bool isUpToDateInner() {
final Directory pkgDir = cache.getCacheDir('pkg'); final Directory pkgDir = cache.getCacheDir('pkg');
......
...@@ -8,22 +8,14 @@ import 'dart:convert'; ...@@ -8,22 +8,14 @@ import 'dart:convert';
import 'package:usage/uuid/uuid.dart'; import 'package:usage/uuid/uuid.dart';
import 'artifacts.dart'; import 'artifacts.dart';
import 'base/common.dart';
import 'base/file_system.dart'; import 'base/file_system.dart';
import 'base/io.dart'; import 'base/io.dart';
import 'base/process_manager.dart'; import 'base/process_manager.dart';
import 'dart/sdk.dart';
import 'globals.dart'; import 'globals.dart';
String _dartExecutable() { String _dartExecutable() {
final String engineDartSdkPath = artifacts.getArtifactPath( return fs.path.join(dartSdkPath, 'bin', 'dart');
Artifact.engineDartSdkPath
);
if (!fs.isDirectorySync(engineDartSdkPath)) {
throwToolExit('No dart sdk Flutter host engine build found at $engineDartSdkPath.\n'
'Note that corresponding host engine build is required even when targeting particular device platforms.',
exitCode: 2);
}
return fs.path.join(engineDartSdkPath, 'bin', 'dart');
} }
class _StdoutHandler { class _StdoutHandler {
......
...@@ -258,8 +258,7 @@ class _FlutterValidator extends DoctorValidator { ...@@ -258,8 +258,7 @@ class _FlutterValidator extends DoctorValidator {
'(${version.frameworkAge}), ${version.frameworkDate}' '(${version.frameworkAge}), ${version.frameworkDate}'
)); ));
messages.add(new ValidationMessage('Engine revision ${version.engineRevisionShort}')); messages.add(new ValidationMessage('Engine revision ${version.engineRevisionShort}'));
messages.add(new ValidationMessage('Tools Dart version ${version.dartSdkVersion}')); messages.add(new ValidationMessage('Dart version ${version.dartSdkVersion}'));
messages.add(new ValidationMessage('Engine Dart version ${version.engineDartVersion}'));
final String genSnapshotPath = final String genSnapshotPath =
artifacts.getArtifactPath(Artifact.genSnapshot); artifacts.getArtifactPath(Artifact.genSnapshot);
......
...@@ -83,7 +83,6 @@ class FlutterVersion { ...@@ -83,7 +83,6 @@ class FlutterVersion {
String get frameworkDate => frameworkCommitDate; String get frameworkDate => frameworkCommitDate;
String get dartSdkVersion => Cache.instance.dartSdkVersion.split(' ')[0]; String get dartSdkVersion => Cache.instance.dartSdkVersion.split(' ')[0];
String get engineDartVersion => Cache.instance.engineDartVersion.split(' ')[0];
String get engineRevision => Cache.instance.engineRevision; String get engineRevision => Cache.instance.engineRevision;
String get engineRevisionShort => _shortGitRevision(engineRevision); String get engineRevisionShort => _shortGitRevision(engineRevision);
......
...@@ -89,10 +89,6 @@ void main() { ...@@ -89,10 +89,6 @@ void main() {
artifacts.getArtifactPath(Artifact.flutterTester), artifacts.getArtifactPath(Artifact.flutterTester),
fs.path.join(tempDir.path, 'out', 'android_debug_unopt', 'flutter_tester') fs.path.join(tempDir.path, 'out', 'android_debug_unopt', 'flutter_tester')
); );
expect(
artifacts.getArtifactPath(Artifact.engineDartSdkPath),
fs.path.join(tempDir.path, 'out', 'host_debug_unopt', 'dart-sdk')
);
}, overrides: <Type, Generator> { }, overrides: <Type, Generator> {
Platform: () => new FakePlatform(operatingSystem: 'linux') Platform: () => new FakePlatform(operatingSystem: 'linux')
}); });
......
...@@ -61,12 +61,6 @@ void main() { ...@@ -61,12 +61,6 @@ void main() {
_expectVersionMessage(''); _expectVersionMessage('');
}); });
testFlutterVersion('prints non-empty version for engine Dart SDK', () async {
final FlutterVersion version = FlutterVersion.instance;
final String engineDartVersion = version.engineDartVersion;
expect(engineDartVersion.length, greaterThan(0));
});
testFlutterVersion('does not ping server when version stamp is up-to-date', () async { testFlutterVersion('does not ping server when version stamp is up-to-date', () async {
final FlutterVersion version = FlutterVersion.instance; final FlutterVersion version = FlutterVersion.instance;
......
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