mirror of
https://github.com/f-droid/fdroidserver.git
synced 2025-11-05 06:50:29 +03:00
remove NDK download handling in favor of fdroid/sdkmanager
This commit is contained in:
parent
66d750e5fa
commit
0dd5a7db64
6 changed files with 172 additions and 565 deletions
|
|
@ -29,6 +29,7 @@
|
|||
# libraries here as they will become a requirement for all commands.
|
||||
|
||||
import git
|
||||
import glob
|
||||
import io
|
||||
import os
|
||||
import sys
|
||||
|
|
@ -36,7 +37,6 @@ import re
|
|||
import ast
|
||||
import gzip
|
||||
import shutil
|
||||
import glob
|
||||
import stat
|
||||
import subprocess
|
||||
import time
|
||||
|
|
@ -64,7 +64,6 @@ from pyasn1.codec.der import decoder, encoder
|
|||
from pyasn1_modules import rfc2315
|
||||
from pyasn1.error import PyAsn1Error
|
||||
|
||||
from . import net
|
||||
import fdroidserver.metadata
|
||||
import fdroidserver.lint
|
||||
from fdroidserver import _
|
||||
|
|
@ -310,13 +309,6 @@ def fill_config_defaults(thisconfig):
|
|||
if version not in ndk_paths:
|
||||
ndk_paths[version] = ndk
|
||||
|
||||
for k in list(ndk_paths.keys()):
|
||||
if not re.match(r'r[1-9][0-9]*[a-z]?', k):
|
||||
for ndkdict in NDKS:
|
||||
if k == ndkdict.get('revision'):
|
||||
ndk_paths[ndkdict['release']] = ndk_paths.pop(k)
|
||||
break
|
||||
|
||||
if 'cachedir_scanner' not in thisconfig:
|
||||
thisconfig['cachedir_scanner'] = str(Path(thisconfig['cachedir']) / 'scanner')
|
||||
if 'gradle_version_dir' not in thisconfig:
|
||||
|
|
@ -4226,6 +4218,8 @@ def auto_install_ndk(build):
|
|||
they are packaged differently.
|
||||
|
||||
"""
|
||||
import sdkmanager
|
||||
|
||||
global config
|
||||
if build.get('disable'):
|
||||
return
|
||||
|
|
@ -4233,8 +4227,10 @@ def auto_install_ndk(build):
|
|||
if not ndk:
|
||||
return
|
||||
if isinstance(ndk, str):
|
||||
sdkmanager.build_package_list(use_net=True)
|
||||
_install_ndk(ndk)
|
||||
elif isinstance(ndk, list):
|
||||
sdkmanager.build_package_list(use_net=True)
|
||||
for n in ndk:
|
||||
_install_ndk(n)
|
||||
else:
|
||||
|
|
@ -4251,295 +4247,16 @@ def _install_ndk(ndk):
|
|||
The NDK version to install, either in "release" form (r21e) or
|
||||
"revision" form (21.4.7075529).
|
||||
"""
|
||||
if re.match(r'[1-9][0-9.]+[0-9]', ndk):
|
||||
for ndkdict in NDKS:
|
||||
if ndk == ndkdict.get('revision'):
|
||||
ndk = ndkdict['release']
|
||||
break
|
||||
import sdkmanager
|
||||
|
||||
ndk_path = config.get(ndk)
|
||||
if ndk_path and os.path.isdir(ndk_path):
|
||||
return
|
||||
for ndkdict in NDKS:
|
||||
if ndk == ndkdict['release']:
|
||||
url = ndkdict['url']
|
||||
sha256 = ndkdict['sha256']
|
||||
break
|
||||
else:
|
||||
raise FDroidException("NDK %s not found" % ndk)
|
||||
ndk_base = os.path.join(config['sdk_path'], 'ndk')
|
||||
logging.info(_('Downloading %s') % url)
|
||||
with tempfile.TemporaryDirectory(prefix='android-ndk-') as ndk_dir:
|
||||
zipball = os.path.join(
|
||||
ndk_dir,
|
||||
os.path.basename(url)
|
||||
sdk_path = config['sdk_path']
|
||||
sdkmanager.install(f'ndk;{ndk}', sdk_path)
|
||||
for found in glob.glob(f'{sdk_path}/ndk/*'):
|
||||
version = get_ndk_version(found)
|
||||
if 'ndk_paths' not in config:
|
||||
config['ndk_paths'] = dict()
|
||||
config['ndk_paths'][ndk] = found
|
||||
config['ndk_paths'][version] = found
|
||||
logging.info(
|
||||
_('Set NDK {release} ({version}) up').format(release=ndk, version=version)
|
||||
)
|
||||
net.download_file(url, zipball)
|
||||
calced = sha256sum(zipball)
|
||||
if sha256 != calced:
|
||||
raise FDroidException('SHA-256 %s does not match expected for %s (%s)' % (calced, url, sha256))
|
||||
logging.info(_('Unzipping to %s') % ndk_base)
|
||||
with zipfile.ZipFile(zipball) as zipfp:
|
||||
for info in zipfp.infolist():
|
||||
permbits = info.external_attr >> 16
|
||||
if stat.S_ISLNK(permbits):
|
||||
link = os.path.join(ndk_base, info.filename)
|
||||
link_target = zipfp.read(info).decode()
|
||||
link_dir = os.path.dirname(link)
|
||||
os.makedirs(link_dir, 0o755, True) # ensure intermediate directories are created
|
||||
os.symlink(link_target, link)
|
||||
|
||||
real_target = os.path.realpath(link)
|
||||
if not real_target.startswith(ndk_base):
|
||||
os.remove(link)
|
||||
logging.error(_('Unexpected symlink target: {link} -> {target}')
|
||||
.format(link=link, target=real_target))
|
||||
elif stat.S_ISDIR(permbits) or stat.S_IXUSR & permbits:
|
||||
zipfp.extract(info.filename, path=ndk_base)
|
||||
os.chmod(os.path.join(ndk_base, info.filename), 0o755) # nosec bandit B103
|
||||
else:
|
||||
zipfp.extract(info.filename, path=ndk_base)
|
||||
os.chmod(os.path.join(ndk_base, info.filename), 0o644) # nosec bandit B103
|
||||
os.remove(zipball)
|
||||
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"""
|
||||
NDKS = [
|
||||
{
|
||||
"release": "r10e",
|
||||
"sha256": "ee5f405f3b57c4f5c3b3b8b5d495ae12b660e03d2112e4ed5c728d349f1e520c",
|
||||
"url": "https://dl.google.com/android/repository/android-ndk-r10e-linux-x86_64.zip"
|
||||
},
|
||||
{
|
||||
"release": "r11",
|
||||
"revision": "11.0.2655954",
|
||||
"sha256": "59ab44f7ee6201df4381844736fdc456134c7f7660151003944a3017a0dcce97",
|
||||
"url": "https://dl.google.com/android/repository/android-ndk-r11-linux-x86_64.zip"
|
||||
},
|
||||
{
|
||||
"release": "r11b",
|
||||
"revision": "11.1.2683735",
|
||||
"sha256": "51d429bfda8bbe038683ed7ae7acc03b39604b84711901b555fe18c698867e53",
|
||||
"url": "https://dl.google.com/android/repository/android-ndk-r11b-linux-x86_64.zip"
|
||||
},
|
||||
{
|
||||
"release": "r11c",
|
||||
"revision": "11.2.2725575",
|
||||
"sha256": "ba85dbe4d370e4de567222f73a3e034d85fc3011b3cbd90697f3e8dcace3ad94",
|
||||
"url": "https://dl.google.com/android/repository/android-ndk-r11c-linux-x86_64.zip"
|
||||
},
|
||||
{
|
||||
"release": "r12",
|
||||
"revision": "12.0.2931149",
|
||||
"sha256": "7876e3b99f3596a3215ecf4e9f152d24b82dfdf2bbe7d3a38c423ae6a3edee79",
|
||||
"url": "https://dl.google.com/android/repository/android-ndk-r12-linux-x86_64.zip"
|
||||
},
|
||||
{
|
||||
"release": "r12b",
|
||||
"revision": "12.1.2977051",
|
||||
"sha256": "eafae2d614e5475a3bcfd7c5f201db5b963cc1290ee3e8ae791ff0c66757781e",
|
||||
"url": "https://dl.google.com/android/repository/android-ndk-r12b-linux-x86_64.zip"
|
||||
},
|
||||
{
|
||||
"release": "r13",
|
||||
"revision": "13.0.3315539",
|
||||
"sha256": "0a1dbd216386399e2979c17a48f65b962bf7ddc0c2311ef35d902b90c298c400",
|
||||
"url": "https://dl.google.com/android/repository/android-ndk-r13-linux-x86_64.zip"
|
||||
},
|
||||
{
|
||||
"release": "r13b",
|
||||
"revision": "13.1.3345770",
|
||||
"sha256": "3524d7f8fca6dc0d8e7073a7ab7f76888780a22841a6641927123146c3ffd29c",
|
||||
"url": "https://dl.google.com/android/repository/android-ndk-r13b-linux-x86_64.zip"
|
||||
},
|
||||
{
|
||||
"release": "r14",
|
||||
"revision": "14.0.3770861",
|
||||
"sha256": "3e622c2c9943964ea44cd56317d0769ed4c811bb4b40dc45b1f6965e4db9aa44",
|
||||
"url": "https://dl.google.com/android/repository/android-ndk-r14-linux-x86_64.zip"
|
||||
},
|
||||
{
|
||||
"release": "r14b",
|
||||
"revision": "14.1.3816874",
|
||||
"sha256": "0ecc2017802924cf81fffc0f51d342e3e69de6343da892ac9fa1cd79bc106024",
|
||||
"url": "https://dl.google.com/android/repository/android-ndk-r14b-linux-x86_64.zip"
|
||||
},
|
||||
{
|
||||
"release": "r15",
|
||||
"revision": "15.0.4075724",
|
||||
"sha256": "078eb7d28c3fcf45841f5baf6e6582e7fd5b73d8e8c4e0101df490f51abd37b6",
|
||||
"url": "https://dl.google.com/android/repository/android-ndk-r15-linux-x86_64.zip"
|
||||
},
|
||||
{
|
||||
"release": "r15b",
|
||||
"revision": "15.1.4119039",
|
||||
"sha256": "d1ce63f68cd806b5a992d4e5aa60defde131c243bf523cdfc5b67990ef0ee0d3",
|
||||
"url": "https://dl.google.com/android/repository/android-ndk-r15b-linux-x86_64.zip"
|
||||
},
|
||||
{
|
||||
"release": "r15c",
|
||||
"revision": "15.2.4203891",
|
||||
"sha256": "f01788946733bf6294a36727b99366a18369904eb068a599dde8cca2c1d2ba3c",
|
||||
"url": "https://dl.google.com/android/repository/android-ndk-r15c-linux-x86_64.zip"
|
||||
},
|
||||
{
|
||||
"release": "r16",
|
||||
"revision": "16.0.4442984",
|
||||
"sha256": "a8550b81771c67cc6ab7b479a6918d29aa78de3482901762b4f9e0132cd9672e",
|
||||
"url": "https://dl.google.com/android/repository/android-ndk-r16-linux-x86_64.zip"
|
||||
},
|
||||
{
|
||||
"release": "r16b",
|
||||
"revision": "16.1.4479499",
|
||||
"sha256": "bcdea4f5353773b2ffa85b5a9a2ae35544ce88ec5b507301d8cf6a76b765d901",
|
||||
"url": "https://dl.google.com/android/repository/android-ndk-r16b-linux-x86_64.zip"
|
||||
},
|
||||
{
|
||||
"release": "r17",
|
||||
"revision": "17.0.4754217",
|
||||
"sha256": "ba3d813b47de75bc32a2f3de087f72599c6cb36fdc9686b96f517f5492ff43ca",
|
||||
"url": "https://dl.google.com/android/repository/android-ndk-r17-linux-x86_64.zip"
|
||||
},
|
||||
{
|
||||
"release": "r17b",
|
||||
"revision": "17.1.4828580",
|
||||
"sha256": "5dfbbdc2d3ba859fed90d0e978af87c71a91a5be1f6e1c40ba697503d48ccecd",
|
||||
"url": "https://dl.google.com/android/repository/android-ndk-r17b-linux-x86_64.zip"
|
||||
},
|
||||
{
|
||||
"release": "r17c",
|
||||
"revision": "17.2.4988734",
|
||||
"sha256": "3f541adbd0330a9205ba12697f6d04ec90752c53d6b622101a2a8a856e816589",
|
||||
"url": "https://dl.google.com/android/repository/android-ndk-r17c-linux-x86_64.zip"
|
||||
},
|
||||
{
|
||||
"release": "r18b",
|
||||
"revision": "18.1.5063045",
|
||||
"sha256": "4f61cbe4bbf6406aa5ef2ae871def78010eed6271af72de83f8bd0b07a9fd3fd",
|
||||
"url": "https://dl.google.com/android/repository/android-ndk-r18b-linux-x86_64.zip"
|
||||
},
|
||||
{
|
||||
"release": "r19",
|
||||
"revision": "19.0.5232133",
|
||||
"sha256": "c0a2425206191252197b97ea5fcc7eab9f693a576e69ef4773a9ed1690feed53",
|
||||
"url": "https://dl.google.com/android/repository/android-ndk-r19-linux-x86_64.zip"
|
||||
},
|
||||
{
|
||||
"release": "r19b",
|
||||
"revision": "19.1.5304403",
|
||||
"sha256": "0fbb1645d0f1de4dde90a4ff79ca5ec4899c835e729d692f433fda501623257a",
|
||||
"url": "https://dl.google.com/android/repository/android-ndk-r19b-linux-x86_64.zip"
|
||||
},
|
||||
{
|
||||
"release": "r19c",
|
||||
"revision": "19.2.5345600",
|
||||
"sha256": "4c62514ec9c2309315fd84da6d52465651cdb68605058f231f1e480fcf2692e1",
|
||||
"url": "https://dl.google.com/android/repository/android-ndk-r19c-linux-x86_64.zip"
|
||||
},
|
||||
{
|
||||
"release": "r20",
|
||||
"revision": "20.0.5594570",
|
||||
"sha256": "57435158f109162f41f2f43d5563d2164e4d5d0364783a9a6fab3ef12cb06ce0",
|
||||
"url": "https://dl.google.com/android/repository/android-ndk-r20-linux-x86_64.zip"
|
||||
},
|
||||
{
|
||||
"release": "r20b",
|
||||
"revision": "20.1.5948944",
|
||||
"sha256": "8381c440fe61fcbb01e209211ac01b519cd6adf51ab1c2281d5daad6ca4c8c8c",
|
||||
"url": "https://dl.google.com/android/repository/android-ndk-r20b-linux-x86_64.zip"
|
||||
},
|
||||
{
|
||||
"release": "r21",
|
||||
"revision": "21.0.6113669",
|
||||
"sha256": "b65ea2d5c5b68fb603626adcbcea6e4d12c68eb8a73e373bbb9d23c252fc647b",
|
||||
"url": "https://dl.google.com/android/repository/android-ndk-r21-linux-x86_64.zip"
|
||||
},
|
||||
{
|
||||
"release": "r21b",
|
||||
"revision": "21.1.6352462",
|
||||
"sha256": "0c7af5dd23c5d2564915194e71b1053578438ac992958904703161c7672cbed7",
|
||||
"url": "https://dl.google.com/android/repository/android-ndk-r21b-linux-x86_64.zip"
|
||||
},
|
||||
{
|
||||
"release": "r21c",
|
||||
"revision": "21.2.6472646",
|
||||
"sha256": "214ebfcfa5108ba78f5b2cc8db4d575068f9c973ac7f27d2fa1987dfdb76c9e7",
|
||||
"url": "https://dl.google.com/android/repository/android-ndk-r21c-linux-x86_64.zip"
|
||||
},
|
||||
{
|
||||
"release": "r21d",
|
||||
"revision": "21.3.6528147",
|
||||
"sha256": "dd6dc090b6e2580206c64bcee499bc16509a5d017c6952dcd2bed9072af67cbd",
|
||||
"url": "https://dl.google.com/android/repository/android-ndk-r21d-linux-x86_64.zip"
|
||||
},
|
||||
{
|
||||
"release": "r21e",
|
||||
"revision": "21.4.7075529",
|
||||
"sha256": "ad7ce5467e18d40050dc51b8e7affc3e635c85bd8c59be62de32352328ed467e",
|
||||
"url": "https://dl.google.com/android/repository/android-ndk-r21e-linux-x86_64.zip"
|
||||
},
|
||||
{
|
||||
"release": "r22",
|
||||
"revision": "22.0.7026061",
|
||||
"sha256": "d37fc69cd81e5660234a686e20adef39bc0244086e4d66525a40af771c020718",
|
||||
"url": "https://dl.google.com/android/repository/android-ndk-r22-linux-x86_64.zip"
|
||||
},
|
||||
{
|
||||
"release": "r22b",
|
||||
"revision": "22.1.7171670",
|
||||
"sha256": "ac3a0421e76f71dd330d0cd55f9d99b9ac864c4c034fc67e0d671d022d4e806b",
|
||||
"url": "https://dl.google.com/android/repository/android-ndk-r22b-linux-x86_64.zip"
|
||||
},
|
||||
{
|
||||
"release": "r23",
|
||||
"revision": "23.0.7599858",
|
||||
"sha256": "e3eacf80016b91d4cd2c8ca9f34eebd32df912bb799c859cc5450b6b19277b4f",
|
||||
"url": "https://dl.google.com/android/repository/android-ndk-r23-linux.zip"
|
||||
},
|
||||
{
|
||||
"release": "r23b",
|
||||
"revision": "23.1.7779620",
|
||||
"sha256": "c6e97f9c8cfe5b7be0a9e6c15af8e7a179475b7ded23e2d1c1fa0945d6fb4382",
|
||||
"url": "https://dl.google.com/android/repository/android-ndk-r23b-linux.zip"
|
||||
},
|
||||
{
|
||||
"release": "r23c",
|
||||
"revision": "23.2.8568313",
|
||||
"sha256": "6ce94604b77d28113ecd588d425363624a5228d9662450c48d2e4053f8039242",
|
||||
"url": "https://dl.google.com/android/repository/android-ndk-r23c-linux.zip"
|
||||
},
|
||||
{
|
||||
"release": "r24",
|
||||
"revision": "24.0.8215888",
|
||||
"sha256": "caac638f060347c9aae994e718ba00bb18413498d8e0ad4e12e1482964032997",
|
||||
"url": "https://dl.google.com/android/repository/android-ndk-r24-linux.zip"
|
||||
},
|
||||
{
|
||||
"release": "r25",
|
||||
"revision": "25.0.8775105",
|
||||
"sha256": "cd661aeda5d9b7cfb6e64bd80737c274d7c1c0d026df2f85be3bf3327b25e545",
|
||||
"url": "https://dl.google.com/android/repository/android-ndk-r25-linux.zip"
|
||||
},
|
||||
{
|
||||
"release": "r25b",
|
||||
"revision": "25.1.8937393",
|
||||
"sha256": "403ac3e3020dd0db63a848dcaba6ceb2603bf64de90949d5c4361f848e44b005",
|
||||
"url": "https://dl.google.com/android/repository/android-ndk-r25b-linux.zip"
|
||||
},
|
||||
{
|
||||
"release": "r25c",
|
||||
"revision": "25.2.9519653",
|
||||
"sha256": "769ee342ea75f80619d985c2da990c48b3d8eaf45f48783a2d48870d04b46108",
|
||||
"url": "https://dl.google.com/android/repository/android-ndk-r25c-linux.zip"
|
||||
}
|
||||
]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue