Scripts: Handle "nothing installed" case gracefully for plugin builds

When (temporarily) turning off the QmlDesigner build, the separate
QmlDesigner plugin repository build results in nothing being installed.
The 7zip call and signing code then fails if the installation directory
isn't even created as a consequence.

Change-Id: I14cc9504b6a5d653ab94845423e266d2cb8caf42
Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
Eike Ziller
2025-06-13 15:41:08 +02:00
parent c028858639
commit ef02bd8ea9

View File

@@ -142,6 +142,8 @@ def build(args, paths):
paths.build) paths.build)
def package(args, paths): def package(args, paths):
if not os.path.exists(paths.install):
os.makedirs(paths.install)
if not os.path.exists(paths.result): if not os.path.exists(paths.result):
os.makedirs(paths.result) os.makedirs(paths.result)
if common.is_windows_platform() and args.sign_command: if common.is_windows_platform() and args.sign_command:
@@ -165,14 +167,19 @@ def package(args, paths):
if os.environ.get('SIGNING_IDENTITY'): if os.environ.get('SIGNING_IDENTITY'):
signed_install_path = paths.install + '-signed' signed_install_path = paths.install + '-signed'
common.copytree(paths.install, signed_install_path, symlinks=True) common.copytree(paths.install, signed_install_path, symlinks=True)
zippattern = None
if os.path.exists(signed_install_path):
apps = [d for d in os.listdir(signed_install_path) if d.endswith('.app')] apps = [d for d in os.listdir(signed_install_path) if d.endswith('.app')]
if apps: if apps:
app = apps[0] zippattern = apps[0]
common.conditional_sign_recursive(os.path.join(signed_install_path, app), if not zippattern:
os.makedirs(signed_install_path) # if nothing was installed
zippattern = '*'
common.conditional_sign_recursive(signed_install_path,
lambda ff: ff.endswith('.dylib')) lambda ff: ff.endswith('.dylib'))
common.check_print_call(zip common.check_print_call(zip
+ [os.path.join(paths.result, args.name + '-signed.7z'), + [os.path.join(paths.result, args.name + '-signed.7z'),
app], zippattern],
signed_install_path) signed_install_path)
def get_paths(args): def get_paths(args):