Merge branch 'jorio-master'

This commit is contained in:
Valentin Niess
2025-02-10 22:27:16 +01:00
3 changed files with 38 additions and 16 deletions

View File

@@ -27,6 +27,8 @@ def main():
help='Command to execute',
dest='command')
parser.add_argument('-a', '--appimagetool-version',
help='set appimagetool version')
parser.add_argument('-q', '--quiet', help='disable logging',
dest='verbosity', action='store_const', const='ERROR')
parser.add_argument('-v', '--verbose', help='print extra information',
@@ -98,6 +100,10 @@ def main():
from .utils import log
log.set_level(args.verbosity)
if args.appimagetool_version:
from .utils import deps
deps.APPIMAGETOOL_VERSION = args.appimagetool_version
# check if no arguments are passed
if args.command is None:
parser.print_help()

View File

@@ -5,7 +5,7 @@ import subprocess
import sys
from ..utils.compat import decode
from ..utils.deps import APPIMAGETOOL, ensure_appimagetool
from ..utils.deps import ensure_appimagetool
from ..utils.docker import docker_run
from ..utils.fs import copy_tree
from ..utils.log import debug, log
@@ -22,10 +22,10 @@ def build_appimage(appdir=None, destination=None):
appdir = 'AppDir'
log('BUILD', appdir)
ensure_appimagetool()
appimagetool = ensure_appimagetool()
arch = platform.machine()
cmd = ['ARCH=' + arch, APPIMAGETOOL, '--no-appstream', appdir]
cmd = ['ARCH=' + arch, appimagetool, '--no-appstream', appdir]
if destination is not None:
cmd.append(destination)
cmd = ' '.join(cmd)
@@ -45,7 +45,8 @@ def build_appimage(appdir=None, destination=None):
elif out:
out = out.replace('%', '%%')[:-1]
for line in out.split(os.linesep):
if line.startswith('WARNING'):
if line.startswith('WARNING') and \
not line[9:].startswith('zsyncmake command is missing'):
log('WARNING', line[9:])
elif line.startswith('Error'):
raise RuntimeError(line)

View File

@@ -19,29 +19,47 @@ _ARCH = platform.machine()
PREFIX = os.path.abspath(os.path.dirname(__file__) + '/..')
'''Package installation prefix'''
APPIMAGETOOL = os.path.expanduser('~/.local/bin/appimagetool')
APPIMAGETOOL_DIR = os.path.expanduser('~/.local/bin')
'''Location of the appimagetool binary'''
APPIMAGETOOL_VERSION = '12'
'''Version of the appimagetool binary'''
EXCLUDELIST = PREFIX + '/data/excludelist'
'''AppImage exclusion list'''
PATCHELF = os.path.expanduser('~/.local/bin/patchelf')
'''Location of the PatchELF binary'''
def ensure_appimagetool():
'''Fetch appimagetool from the web if not available locally
'''
if os.path.exists(APPIMAGETOOL):
return False
if APPIMAGETOOL_VERSION == '12':
appimagetool_name = 'appimagetool'
else:
appimagetool_name = 'appimagetool-' + APPIMAGETOOL_VERSION
appimagetool = os.path.join(APPIMAGETOOL_DIR, appimagetool_name)
appdir_name = '.'.join(('', appimagetool_name, 'appdir', _ARCH))
appdir = os.path.join(APPIMAGETOOL_DIR, appdir_name)
apprun = os.path.join(appdir, 'AppRun')
if os.path.exists(apprun):
return apprun
appimage = 'appimagetool-{0:}.AppImage'.format(_ARCH)
baseurl = 'https://github.com/AppImage/AppImageKit/releases/' \
'download/12'
if APPIMAGETOOL_VERSION in map(str, range(1, 14)):
repository = 'AppImageKit'
else:
repository = 'appimagetool'
baseurl = os.path.join(
'https://github.com/AppImage',
repository,
'releases/download',
APPIMAGETOOL_VERSION
)
log('INSTALL', 'appimagetool from %s', baseurl)
appdir_name = '.appimagetool.appdir'.format(_ARCH)
appdir = os.path.join(os.path.dirname(APPIMAGETOOL), appdir_name)
if not os.path.exists(appdir):
make_tree(os.path.dirname(appdir))
with TemporaryDirectory() as tmpdir:
@@ -50,10 +68,7 @@ def ensure_appimagetool():
system(('./' + appimage, '--appimage-extract'))
copy_tree('squashfs-root', appdir)
if not os.path.exists(APPIMAGETOOL):
os.symlink(appdir_name + '/AppRun', APPIMAGETOOL)
return True
return apprun
# Installers for dependencies