From d6c8ecc3bc5ee12d9f7ca166bf284a2537236e2b Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Tue, 1 Jun 2021 13:43:23 +0200 Subject: [PATCH 1/2] fix broken NDK extraction routine to correctly name resulting dir If there were other NDKs installed, this just tried to rename the first installed NDK. Now it tries to rename all NDKs that are not named after the NDK version. !926 !927 --- fdroidserver/common.py | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/fdroidserver/common.py b/fdroidserver/common.py index 4af0595f..63be8332 100644 --- a/fdroidserver/common.py +++ b/fdroidserver/common.py @@ -4117,15 +4117,16 @@ def _install_ndk(ndk): zipfp.extract(info.filename, path=ndk_base) os.chmod(os.path.join(ndk_base, info.filename), 0o644) # nosec bandit B103 os.remove(zipball) - extracted = glob.glob(os.path.join(ndk_base, '*'))[0] - version = get_ndk_version(extracted) - ndk_dir = os.path.join(ndk_base, version) - os.rename(extracted, ndk_dir) - if 'ndk_paths' not in config: - config['ndk_paths'] = dict() - config['ndk_paths'][ndk] = ndk_dir - logging.info(_('Set NDK {release} ({version}) up') - .format(release=ndk, version=version)) + for extracted in glob.glob(os.path.join(ndk_base, '*')): + version = get_ndk_version(extracted) + if os.path.basename(extracted) != version: + ndk_dir = os.path.join(ndk_base, version) + os.rename(extracted, ndk_dir) + if 'ndk_paths' not in config: + config['ndk_paths'] = dict() + config['ndk_paths'][ndk] = ndk_dir + logging.info(_('Set NDK {release} ({version}) up') + .format(release=ndk, version=version)) """Derived from https://gitlab.com/fdroid/android-sdk-transparency-log/-/blob/master/checksums.json""" From 28a4f9481ac3c19488b8ca5b518f2c89f4b76eab Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Tue, 1 Jun 2021 13:53:29 +0200 Subject: [PATCH 2/2] provision-android-ndk: do all configuration via args This makes it so it is easy to reuse this script in other contexts, like in Docker, GitLab CI, etc. --- buildserver/Vagrantfile | 2 +- buildserver/provision-android-ndk | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/buildserver/Vagrantfile b/buildserver/Vagrantfile index ef1a407a..16bc2305 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: ["/opt/android-sdk/ndk"] + args: ["/opt/android-sdk/ndk", "r21e", "r22b"] config.vm.provision "shell", path: "provision-gradle" end diff --git a/buildserver/provision-android-ndk b/buildserver/provision-android-ndk index 99e7c32e..9672b309 100644 --- a/buildserver/provision-android-ndk +++ b/buildserver/provision-android-ndk @@ -1,16 +1,19 @@ #!/bin/bash # +# $1 is the root dir to install the NDKs into +# $2 and after are the NDK releases to install echo $0 set -e set -x NDK_BASE=$1 +shift test -e $NDK_BASE || mkdir -p $NDK_BASE cd $NDK_BASE -for version in r21e r22b; do +for version in $@; do if [ ! -e ${NDK_BASE}/${version} ]; then unzip /vagrant/cache/android-ndk-${version}-linux-x86_64.zip > /dev/null mv android-ndk-${version} \