From 53156a16f676986f7d5470ffa8f15304d108c16a Mon Sep 17 00:00:00 2001 From: Austin Bozowski Date: Tue, 24 May 2022 07:35:19 +0000 Subject: [PATCH] Move zzz to chef dir, write manifest, new opt --- examples/chef/chef.py | 21 +++++++++++++++---- examples/chef/cimanifest.json | 3 +++ .../zap-generated/CHIPClientCallbacks.h | 0 .../lighting-app/zap-generated/CHIPClusters.h | 0 .../zap-generated/IMClusterCommandHandler.cpp | 0 .../PluginApplicationCallbacks.h | 0 .../lighting-app/zap-generated/access.h | 0 .../lighting-app/zap-generated/af-gen-event.h | 0 .../zap-generated/callback-stub.cpp | 0 .../zap-generated/endpoint_config.h | 0 .../lighting-app/zap-generated/gen_config.h | 0 .../lighting-app/zap-generated/gen_tokens.h | 0 12 files changed, 20 insertions(+), 4 deletions(-) create mode 100644 examples/chef/cimanifest.json rename {zzz_generated/chef => examples/chef/zzz_generated}/lighting-app/zap-generated/CHIPClientCallbacks.h (100%) rename {zzz_generated/chef => examples/chef/zzz_generated}/lighting-app/zap-generated/CHIPClusters.h (100%) rename {zzz_generated/chef => examples/chef/zzz_generated}/lighting-app/zap-generated/IMClusterCommandHandler.cpp (100%) rename {zzz_generated/chef => examples/chef/zzz_generated}/lighting-app/zap-generated/PluginApplicationCallbacks.h (100%) rename {zzz_generated/chef => examples/chef/zzz_generated}/lighting-app/zap-generated/access.h (100%) rename {zzz_generated/chef => examples/chef/zzz_generated}/lighting-app/zap-generated/af-gen-event.h (100%) rename {zzz_generated/chef => examples/chef/zzz_generated}/lighting-app/zap-generated/callback-stub.cpp (100%) rename {zzz_generated/chef => examples/chef/zzz_generated}/lighting-app/zap-generated/endpoint_config.h (100%) rename {zzz_generated/chef => examples/chef/zzz_generated}/lighting-app/zap-generated/gen_config.h (100%) rename {zzz_generated/chef => examples/chef/zzz_generated}/lighting-app/zap-generated/gen_tokens.h (100%) diff --git a/examples/chef/chef.py b/examples/chef/chef.py index 288a3b79c70e49..2e6229bdca0ada 100755 --- a/examples/chef/chef.py +++ b/examples/chef/chef.py @@ -21,6 +21,8 @@ import textwrap import shutil import yaml +import hashlib +import json import constants import stateful_shell @@ -167,6 +169,7 @@ def main(argv: Sequence[str]) -> None: dest="tty", metavar="TTY", default=None) parser.add_option("", "--generate_zzz", help="Populates zzz_generated/chef//zap-generated with output of ZAP tool for every device in examples/chef/devices. If this flag is set, all other arguments are ignored except for --bootstrap_zap.", dest="generate_zzz", action="store_true") + parser.add_option("", "--validate_zzz", help="Checks if cached ZAP output needs to be regenrated, for use in CI. If this flag is set, all other arguments are ignored.", dest="validate_zzz", action="store_true") parser.add_option("", "--use_zzz", help="Use pre generated output from the ZAP tool found in the zzz_generated folder. Used to decrease execution time of CI jobs", dest="use_zzz", action="store_true") options, _ = parser.parse_args(argv) @@ -197,10 +200,12 @@ def main(argv: Sequence[str]) -> None: # # Populate zzz_generated # + chef_zzz_root = os.path.join(_CHEF_SCRIPT_PATH, "zzz_generated") + ci_manifest_file_name = os.path.join(_CHEF_SCRIPT_PATH, "cimanifest.json") + chef_devices_dir = os.path.join(_CHEF_SCRIPT_PATH, "devices") if options.generate_zzz: - chef_zzz_root = os.path.join(_REPO_BASE_PATH, "zzz_generated/chef") - chef_devices_dir = os.path.join(_CHEF_SCRIPT_PATH, "devices") + ci_manifest = {} print(f"Cleaning {chef_zzz_root}") if not os.path.exists(chef_zzz_root): print(f"{chef_zzz_root} doesn't exist; creating") @@ -211,9 +216,15 @@ def main(argv: Sequence[str]) -> None: os.mkdir(chef_zzz_root) print(f"Generating files in {chef_zzz_root} for all devices") for device_dir_item in os.listdir(chef_devices_dir): - target_file_ext = '.zap' + target_file_ext = ".zap" if device_dir_item.endswith(target_file_ext): device_name = device_dir_item[:-len(target_file_ext)] + device_file_path = os.path.join(chef_devices_dir, device_dir_item) + with open(device_file_path, "rb") as device_file: + device_file_data = device_file.read() + device_file_md5 = hashlib.md5(device_file_data).hexdigest() + ci_manifest[device_name] = device_file_md5 + print(f"Manifest for {device_name} : {device_file_md5}") print(f"Generating files for {device_name}") device_out_dir = os.path.join(chef_zzz_root, device_name) os.mkdir(device_out_dir) @@ -222,6 +233,8 @@ def main(argv: Sequence[str]) -> None: shell.run_cmd(f"{_REPO_BASE_PATH}/scripts/tools/zap/generate.py\ {_CHEF_SCRIPT_PATH}/devices/{device_name}.zap -o {device_out_dir}") shell.run_cmd(f"touch {device_out_dir}/af-gen-event.h") + with open(ci_manifest_file_name, "w+", encoding="utf-8") as ci_manifest_file: + ci_manifest_file.write(json.dumps(ci_manifest, indent=4)) exit(0) # @@ -314,7 +327,7 @@ def main(argv: Sequence[str]) -> None: if options.do_build: if options.use_zzz: print("Using pre-generated ZAP output") - zzz_dir = os.path.join(_REPO_BASE_PATH, "zzz_generated/chef", options.sample_device_type_name, "zap-generated") + zzz_dir = os.path.join(_CHEF_SCRIPT_PATH, "zzz_generated", options.sample_device_type_name, "zap-generated") if os.path.exists(gen_dir): shutil.rmtree(gen_dir) shutil.copytree(zzz_dir, gen_dir) diff --git a/examples/chef/cimanifest.json b/examples/chef/cimanifest.json new file mode 100644 index 00000000000000..5f4e79876f343b --- /dev/null +++ b/examples/chef/cimanifest.json @@ -0,0 +1,3 @@ +{ + "lighting-app": "41c55e72d06a04d193901d6b5487f7fa" +} \ No newline at end of file diff --git a/zzz_generated/chef/lighting-app/zap-generated/CHIPClientCallbacks.h b/examples/chef/zzz_generated/lighting-app/zap-generated/CHIPClientCallbacks.h similarity index 100% rename from zzz_generated/chef/lighting-app/zap-generated/CHIPClientCallbacks.h rename to examples/chef/zzz_generated/lighting-app/zap-generated/CHIPClientCallbacks.h diff --git a/zzz_generated/chef/lighting-app/zap-generated/CHIPClusters.h b/examples/chef/zzz_generated/lighting-app/zap-generated/CHIPClusters.h similarity index 100% rename from zzz_generated/chef/lighting-app/zap-generated/CHIPClusters.h rename to examples/chef/zzz_generated/lighting-app/zap-generated/CHIPClusters.h diff --git a/zzz_generated/chef/lighting-app/zap-generated/IMClusterCommandHandler.cpp b/examples/chef/zzz_generated/lighting-app/zap-generated/IMClusterCommandHandler.cpp similarity index 100% rename from zzz_generated/chef/lighting-app/zap-generated/IMClusterCommandHandler.cpp rename to examples/chef/zzz_generated/lighting-app/zap-generated/IMClusterCommandHandler.cpp diff --git a/zzz_generated/chef/lighting-app/zap-generated/PluginApplicationCallbacks.h b/examples/chef/zzz_generated/lighting-app/zap-generated/PluginApplicationCallbacks.h similarity index 100% rename from zzz_generated/chef/lighting-app/zap-generated/PluginApplicationCallbacks.h rename to examples/chef/zzz_generated/lighting-app/zap-generated/PluginApplicationCallbacks.h diff --git a/zzz_generated/chef/lighting-app/zap-generated/access.h b/examples/chef/zzz_generated/lighting-app/zap-generated/access.h similarity index 100% rename from zzz_generated/chef/lighting-app/zap-generated/access.h rename to examples/chef/zzz_generated/lighting-app/zap-generated/access.h diff --git a/zzz_generated/chef/lighting-app/zap-generated/af-gen-event.h b/examples/chef/zzz_generated/lighting-app/zap-generated/af-gen-event.h similarity index 100% rename from zzz_generated/chef/lighting-app/zap-generated/af-gen-event.h rename to examples/chef/zzz_generated/lighting-app/zap-generated/af-gen-event.h diff --git a/zzz_generated/chef/lighting-app/zap-generated/callback-stub.cpp b/examples/chef/zzz_generated/lighting-app/zap-generated/callback-stub.cpp similarity index 100% rename from zzz_generated/chef/lighting-app/zap-generated/callback-stub.cpp rename to examples/chef/zzz_generated/lighting-app/zap-generated/callback-stub.cpp diff --git a/zzz_generated/chef/lighting-app/zap-generated/endpoint_config.h b/examples/chef/zzz_generated/lighting-app/zap-generated/endpoint_config.h similarity index 100% rename from zzz_generated/chef/lighting-app/zap-generated/endpoint_config.h rename to examples/chef/zzz_generated/lighting-app/zap-generated/endpoint_config.h diff --git a/zzz_generated/chef/lighting-app/zap-generated/gen_config.h b/examples/chef/zzz_generated/lighting-app/zap-generated/gen_config.h similarity index 100% rename from zzz_generated/chef/lighting-app/zap-generated/gen_config.h rename to examples/chef/zzz_generated/lighting-app/zap-generated/gen_config.h diff --git a/zzz_generated/chef/lighting-app/zap-generated/gen_tokens.h b/examples/chef/zzz_generated/lighting-app/zap-generated/gen_tokens.h similarity index 100% rename from zzz_generated/chef/lighting-app/zap-generated/gen_tokens.h rename to examples/chef/zzz_generated/lighting-app/zap-generated/gen_tokens.h