|  | #!/usr/bin/env python3 | 
|  | # Copyright (c) 2021 Intel Corporation | 
|  | # | 
|  | # SPDX-License-Identifier: Apache-2.0 | 
|  |  | 
|  | import csv | 
|  | import subprocess | 
|  | from git import Git | 
|  | import pathlib | 
|  | import shutil | 
|  | import argparse | 
|  |  | 
|  | def parse_args(): | 
|  | parser = argparse.ArgumentParser( | 
|  | description="Generate footprint data based on a predefined plan.", | 
|  | allow_abbrev=False) | 
|  | parser.add_argument("-p", "--plan", help="Path of test plan", required=True) | 
|  |  | 
|  | return parser.parse_args() | 
|  |  | 
|  | def main(): | 
|  | args = parse_args() | 
|  | g = Git(".") | 
|  | version = g.describe("--abbrev=12") | 
|  | pathlib.Path(f'footprint_data/{version}').mkdir(exist_ok=True, parents=True) | 
|  |  | 
|  | with open(args.plan) as csvfile: | 
|  | csvreader = csv.reader(csvfile) | 
|  | for row in csvreader: | 
|  | name=row[0] | 
|  | feature=row[1] | 
|  | board=row[2] | 
|  | app=row[3] | 
|  | options=row[4] | 
|  |  | 
|  | cmd = ['west', | 
|  | 'build', | 
|  | '-d', | 
|  | f'out/{name}/{feature}/{board}', | 
|  | '-b', | 
|  | board, | 
|  | f'{app}', | 
|  | '-t', | 
|  | 'footprint'] | 
|  |  | 
|  | if options != '': | 
|  | cmd += ['--', f'{options}'] | 
|  |  | 
|  | print(" ".join(cmd)) | 
|  |  | 
|  |  | 
|  | try: | 
|  | subprocess.check_output(cmd, stderr=subprocess.STDOUT, timeout=120, universal_newlines=True) | 
|  | print("Copying files...") | 
|  | pathlib.Path(f'footprint_data/{version}/{name}/{feature}/{board}').mkdir(parents=True, exist_ok=True) | 
|  |  | 
|  | shutil.copy(f'out/{name}/{feature}/{board}/ram.json', f'footprint_data/{version}/{name}/{feature}/{board}') | 
|  | shutil.copy(f'out/{name}/{feature}/{board}/rom.json', f'footprint_data/{version}/{name}/{feature}/{board}') | 
|  | except subprocess.CalledProcessError as exc: | 
|  | print("Status : FAIL", exc.returncode, exc.output) | 
|  |  | 
|  |  | 
|  | if __name__ == "__main__": | 
|  | main() |