Simplify proto descriptor rules

Remove a couple of unnecessary path mangling steps and
fix ftrace.descriptor generation to be in the correct place.

Bug: 139319295
Change-Id: I7165ee70f8051ef50c511e17c3dbf47986ec1f1a
diff --git a/BUILD.gn b/BUILD.gn
index b14cf0c..beee2f9 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -81,6 +81,9 @@
         # The diff testing framework depends on these descriptors.
         "protos/perfetto/metrics:descriptor",
         "protos/perfetto/trace:descriptor",
+
+        # Used in the when updating the ftrace protos
+        "protos/perfetto/trace/ftrace:descriptor",
       ]
       if (is_linux || is_android) {
         deps += [ "tools/busy_threads" ]
diff --git a/gn/standalone/proto_library.gni b/gn/standalone/proto_library.gni
index f79ae07..0180b2b 100644
--- a/gn/standalone/proto_library.gni
+++ b/gn/standalone/proto_library.gni
@@ -78,7 +78,7 @@
   protogens = []
 
   if (generate_descriptor != "") {
-    protogens += [ "$root_gen_dir/" + generate_descriptor ]
+    protogens += [ "$target_gen_dir/" + generate_descriptor ]
   }
 
   foreach(proto, protos) {
@@ -144,14 +144,13 @@
       ]
     }
     if (generate_descriptor != "") {
-      depfile = "$target_gen_dir/" +
-                rebase_path("$generate_descriptor.d", root_gen_dir)
+      depfile = "$target_gen_dir/$generate_descriptor.d"
       args += [
         "--include_imports",
         "--descriptor_set_out",
-        rebase_path("$root_gen_dir/" + generate_descriptor, root_build_dir),
+        rebase_path("$target_gen_dir/$generate_descriptor", root_build_dir),
         "--dependency_out",
-        rebase_path("$root_gen_dir/$generate_descriptor.d", root_build_dir),
+        rebase_path(depfile, root_build_dir),
       ]
     }
 
diff --git a/protos/perfetto/metrics/BUILD.gn b/protos/perfetto/metrics/BUILD.gn
index b2d7644..3d3e61d 100644
--- a/protos/perfetto/metrics/BUILD.gn
+++ b/protos/perfetto/metrics/BUILD.gn
@@ -13,9 +13,9 @@
 # limitations under the License.
 
 import("../../../gn/perfetto.gni")
+import("../../../gn/proto_descriptor.gni")
 import("../../../gn/proto_library.gni")
 import("../../../gn/protozero_library.gni")
-import("../../../gn/proto_descriptor.gni")
 
 common_sources = [ "metrics.proto" ]
 
@@ -44,7 +44,6 @@
     proto_in_dir = "$perfetto_root_path/protos"
     proto_out_dir = "$perfetto_root_path/protos"
     sources = common_sources
-    generate_descriptor =
-        "$perfetto_root_path/protos/perfetto/metrics/metrics.descriptor"
+    generate_descriptor = "metrics.descriptor"
   }
 }
diff --git a/protos/perfetto/trace/BUILD.gn b/protos/perfetto/trace/BUILD.gn
index 8c6934a..0d840d9 100644
--- a/protos/perfetto/trace/BUILD.gn
+++ b/protos/perfetto/trace/BUILD.gn
@@ -86,7 +86,7 @@
     sources = [
       "trace.proto",
     ]
-    generate_descriptor = "$perfetto_root_path/protos/trace/trace.descriptor"
+    generate_descriptor = "trace.descriptor"
     proto_in_dir = "$perfetto_root_path/protos"
     proto_out_dir = "$perfetto_root_path/protos"
   }
diff --git a/protos/perfetto/trace/ftrace/BUILD.gn b/protos/perfetto/trace/ftrace/BUILD.gn
index d6b4170..6281aa9 100644
--- a/protos/perfetto/trace/ftrace/BUILD.gn
+++ b/protos/perfetto/trace/ftrace/BUILD.gn
@@ -13,8 +13,8 @@
 # limitations under the License.
 
 import("../../../../gn/perfetto.gni")
-import("../../../../gn/protozero_library.gni")
 import("../../../../gn/proto_descriptor.gni")
+import("../../../../gn/protozero_library.gni")
 import("all_protos.gni")
 
 proto_library("lite") {
@@ -33,9 +33,10 @@
 
 if (perfetto_build_standalone) {
   proto_descriptor("descriptor") {
-    generate_descriptor =
-        "$perfetto_root_path/protos/perfetto/trace/ftrace.descriptor"
-    sources = ftrace_proto_names
+    generate_descriptor = "ftrace.descriptor"
+    sources = [
+      "ftrace_event_bundle.proto",
+    ]
     proto_in_dir = "$perfetto_root_path/protos"
     proto_out_dir = "$perfetto_root_path/protos"
   }
diff --git a/tools/diff_test_trace_processor.py b/tools/diff_test_trace_processor.py
index 627bc7d..ed72f65 100755
--- a/tools/diff_test_trace_processor.py
+++ b/tools/diff_test_trace_processor.py
@@ -150,7 +150,7 @@
   else:
     out_path = os.path.dirname(args.trace_processor)
     trace_protos_path = os.path.join(
-        out_path, 'gen', 'protos', 'trace')
+        out_path, 'gen', 'protos', 'perfetto', 'trace')
     trace_descriptor_path = os.path.join(trace_protos_path, 'trace.descriptor')
 
   if args.metrics_descriptor:
diff --git a/tools/run_ftrace_proto_gen b/tools/run_ftrace_proto_gen
index 3e9141f..c8e9ca7 100755
--- a/tools/run_ftrace_proto_gen
+++ b/tools/run_ftrace_proto_gen
@@ -16,7 +16,7 @@
   fi
 fi
 
-DESCRIPTOR='gen/protos/perfetto/trace/ftrace.descriptor'
+DESCRIPTOR='gen/protos/perfetto/trace/ftrace/ftrace.descriptor'
 "$DIR/ninja" -C "$BUILDDIR" ftrace_proto_gen $DESCRIPTOR
 
 # FIXME(fmayer): make ftrace_proto_gen independent of cwd.