Commit f3f2747a authored by Michael Goderbauer's avatar Michael Goderbauer Committed by GitHub

Unify engineDirs and toolsDir in Cache of Flutter Tools. (#7644)

The zip files downloaded from cloud storage are not clearly separated
into engine artifacts and tools anyways.

Also, because of this unclear separation, we were downloading
`linux-x64/artifacts.zip` twice before.
parent 7c40446a
...@@ -254,51 +254,55 @@ class FlutterEngine { ...@@ -254,51 +254,55 @@ class FlutterEngine {
List<String> _getPackageDirs() => const <String>[kSkyEngine]; List<String> _getPackageDirs() => const <String>[kSkyEngine];
List<String> _getEngineDirs() { // Return a list of (cache directory path, download URL path) tuples.
List<String> dirs = <String>[ List<List<String>> _getBinaryDirs() {
'android-arm', List<List<String>> binaryDirs = <List<String>>[];
'android-arm-profile',
'android-arm-release',
'android-x64',
'android-x86',
];
if (cache.includeAllPlatforms) if (cache.includeAllPlatforms)
dirs.addAll(<String>['ios', 'ios-profile', 'ios-release', 'linux-x64']); binaryDirs
else if (platform.isMacOS) ..addAll(_osxBinaryDirs)
dirs.addAll(<String>['ios', 'ios-profile', 'ios-release']); ..addAll(_linuxBinaryDirs)
..addAll(_androidBinaryDirs)
..addAll(_iosBinaryDirs);
else if (platform.isLinux) else if (platform.isLinux)
dirs.add('linux-x64'); binaryDirs
..addAll(_linuxBinaryDirs)
return dirs; ..addAll(_androidBinaryDirs);
}
// Return a list of (cache directory path, download URL path) tuples.
List<List<String>> _getToolsDirs() {
if (cache.includeAllPlatforms)
return <List<String>>[]
..addAll(_osxToolsDirs)
..addAll(_linuxToolsDirs);
else if (platform.isMacOS) else if (platform.isMacOS)
return _osxToolsDirs; binaryDirs
else if (platform.isLinux) ..addAll(_osxBinaryDirs)
return _linuxToolsDirs; ..addAll(_androidBinaryDirs)
else ..addAll(_iosBinaryDirs);
return <List<String>>[];
return binaryDirs;
} }
List<List<String>> get _osxToolsDirs => <List<String>>[ List<List<String>> get _osxBinaryDirs => <List<String>>[
<String>['darwin-x64', 'darwin-x64/artifacts.zip'], <String>['darwin-x64', 'darwin-x64/artifacts.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'],
]; ];
List<List<String>> get _linuxToolsDirs => <List<String>>[ List<List<String>> get _linuxBinaryDirs => <List<String>>[
<String>['linux-x64', 'linux-x64/artifacts.zip'], <String>['linux-x64', 'linux-x64/artifacts.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'],
]; ];
List<List<String>> get _androidBinaryDirs => <List<String>>[
<String>['android-x86', 'android-x86/artifacts.zip'],
<String>['android-x64', 'android-x64/artifacts.zip'],
<String>['android-arm', 'android-arm/artifacts.zip'],
<String>['android-arm-profile', 'android-arm-profile/artifacts.zip'],
<String>['android-arm-release', 'android-arm-release/artifacts.zip'],
];
List<List<String>> get _iosBinaryDirs => <List<String>>[
<String>['ios', 'ios/artifacts.zip'],
<String>['ios-profile', 'ios-profile/artifacts.zip'],
<String>['ios-release', 'ios-release/artifacts.zip'],
];
bool isUpToDate() { bool isUpToDate() {
Directory pkgDir = cache.getCacheDir('pkg'); Directory pkgDir = cache.getCacheDir('pkg');
for (String pkgName in _getPackageDirs()) { for (String pkgName in _getPackageDirs()) {
...@@ -317,13 +321,7 @@ class FlutterEngine { ...@@ -317,13 +321,7 @@ class FlutterEngine {
return false; return false;
Directory engineDir = cache.getArtifactDirectory(kName); Directory engineDir = cache.getArtifactDirectory(kName);
for (String dirName in _getEngineDirs()) { for (List<String> toolsDir in _getBinaryDirs()) {
Directory dir = fs.directory(path.join(engineDir.path, dirName));
if (!dir.existsSync())
return false;
}
for (List<String> toolsDir in _getToolsDirs()) {
Directory dir = fs.directory(path.join(engineDir.path, toolsDir[0])); Directory dir = fs.directory(path.join(engineDir.path, toolsDir[0]));
if (!dir.existsSync()) if (!dir.existsSync())
return false; return false;
...@@ -366,10 +364,14 @@ class FlutterEngine { ...@@ -366,10 +364,14 @@ class FlutterEngine {
if (engineDir.existsSync()) if (engineDir.existsSync())
engineDir.deleteSync(recursive: true); engineDir.deleteSync(recursive: true);
for (String dirName in _getEngineDirs()) { for (List<String> toolsDir in _getBinaryDirs()) {
Directory dir = fs.directory(path.join(engineDir.path, dirName)); String cacheDir = toolsDir[0];
await _downloadItem('Downloading engine artifacts $dirName...', String urlPath = toolsDir[1];
url + dirName + '/artifacts.zip', dir); Directory dir = fs.directory(path.join(engineDir.path, cacheDir));
await _downloadItem('Downloading $cacheDir tools...', url + urlPath, dir);
_makeFilesExecutable(dir);
File frameworkZip = fs.file(path.join(dir.path, 'Flutter.framework.zip')); File frameworkZip = fs.file(path.join(dir.path, 'Flutter.framework.zip'));
if (frameworkZip.existsSync()) { if (frameworkZip.existsSync()) {
Directory framework = fs.directory(path.join(dir.path, 'Flutter.framework')); Directory framework = fs.directory(path.join(dir.path, 'Flutter.framework'));
...@@ -378,14 +380,6 @@ class FlutterEngine { ...@@ -378,14 +380,6 @@ class FlutterEngine {
} }
} }
for (List<String> toolsDir in _getToolsDirs()) {
String cacheDir = toolsDir[0];
String urlPath = toolsDir[1];
Directory dir = fs.directory(path.join(engineDir.path, cacheDir));
await _downloadItem('Downloading $cacheDir tools...', url + urlPath, dir);
_makeFilesExecutable(dir);
}
cache.setStampFor(kName, cache.getVersionFor(kName)); cache.setStampFor(kName, cache.getVersionFor(kName));
} }
......
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