mirror of
				https://github.com/f-droid/fdroidserver.git
				synced 2025-11-04 06:30:27 +03:00 
			
		
		
		
	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:
		
							parent
							
								
									0dd5a7db64
								
							
						
					
					
						commit
						898624dcac
					
				
					 9 changed files with 52 additions and 17 deletions
				
			
		| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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():
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2118,14 +2118,42 @@ 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-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-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'),
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1 @@
 | 
			
		|||
r10e-rc4 (64-bit)
 | 
			
		||||
| 
						 | 
				
			
			@ -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>
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,2 @@
 | 
			
		|||
Pkg.Desc = Android NDK
 | 
			
		||||
Pkg.Revision = 21.4.7075529
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue