mirror of
https://gitlab.com/fdroid/fdroidserver.git
synced 2024-10-05 18:50:09 +02:00
install_ndk: cleanup tempdir
This commit is contained in:
parent
b285603e43
commit
4a6ccae71a
@ -4253,47 +4253,48 @@ def _install_ndk(ndk):
|
|||||||
raise FDroidException("NDK %s not found" % ndk)
|
raise FDroidException("NDK %s not found" % ndk)
|
||||||
ndk_base = os.path.join(config['sdk_path'], 'ndk')
|
ndk_base = os.path.join(config['sdk_path'], 'ndk')
|
||||||
logging.info(_('Downloading %s') % url)
|
logging.info(_('Downloading %s') % url)
|
||||||
zipball = os.path.join(
|
with tempfile.TemporaryDirectory(prefix='android-ndk-') as ndk_dir:
|
||||||
tempfile.mkdtemp(prefix='android-ndk-'),
|
zipball = os.path.join(
|
||||||
os.path.basename(url)
|
ndk_dir,
|
||||||
)
|
os.path.basename(url)
|
||||||
net.download_file(url, zipball)
|
)
|
||||||
calced = sha256sum(zipball)
|
net.download_file(url, zipball)
|
||||||
if sha256 != calced:
|
calced = sha256sum(zipball)
|
||||||
raise FDroidException('SHA-256 %s does not match expected for %s (%s)' % (calced, url, sha256))
|
if sha256 != calced:
|
||||||
logging.info(_('Unzipping to %s') % ndk_base)
|
raise FDroidException('SHA-256 %s does not match expected for %s (%s)' % (calced, url, sha256))
|
||||||
with zipfile.ZipFile(zipball) as zipfp:
|
logging.info(_('Unzipping to %s') % ndk_base)
|
||||||
for info in zipfp.infolist():
|
with zipfile.ZipFile(zipball) as zipfp:
|
||||||
permbits = info.external_attr >> 16
|
for info in zipfp.infolist():
|
||||||
if stat.S_ISLNK(permbits):
|
permbits = info.external_attr >> 16
|
||||||
link = os.path.join(ndk_base, info.filename)
|
if stat.S_ISLNK(permbits):
|
||||||
link_target = zipfp.read(info).decode()
|
link = os.path.join(ndk_base, info.filename)
|
||||||
link_dir = os.path.dirname(link)
|
link_target = zipfp.read(info).decode()
|
||||||
os.makedirs(link_dir, 0o755, True) # ensure intermediate directories are created
|
link_dir = os.path.dirname(link)
|
||||||
os.symlink(link_target, link)
|
os.makedirs(link_dir, 0o755, True) # ensure intermediate directories are created
|
||||||
|
os.symlink(link_target, link)
|
||||||
|
|
||||||
real_target = os.path.realpath(link)
|
real_target = os.path.realpath(link)
|
||||||
if not real_target.startswith(ndk_base):
|
if not real_target.startswith(ndk_base):
|
||||||
os.remove(link)
|
os.remove(link)
|
||||||
logging.error(_('Unexpected symlink target: {link} -> {target}')
|
logging.error(_('Unexpected symlink target: {link} -> {target}')
|
||||||
.format(link=link, target=real_target))
|
.format(link=link, target=real_target))
|
||||||
elif stat.S_ISDIR(permbits) or stat.S_IXUSR & permbits:
|
elif stat.S_ISDIR(permbits) or stat.S_IXUSR & permbits:
|
||||||
zipfp.extract(info.filename, path=ndk_base)
|
zipfp.extract(info.filename, path=ndk_base)
|
||||||
os.chmod(os.path.join(ndk_base, info.filename), 0o755) # nosec bandit B103
|
os.chmod(os.path.join(ndk_base, info.filename), 0o755) # nosec bandit B103
|
||||||
else:
|
else:
|
||||||
zipfp.extract(info.filename, path=ndk_base)
|
zipfp.extract(info.filename, path=ndk_base)
|
||||||
os.chmod(os.path.join(ndk_base, info.filename), 0o644) # nosec bandit B103
|
os.chmod(os.path.join(ndk_base, info.filename), 0o644) # nosec bandit B103
|
||||||
os.remove(zipball)
|
os.remove(zipball)
|
||||||
for extracted in glob.glob(os.path.join(ndk_base, '*')):
|
for extracted in glob.glob(os.path.join(ndk_base, '*')):
|
||||||
version = get_ndk_version(extracted)
|
version = get_ndk_version(extracted)
|
||||||
if os.path.basename(extracted) != version:
|
if os.path.basename(extracted) != version:
|
||||||
ndk_dir = os.path.join(ndk_base, version)
|
ndk_dir = os.path.join(ndk_base, version)
|
||||||
os.rename(extracted, ndk_dir)
|
os.rename(extracted, ndk_dir)
|
||||||
if 'ndk_paths' not in config:
|
if 'ndk_paths' not in config:
|
||||||
config['ndk_paths'] = dict()
|
config['ndk_paths'] = dict()
|
||||||
config['ndk_paths'][ndk] = ndk_dir
|
config['ndk_paths'][ndk] = ndk_dir
|
||||||
logging.info(_('Set NDK {release} ({version}) up')
|
logging.info(_('Set NDK {release} ({version}) up')
|
||||||
.format(release=ndk, version=version))
|
.format(release=ndk, version=version))
|
||||||
|
|
||||||
|
|
||||||
"""Derived from https://gitlab.com/fdroid/android-sdk-transparency-log/-/blob/master/checksums.json"""
|
"""Derived from https://gitlab.com/fdroid/android-sdk-transparency-log/-/blob/master/checksums.json"""
|
||||||
|
Loading…
Reference in New Issue
Block a user