Android: Replace deprecated distutils LooseVersion usage

(cherry picked from commit 9e9ea714ad)
This commit is contained in:
Rémi Verschelde
2024-11-05 21:22:22 +01:00
parent 0919ee69ce
commit 64a9c5ac65
2 changed files with 16 additions and 6 deletions

View File

@ -2,7 +2,6 @@
import shutil
from compat import open_utf8
from distutils.version import LooseVersion
from detect import get_ndk_version
Import('env')
@ -167,10 +166,16 @@ if lib_arch_dir != '':
else: # release_debug, debug
lib_type_dir = 'debug'
# HACK: Replaced use of now obsoleted distutils.version.LooseVersion with this simple method,
# which isn't bullet proof but should be sufficient here with "x.y.z" parameters.
# Alternatives imply adding more dependencies.
def version_tuple(v):
return tuple(map(int, (v.split("."))))
out_dir = '#platform/android/java/libs/' + lib_type_dir + '/' + lib_arch_dir
env_android.Command(out_dir + '/libgodot_android.so', '#bin/libgodot' + env['SHLIBSUFFIX'], Move("$TARGET", "$SOURCE"))
ndk_version = get_ndk_version(env["ANDROID_NDK_ROOT"])
if ndk_version != None and LooseVersion(ndk_version) >= LooseVersion("15.0.4075724"):
if ndk_version != None and version_tuple(ndk_version) >= version_tuple("15.0.4075724"):
if env['android_stl'] == 'yes':
stl_lib_path = str(env['ANDROID_NDK_ROOT']) + '/sources/cxx-stl/llvm-libc++/libs/' + lib_arch_dir + '/libc++_shared.so'
env_android.Command(out_dir + '/libc++_shared.so', stl_lib_path, Copy("$TARGET", "$SOURCE"))

View File

@ -2,7 +2,6 @@ import os
import sys
import string
import platform
from distutils.version import LooseVersion
def is_active():
return True
@ -193,8 +192,14 @@ def configure(env):
lib_sysroot = env["ANDROID_NDK_ROOT"] + "/platforms/" + env['ndk_platform'] + "/" + env['ARCH']
# HACK: Replaced use of now obsoleted distutils.version.LooseVersion with this simple method,
# which isn't bullet proof but should be sufficient here with "x.y.z" parameters.
# Alternatives imply adding more dependencies.
def version_tuple(v):
return tuple(map(int, (v.split("."))))
ndk_version = get_ndk_version(env["ANDROID_NDK_ROOT"])
if ndk_version != None and LooseVersion(ndk_version) >= LooseVersion("15.0.4075724"):
if ndk_version != None and version_tuple(ndk_version) >= version_tuple("15.0.4075724"):
print("Using NDK unified headers")
sysroot = env["ANDROID_NDK_ROOT"] + "/sysroot"
env.Append(CPPFLAGS=["--sysroot="+sysroot])
@ -251,9 +256,9 @@ def configure(env):
if (sys.platform.startswith("darwin")):
env['SHLIBSUFFIX'] = '.so'
if ndk_version != None and LooseVersion(ndk_version) >= LooseVersion("15.0.4075724"):
if ndk_version != None and version_tuple(ndk_version) >= version_tuple("15.0.4075724"):
if env['android_stl'] == 'yes':
if LooseVersion(ndk_version) >= LooseVersion("17.1.4828580"):
if version_tuple(ndk_version) >= version_tuple("17.1.4828580"):
env.Append(LINKFLAGS=['-Wl,--exclude-libs,libgcc.a','-Wl,--exclude-libs,libatomic.a','-nostdlib++'])
else:
env.Append(LINKFLAGS=[env["ANDROID_NDK_ROOT"] +"/sources/cxx-stl/llvm-libc++/libs/"+arch_subpath+"/libandroid_support.a"])