Skip to content

Commit 4539118

Browse files
andy31415pull[bot]
authored andcommitted
Avoid usage of a separate build environment for compile time codegen (#23861)
* Try to disable virtual env usage for codegen * Fix IDL paths. also add missing callbackstubsource.jinja from the list for change detection * Restyle * Update chip script: need to ensure build environment is set up * Restyle * Fix typo * Fix cirque typo * Switch bootstrap with activate
1 parent db3e2e1 commit 4539118

File tree

4 files changed

+60
-34
lines changed

4 files changed

+60
-34
lines changed

build/chip/chip_codegen.gni

+8-2
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import("//build_overrides/chip.gni")
1717
import("//build_overrides/pigweed.gni")
1818

1919
import("$dir_pw_build/python.gni")
20+
import("${chip_root}/scripts/idl/files.gni")
2021

2122
declare_args() {
2223
# Location where code has been pre-generated
@@ -37,6 +38,9 @@ template("_chip_build_time_codegen") {
3738
pw_python_action("${_name}_codegen") {
3839
script = "${chip_root}/scripts/codegen.py"
3940

41+
# TODO: this seems to touch internals. Is this ok? speeds up builds!
42+
_pw_internal_run_in_venv = false
43+
4044
_idl_file = invoker.input
4145
_expected_outputs = "${target_gen_dir}/${_name}.expected.outputs"
4246

@@ -52,12 +56,14 @@ template("_chip_build_time_codegen") {
5256
rebase_path(_idl_file, root_build_dir),
5357
]
5458

55-
deps = [ "${chip_root}/scripts/idl" ]
56-
5759
inputs = [
5860
_idl_file,
5961
_expected_outputs,
6062
]
63+
64+
# ensure any change in codegen files will result in a rebuild
65+
inputs += matter_idl_generator_files
66+
6167
sources = [ _idl_file ]
6268

6369
outputs = []

scripts/build/gn_gen_cirque.sh

+10-4
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,16 @@ set -x
2727

2828
env
2929

30-
echo "Build: GN configure"
30+
cd "$ROOT_PATH"
3131

32-
gn --root="$CHIP_ROOT" gen --check --fail-on-unused-args "$CHIP_ROOT/out/debug" --args='target_os="all"'"chip_build_tests=false chip_enable_wifi=false chip_im_force_fabric_quota_check=true enable_default_builds=false enable_host_gcc_build=true enable_standalone_chip_tool_build=true enable_linux_all_clusters_app_build=true enable_linux_lighting_app_build=true"
32+
echo "Ensure submodules for Linux builds are checked out"
33+
./scripts/checkout_submodules.py --shallow --platform linux
3334

34-
echo "Build: Ninja build"
35+
echo "Setup build environment"
36+
source "./scripts/activate.sh"
3537

36-
time ninja -C "$CHIP_ROOT/out/debug" all check
38+
echo "Build: GN configure"
39+
gn --root="$CHIP_ROOT" gen --check --fail-on-unused-args out/debug --args='target_os="all"'"chip_build_tests=false chip_enable_wifi=false chip_im_force_fabric_quota_check=true enable_default_builds=false enable_host_gcc_build=true enable_standalone_chip_tool_build=true enable_linux_all_clusters_app_build=true enable_linux_lighting_app_build=true"
40+
41+
echo "Build: Ninja build"
42+
time ninja -C out/debug all check

scripts/idl/BUILD.gn

+5-28
Original file line numberDiff line numberDiff line change
@@ -18,20 +18,15 @@ import("//build_overrides/chip.gni")
1818
import("//build_overrides/pigweed.gni")
1919
import("$dir_pw_build/python.gni")
2020

21+
import("${chip_root}/scripts/idl/files.gni")
22+
2123
pw_python_package("idl") {
2224
setup = [ "setup.py" ]
23-
inputs = [
25+
inputs = matter_idl_generator_templates
26+
inputs += [
2427
# Dependency grammar
2528
"matter_grammar.lark",
2629

27-
# Templates used for generation
28-
"generators/bridge/BridgeClustersCpp.jinja",
29-
"generators/bridge/BridgeClustersCommon.jinja",
30-
"generators/bridge/BridgeClustersGlobalStructs.jinja",
31-
"generators/java/ChipClustersCpp.jinja",
32-
"generators/java/ChipClustersRead.jinja",
33-
"generators/cpp/application/PluginApplicationCallbacksHeader.jinja",
34-
3530
# Unit test data
3631
"tests/available_tests.yaml",
3732
"tests/inputs/cluster_struct_attribute.matter",
@@ -70,25 +65,7 @@ pw_python_package("idl") {
7065
"tests/outputs/simple_attribute/jni/MyClusterClient-InvokeSubscribeImpl.cpp",
7166
]
7267

73-
sources = [
74-
"__init__.py",
75-
"generators/__init__.py",
76-
"generators/bridge/__init__.py",
77-
"generators/cpp/__init__.py",
78-
"generators/cpp/application/__init__.py",
79-
"generators/filters.py",
80-
"generators/java/__init__.py",
81-
"generators/types.py",
82-
"matter_idl_parser.py",
83-
"matter_idl_types.py",
84-
"xml_parser.py",
85-
"zapxml/__init__.py",
86-
"zapxml/handlers/__init__.py",
87-
"zapxml/handlers/base.py",
88-
"zapxml/handlers/context.py",
89-
"zapxml/handlers/handlers.py",
90-
"zapxml/handlers/parsing.py",
91-
]
68+
sources = matter_idl_generator_sources
9269

9370
tests = [
9471
"test_matter_idl_parser.py",

scripts/idl/files.gni

+37
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import("//build_overrides/build.gni")
2+
import("//build_overrides/chip.gni")
3+
4+
# Templates used for generation
5+
matter_idl_generator_templates = [
6+
"${chip_root}/scripts/idl/generators/bridge/BridgeClustersCpp.jinja",
7+
"${chip_root}/scripts/idl/generators/bridge/BridgeClustersCommon.jinja",
8+
"${chip_root}/scripts/idl/generators/bridge/BridgeClustersGlobalStructs.jinja",
9+
"${chip_root}/scripts/idl/generators/java/ChipClustersCpp.jinja",
10+
"${chip_root}/scripts/idl/generators/java/ChipClustersRead.jinja",
11+
"${chip_root}/scripts/idl/generators/cpp/application/CallbackStubSource.jinja",
12+
"${chip_root}/scripts/idl/generators/cpp/application/PluginApplicationCallbacksHeader.jinja",
13+
]
14+
15+
matter_idl_generator_sources = [
16+
"${chip_root}/scripts/idl/__init__.py",
17+
"${chip_root}/scripts/idl/generators/__init__.py",
18+
"${chip_root}/scripts/idl/generators/bridge/__init__.py",
19+
"${chip_root}/scripts/idl/generators/cpp/__init__.py",
20+
"${chip_root}/scripts/idl/generators/cpp/application/__init__.py",
21+
"${chip_root}/scripts/idl/generators/filters.py",
22+
"${chip_root}/scripts/idl/generators/java/__init__.py",
23+
"${chip_root}/scripts/idl/generators/types.py",
24+
"${chip_root}/scripts/idl/matter_idl_parser.py",
25+
"${chip_root}/scripts/idl/matter_idl_types.py",
26+
"${chip_root}/scripts/idl/xml_parser.py",
27+
"${chip_root}/scripts/idl/zapxml/__init__.py",
28+
"${chip_root}/scripts/idl/zapxml/handlers/__init__.py",
29+
"${chip_root}/scripts/idl/zapxml/handlers/base.py",
30+
"${chip_root}/scripts/idl/zapxml/handlers/context.py",
31+
"${chip_root}/scripts/idl/zapxml/handlers/handlers.py",
32+
"${chip_root}/scripts/idl/zapxml/handlers/parsing.py",
33+
]
34+
35+
# All the files that the matter idl infrastructure will use
36+
matter_idl_generator_files =
37+
matter_idl_generator_templates + matter_idl_generator_sources

0 commit comments

Comments
 (0)