diff options
author | Iikka Eklund <iikka.eklund@qt.io> | 2021-06-09 10:18:37 +0300 |
---|---|---|
committer | Jani Heikkinen <jani.heikkinen@qt.io> | 2021-06-10 14:18:48 +0000 |
commit | 7438a907924ea3e9ddf7f628fe9a1e731e921f46 (patch) | |
tree | 142f8f822a25f66dcc72eea471624be0d06843d9 | |
parent | 46678ccf74d3279e2d35bb932926731b5ad0dfd9 (diff) |
Make the event_register context manager async
As the context manager may be used for async calls make it support
those:
__enter__ -> async __aenter__
__exit__ -> async __aexit__
Fix the usage of the context manager accordingly.
Change-Id: I2c8bb0ea5182355e6a929d3828e82ebe68a5b788
Reviewed-by: Toni Saario <toni.saario@qt.io>
Reviewed-by: Jani Heikkinen <jani.heikkinen@qt.io>
-rwxr-xr-x | packaging-tools/qt6_installer/release_repo_updater.py | 31 |
1 files changed, 20 insertions, 11 deletions
diff --git a/packaging-tools/qt6_installer/release_repo_updater.py b/packaging-tools/qt6_installer/release_repo_updater.py index 283b311cb..b07cb7501 100755 --- a/packaging-tools/qt6_installer/release_repo_updater.py +++ b/packaging-tools/qt6_installer/release_repo_updater.py @@ -86,12 +86,12 @@ class event_register(object): if event_injector_path: cls.event_injector = Path(event_injector_path).resolve(strict=True) - def __enter__(self) -> 'event_register': + async def __aenter__(self) -> 'event_register': if event_register.event_injector: self.register_event(self.event_name, "START", self.summary_data, message="") return self - def __exit__(self, exc_type, exc_val, traceback) -> bool: + async def __aexit__(self, exc_type, exc_val, traceback) -> bool: ret = True if event_register.event_injector: event_type = "FINISH" @@ -499,11 +499,11 @@ async def sync_production(tasks: List[ReleaseTask], repoLayout: QtRepositoryLayo # if _all_ repository updates to production were successful then we can sync to production if syncS3: - with event_register(f"{license}: repo sync s3", event_injector, export_data): + async with event_register(f"{license}: repo sync s3", event_injector, export_data): sync_production_repositories_to_s3(stagingServer, syncS3, updatedProductionRepositories, stagingServerRoot, license) if syncExt: - with event_register(f"{license}: repo sync ext", event_injector, export_data): + async with event_register(f"{license}: repo sync ext", event_injector, export_data): await sync_production_repositories_to_ext(stagingServer, syncExt, updatedProductionRepositories, stagingServerRoot, license) log.info("Production sync trigger done!") @@ -519,12 +519,12 @@ async def handle_update(stagingServer: str, stagingServerRoot: str, license: str # get repository layout repoLayout = QtRepositoryLayout(stagingServerRoot, license, repoDomain) # this may take a while depending on how big the repositories are - with event_register(f"{license}: repo build", event_injector, export_data): + async with event_register(f"{license}: repo build", event_injector, export_data): ret = await build_online_repositories(tasks, license, installerConfigBaseDir, artifactShareBaseUrl, ifwTools, buildRepositories) if updateRepositories: - with event_register(f"{license}: repo update", event_injector, export_data): + async with event_register(f"{license}: repo update", event_injector, export_data): await update_repositories(tasks, stagingServer, stagingServerRoot, repoLayout, updateStaging, updateProduction, rta, ifwTools) if syncRepositories: @@ -639,7 +639,16 @@ def notarize_dmg(dmgPath, installerBasename) -> None: async def build_offline_tasks(stagingServer: str, stagingServerRoot: str, tasks: List[ReleaseTask], license: str, installerConfigBaseDir: str, artifactShareBaseUrl: str, - ifwTools: str, installerBuildId: str, updateStaging: bool) -> None: + ifwTools: str, installerBuildId: str, updateStaging: bool, + event_injector: str, export_data: Dict[str, str]) -> None: + async with event_register(f"{license}: offline", event_injector, export_data): + await _build_offline_tasks(stagingServer, stagingServerRoot, tasks, license, installerConfigBaseDir, + artifactShareBaseUrl, ifwTools, installerBuildId, updateStaging) + + +async def _build_offline_tasks(stagingServer: str, stagingServerRoot: str, tasks: List[ReleaseTask], license: str, + installerConfigBaseDir: str, artifactShareBaseUrl: str, + ifwTools: str, installerBuildId: str, updateStaging: bool) -> None: log.info("Offline installer task(s): %i", len(tasks)) assert license, "The 'license' must be defined!" @@ -799,10 +808,10 @@ if __name__ == "__main__": if args.build_offline: # get offline tasks tasks = release_task_reader.parse_config(args.config, task_filters=append_to_task_filters(args.task_filters, "offline")) - with event_register(f"{args.license}: offline", args.event_injector, export_data): - loop.run_until_complete(build_offline_tasks(args.staging_server, args.staging_server_root, tasks, args.license, - installerConfigBaseDir, args.artifact_share_url, args.ifw_tools, - args.offline_installer_id, args.update_staging)) + loop.run_until_complete(build_offline_tasks(args.staging_server, args.staging_server_root, tasks, args.license, + installerConfigBaseDir, args.artifact_share_url, args.ifw_tools, + args.offline_installer_id, args.update_staging, + args.event_injector, export_data)) else: # this is either repository build or repository sync build # get repository tasks tasks = release_task_reader.parse_config(args.config, task_filters=append_to_task_filters(args.task_filters, "repository")) |