1*cf78ab8cSAndroid Build Coastguard Worker#!/usr/bin/env python3 2*cf78ab8cSAndroid Build Coastguard Worker# 3*cf78ab8cSAndroid Build Coastguard Worker# Copyright 2024 - The Android Open Source Project 4*cf78ab8cSAndroid Build Coastguard Worker# 5*cf78ab8cSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the', help="License"); 6*cf78ab8cSAndroid Build Coastguard Worker# you may not use this file except in compliance with the License. 7*cf78ab8cSAndroid Build Coastguard Worker# You may obtain a copy of the License at 8*cf78ab8cSAndroid Build Coastguard Worker# 9*cf78ab8cSAndroid Build Coastguard Worker# http://www.apache.org/licenses/LICENSE-2.0 10*cf78ab8cSAndroid Build Coastguard Worker# 11*cf78ab8cSAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software 12*cf78ab8cSAndroid Build Coastguard Worker# distributed under the License is distributed on an', help="AS IS" BASIS, 13*cf78ab8cSAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14*cf78ab8cSAndroid Build Coastguard Worker# See the License for the specific language governing permissions and 15*cf78ab8cSAndroid Build Coastguard Worker# limitations under the License. 16*cf78ab8cSAndroid Build Coastguard Worker 17*cf78ab8cSAndroid Build Coastguard Workerimport logging 18*cf78ab8cSAndroid Build Coastguard Workerfrom pathlib import Path 19*cf78ab8cSAndroid Build Coastguard Workerimport platform 20*cf78ab8cSAndroid Build Coastguard Workerimport zipfile 21*cf78ab8cSAndroid Build Coastguard Worker 22*cf78ab8cSAndroid Build Coastguard Workerfrom tasks.task import Task 23*cf78ab8cSAndroid Build Coastguard Workerfrom utils import platform_to_cmake_target 24*cf78ab8cSAndroid Build Coastguard Worker 25*cf78ab8cSAndroid Build Coastguard Worker 26*cf78ab8cSAndroid Build Coastguard Workerclass ZipArtifactTask(Task): 27*cf78ab8cSAndroid Build Coastguard Worker 28*cf78ab8cSAndroid Build Coastguard Worker def __init__(self, args): 29*cf78ab8cSAndroid Build Coastguard Worker super().__init__("ZipArtifact") 30*cf78ab8cSAndroid Build Coastguard Worker self.build_id = args.build_id 31*cf78ab8cSAndroid Build Coastguard Worker self.out = Path(args.out_dir) 32*cf78ab8cSAndroid Build Coastguard Worker if args.target: 33*cf78ab8cSAndroid Build Coastguard Worker self.target = args.target.lower() 34*cf78ab8cSAndroid Build Coastguard Worker else: 35*cf78ab8cSAndroid Build Coastguard Worker self.target = platform.system().lower() 36*cf78ab8cSAndroid Build Coastguard Worker self.dist = Path(args.dist_dir).absolute() 37*cf78ab8cSAndroid Build Coastguard Worker 38*cf78ab8cSAndroid Build Coastguard Worker def do_run(self): 39*cf78ab8cSAndroid Build Coastguard Worker # Make sure the dist directory exists. 40*cf78ab8cSAndroid Build Coastguard Worker self.dist.mkdir(exist_ok=True, parents=True) 41*cf78ab8cSAndroid Build Coastguard Worker 42*cf78ab8cSAndroid Build Coastguard Worker # Zip results.. 43*cf78ab8cSAndroid Build Coastguard Worker zip_fname = ( 44*cf78ab8cSAndroid Build Coastguard Worker self.dist 45*cf78ab8cSAndroid Build Coastguard Worker / f"netsim-{platform_to_cmake_target(self.target)}-{self.build_id}.zip" 46*cf78ab8cSAndroid Build Coastguard Worker ) 47*cf78ab8cSAndroid Build Coastguard Worker search_dir = self.out / "distribution" / "emulator" 48*cf78ab8cSAndroid Build Coastguard Worker logging.info("Creating zip file: %s", zip_fname) 49*cf78ab8cSAndroid Build Coastguard Worker with zipfile.ZipFile( 50*cf78ab8cSAndroid Build Coastguard Worker zip_fname, "w", zipfile.ZIP_DEFLATED, allowZip64=True 51*cf78ab8cSAndroid Build Coastguard Worker ) as zipf: 52*cf78ab8cSAndroid Build Coastguard Worker logging.info("Searching %s", search_dir) 53*cf78ab8cSAndroid Build Coastguard Worker for fname in search_dir.glob("**/*"): 54*cf78ab8cSAndroid Build Coastguard Worker arcname = fname.relative_to(search_dir) 55*cf78ab8cSAndroid Build Coastguard Worker logging.info("Adding %s as %s", fname, arcname) 56*cf78ab8cSAndroid Build Coastguard Worker zipf.write(fname, arcname) 57*cf78ab8cSAndroid Build Coastguard Worker return True 58