commit 983cb3322d6b99521aef714babfcaaadac511eab Author: Georg Koppen gk@torproject.org Date: Thu Jun 11 09:25:16 2020 +0000
Bug 33557: Update Android toolchain for Fenix
Based on a patch by sisbell, thanks!
We add a new project to not interfere with Fennec toolchain requirements for now until we stop building Fennec-based Tor Browser for Android. --- projects/fenix-android-toolchain/build | 72 +++++++++++++++++++++++++++++++++ projects/fenix-android-toolchain/config | 70 ++++++++++++++++++++++++++++++++ 2 files changed, 142 insertions(+)
diff --git a/projects/fenix-android-toolchain/build b/projects/fenix-android-toolchain/build new file mode 100644 index 0000000..1135ed4 --- /dev/null +++ b/projects/fenix-android-toolchain/build @@ -0,0 +1,72 @@ +#!/bin/bash +[% c("var/set_default_env") -%] +export PROJECT_PATH=/var/tmp/dist/[% project %] +export SDK_HOME=$PROJECT_PATH/android-sdk-linux +export NDK_HOME=$PROJECT_PATH/android-ndk +export GRADLE_HOME=$PROJECT_PATH/gradle +android_release_dir=android-10 +android_release_dir_old=android-9 + +# Make directories +mkdir -p $NDK_HOME $SDK_HOME $GRADLE_HOME + +# Compiler Archives +unzip -qq [% c("input_files_by_name/android_sdk_tools") %] -d $SDK_HOME +unzip -qq [% c("input_files_by_name/android_ndk_compiler")%] -d $NDK_HOME +# GeckoView is still using an older Android NDK, bundle it, too. +unzip -qq [% c("input_files_by_name/android_ndk_compiler_old")%] -d $NDK_HOME +unzip -qq [% c("input_files_by_name/gradle_bin") %] -d $GRADLE_HOME +# GeckoView is still using an older Gradle, bundle it, too. +unzip -qq [% c("input_files_by_name/gradle_bin_old") %] -d $GRADLE_HOME +# application-services is using a comparatively new Gradle, bundle it, too. +unzip -qq [% c("input_files_by_name/gradle_bin_new") %] -d $GRADLE_HOME + +# NDK Archive +for version in [% c("var/android_ndk_version") %][% c("var/android_ndk_revision") %] [% c("var/android_ndk_version_old") %]; do + cd $NDK_HOME + # Adjust cross compilation prefix for armv7a. Unfortunately, the compiler cross + # compilation prefix and the one for all the other tools differ. Let's fix that + # so we only have to take care of one. See: #33557 (comment 2674649). + cd android-ndk-r$version/toolchains/llvm/prebuilt/linux-x86_64/bin + for f in `ls arm-linux-androideabi-*`; do + ln -s $f ${f//arm-linux-androideabi/armv7a-linux-androideabi} + done +done + +# Tool Archives +cd $SDK_HOME +unzip -qq $HOME/[% c("input_files_by_name/build_tools") %] -d $SDK_HOME +mkdir -p build-tools/[% c("version") %] +mv $android_release_dir/* build-tools/[% c("version") %] + +# Fenix has not updated to build-tools 29 yet, bundle therefore build-tools 28, +# too. +unzip -qq $HOME/[% c("input_files_by_name/build_tools_old") %] -d $SDK_HOME +mkdir -p build-tools/[% c("version_old") %] +mv $android_release_dir_old/* build-tools/[% c("version_old") %] + +unzip -qq $HOME/[% c("input_files_by_name/platform") %] -d $SDK_HOME +mkdir -p platforms/android-[% c("var/android_api_level") %] +mv $android_release_dir/* platforms/android-[% c("var/android_api_level") %] + +# Fenix has not updated to Android 29 yet, bundle therefore Android 28, too. +unzip -qq $HOME/[% c("input_files_by_name/platform_old") %] -d $SDK_HOME +mkdir -p platforms/android-[% c("var/android_api_level_old") %] +mv $android_release_dir_old/* platforms/android-[% c("var/android_api_level_old") %] + +unzip -qq $HOME/[% c("input_files_by_name/platform_tools") %] -d $SDK_HOME + +# That's a quirk required by GeckoView but let's have it here instead of in the +# project's build script +mkdir emulator +cp tools/emulator emulator/ + +# Cleanup +rm -fR $android_release_dir $android_release_dir_old + +# Archive dist directory +cd /var/tmp/dist +[% c('tar', { + tar_src => [ project ], + tar_args => '-czf ' _ dest_dir _ '/' _ c('filename'), + }) %] diff --git a/projects/fenix-android-toolchain/config b/projects/fenix-android-toolchain/config new file mode 100644 index 0000000..c01ca91 --- /dev/null +++ b/projects/fenix-android-toolchain/config @@ -0,0 +1,70 @@ +# vim: filetype=yaml sw=2 +filename: '[% project %]-[% c("version") %]-[% c("version_old") %]-[% c("var/build_id") %].tar.gz' +version: 29.0.3 +version_old: 28.0.3 +var: + container: + use_container: 1 + deps: + - unzip + - python + setup: | + mkdir -p /var/tmp/dist + tar -C /var/tmp/dist -xf $rootdir/[% c("compiler_tarfile") %] + export ANDROID_SDK_HOME=/var/tmp/dist/[% project %]/android-sdk-linux + # By default we use the old NDK which is the one GeckoView is using. + # However, we can overwrite that per project if needed (e.g. + # application-services is currently on a newer NDK). + export ANDROID_NDK_HOME=/var/tmp/dist/[% project %]/android-ndk/android-ndk-r[% c("var/android_ndk_version_old") %] + export GRADLE_HOME=/var/tmp/dist/[% project %]/gradle + export ANDROID_HOME=$ANDROID_SDK_HOME + export GRADLE_USER_HOME=$GRADLE_HOME + export PATH=$PATH:$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin:$GRADLE_HOME/gradle-[% c("var/gradle_version") %]/bin + google_repo: https://dl.google.com/android/repository + android_api_level: 29 + android_api_level_old: 28 + android_platform_revision: 04 + android_ndk_version: 21 + android_ndk_version_old: 20 + android_ndk_revision: d + gradle_version_new: 6.3 + gradle_version: 5.6.4 + gradle_version_old: 5.1.1 +input_files: + - project: container-image + - URL: '[% c("var/google_repo") %]/build-tools_r[% c("version") %]-linux.zip' + name: build_tools + sha256sum: 5652d8cd5eaaade0b853bfe0ae6cbfa0706a6f70a0ebb25ca24a6f484ec3d855 + - URL: '[% c("var/google_repo") %]/build-tools_r[% c("version_old") %]-linux.zip' + name: build_tools_old + sha256sum: 7954956a40633c88f693d638cbc23f68e9e2499dc7a4b7dfdaf6a3e91387749a + - URL: '[% c("var/google_repo") %]/platform-[% c("var/android_api_level") %]_r[% c("var/android_platform_revision") %].zip' + name: platform + sha256sum: c9eaf2ce4e8fa6f5a8036bd3c95363d003733bf0a1bd349718cadf802db44c69 + - URL: '[% c("var/google_repo") %]/platform-[% c("var/android_api_level_old") %]_r[% c("var/android_platform_revision") %].zip' + name: platform_old + sha256sum: 967f8ca99b71d337aa9c7781f9d65dd8110bf5c4746f44304047bf71b20d0ded + # ./mach bootstrap is fetching the latest version, so it does not seem to + # matter which particular version we are using. Pin to the one fitting best to + # SDK version/build-tools version. + - URL: '[% c("var/google_repo") %]/platform-tools_r[% c("version") %]-linux.zip' + name: platform_tools + sha256sum: 49e676ec90bff1f7d7dfe4fb7d0ab78e14fa8fb06a8dccca2ef57a1bc29497a0 + - URL: '[% c("var/google_repo") %]/sdk-tools-linux-4333796.zip' + name: android_sdk_tools + sha256sum: 92ffee5a1d98d856634e8b71132e8a95d96c83a63fde1099be3d86df3106def9 + - URL: '[% c("var/google_repo") %]/android-ndk-r[% c("var/android_ndk_version") %][% c("var/android_ndk_revision") %]-linux-x86_64.zip' + name: android_ndk_compiler + sha256sum: dd6dc090b6e2580206c64bcee499bc16509a5d017c6952dcd2bed9072af67cbd + - URL: '[% c("var/google_repo") %]/android-ndk-r[% c("var/android_ndk_version_old") %]-linux-x86_64.zip' + name: android_ndk_compiler_old + sha256sum: 57435158f109162f41f2f43d5563d2164e4d5d0364783a9a6fab3ef12cb06ce0 + - URL: https://services.gradle.org/distributions/gradle-%5B% c("var/gradle_version_new") %]-bin.zip + name: gradle_bin_new + sha256sum: 038794feef1f4745c6347107b6726279d1c824f3fc634b60f86ace1e9fbd1768 + - URL: https://services.gradle.org/distributions/gradle-%5B% c("var/gradle_version") %]-bin.zip + name: gradle_bin + sha256sum: 1f3067073041bc44554d0efe5d402a33bc3d3c93cc39ab684f308586d732a80d + - URL: https://services.gradle.org/distributions/gradle-%5B% c("var/gradle_version_old") %]-bin.zip + name: gradle_bin_old + sha256sum: 4953323605c5d7b89e97d0dc7779e275bccedefcdac090aec123375eae0cc798
tbb-commits@lists.torproject.org