| # Copyright 2026 The Fuchsia Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import("//build/testing/golden_files.gni") |
| import("//third_party/protobuf/proto_library.gni") |
| |
| # Compiles a protocol buffer for Python and defines it as a golden checked-in |
| # file in the source tree. |
| # |
| # Parameters (all delegate to proto_library): |
| # |
| # sources (required) |
| # List of .proto files. |
| # |
| # import_dirs (optional) |
| # Additional import paths for .proto files. |
| # |
| template("golden_python_proto") { |
| assert(defined(invoker.sources), "sources is a required parameter") |
| |
| _proto_name = "${target_name}_proto" |
| |
| proto_library(_proto_name) { |
| forward_variables_from(invoker, |
| "*", |
| [ |
| "visibility", |
| "testonly", |
| ]) |
| generate_cc = false |
| generate_go = false |
| generate_python = true |
| } |
| |
| _here = rebase_path(".", "//") |
| _py_out_dir = "${root_out_dir}/pyproto/${_here}" |
| _goldens = [] |
| |
| foreach(source, invoker.sources) { |
| _name = get_path_info(source, "name") |
| _dir = rebase_path(get_path_info(source, "dir"), ".") |
| |
| _output = "${_name}_pb2.py" |
| _golden_name = "${_name}_pb2_py_diff" |
| |
| golden_files(_golden_name) { |
| formatter = { |
| script = "//build/python/strip_copyright.sh" |
| } |
| comparisons = [ |
| { |
| golden = "${_dir}/${_output}" |
| candidate = "${_py_out_dir}/${golden}" |
| }, |
| ] |
| deps = [ ":${_proto_name}" ] |
| } |
| _goldens += [ ":${_golden_name}" ] |
| } |
| |
| group(target_name) { |
| public_deps = [ ":${_proto_name}" ] + _goldens |
| } |
| } |