common.get_android_tools_versions() for modern NDK dir layout

NDK r10e is still in use, but is so old, it does not have the modern
sdkmanager package metadata.
This commit is contained in:
Hans-Christoph Steiner 2022-11-16 10:17:51 +01:00
parent 0dd5a7db64
commit 898624dcac
No known key found for this signature in database
GPG Key ID: 3E177817BA1B9BFA
9 changed files with 52 additions and 17 deletions

View File

@ -552,9 +552,12 @@ include tests/dump_internal_metadata_format.py
include tests/exception.TestCase
include tests/extra/manual-vmtools-test.py
include tests/funding-usernames.yaml
include tests/get_android_tools_versions/android-ndk/android-ndk-r21d/source.properties
include tests/get_android_tools_versions/android-ndk/r11c/source.properties
include tests/get_android_tools_versions/android-ndk/r17c/source.properties
include tests/get_android_tools_versions/android-ndk-r10e/RELEASE.TXT
include tests/get_android_tools_versions/android-sdk/ndk/11.2.2725575/source.properties
include tests/get_android_tools_versions/android-sdk/ndk/17.2.4988734/source.properties
include tests/get_android_tools_versions/android-sdk/ndk/21.3.6528147/source.properties
include tests/get_android_tools_versions/android-sdk/ndk-bundle/package.xml
include tests/get_android_tools_versions/android-sdk/ndk-bundle/source.properties
include tests/get_android_tools_versions/android-sdk/patcher/v4/source.properties
include tests/get_android_tools_versions/android-sdk/platforms/android-30/source.properties
include tests/get_android_tools_versions/android-sdk/skiaparser/1/source.properties

View File

@ -4043,10 +4043,10 @@ def get_android_tools_versions():
sdk_path = config['sdk_path']
if sdk_path[-1] != '/':
sdk_path += '/'
components = []
for ndk_path in config.get('ndk_paths', []):
components = set()
for ndk_path in config.get('ndk_paths', {}).values():
version = get_ndk_version(ndk_path)
components.append((os.path.basename(ndk_path), str(version)))
components.add((os.path.relpath(ndk_path, sdk_path), str(version)))
pattern = re.compile(r'^Pkg.Revision *= *(.+)', re.MULTILINE)
for root, dirs, files in os.walk(sdk_path):
@ -4055,9 +4055,9 @@ def get_android_tools_versions():
with open(source_properties, 'r') as fp:
m = pattern.search(fp.read())
if m:
components.append((root[len(sdk_path):], m.group(1)))
components.add((os.path.relpath(root, sdk_path), m.group(1)))
return components
return sorted(components)
def get_android_tools_version_log():

View File

@ -2118,21 +2118,49 @@ class CommonTest(unittest.TestCase):
{'AutoName': testvalue, 'id': 'nope'}]:
self.assertEqual(testvalue, fdroidserver.common.get_app_display_name(app))
@mock.patch.dict(os.environ, {'PATH': os.getenv('PATH')}, clear=True)
def test_get_android_tools_versions(self):
sdk_path = os.path.join(self.basedir, 'get_android_tools_versions')
fdroidserver.common.config = {'sdk_path': sdk_path}
sdk_path = os.path.join(self.basedir, 'get_android_tools_versions/android-sdk')
config = {
'ndk_paths': {'r10e': os.path.join(sdk_path, '..', 'android-ndk-r10e')},
'sdk_path': sdk_path,
}
fdroidserver.common.config = config
fdroidserver.common.fill_config_defaults(config)
components = fdroidserver.common.get_android_tools_versions()
expected = (
('android-ndk/android-ndk-r21d', '21.3.6528147'),
('android-ndk/r11c', '11.2.2725575'),
('android-ndk/r17c', '17.2.4988734'),
('android-sdk/patcher/v4', '1'),
('android-sdk/platforms/android-30', '3'),
('android-sdk/skiaparser/1', '6'),
('android-sdk/tools', '26.1.1'),
('../android-ndk-r10e', 'r10e'),
('ndk-bundle', '21.4.7075529'),
('ndk/11.2.2725575', '11.2.2725575'),
('ndk/17.2.4988734', '17.2.4988734'),
('ndk/21.3.6528147', '21.3.6528147'),
('patcher/v4', '1'),
('platforms/android-30', '3'),
('skiaparser/1', '6'),
('tools', '26.1.1'),
)
self.assertSequenceEqual(expected, sorted(components))
@mock.patch.dict(os.environ, {'PATH': os.getenv('PATH')}, clear=True)
def test_get_android_tools_versions_no_ndk(self):
with tempfile.TemporaryDirectory() as tmpdir:
sdk_path = Path(tmpdir) / 'get_android_tools_versions'
shutil.copytree(
os.path.join(self.basedir, 'get_android_tools_versions'), sdk_path
)
shutil.rmtree(sdk_path / 'android-ndk-r10e')
shutil.rmtree(sdk_path / 'android-sdk/ndk')
shutil.rmtree(sdk_path / 'android-sdk/ndk-bundle')
fdroidserver.common.config = {'sdk_path': str(sdk_path)}
components = fdroidserver.common.get_android_tools_versions()
expected = (
('android-sdk/patcher/v4', '1'),
('android-sdk/platforms/android-30', '3'),
('android-sdk/skiaparser/1', '6'),
('android-sdk/tools', '26.1.1'),
)
self.assertSequenceEqual(expected, sorted(components))
def test_read_pkg_args(self):
allow_vercodes = False
self.assertEqual(

View File

@ -0,0 +1 @@
r10e-rc4 (64-bit)

View File

@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><ns2:repository xmlns:ns2="http://schemas.android.com/repository/android/common/01" xmlns:ns3="http://schemas.android.com/repository/android/generic/01" xmlns:ns4="http://schemas.android.com/sdk/android/repo/addon2/01" xmlns:ns5="http://schemas.android.com/sdk/android/repo/repository2/01" xmlns:ns6="http://schemas.android.com/sdk/android/repo/sys-img2/01"><license id="license-C3FD9DF8" type="text"/><localPackage path="ndk-bundle" obsolete="false"><type-details xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns3:genericDetailsType"/><revision><major>21</major><minor>4</minor><micro>7075529</micro></revision><display-name>Android NDK</display-name><uses-license ref="license-C3FD9DF8"/></localPackage></ns2:repository>

View File

@ -0,0 +1,2 @@
Pkg.Desc = Android NDK
Pkg.Revision = 21.4.7075529