From 93145a43fb92991adbe15da1ca4325d84717283f Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Tue, 25 May 2021 22:39:03 +0200 Subject: [PATCH] buildserver: use standardized paths for the NDKs This should help with reproducibility since some tools like Python still include the build paths in the binaries. https://gitlab.com/fdroid/fdroidserver/-/merge_requests/919#note_578180986 The default ANDROID_SDK_ROOT base dir of /opt/android-sdk is hard-coded in buildserver/Vagrantfile. The $ANDROID_HOME/ndk subdir is where Android Studio will install the NDK into versioned subdirs. https://developer.android.com/studio/projects/configure-agp-ndk#agp_version_41 --- buildserver/Vagrantfile | 2 +- buildserver/config.buildserver.yml | 6 +++--- buildserver/provision-android-ndk | 8 +++++++- fdroidserver/common.py | 6 +++--- 4 files changed, 14 insertions(+), 8 deletions(-) diff --git a/buildserver/Vagrantfile b/buildserver/Vagrantfile index 63a891b1..ef1a407a 100644 --- a/buildserver/Vagrantfile +++ b/buildserver/Vagrantfile @@ -84,7 +84,7 @@ Vagrant.configure("2") do |config| args: [configfile['debian_mirror']] config.vm.provision "shell", path: "provision-android-sdk" config.vm.provision "shell", path: "provision-android-ndk", - args: ["/home/vagrant/android-ndk"] + args: ["/opt/android-sdk/ndk"] config.vm.provision "shell", path: "provision-gradle" end diff --git a/buildserver/config.buildserver.yml b/buildserver/config.buildserver.yml index 37b2bb4e..3073faf7 100644 --- a/buildserver/config.buildserver.yml +++ b/buildserver/config.buildserver.yml @@ -1,8 +1,8 @@ sdk_path: /opt/android-sdk ndk_paths: - r10e: /home/vagrant/android-ndk/r10e - r21e: /home/vagrant/android-ndk/r21e - r22b: /home/vagrant/android-ndk/r22b + r10e: /opt/android-sdk/ndk/r10e + r21e: /opt/android-sdk/ndk/21.4.7075529 + r22b: /opt/android-sdk/ndk/22.0.7026061 java_paths: 8: /usr/lib/jvm/java-8-openjdk-amd64 diff --git a/buildserver/provision-android-ndk b/buildserver/provision-android-ndk index 1fcabf93..655bf06f 100644 --- a/buildserver/provision-android-ndk +++ b/buildserver/provision-android-ndk @@ -18,9 +18,15 @@ fi for version in r21e r22b; do if [ ! -e ${NDK_BASE}/${version} ]; then unzip /vagrant/cache/android-ndk-${version}-linux-x86_64.zip > /dev/null - mv android-ndk-${version} ${version} + mv android-ndk-${version} \ + `sed -En 's,^Pkg.Revision *= *(.+),\1,p' android-ndk-${version}/source.properties` fi done +# allow gradle/etc to install missing NDK versions +chgrp vagrant $NDK_BASE +chmod g+w $NDK_BASE + +# ensure all users can read and execute the NDK chmod -R a+rX $NDK_BASE/ find $NDK_BASE/ -type f -executable -print0 | xargs -0 chmod a+x diff --git a/fdroidserver/common.py b/fdroidserver/common.py index fba87e99..01244f03 100644 --- a/fdroidserver/common.py +++ b/fdroidserver/common.py @@ -4006,9 +4006,9 @@ def auto_install_ndk(build): --onserver` calls can run in a single session. The production buildserver is reset between every build. - The default ANDROID_HOME base dir of /home/vagrant/android-sdk is - hard-coded in buildserver/Vagrantfile. The "ndk" subdir is where - Android Studio will install the NDK into versioned subdirs. + The default ANDROID_SDK_ROOT base dir of /opt/android-sdk is hard-coded in + buildserver/Vagrantfile. The $ANDROID_HOME/ndk subdir is where Android + Studio will install the NDK into versioned subdirs. https://developer.android.com/studio/projects/configure-agp-ndk#agp_version_41 Also, r10e and older cannot be handled via this mechanism because