From d6c8ecc3bc5ee12d9f7ca166bf284a2537236e2b Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Tue, 1 Jun 2021 13:43:23 +0200 Subject: [PATCH] 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"""