mirror of
https://github.com/dart-lang/sdk
synced 2024-09-16 00:58:29 +00:00
[android] Switch to Flutter Android tooling
Flutter uses CIPD packages that are more reliable. Change-Id: Ic47b2fd9805709a3175376270df0fe52b82f16ad Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/169341 Commit-Queue: Alexander Thomas <athom@google.com> Reviewed-by: Daco Harkes <dacoharkes@google.com> Reviewed-by: Martin Kustermann <kustermann@google.com>
This commit is contained in:
parent
ed009afc4c
commit
e38d42fc7d
63
DEPS
63
DEPS
|
@ -51,6 +51,9 @@ vars = {
|
||||||
"benchmarks_internal_rev": "354c978979c57e4a76f62e22cf644ed0804f4421",
|
"benchmarks_internal_rev": "354c978979c57e4a76f62e22cf644ed0804f4421",
|
||||||
"checkout_benchmarks_internal": False,
|
"checkout_benchmarks_internal": False,
|
||||||
|
|
||||||
|
# Checkout Android dependencies only on Mac and Linux.
|
||||||
|
"download_android_deps": 'host_os == "mac" or host_os == "linux"',
|
||||||
|
|
||||||
# As Flutter does, we use Fuchsia's GN and Clang toolchain. These revision
|
# As Flutter does, we use Fuchsia's GN and Clang toolchain. These revision
|
||||||
# should be kept up to date with the revisions pulled by the Flutter engine.
|
# should be kept up to date with the revisions pulled by the Flutter engine.
|
||||||
# The list of revisions for these tools comes from Fuchsia, here:
|
# The list of revisions for these tools comes from Fuchsia, here:
|
||||||
|
@ -491,6 +494,61 @@ deps = {
|
||||||
"dep_type": "cipd",
|
"dep_type": "cipd",
|
||||||
},
|
},
|
||||||
|
|
||||||
|
Var("dart_root") + "/third_party/android_tools/ndk": {
|
||||||
|
"packages": [
|
||||||
|
{
|
||||||
|
"package": "flutter/android/ndk/${{platform}}",
|
||||||
|
"version": "version:r21.0.6113669"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"condition": "download_android_deps",
|
||||||
|
"dep_type": "cipd",
|
||||||
|
},
|
||||||
|
|
||||||
|
Var("dart_root") + "/third_party/android_tools/sdk/build-tools": {
|
||||||
|
"packages": [
|
||||||
|
{
|
||||||
|
"package": "flutter/android/sdk/build-tools/${{platform}}",
|
||||||
|
"version": "version:30.0.1"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"condition": "download_android_deps",
|
||||||
|
"dep_type": "cipd",
|
||||||
|
},
|
||||||
|
|
||||||
|
Var("dart_root") + "/third_party/android_tools/sdk/platform-tools": {
|
||||||
|
"packages": [
|
||||||
|
{
|
||||||
|
"package": "flutter/android/sdk/platform-tools/${{platform}}",
|
||||||
|
"version": "version:29.0.2"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"condition": "download_android_deps",
|
||||||
|
"dep_type": "cipd",
|
||||||
|
},
|
||||||
|
|
||||||
|
Var("dart_root") + "/third_party/android_tools/sdk/platforms": {
|
||||||
|
"packages": [
|
||||||
|
{
|
||||||
|
"package": "flutter/android/sdk/platforms",
|
||||||
|
"version": "version:30r3"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"condition": "download_android_deps",
|
||||||
|
"dep_type": "cipd",
|
||||||
|
},
|
||||||
|
|
||||||
|
Var("dart_root") + "/third_party/android_tools/sdk/tools": {
|
||||||
|
"packages": [
|
||||||
|
{
|
||||||
|
"package": "flutter/android/sdk/tools/${{platform}}",
|
||||||
|
"version": "version:26.1.1"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"condition": "download_android_deps",
|
||||||
|
"dep_type": "cipd",
|
||||||
|
},
|
||||||
|
|
||||||
Var("dart_root") + "/buildtools/" + Var("host_os") + "-" + Var("host_cpu") + "/rust": {
|
Var("dart_root") + "/buildtools/" + Var("host_os") + "-" + Var("host_cpu") + "/rust": {
|
||||||
"packages": [
|
"packages": [
|
||||||
{
|
{
|
||||||
|
@ -639,11 +697,6 @@ hooks = [
|
||||||
'action': ['python', 'sdk/build/linux/sysroot_scripts/install-sysroot.py',
|
'action': ['python', 'sdk/build/linux/sysroot_scripts/install-sysroot.py',
|
||||||
'--arch', 'arm64'],
|
'--arch', 'arm64'],
|
||||||
},
|
},
|
||||||
{
|
|
||||||
'name': 'download_android_tools',
|
|
||||||
'pattern': '.',
|
|
||||||
'action': ['python', 'sdk/tools/android/download_android_tools.py'],
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
'name': 'buildtools',
|
'name': 'buildtools',
|
||||||
'pattern': '.',
|
'pattern': '.',
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
e626c47cb82a7439b0eda03ac6e0e9e1e41c6093
|
|
|
@ -1 +0,0 @@
|
||||||
0d320c50b0ed188c7e1182388e2beb623a1d307d
|
|
|
@ -1 +0,0 @@
|
||||||
e8b6ecb5d15c4c4018a62b52aabc13e41b17df8f
|
|
|
@ -1 +0,0 @@
|
||||||
fa5ea0ca1e0c7c2e40914f3202c7545de4dbca9c
|
|
|
@ -1,107 +0,0 @@
|
||||||
#!/usr/bin/env python
|
|
||||||
# Copyright 2017 The Dart project authors. All rights reserved.
|
|
||||||
# Use of this source code is governed by a BSD-style license that can be
|
|
||||||
# found in the LICENSE file.
|
|
||||||
|
|
||||||
# Downloads trimmed-down Android Tools from Google Cloud Storage and extracts
|
|
||||||
# them to INSTALL_DIR, updating INSTALL_DIR/VERSION_* stamp files with current
|
|
||||||
# version. Does nothing if INSTALL_DIR/VERSION_* are already up to date.
|
|
||||||
|
|
||||||
import os
|
|
||||||
import shutil
|
|
||||||
import subprocess
|
|
||||||
import sys
|
|
||||||
import tarfile
|
|
||||||
|
|
||||||
# Path constants. (All of these should be absolute paths.)
|
|
||||||
THIS_DIR = os.path.abspath(os.path.dirname(__file__))
|
|
||||||
DART_ROOT = os.path.abspath(os.path.join(THIS_DIR, '..', '..'))
|
|
||||||
# Should be the same as in upload.py.
|
|
||||||
INSTALL_DIR = os.path.join(DART_ROOT, 'third_party', 'android_tools')
|
|
||||||
|
|
||||||
sys.path.insert(0, os.path.join(DART_ROOT, 'tools'))
|
|
||||||
import find_depot_tools
|
|
||||||
|
|
||||||
DEPOT_PATH = find_depot_tools.add_depot_tools_to_path()
|
|
||||||
GSUTIL_PATH = os.path.join(DEPOT_PATH, 'gsutil.py')
|
|
||||||
|
|
||||||
|
|
||||||
def RunCommand(command):
|
|
||||||
"""Run command and return success (True) or failure."""
|
|
||||||
|
|
||||||
print 'Running %s' % (str(command))
|
|
||||||
if subprocess.call(command, shell=False) == 0:
|
|
||||||
return True
|
|
||||||
print 'Failed.'
|
|
||||||
return False
|
|
||||||
|
|
||||||
|
|
||||||
def GetInstalledVersion(version_stamp):
|
|
||||||
version_file = os.path.join(INSTALL_DIR, version_stamp)
|
|
||||||
if not os.path.exists(version_file):
|
|
||||||
return None
|
|
||||||
with open(version_file) as f:
|
|
||||||
return f.read().strip()
|
|
||||||
|
|
||||||
|
|
||||||
def VersionStampName(tools_name):
|
|
||||||
if sys.platform.startswith('linux'):
|
|
||||||
return 'VERSION_LINUX_' + tools_name.upper()
|
|
||||||
elif sys.platform == 'darwin':
|
|
||||||
return 'VERSION_MACOSX_' + tools_name.upper()
|
|
||||||
else:
|
|
||||||
print('NOTE: Will not download android tools. Unsupported platform: ' +
|
|
||||||
sys.platform)
|
|
||||||
sys.exit(0)
|
|
||||||
|
|
||||||
|
|
||||||
def UpdateTools(tools_name):
|
|
||||||
"""Downloads zipped tools from Google Cloud Storage and extracts them,
|
|
||||||
stamping current version."""
|
|
||||||
|
|
||||||
# Read latest version.
|
|
||||||
version_stamp = VersionStampName(tools_name)
|
|
||||||
version = ''
|
|
||||||
with open(os.path.join(THIS_DIR, version_stamp)) as f:
|
|
||||||
version = f.read().strip()
|
|
||||||
# Return if installed binaries are up to date.
|
|
||||||
if version == GetInstalledVersion(version_stamp):
|
|
||||||
return
|
|
||||||
|
|
||||||
# Remove the old install directory checked out from git.
|
|
||||||
if os.path.exists(os.path.join(INSTALL_DIR, '.git')):
|
|
||||||
shutil.rmtree(INSTALL_DIR)
|
|
||||||
# Make sure that the install directory exists.
|
|
||||||
if not os.path.exists(INSTALL_DIR):
|
|
||||||
os.mkdir(INSTALL_DIR)
|
|
||||||
# Remove current installation.
|
|
||||||
tools_root = os.path.join(INSTALL_DIR, tools_name)
|
|
||||||
if os.path.exists(tools_root):
|
|
||||||
shutil.rmtree(tools_root)
|
|
||||||
|
|
||||||
# Download tools from GCS.
|
|
||||||
archive_path = os.path.join(INSTALL_DIR, tools_name + '.tar.gz')
|
|
||||||
download_cmd = [
|
|
||||||
'python', GSUTIL_PATH, 'cp',
|
|
||||||
'gs://mojo/android/tool/%s.tar.gz' % version, archive_path
|
|
||||||
]
|
|
||||||
if not RunCommand(download_cmd):
|
|
||||||
print('WARNING: Failed to download Android tools.')
|
|
||||||
return
|
|
||||||
|
|
||||||
print "Extracting Android tools (" + tools_name + ")"
|
|
||||||
with tarfile.open(archive_path) as arch:
|
|
||||||
arch.extractall(INSTALL_DIR)
|
|
||||||
os.remove(archive_path)
|
|
||||||
# Write version as the last step.
|
|
||||||
with open(os.path.join(INSTALL_DIR, version_stamp), 'w+') as f:
|
|
||||||
f.write('%s\n' % version)
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
|
||||||
UpdateTools('sdk')
|
|
||||||
UpdateTools('ndk')
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
sys.exit(main())
|
|
Loading…
Reference in a new issue