#!/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