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",
|
||||
"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
|
||||
# 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:
|
||||
|
@ -491,6 +494,61 @@ deps = {
|
|||
"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": {
|
||||
"packages": [
|
||||
{
|
||||
|
@ -639,11 +697,6 @@ hooks = [
|
|||
'action': ['python', 'sdk/build/linux/sysroot_scripts/install-sysroot.py',
|
||||
'--arch', 'arm64'],
|
||||
},
|
||||
{
|
||||
'name': 'download_android_tools',
|
||||
'pattern': '.',
|
||||
'action': ['python', 'sdk/tools/android/download_android_tools.py'],
|
||||
},
|
||||
{
|
||||
'name': 'buildtools',
|
||||
'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