| #!/usr/bin/env python3 | |
| # | |
| # Copyright 2024 - The Android Open Source Project | |
| # | |
| # Licensed under the Apache License, Version 2.0 (the', help="License"); | |
| # you may not use this file except in compliance with the License. | |
| # You may obtain a copy of the License at | |
| # | |
| # http://www.apache.org/licenses/LICENSE-2.0 | |
| # | |
| # Unless required by applicable law or agreed to in writing, software | |
| # distributed under the License is distributed on an', help="AS IS" BASIS, | |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| # See the License for the specific language governing permissions and | |
| # limitations under the License. | |
| import logging | |
| from pathlib import Path | |
| import platform | |
| import zipfile | |
| from tasks.task import Task | |
| from utils import platform_to_cmake_target | |
| class ZipArtifactTask(Task): | |
| def __init__(self, args): | |
| super().__init__("ZipArtifact") | |
| self.build_id = args.build_id | |
| self.out = Path(args.out_dir) | |
| if args.target: | |
| self.target = args.target.lower() | |
| else: | |
| self.target = platform.system().lower() | |
| self.dist = Path(args.dist_dir).absolute() | |
| def do_run(self): | |
| # Make sure the dist directory exists. | |
| self.dist.mkdir(exist_ok=True, parents=True) | |
| # Zip results.. | |
| zip_fname = ( | |
| self.dist | |
| / f"netsim-{platform_to_cmake_target(self.target)}-{self.build_id}.zip" | |
| ) | |
| search_dir = self.out / "distribution" / "emulator" | |
| logging.info("Creating zip file: %s", zip_fname) | |
| with zipfile.ZipFile( | |
| zip_fname, "w", zipfile.ZIP_DEFLATED, allowZip64=True | |
| ) as zipf: | |
| logging.info("Searching %s", search_dir) | |
| for fname in search_dir.glob("**/*"): | |
| arcname = fname.relative_to(search_dir) | |
| logging.info("Adding %s as %s", fname, arcname) | |
| zipf.write(fname, arcname) | |
| return True |