From 2ecd4145593d512615715f6a22aa28ba08b4939d Mon Sep 17 00:00:00 2001 From: Gary Qian Date: Wed, 8 Dec 2021 18:40:21 -0800 Subject: [PATCH 1/3] Merge NDK and licenses into Android dependencies script --- ...reate_sdk_cipd_packages.sh => create_cipd_packages.sh} | 8 ++++++-- tools/android_sdk/packages.txt | 3 ++- 2 files changed, 8 insertions(+), 3 deletions(-) rename tools/android_sdk/{create_sdk_cipd_packages.sh => create_cipd_packages.sh} (93%) mode change 100644 => 100755 diff --git a/tools/android_sdk/create_sdk_cipd_packages.sh b/tools/android_sdk/create_cipd_packages.sh old mode 100644 new mode 100755 similarity index 93% rename from tools/android_sdk/create_sdk_cipd_packages.sh rename to tools/android_sdk/create_cipd_packages.sh index a645f2cf05326..9cf94cfdba189 --- a/tools/android_sdk/create_sdk_cipd_packages.sh +++ b/tools/android_sdk/create_cipd_packages.sh @@ -3,7 +3,7 @@ # This script requires depot_tools to be on path. print_usage () { - echo "Usage: create_sdk_cipd_united_package.sh [PATH_TO_SDK_DIR]" + echo "Usage: create_cipd_united_package.sh [PATH_TO_SDK_DIR]" echo " where:" echo " - VERSION_TAG is the tag of the cipd packages, e.g. 28r6 or 31v1" echo " - PATH_TO_SDK_DIR is the path to the sdk folder. If omitted, this defaults to" @@ -76,7 +76,7 @@ temp_dir=`mktemp -d -t android_sdk` for platform in "${platforms[@]}"; do sdk_root="$temp_dir/sdk_$platform" - upload_dir="$sdk_root/upload" + upload_dir="$temp_dir/upload_$platform" echo "Creating temporary working directory for $platform: $sdk_root" mkdir $sdk_root mkdir $upload_dir @@ -97,6 +97,9 @@ for platform in "${platforms[@]}"; do done done + yes "y" | $sdkmanager_path --licenses --sdk_root=$sdk_root + cp -r "$sdk_root/licenses" "$upload_dir" + # Mac uses a different sdkmanager name than the platform name used in gn. cipd_name="$platform-amd64" if [[ $platform == "macosx" ]]; then @@ -106,5 +109,6 @@ for platform in "${platforms[@]}"; do cipd create -in $upload_dir -name "flutter/android/sdk/all/$cipd_name" -install-mode copy -tag version:$version_tag rm -rf $sdk_root + rm -rf $upload_dir done rm -rf $temp_dir diff --git a/tools/android_sdk/packages.txt b/tools/android_sdk/packages.txt index 929876ad71bd0..cba2d84474b22 100644 --- a/tools/android_sdk/packages.txt +++ b/tools/android_sdk/packages.txt @@ -2,4 +2,5 @@ platforms;android-31:platforms cmdline-tools;latest:cmdline-tools build-tools;31.0.0:build-tools platform-tools:platform-tools -tools:tools \ No newline at end of file +tools:tools +ndk-bundle:ndk-bundle \ No newline at end of file From 9b97667f281addc85d5288a69e30df9605bd66a6 Mon Sep 17 00:00:00 2001 From: Gary Qian Date: Wed, 8 Dec 2021 18:40:47 -0800 Subject: [PATCH 2/3] Merge NDK and licenses into Android dependencies script --- DEPS | 24 +----------------------- sky/tools/flutter_gdb | 4 ++-- testing/analyze_core_dump.sh | 2 +- tools/licenses/lib/filesystem.dart | 2 +- tools/licenses/lib/patterns.dart | 2 +- 5 files changed, 6 insertions(+), 28 deletions(-) diff --git a/DEPS b/DEPS index 2ac6eb62159c0..51c59a9113541 100644 --- a/DEPS +++ b/DEPS @@ -478,17 +478,6 @@ deps = { 'dep_type': 'cipd' }, - 'src/third_party/android_tools/ndk': { - 'packages': [ - { - 'package': 'flutter/android/ndk/${{platform}}', - 'version': 'version:r22.0.7026061' - } - ], - 'condition': 'download_android_deps', - 'dep_type': 'cipd', - }, - 'src/third_party/android_tools/google-java-format': { 'packages': [ { @@ -507,24 +496,13 @@ deps = { 'packages': [ { 'package': 'flutter/android/sdk/all/${{platform}}', - 'version': 'version:31v5' + 'version': 'version:31v7' } ], 'condition': 'download_android_deps', 'dep_type': 'cipd', }, - 'src/third_party/android_tools/sdk/licenses': { - 'packages': [ - { - 'package': 'flutter/android/sdk/licenses', - 'version': 'latest', - } - ], - 'condition': 'download_android_deps', - 'dep_type': 'cipd', - }, - 'src/third_party/android_embedding_dependencies': { 'packages': [ { diff --git a/sky/tools/flutter_gdb b/sky/tools/flutter_gdb index ed252dcafb891..53ed22401eaf7 100755 --- a/sky/tools/flutter_gdb +++ b/sky/tools/flutter_gdb @@ -71,7 +71,7 @@ class GdbClient(object): SYSTEM_LIBS_PATH = '/tmp/flutter_gdb_device_libs' def _gdb_local_path(self): - GDB_LOCAL_PATH = ('third_party/android_tools/ndk/prebuilt/%s-x86_64/bin/gdb-orig') + GDB_LOCAL_PATH = ('third_party/android_tools/sdk/ndk-bundle/prebuilt/%s-x86_64/bin/gdb-orig') if sys.platform.startswith('darwin'): return GDB_LOCAL_PATH % 'darwin' else: @@ -184,7 +184,7 @@ class GdbServer(object): return 1 abi = _get_device_abi(adb_path) - gdb_server_local_path = 'third_party/android_tools/ndk/prebuilt/android-%s/gdbserver/gdbserver' % abi + gdb_server_local_path = 'third_party/android_tools/sdk/ndk-bundle/prebuilt/android-%s/gdbserver/gdbserver' % abi # Copy gdbserver to the package's data directory. subprocess.check_call([adb_path, 'push', diff --git a/testing/analyze_core_dump.sh b/testing/analyze_core_dump.sh index 26ec902414c57..733f10cd91ed8 100755 --- a/testing/analyze_core_dump.sh +++ b/testing/analyze_core_dump.sh @@ -15,7 +15,7 @@ if [ "$UNAME" == "Linux" ]; then if [ -x "$(command -v gdb)" ]; then GDB=gdb else - GDB=$BUILDROOT/third_party/android_tools/ndk/prebuilt/linux-x86_64/bin/gdb + GDB=$BUILDROOT/third_party/android_tools/sdk/ndk-bundle/prebuilt/linux-x86_64/bin/gdb fi echo "GDB=$GDB" $GDB $EXE $CORE --batch -ex "thread apply all bt" > $OUTPUT diff --git a/tools/licenses/lib/filesystem.dart b/tools/licenses/lib/filesystem.dart index 4cd01fcdc8fa0..f4f1b881564f6 100644 --- a/tools/licenses/lib/filesystem.dart +++ b/tools/licenses/lib/filesystem.dart @@ -70,7 +70,7 @@ FileType identifyFile(String name, Reader reader) { (path.split(name).reversed.take(3).toList().reversed.join('/') == 'third_party/cares/cares.rc')) // This file has a copyright symbol in Latin1 in it return FileType.latin1Text; if (path.split(name).reversed.take(6).toList().reversed.join('/') == 'dart/runtime/tests/vm/dart/bad_snapshot' || // Not any particular format - path.split(name).reversed.take(8).toList().reversed.join('/') == 'third_party/android_tools/ndk/sources/cxx-stl/stlport/src/stlport.rc') // uses the word "copyright" but doesn't have a copyright header + path.split(name).reversed.take(8).toList().reversed.join('/') == 'third_party/android_tools/sdk/ndk-bundle/sources/cxx-stl/stlport/src/stlport.rc') // uses the word "copyright" but doesn't have a copyright header return FileType.binary; final String base = path.basename(name); if (base.startsWith('._')) { diff --git a/tools/licenses/lib/patterns.dart b/tools/licenses/lib/patterns.dart index 27980a6757d7d..f0cca88ecf249 100644 --- a/tools/licenses/lib/patterns.dart +++ b/tools/licenses/lib/patterns.dart @@ -43,7 +43,7 @@ final RegExp copyrightMentionOkPattern = RegExp( r'|This ICU code derived from:' r'|the contents of which are also included in zip.h' // seen in minizip's unzip.c, but the upshot of the crazy license situation there is that we don't have to do anything r'|hold font names, copyright info, notices, etc' // seen in a comment in freetype's src/include/ftsnames.h - r'|' // the following is from android_tools/ndk/sources/cxx-stl/gnu-libstdc++/4.9/include/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp + r'|' // the following is from android_tools/sdk/ndk-bundle/sources/cxx-stl/gnu-libstdc++/4.9/include/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp r'^ \* This implementation uses an idea from the SGI STL \(using a @a header node\n' r'^ \* which is needed for efficient iteration\)\. Following is the SGI STL\n' r'^ \* copyright\.\n' From 600a750bde46aa5cfabf4fca9152369c1632b87f Mon Sep 17 00:00:00 2001 From: Gary Qian Date: Wed, 8 Dec 2021 20:21:04 -0800 Subject: [PATCH 3/3] Move NDK to original location --- DEPS | 4 ++-- sky/tools/flutter_gdb | 4 ++-- testing/analyze_core_dump.sh | 2 +- tools/android_sdk/create_cipd_packages.sh | 10 ++++++++-- tools/licenses/lib/filesystem.dart | 2 +- tools/licenses/lib/patterns.dart | 2 +- 6 files changed, 15 insertions(+), 9 deletions(-) diff --git a/DEPS b/DEPS index 51c59a9113541..a7971da2fe039 100644 --- a/DEPS +++ b/DEPS @@ -492,11 +492,11 @@ deps = { 'dep_type': 'cipd', }, - 'src/third_party/android_tools/sdk': { + 'src/third_party/android_tools': { 'packages': [ { 'package': 'flutter/android/sdk/all/${{platform}}', - 'version': 'version:31v7' + 'version': 'version:31v8' } ], 'condition': 'download_android_deps', diff --git a/sky/tools/flutter_gdb b/sky/tools/flutter_gdb index 53ed22401eaf7..ed252dcafb891 100755 --- a/sky/tools/flutter_gdb +++ b/sky/tools/flutter_gdb @@ -71,7 +71,7 @@ class GdbClient(object): SYSTEM_LIBS_PATH = '/tmp/flutter_gdb_device_libs' def _gdb_local_path(self): - GDB_LOCAL_PATH = ('third_party/android_tools/sdk/ndk-bundle/prebuilt/%s-x86_64/bin/gdb-orig') + GDB_LOCAL_PATH = ('third_party/android_tools/ndk/prebuilt/%s-x86_64/bin/gdb-orig') if sys.platform.startswith('darwin'): return GDB_LOCAL_PATH % 'darwin' else: @@ -184,7 +184,7 @@ class GdbServer(object): return 1 abi = _get_device_abi(adb_path) - gdb_server_local_path = 'third_party/android_tools/sdk/ndk-bundle/prebuilt/android-%s/gdbserver/gdbserver' % abi + gdb_server_local_path = 'third_party/android_tools/ndk/prebuilt/android-%s/gdbserver/gdbserver' % abi # Copy gdbserver to the package's data directory. subprocess.check_call([adb_path, 'push', diff --git a/testing/analyze_core_dump.sh b/testing/analyze_core_dump.sh index 733f10cd91ed8..26ec902414c57 100755 --- a/testing/analyze_core_dump.sh +++ b/testing/analyze_core_dump.sh @@ -15,7 +15,7 @@ if [ "$UNAME" == "Linux" ]; then if [ -x "$(command -v gdb)" ]; then GDB=gdb else - GDB=$BUILDROOT/third_party/android_tools/sdk/ndk-bundle/prebuilt/linux-x86_64/bin/gdb + GDB=$BUILDROOT/third_party/android_tools/ndk/prebuilt/linux-x86_64/bin/gdb fi echo "GDB=$GDB" $GDB $EXE $CORE --batch -ex "thread apply all bt" > $OUTPUT diff --git a/tools/android_sdk/create_cipd_packages.sh b/tools/android_sdk/create_cipd_packages.sh index 9cf94cfdba189..d88bd736ba320 100755 --- a/tools/android_sdk/create_cipd_packages.sh +++ b/tools/android_sdk/create_cipd_packages.sh @@ -80,6 +80,7 @@ for platform in "${platforms[@]}"; do echo "Creating temporary working directory for $platform: $sdk_root" mkdir $sdk_root mkdir $upload_dir + mkdir $upload_dir/sdk export REPO_OS_OVERRIDE=$platform # Download all the packages with sdkmanager. @@ -93,12 +94,17 @@ for platform in "${platforms[@]}"; do # for upload. sdkmanager creates extra files that we don't need. array_length=${#split[@]} for (( i=1; i<${array_length}; i++ )); do - cp -r "$sdk_root/${split[$i]}" "$upload_dir" + cp -r "$sdk_root/${split[$i]}" "$upload_dir/sdk" done done + # Special treatment for NDK to move to expected directory. + mv $upload_dir/sdk/ndk-bundle $upload_dir + mv $upload_dir/ndk-bundle $upload_dir/ndk + + # Accept all licenses to ensure they are generated and uploaded. yes "y" | $sdkmanager_path --licenses --sdk_root=$sdk_root - cp -r "$sdk_root/licenses" "$upload_dir" + cp -r "$sdk_root/licenses" "$upload_dir/sdk" # Mac uses a different sdkmanager name than the platform name used in gn. cipd_name="$platform-amd64" diff --git a/tools/licenses/lib/filesystem.dart b/tools/licenses/lib/filesystem.dart index f4f1b881564f6..4cd01fcdc8fa0 100644 --- a/tools/licenses/lib/filesystem.dart +++ b/tools/licenses/lib/filesystem.dart @@ -70,7 +70,7 @@ FileType identifyFile(String name, Reader reader) { (path.split(name).reversed.take(3).toList().reversed.join('/') == 'third_party/cares/cares.rc')) // This file has a copyright symbol in Latin1 in it return FileType.latin1Text; if (path.split(name).reversed.take(6).toList().reversed.join('/') == 'dart/runtime/tests/vm/dart/bad_snapshot' || // Not any particular format - path.split(name).reversed.take(8).toList().reversed.join('/') == 'third_party/android_tools/sdk/ndk-bundle/sources/cxx-stl/stlport/src/stlport.rc') // uses the word "copyright" but doesn't have a copyright header + path.split(name).reversed.take(8).toList().reversed.join('/') == 'third_party/android_tools/ndk/sources/cxx-stl/stlport/src/stlport.rc') // uses the word "copyright" but doesn't have a copyright header return FileType.binary; final String base = path.basename(name); if (base.startsWith('._')) { diff --git a/tools/licenses/lib/patterns.dart b/tools/licenses/lib/patterns.dart index f0cca88ecf249..27980a6757d7d 100644 --- a/tools/licenses/lib/patterns.dart +++ b/tools/licenses/lib/patterns.dart @@ -43,7 +43,7 @@ final RegExp copyrightMentionOkPattern = RegExp( r'|This ICU code derived from:' r'|the contents of which are also included in zip.h' // seen in minizip's unzip.c, but the upshot of the crazy license situation there is that we don't have to do anything r'|hold font names, copyright info, notices, etc' // seen in a comment in freetype's src/include/ftsnames.h - r'|' // the following is from android_tools/sdk/ndk-bundle/sources/cxx-stl/gnu-libstdc++/4.9/include/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp + r'|' // the following is from android_tools/ndk/sources/cxx-stl/gnu-libstdc++/4.9/include/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp r'^ \* This implementation uses an idea from the SGI STL \(using a @a header node\n' r'^ \* which is needed for efficient iteration\)\. Following is the SGI STL\n' r'^ \* copyright\.\n'