Merge "Specify implicit deps of a genrule" into main
diff --git a/Android.bp b/Android.bp
index d668c2b..87e01a1 100644
--- a/Android.bp
+++ b/Android.bp
@@ -2842,6 +2842,9 @@
"external/perfetto/protos/perfetto/config/android/surfaceflinger_layers_config.gen.cc",
"external/perfetto/protos/perfetto/config/android/surfaceflinger_transactions_config.gen.cc",
],
+ tool_files: [
+ "protos/perfetto/common/android_log_constants.proto",
+ ],
}
// GN: //protos/perfetto/config/android:cpp
@@ -2878,6 +2881,9 @@
".",
"protos",
],
+ tool_files: [
+ "protos/perfetto/common/android_log_constants.proto",
+ ],
}
// GN: //protos/perfetto/config/android:lite
@@ -2909,6 +2915,9 @@
"external/perfetto/protos/perfetto/config/android/surfaceflinger_layers_config.pb.cc",
"external/perfetto/protos/perfetto/config/android/surfaceflinger_transactions_config.pb.cc",
],
+ tool_files: [
+ "protos/perfetto/common/android_log_constants.proto",
+ ],
}
// GN: //protos/perfetto/config/android:lite
@@ -2944,6 +2953,9 @@
".",
"protos",
],
+ tool_files: [
+ "protos/perfetto/common/android_log_constants.proto",
+ ],
}
// GN: //protos/perfetto/config/android:zero
@@ -2976,6 +2988,9 @@
"external/perfetto/protos/perfetto/config/android/surfaceflinger_layers_config.pbzero.cc",
"external/perfetto/protos/perfetto/config/android/surfaceflinger_transactions_config.pbzero.cc",
],
+ tool_files: [
+ "protos/perfetto/common/android_log_constants.proto",
+ ],
}
// GN: //protos/perfetto/config/android:zero
@@ -3012,6 +3027,9 @@
".",
"protos",
],
+ tool_files: [
+ "protos/perfetto/common/android_log_constants.proto",
+ ],
}
// GN: //protos/perfetto/config:cpp
diff --git a/tools/gen_android_bp b/tools/gen_android_bp
index 552c7d3..176a8d5 100755
--- a/tools/gen_android_bp
+++ b/tools/gen_android_bp
@@ -182,6 +182,15 @@
# The directory where the generated perfetto_build_flags.h will be copied into.
buildflags_dir = 'include/perfetto/base/build_configs/android_tree'
+# Map of protos to transitive proto deps
+# When generating Android.bp files, these transitive deps will be added to
+# `tool_files` so that aprotoc can run inside a sandbox.
+# TODO(b/304495403): This should not be manually generated
+proto_to_transitive_proto_deps = {
+ 'protos/perfetto/config/android/android_log_config.proto': [
+ 'protos/perfetto/common/android_log_constants.proto',
+ ],
+}
def enumerate_data_deps():
with open(os.path.join(ROOT_DIR, 'tools', 'test_data.txt')) as f:
@@ -745,11 +754,20 @@
blueprint.add_module(source_module)
source_module.srcs.update(
gn_utils.label_to_path(src) for src in target.sources)
+ # Add the imported proto file as a tool_file dep so that this action can be
+ # sandboxed.
+ tool_files = []
+ for proto, transitive_proto_deps in proto_to_transitive_proto_deps.items():
+ if proto in source_module.srcs:
+ tool_files.extend(transitive_proto_deps)
+
+ source_module.tool_files = tool_files
header_module = Module('genrule', source_module_name + '_headers',
target.name)
blueprint.add_module(header_module)
header_module.srcs = set(source_module.srcs)
+ header_module.tool_files = tool_files
# TODO(primiano): at some point we should remove this. This was introduced
# by aosp/1108421 when adding "protos/" to .proto include paths, in order to