Remove bp2build and appurtenances.
Bug: 374816306
Test: treehugger
Change-Id: Ic26f6d6e0772fb07e43d22873519c5afb2ee9a45
diff --git a/README.md b/README.md
index ad282a5..6d1a2c5 100644
--- a/README.md
+++ b/README.md
@@ -673,8 +673,7 @@
SOONG_DELVE=2345 SOONG_DELVE_STEPS='build,modulegraph' m
```
results in only `build` (main build step) and `modulegraph` being run in the debugger.
-The allowed step names are `bp2build_files`, `bp2build_workspace`, `build`,
-`modulegraph`, `queryview`, `soong_docs`.
+The allowed step names are `build`, `soong_docs`.
Note setting or unsetting `SOONG_DELVE` causes a recompilation of `soong_build`. This
is because in order to debug the binary, it needs to be built with debug
diff --git a/android/config.go b/android/config.go
index 06d71c0..e2fc756 100644
--- a/android/config.go
+++ b/android/config.go
@@ -84,7 +84,6 @@
SoongOutDir string
SoongVariables string
- BazelQueryViewDir string
ModuleGraphFile string
ModuleActionsFile string
DocFile string
@@ -99,11 +98,6 @@
// Don't use bazel at all during module analysis.
AnalysisNoBazel SoongBuildMode = iota
- // Generate BUILD files which faithfully represent the dependency graph of
- // blueprint modules. Individual BUILD targets will not, however, faitfhully
- // express build semantics.
- GenerateQueryView
-
// Create a JSON representation of the module graph and exit.
GenerateModuleGraph
@@ -616,7 +610,6 @@
config.BuildMode = mode
}
}
- setBuildMode(cmdArgs.BazelQueryViewDir, GenerateQueryView)
setBuildMode(cmdArgs.ModuleGraphFile, GenerateModuleGraph)
setBuildMode(cmdArgs.DocFile, GenerateDocFile)
diff --git a/bp2build/Android.bp b/bp2build/Android.bp
deleted file mode 100644
index 28c0268..0000000
--- a/bp2build/Android.bp
+++ /dev/null
@@ -1,41 +0,0 @@
-package {
- default_applicable_licenses: ["Android-Apache-2.0"],
-}
-
-bootstrap_go_package {
- name: "soong-bp2build",
- pkgPath: "android/soong/bp2build",
- srcs: [
- "androidbp_to_build_templates.go",
- "build_conversion.go",
- "bzl_conversion.go",
- "constants.go",
- "conversion.go",
- ],
- deps: [
- "blueprint-bootstrap",
- "soong-aidl-library",
- "soong-aconfig",
- "soong-android",
- "soong-android-allowlists",
- "soong-android-soongconfig",
- "soong-apex",
- "soong-cc",
- "soong-cc-config",
- "soong-etc",
- "soong-genrule",
- "soong-linkerconfig",
- "soong-python",
- "soong-rust",
- "soong-sh",
- "soong-shared",
- "soong-starlark-format",
- "soong-ui-metrics",
- ],
- testSrcs: [
- "conversion_test.go",
- ],
- pluginFor: [
- "soong_build",
- ],
-}
diff --git a/bp2build/androidbp_to_build_templates.go b/bp2build/androidbp_to_build_templates.go
deleted file mode 100644
index 9b21c32..0000000
--- a/bp2build/androidbp_to_build_templates.go
+++ /dev/null
@@ -1,131 +0,0 @@
-// Copyright 2020 Google Inc. All rights reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package bp2build
-
-const (
- // The default `load` preamble for every generated queryview BUILD file.
- soongModuleLoad = `package(default_visibility = ["//visibility:public"])
-load("//build/bazel/queryview_rules:soong_module.bzl", "soong_module")
-
-`
-
- // A macro call in the BUILD file representing a Soong module, with space
- // for expanding more attributes.
- soongModuleTargetTemplate = `soong_module(
- name = "%s",
- soong_module_name = "%s",
- soong_module_type = "%s",
- soong_module_variant = "%s",
- soong_module_deps = %s,
-%s)`
-
- ruleTargetTemplate = `%s(
- name = "%s",
-%s)`
-
- unnamedRuleTargetTemplate = `%s(
-%s)`
-
- // A simple provider to mark and differentiate Soong module rule shims from
- // regular Bazel rules. Every Soong module rule shim returns a
- // SoongModuleInfo provider, and can only depend on rules returning
- // SoongModuleInfo in the `soong_module_deps` attribute.
- providersBzl = `SoongModuleInfo = provider(
- fields = {
- "name": "Name of module",
- "type": "Type of module",
- "variant": "Variant of module",
- },
-)
-`
-
- // The soong_module rule implementation in a .bzl file.
- soongModuleBzl = `
-%s
-
-load("//build/bazel/queryview_rules:providers.bzl", "SoongModuleInfo")
-
-def _generic_soong_module_impl(ctx):
- return [
- SoongModuleInfo(
- name = ctx.attr.soong_module_name,
- type = ctx.attr.soong_module_type,
- variant = ctx.attr.soong_module_variant,
- ),
- ]
-
-generic_soong_module = rule(
- implementation = _generic_soong_module_impl,
- attrs = {
- "soong_module_name": attr.string(mandatory = True),
- "soong_module_type": attr.string(mandatory = True),
- "soong_module_variant": attr.string(),
- "soong_module_deps": attr.label_list(providers = [SoongModuleInfo]),
- },
-)
-
-soong_module_rule_map = {
-%s}
-
-_SUPPORTED_TYPES = ["bool", "int", "string"]
-
-def _is_supported_type(value):
- if type(value) in _SUPPORTED_TYPES:
- return True
- elif type(value) == "list":
- supported = True
- for v in value:
- supported = supported and type(v) in _SUPPORTED_TYPES
- return supported
- else:
- return False
-
-# soong_module is a macro that supports arbitrary kwargs, and uses soong_module_type to
-# expand to the right underlying shim.
-def soong_module(name, soong_module_type, **kwargs):
- soong_module_rule = soong_module_rule_map.get(soong_module_type)
-
- if soong_module_rule == None:
- # This module type does not have an existing rule to map to, so use the
- # generic_soong_module rule instead.
- generic_soong_module(
- name = name,
- soong_module_type = soong_module_type,
- soong_module_name = kwargs.pop("soong_module_name", ""),
- soong_module_variant = kwargs.pop("soong_module_variant", ""),
- soong_module_deps = kwargs.pop("soong_module_deps", []),
- )
- else:
- supported_kwargs = dict()
- for key, value in kwargs.items():
- if _is_supported_type(value):
- supported_kwargs[key] = value
- soong_module_rule(
- name = name,
- **supported_kwargs,
- )
-`
-
- // A rule shim for representing a Soong module type and its properties.
- moduleRuleShim = `
-def _%[1]s_impl(ctx):
- return [SoongModuleInfo()]
-
-%[1]s = rule(
- implementation = _%[1]s_impl,
- attrs = %[2]s
-)
-`
-)
diff --git a/bp2build/build_conversion.go b/bp2build/build_conversion.go
deleted file mode 100644
index 18213a8..0000000
--- a/bp2build/build_conversion.go
+++ /dev/null
@@ -1,618 +0,0 @@
-// Copyright 2020 Google Inc. All rights reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package bp2build
-
-/*
-For shareable/common functionality for conversion from soong-module to build files
-for queryview/bp2build
-*/
-
-import (
- "fmt"
- "reflect"
- "sort"
- "strings"
-
- "android/soong/android"
- "android/soong/starlark_fmt"
- "github.com/google/blueprint"
- "github.com/google/blueprint/proptools"
-)
-
-type BazelAttributes struct {
- Attrs map[string]string
-}
-
-type BazelLoadSymbol struct {
- // The name of the symbol in the file being loaded
- symbol string
- // The name the symbol wil have in this file. Can be left blank to use the same name as symbol.
- alias string
-}
-
-type BazelLoad struct {
- file string
- symbols []BazelLoadSymbol
-}
-
-type BazelTarget struct {
- name string
- packageName string
- content string
- ruleClass string
- loads []BazelLoad
-}
-
-// Label is the fully qualified Bazel label constructed from the BazelTarget's
-// package name and target name.
-func (t BazelTarget) Label() string {
- if t.packageName == "." {
- return "//:" + t.name
- } else {
- return "//" + t.packageName + ":" + t.name
- }
-}
-
-// PackageName returns the package of the Bazel target.
-// Defaults to root of tree.
-func (t BazelTarget) PackageName() string {
- if t.packageName == "" {
- return "."
- }
- return t.packageName
-}
-
-// BazelTargets is a typedef for a slice of BazelTarget objects.
-type BazelTargets []BazelTarget
-
-func (targets BazelTargets) packageRule() *BazelTarget {
- for _, target := range targets {
- if target.ruleClass == "package" {
- return &target
- }
- }
- return nil
-}
-
-// sort a list of BazelTargets in-place, by name, and by generated/handcrafted types.
-func (targets BazelTargets) sort() {
- sort.Slice(targets, func(i, j int) bool {
- return targets[i].name < targets[j].name
- })
-}
-
-// String returns the string representation of BazelTargets, without load
-// statements (use LoadStatements for that), since the targets are usually not
-// adjacent to the load statements at the top of the BUILD file.
-func (targets BazelTargets) String() string {
- var res strings.Builder
- for i, target := range targets {
- if target.ruleClass != "package" {
- res.WriteString(target.content)
- }
- if i != len(targets)-1 {
- res.WriteString("\n\n")
- }
- }
- return res.String()
-}
-
-// LoadStatements return the string representation of the sorted and deduplicated
-// Starlark rule load statements needed by a group of BazelTargets.
-func (targets BazelTargets) LoadStatements() string {
- // First, merge all the load statements from all the targets onto one list
- bzlToLoadedSymbols := map[string][]BazelLoadSymbol{}
- for _, target := range targets {
- for _, load := range target.loads {
- outer:
- for _, symbol := range load.symbols {
- alias := symbol.alias
- if alias == "" {
- alias = symbol.symbol
- }
- for _, otherSymbol := range bzlToLoadedSymbols[load.file] {
- otherAlias := otherSymbol.alias
- if otherAlias == "" {
- otherAlias = otherSymbol.symbol
- }
- if symbol.symbol == otherSymbol.symbol && alias == otherAlias {
- continue outer
- } else if alias == otherAlias {
- panic(fmt.Sprintf("Conflicting destination (%s) for loads of %s and %s", alias, symbol.symbol, otherSymbol.symbol))
- }
- }
- bzlToLoadedSymbols[load.file] = append(bzlToLoadedSymbols[load.file], symbol)
- }
- }
- }
-
- var loadStatements strings.Builder
- for i, bzl := range android.SortedKeys(bzlToLoadedSymbols) {
- symbols := bzlToLoadedSymbols[bzl]
- loadStatements.WriteString("load(\"")
- loadStatements.WriteString(bzl)
- loadStatements.WriteString("\", ")
- sort.Slice(symbols, func(i, j int) bool {
- if symbols[i].symbol < symbols[j].symbol {
- return true
- }
- return symbols[i].alias < symbols[j].alias
- })
- for j, symbol := range symbols {
- if symbol.alias != "" && symbol.alias != symbol.symbol {
- loadStatements.WriteString(symbol.alias)
- loadStatements.WriteString(" = ")
- }
- loadStatements.WriteString("\"")
- loadStatements.WriteString(symbol.symbol)
- loadStatements.WriteString("\"")
- if j != len(symbols)-1 {
- loadStatements.WriteString(", ")
- }
- }
- loadStatements.WriteString(")")
- if i != len(bzlToLoadedSymbols)-1 {
- loadStatements.WriteString("\n")
- }
- }
- return loadStatements.String()
-}
-
-type bpToBuildContext interface {
- ModuleName(module blueprint.Module) string
- ModuleDir(module blueprint.Module) string
- ModuleSubDir(module blueprint.Module) string
- ModuleType(module blueprint.Module) string
-
- VisitAllModules(visit func(blueprint.Module))
- VisitDirectDeps(module blueprint.Module, visit func(blueprint.Module))
-}
-
-type CodegenContext struct {
- config android.Config
- context *android.Context
- mode CodegenMode
- additionalDeps []string
- topDir string
-}
-
-func (ctx *CodegenContext) Mode() CodegenMode {
- return ctx.mode
-}
-
-// CodegenMode is an enum to differentiate code-generation modes.
-type CodegenMode int
-
-const (
- // QueryView - generate BUILD files with targets representing fully mutated
- // Soong modules, representing the fully configured Soong module graph with
- // variants and dependency edges.
- //
- // This mode is used for discovering and introspecting the existing Soong
- // module graph.
- QueryView CodegenMode = iota
-)
-
-func (mode CodegenMode) String() string {
- switch mode {
- case QueryView:
- return "QueryView"
- default:
- return fmt.Sprintf("%d", mode)
- }
-}
-
-// AddNinjaFileDeps adds dependencies on the specified files to be added to the ninja manifest. The
-// primary builder will be rerun whenever the specified files are modified. Allows us to fulfill the
-// PathContext interface in order to add dependencies on hand-crafted BUILD files. Note: must also
-// call AdditionalNinjaDeps and add them manually to the ninja file.
-func (ctx *CodegenContext) AddNinjaFileDeps(deps ...string) {
- ctx.additionalDeps = append(ctx.additionalDeps, deps...)
-}
-
-// AdditionalNinjaDeps returns additional ninja deps added by CodegenContext
-func (ctx *CodegenContext) AdditionalNinjaDeps() []string {
- return ctx.additionalDeps
-}
-
-func (ctx *CodegenContext) Config() android.Config { return ctx.config }
-func (ctx *CodegenContext) Context() *android.Context { return ctx.context }
-
-// NewCodegenContext creates a wrapper context that conforms to PathContext for
-// writing BUILD files in the output directory.
-func NewCodegenContext(config android.Config, context *android.Context, mode CodegenMode, topDir string) *CodegenContext {
- return &CodegenContext{
- context: context,
- config: config,
- mode: mode,
- topDir: topDir,
- }
-}
-
-// props is an unsorted map. This function ensures that
-// the generated attributes are sorted to ensure determinism.
-func propsToAttributes(props map[string]string) string {
- var attributes string
- for _, propName := range android.SortedKeys(props) {
- attributes += fmt.Sprintf(" %s = %s,\n", propName, props[propName])
- }
- return attributes
-}
-
-type conversionResults struct {
- buildFileToTargets map[string]BazelTargets
- moduleNameToPartition map[string]string
-}
-
-func (r conversionResults) BuildDirToTargets() map[string]BazelTargets {
- return r.buildFileToTargets
-}
-
-func GenerateBazelTargets(ctx *CodegenContext, generateFilegroups bool) (conversionResults, []error) {
- ctx.Context().BeginEvent("GenerateBazelTargets")
- defer ctx.Context().EndEvent("GenerateBazelTargets")
- buildFileToTargets := make(map[string]BazelTargets)
-
- dirs := make(map[string]bool)
- moduleNameToPartition := make(map[string]string)
-
- var errs []error
-
- bpCtx := ctx.Context()
- bpCtx.VisitAllModules(func(m blueprint.Module) {
- dir := bpCtx.ModuleDir(m)
- dirs[dir] = true
-
- var targets []BazelTarget
-
- switch ctx.Mode() {
- case QueryView:
- // Blocklist certain module types from being generated.
- if canonicalizeModuleType(bpCtx.ModuleType(m)) == "package" {
- // package module name contain slashes, and thus cannot
- // be mapped cleanly to a bazel label.
- return
- }
- t, err := generateSoongModuleTarget(bpCtx, m)
- if err != nil {
- errs = append(errs, err)
- }
- targets = append(targets, t)
- default:
- errs = append(errs, fmt.Errorf("Unknown code-generation mode: %s", ctx.Mode()))
- return
- }
-
- for _, target := range targets {
- targetDir := target.PackageName()
- buildFileToTargets[targetDir] = append(buildFileToTargets[targetDir], target)
- }
- })
-
- if len(errs) > 0 {
- return conversionResults{}, errs
- }
-
- if generateFilegroups {
- // Add a filegroup target that exposes all sources in the subtree of this package
- // NOTE: This also means we generate a BUILD file for every Android.bp file (as long as it has at least one module)
- //
- // This works because: https://bazel.build/reference/be/functions#exports_files
- // "As a legacy behaviour, also files mentioned as input to a rule are exported with the
- // default visibility until the flag --incompatible_no_implicit_file_export is flipped. However, this behavior
- // should not be relied upon and actively migrated away from."
- //
- // TODO(b/198619163): We should change this to export_files(glob(["**/*"])) instead, but doing that causes these errors:
- // "Error in exports_files: generated label '//external/avb:avbtool' conflicts with existing py_binary rule"
- // So we need to solve all the "target ... is both a rule and a file" warnings first.
- for dir := range dirs {
- buildFileToTargets[dir] = append(buildFileToTargets[dir], BazelTarget{
- name: "bp2build_all_srcs",
- content: `filegroup(name = "bp2build_all_srcs", srcs = glob(["**/*"]), tags = ["manual"])`,
- ruleClass: "filegroup",
- })
- }
- }
-
- return conversionResults{
- buildFileToTargets: buildFileToTargets,
- moduleNameToPartition: moduleNameToPartition,
- }, errs
-}
-
-// Convert a module and its deps and props into a Bazel macro/rule
-// representation in the BUILD file.
-func generateSoongModuleTarget(ctx bpToBuildContext, m blueprint.Module) (BazelTarget, error) {
- props, err := getBuildProperties(ctx, m)
-
- // TODO(b/163018919): DirectDeps can have duplicate (module, variant)
- // items, if the modules are added using different DependencyTag. Figure
- // out the implications of that.
- depLabels := map[string]bool{}
- if aModule, ok := m.(android.Module); ok {
- ctx.VisitDirectDeps(aModule, func(depModule blueprint.Module) {
- depLabels[qualifiedTargetLabel(ctx, depModule)] = true
- })
- }
-
- for p := range ignoredPropNames {
- delete(props.Attrs, p)
- }
- attributes := propsToAttributes(props.Attrs)
-
- depLabelList := "[\n"
- for depLabel := range depLabels {
- depLabelList += fmt.Sprintf(" %q,\n", depLabel)
- }
- depLabelList += " ]"
-
- targetName := targetNameWithVariant(ctx, m)
- return BazelTarget{
- name: targetName,
- packageName: ctx.ModuleDir(m),
- content: fmt.Sprintf(
- soongModuleTargetTemplate,
- targetName,
- ctx.ModuleName(m),
- canonicalizeModuleType(ctx.ModuleType(m)),
- ctx.ModuleSubDir(m),
- depLabelList,
- attributes),
- }, err
-}
-
-func getBuildProperties(ctx bpToBuildContext, m blueprint.Module) (BazelAttributes, error) {
- // TODO: this omits properties for blueprint modules (blueprint_go_binary,
- // bootstrap_go_binary, bootstrap_go_package), which will have to be handled separately.
- if aModule, ok := m.(android.Module); ok {
- return extractModuleProperties(aModule.GetProperties(), false)
- }
-
- return BazelAttributes{}, nil
-}
-
-// Generically extract module properties and types into a map, keyed by the module property name.
-func extractModuleProperties(props []interface{}, checkForDuplicateProperties bool) (BazelAttributes, error) {
- ret := map[string]string{}
-
- // Iterate over this android.Module's property structs.
- for _, properties := range props {
- propertiesValue := reflect.ValueOf(properties)
- // Check that propertiesValue is a pointer to the Properties struct, like
- // *cc.BaseLinkerProperties or *java.CompilerProperties.
- //
- // propertiesValue can also be type-asserted to the structs to
- // manipulate internal props, if needed.
- if isStructPtr(propertiesValue.Type()) {
- structValue := propertiesValue.Elem()
- ok, err := extractStructProperties(structValue, 0)
- if err != nil {
- return BazelAttributes{}, err
- }
- for k, v := range ok {
- if existing, exists := ret[k]; checkForDuplicateProperties && exists {
- return BazelAttributes{}, fmt.Errorf(
- "%s (%v) is present in properties whereas it should be consolidated into a commonAttributes",
- k, existing)
- }
- ret[k] = v
- }
- } else {
- return BazelAttributes{},
- fmt.Errorf(
- "properties must be a pointer to a struct, got %T",
- propertiesValue.Interface())
- }
- }
-
- return BazelAttributes{
- Attrs: ret,
- }, nil
-}
-
-func isStructPtr(t reflect.Type) bool {
- return t.Kind() == reflect.Ptr && t.Elem().Kind() == reflect.Struct
-}
-
-// prettyPrint a property value into the equivalent Starlark representation
-// recursively.
-func prettyPrint(propertyValue reflect.Value, indent int, emitZeroValues bool) (string, error) {
- if !emitZeroValues && isZero(propertyValue) {
- // A property value being set or unset actually matters -- Soong does set default
- // values for unset properties, like system_shared_libs = ["libc", "libm", "libdl"] at
- // https://cs.android.com/android/platform/superproject/+/main:build/soong/cc/linker.go;l=281-287;drc=f70926eef0b9b57faf04c17a1062ce50d209e480
- //
- // In Bazel-parlance, we would use "attr.<type>(default = <default
- // value>)" to set the default value of unset attributes. In the cases
- // where the bp2build converter didn't set the default value within the
- // mutator when creating the BazelTargetModule, this would be a zero
- // value. For those cases, we return an empty string so we don't
- // unnecessarily generate empty values.
- return "", nil
- }
-
- switch propertyValue.Kind() {
- case reflect.String:
- return fmt.Sprintf("\"%v\"", escapeString(propertyValue.String())), nil
- case reflect.Bool:
- return starlark_fmt.PrintBool(propertyValue.Bool()), nil
- case reflect.Int, reflect.Uint, reflect.Int64:
- return fmt.Sprintf("%v", propertyValue.Interface()), nil
- case reflect.Ptr:
- return prettyPrint(propertyValue.Elem(), indent, emitZeroValues)
- case reflect.Slice:
- elements := make([]string, 0, propertyValue.Len())
- for i := 0; i < propertyValue.Len(); i++ {
- val, err := prettyPrint(propertyValue.Index(i), indent, emitZeroValues)
- if err != nil {
- return "", err
- }
- if val != "" {
- elements = append(elements, val)
- }
- }
- return starlark_fmt.PrintList(elements, indent, func(s string) string {
- return "%s"
- }), nil
-
- case reflect.Struct:
- // Sort and print the struct props by the key.
- structProps, err := extractStructProperties(propertyValue, indent)
-
- if err != nil {
- return "", err
- }
-
- if len(structProps) == 0 {
- return "", nil
- }
- return starlark_fmt.PrintDict(structProps, indent), nil
- case reflect.Interface:
- // TODO(b/164227191): implement pretty print for interfaces.
- // Interfaces are used for for arch, multilib and target properties.
- return "", nil
- case reflect.Map:
- if v, ok := propertyValue.Interface().(map[string]string); ok {
- return starlark_fmt.PrintStringStringDict(v, indent), nil
- }
- return "", fmt.Errorf("bp2build expects map of type map[string]string for field: %s", propertyValue)
- default:
- return "", fmt.Errorf(
- "unexpected kind for property struct field: %s", propertyValue.Kind())
- }
-}
-
-// Converts a reflected property struct value into a map of property names and property values,
-// which each property value correctly pretty-printed and indented at the right nest level,
-// since property structs can be nested. In Starlark, nested structs are represented as nested
-// dicts: https://docs.bazel.build/skylark/lib/dict.html
-func extractStructProperties(structValue reflect.Value, indent int) (map[string]string, error) {
- if structValue.Kind() != reflect.Struct {
- return map[string]string{}, fmt.Errorf("Expected a reflect.Struct type, but got %s", structValue.Kind())
- }
-
- var err error
-
- ret := map[string]string{}
- structType := structValue.Type()
- for i := 0; i < structValue.NumField(); i++ {
- field := structType.Field(i)
- if shouldSkipStructField(field) {
- continue
- }
-
- fieldValue := structValue.Field(i)
- if isZero(fieldValue) {
- // Ignore zero-valued fields
- continue
- }
-
- // if the struct is embedded (anonymous), flatten the properties into the containing struct
- if field.Anonymous {
- if field.Type.Kind() == reflect.Ptr {
- fieldValue = fieldValue.Elem()
- }
- if fieldValue.Type().Kind() == reflect.Struct {
- propsToMerge, err := extractStructProperties(fieldValue, indent)
- if err != nil {
- return map[string]string{}, err
- }
- for prop, value := range propsToMerge {
- ret[prop] = value
- }
- continue
- }
- }
-
- propertyName := proptools.PropertyNameForField(field.Name)
- var prettyPrintedValue string
- prettyPrintedValue, err = prettyPrint(fieldValue, indent+1, false)
- if err != nil {
- return map[string]string{}, fmt.Errorf(
- "Error while parsing property: %q. %s",
- propertyName,
- err)
- }
- if prettyPrintedValue != "" {
- ret[propertyName] = prettyPrintedValue
- }
- }
-
- return ret, nil
-}
-
-func isZero(value reflect.Value) bool {
- switch value.Kind() {
- case reflect.Func, reflect.Map, reflect.Slice:
- return value.IsNil()
- case reflect.Array:
- valueIsZero := true
- for i := 0; i < value.Len(); i++ {
- valueIsZero = valueIsZero && isZero(value.Index(i))
- }
- return valueIsZero
- case reflect.Struct:
- valueIsZero := true
- for i := 0; i < value.NumField(); i++ {
- valueIsZero = valueIsZero && isZero(value.Field(i))
- }
- return valueIsZero
- case reflect.Ptr:
- if !value.IsNil() {
- return isZero(reflect.Indirect(value))
- } else {
- return true
- }
- // Always print bool/strings, if you want a bool/string attribute to be able to take the default value, use a
- // pointer instead
- case reflect.Bool, reflect.String:
- return false
- default:
- if !value.IsValid() {
- return true
- }
- zeroValue := reflect.Zero(value.Type())
- result := value.Interface() == zeroValue.Interface()
- return result
- }
-}
-
-func escapeString(s string) string {
- s = strings.ReplaceAll(s, "\\", "\\\\")
-
- // b/184026959: Reverse the application of some common control sequences.
- // These must be generated literally in the BUILD file.
- s = strings.ReplaceAll(s, "\t", "\\t")
- s = strings.ReplaceAll(s, "\n", "\\n")
- s = strings.ReplaceAll(s, "\r", "\\r")
-
- return strings.ReplaceAll(s, "\"", "\\\"")
-}
-
-func targetNameWithVariant(c bpToBuildContext, logicModule blueprint.Module) string {
- name := ""
- if c.ModuleSubDir(logicModule) != "" {
- // TODO(b/162720883): Figure out a way to drop the "--" variant suffixes.
- name = c.ModuleName(logicModule) + "--" + c.ModuleSubDir(logicModule)
- } else {
- name = c.ModuleName(logicModule)
- }
-
- return strings.Replace(name, "//", "", 1)
-}
-
-func qualifiedTargetLabel(c bpToBuildContext, logicModule blueprint.Module) string {
- return fmt.Sprintf("//%s:%s", c.ModuleDir(logicModule), targetNameWithVariant(c, logicModule))
-}
diff --git a/bp2build/bzl_conversion.go b/bp2build/bzl_conversion.go
deleted file mode 100644
index e774fdf..0000000
--- a/bp2build/bzl_conversion.go
+++ /dev/null
@@ -1,237 +0,0 @@
-// Copyright 2020 Google Inc. All rights reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package bp2build
-
-import (
- "android/soong/android"
- "fmt"
- "reflect"
- "runtime"
- "sort"
- "strings"
-
- "github.com/google/blueprint/proptools"
-)
-
-var (
- // An allowlist of prop types that are surfaced from module props to rule
- // attributes. (nested) dictionaries are notably absent here, because while
- // Soong supports multi value typed and nested dictionaries, Bazel's rule
- // attr() API supports only single-level string_dicts.
- allowedPropTypes = map[string]bool{
- "int": true, // e.g. 42
- "bool": true, // e.g. True
- "string_list": true, // e.g. ["a", "b"]
- "string": true, // e.g. "a"
- }
-)
-
-type rule struct {
- name string
- attrs string
-}
-
-type RuleShim struct {
- // The rule class shims contained in a bzl file. e.g. ["cc_object", "cc_library", ..]
- rules []string
-
- // The generated string content of the bzl file.
- content string
-}
-
-// Create <module>.bzl containing Bazel rule shims for every module type available in Soong and
-// user-specified Go plugins.
-//
-// This function reuses documentation generation APIs to ensure parity between modules-as-docs
-// and modules-as-code, including the names and types of morule properties.
-func CreateRuleShims(moduleTypeFactories map[string]android.ModuleFactory) map[string]RuleShim {
- ruleShims := map[string]RuleShim{}
- for pkg, rules := range generateRules(moduleTypeFactories) {
- shim := RuleShim{
- rules: make([]string, 0, len(rules)),
- }
- shim.content = "load(\"//build/bazel/queryview_rules:providers.bzl\", \"SoongModuleInfo\")\n"
-
- bzlFileName := strings.ReplaceAll(pkg, "android/soong/", "")
- bzlFileName = strings.ReplaceAll(bzlFileName, ".", "_")
- bzlFileName = strings.ReplaceAll(bzlFileName, "/", "_")
-
- for _, r := range rules {
- shim.content += fmt.Sprintf(moduleRuleShim, r.name, r.attrs)
- shim.rules = append(shim.rules, r.name)
- }
- sort.Strings(shim.rules)
- ruleShims[bzlFileName] = shim
- }
- return ruleShims
-}
-
-// Generate the content of soong_module.bzl with the rule shim load statements
-// and mapping of module_type to rule shim map for every module type in Soong.
-func generateSoongModuleBzl(bzlLoads map[string]RuleShim) string {
- var loadStmts string
- var moduleRuleMap string
- for _, bzlFileName := range android.SortedKeys(bzlLoads) {
- loadStmt := "load(\"//build/bazel/queryview_rules:"
- loadStmt += bzlFileName
- loadStmt += ".bzl\""
- ruleShim := bzlLoads[bzlFileName]
- for _, rule := range ruleShim.rules {
- loadStmt += fmt.Sprintf(", %q", rule)
- moduleRuleMap += " \"" + rule + "\": " + rule + ",\n"
- }
- loadStmt += ")\n"
- loadStmts += loadStmt
- }
-
- return fmt.Sprintf(soongModuleBzl, loadStmts, moduleRuleMap)
-}
-
-func generateRules(moduleTypeFactories map[string]android.ModuleFactory) map[string][]rule {
- // TODO: add shims for bootstrap/blueprint go modules types
-
- rules := make(map[string][]rule)
- // TODO: allow registration of a bzl rule when registring a factory
- for _, moduleType := range android.SortedKeys(moduleTypeFactories) {
- factory := moduleTypeFactories[moduleType]
- factoryName := runtime.FuncForPC(reflect.ValueOf(factory).Pointer()).Name()
- pkg := strings.Split(factoryName, ".")[0]
- attrs := `{
- "soong_module_name": attr.string(mandatory = True),
- "soong_module_variant": attr.string(),
- "soong_module_deps": attr.label_list(providers = [SoongModuleInfo]),
-`
- attrs += getAttributes(factory)
- attrs += " },"
-
- r := rule{
- name: canonicalizeModuleType(moduleType),
- attrs: attrs,
- }
-
- rules[pkg] = append(rules[pkg], r)
- }
- return rules
-}
-
-type property struct {
- name string
- starlarkAttrType string
- properties []property
-}
-
-const (
- attributeIndent = " "
-)
-
-func (p *property) attributeString() string {
- if !shouldGenerateAttribute(p.name) {
- return ""
- }
-
- if _, ok := allowedPropTypes[p.starlarkAttrType]; !ok {
- // a struct -- let's just comment out sub-props
- s := fmt.Sprintf(attributeIndent+"# %s start\n", p.name)
- for _, nestedP := range p.properties {
- s += "# " + nestedP.attributeString()
- }
- s += fmt.Sprintf(attributeIndent+"# %s end\n", p.name)
- return s
- }
- return fmt.Sprintf(attributeIndent+"%q: attr.%s(),\n", p.name, p.starlarkAttrType)
-}
-
-func extractPropertyDescriptionsFromStruct(structType reflect.Type) []property {
- properties := make([]property, 0)
- for i := 0; i < structType.NumField(); i++ {
- field := structType.Field(i)
- if shouldSkipStructField(field) {
- continue
- }
- subProps := extractPropertyDescriptions(field.Name, field.Type)
- // if the struct is embedded (anonymous), flatten the properties into the containing struct
- if field.Anonymous {
- for _, prop := range subProps {
- properties = append(properties, prop.properties...)
- }
- } else {
- properties = append(properties, subProps...)
- }
- }
- return properties
-}
-
-func extractPropertyDescriptions(name string, t reflect.Type) []property {
- name = proptools.PropertyNameForField(name)
-
- // TODO: handle android:paths tags, they should be changed to label types
-
- starlarkAttrType := fmt.Sprintf("%s", t.Name())
- props := make([]property, 0)
-
- switch t.Kind() {
- case reflect.Bool, reflect.String:
- // do nothing
- case reflect.Uint, reflect.Int, reflect.Int64:
- starlarkAttrType = "int"
- case reflect.Slice:
- if t.Elem().Kind() != reflect.String {
- // TODO: handle lists of non-strings (currently only list of Dist)
- return []property{}
- }
- starlarkAttrType = "string_list"
- case reflect.Struct:
- props = extractPropertyDescriptionsFromStruct(t)
- case reflect.Ptr:
- return extractPropertyDescriptions(name, t.Elem())
- case reflect.Interface:
- // Interfaces are used for for arch, multilib and target properties, which are handled at runtime.
- // These will need to be handled in a bazel-specific version of the arch mutator.
- return []property{}
- }
-
- prop := property{
- name: name,
- starlarkAttrType: starlarkAttrType,
- properties: props,
- }
-
- return []property{prop}
-}
-
-func getPropertyDescriptions(props []interface{}) []property {
- // there may be duplicate properties, e.g. from defaults libraries
- propertiesByName := make(map[string]property)
- for _, p := range props {
- for _, prop := range extractPropertyDescriptionsFromStruct(reflect.ValueOf(p).Elem().Type()) {
- propertiesByName[prop.name] = prop
- }
- }
-
- properties := make([]property, 0, len(propertiesByName))
- for _, key := range android.SortedKeys(propertiesByName) {
- properties = append(properties, propertiesByName[key])
- }
-
- return properties
-}
-
-func getAttributes(factory android.ModuleFactory) string {
- attrs := ""
- for _, p := range getPropertyDescriptions(factory().GetProperties()) {
- attrs += p.attributeString()
- }
- return attrs
-}
diff --git a/bp2build/constants.go b/bp2build/constants.go
deleted file mode 100644
index 76ba106..0000000
--- a/bp2build/constants.go
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2020 Google Inc. All rights reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package bp2build
-
-var (
- // When both a BUILD and BUILD.bazel file are exist in the same package, the BUILD.bazel file will
- // be preferred for use within a Bazel build.
-
- // The file name used for automatically generated files.
- GeneratedBuildFileName = "BUILD.bazel"
-)
diff --git a/bp2build/conversion.go b/bp2build/conversion.go
deleted file mode 100644
index 9f1aa09..0000000
--- a/bp2build/conversion.go
+++ /dev/null
@@ -1,120 +0,0 @@
-package bp2build
-
-import (
- "reflect"
- "strings"
-
- "android/soong/android"
- "github.com/google/blueprint/proptools"
-)
-
-type BazelFile struct {
- Dir string
- Basename string
- Contents string
-}
-
-func CreateBazelFiles(ruleShims map[string]RuleShim, buildToTargets map[string]BazelTargets, mode CodegenMode) []BazelFile {
- var files []BazelFile
-
- if mode == QueryView {
- // Write top level WORKSPACE.
- files = append(files, newFile("", "WORKSPACE", ""))
-
- // Used to denote that the top level directory is a package.
- files = append(files, newFile("", GeneratedBuildFileName, ""))
-
- files = append(files, newFile(bazelRulesSubDir, GeneratedBuildFileName, ""))
-
- // These files are only used for queryview.
- files = append(files, newFile(bazelRulesSubDir, "providers.bzl", providersBzl))
-
- for bzlFileName, ruleShim := range ruleShims {
- files = append(files, newFile(bazelRulesSubDir, bzlFileName+".bzl", ruleShim.content))
- }
- files = append(files, newFile(bazelRulesSubDir, "soong_module.bzl", generateSoongModuleBzl(ruleShims)))
- }
-
- files = append(files, createBuildFiles(buildToTargets, mode)...)
-
- return files
-}
-
-func createBuildFiles(buildToTargets map[string]BazelTargets, mode CodegenMode) []BazelFile {
- files := make([]BazelFile, 0, len(buildToTargets))
- for _, dir := range android.SortedKeys(buildToTargets) {
- targets := buildToTargets[dir]
- targets.sort()
-
- var content string
- if mode == QueryView {
- content = soongModuleLoad
- }
- if content != "" {
- // If there are load statements, add a couple of newlines.
- content += "\n\n"
- }
- content += targets.String()
- files = append(files, newFile(dir, GeneratedBuildFileName, content))
- }
- return files
-}
-
-func newFile(dir, basename, content string) BazelFile {
- return BazelFile{
- Dir: dir,
- Basename: basename,
- Contents: content,
- }
-}
-
-const (
- bazelRulesSubDir = "build/bazel/queryview_rules"
-)
-
-var (
- // Certain module property names are blocklisted/ignored here, for the reasons commented.
- ignoredPropNames = map[string]bool{
- "name": true, // redundant, since this is explicitly generated for every target
- "from": true, // reserved keyword
- "in": true, // reserved keyword
- "size": true, // reserved for tests
- "arch": true, // interface prop type is not supported yet.
- "multilib": true, // interface prop type is not supported yet.
- "target": true, // interface prop type is not supported yet.
- "visibility": true, // Bazel has native visibility semantics. Handle later.
- "features": true, // There is already a built-in attribute 'features' which cannot be overridden.
- "for": true, // reserved keyword, b/233579439
- "versions_with_info": true, // TODO(b/245730552) struct properties not fully supported
- }
-)
-
-func shouldGenerateAttribute(prop string) bool {
- return !ignoredPropNames[prop]
-}
-
-func shouldSkipStructField(field reflect.StructField) bool {
- if field.PkgPath != "" && !field.Anonymous {
- // Skip unexported fields. Some properties are
- // internal to Soong only, and these fields do not have PkgPath.
- return true
- }
- // fields with tag `blueprint:"mutated"` are exported to enable modification in mutators, etc.
- // but cannot be set in a .bp file
- if proptools.HasTag(field, "blueprint", "mutated") {
- return true
- }
- return false
-}
-
-// FIXME(b/168089390): In Bazel, rules ending with "_test" needs to be marked as
-// testonly = True, forcing other rules that depend on _test rules to also be
-// marked as testonly = True. This semantic constraint is not present in Soong.
-// To work around, rename "*_test" rules to "*_test_".
-func canonicalizeModuleType(moduleName string) string {
- if strings.HasSuffix(moduleName, "_test") {
- return moduleName + "_"
- }
-
- return moduleName
-}
diff --git a/bp2build/conversion_test.go b/bp2build/conversion_test.go
deleted file mode 100644
index 2f806fa..0000000
--- a/bp2build/conversion_test.go
+++ /dev/null
@@ -1,80 +0,0 @@
-// Copyright 2020 Google Inc. All rights reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package bp2build
-
-import (
- "sort"
- "testing"
-)
-
-type bazelFilepath struct {
- dir string
- basename string
-}
-
-func TestCreateBazelFiles_QueryView_AddsTopLevelFiles(t *testing.T) {
- files := CreateBazelFiles(map[string]RuleShim{}, map[string]BazelTargets{}, QueryView)
- expectedFilePaths := []bazelFilepath{
- {
- dir: "",
- basename: "BUILD.bazel",
- },
- {
- dir: "",
- basename: "WORKSPACE",
- },
- {
- dir: bazelRulesSubDir,
- basename: "BUILD.bazel",
- },
- {
- dir: bazelRulesSubDir,
- basename: "providers.bzl",
- },
- {
- dir: bazelRulesSubDir,
- basename: "soong_module.bzl",
- },
- }
-
- // Compare number of files
- if a, e := len(files), len(expectedFilePaths); a != e {
- t.Errorf("Expected %d files, got %d", e, a)
- }
-
- // Sort the files to be deterministic
- sort.Slice(files, func(i, j int) bool {
- if dir1, dir2 := files[i].Dir, files[j].Dir; dir1 == dir2 {
- return files[i].Basename < files[j].Basename
- } else {
- return dir1 < dir2
- }
- })
-
- // Compare the file contents
- for i := range files {
- actualFile, expectedFile := files[i], expectedFilePaths[i]
-
- if actualFile.Dir != expectedFile.dir || actualFile.Basename != expectedFile.basename {
- t.Errorf("Did not find expected file %s/%s", actualFile.Dir, actualFile.Basename)
- } else if actualFile.Basename == "BUILD.bazel" || actualFile.Basename == "WORKSPACE" {
- if actualFile.Contents != "" {
- t.Errorf("Expected %s to have no content.", actualFile)
- }
- } else if actualFile.Contents == "" {
- t.Errorf("Contents of %s unexpected empty.", actualFile)
- }
- }
-}
diff --git a/cmd/soong_build/Android.bp b/cmd/soong_build/Android.bp
index 72af3e0..d8f563b 100644
--- a/cmd/soong_build/Android.bp
+++ b/cmd/soong_build/Android.bp
@@ -26,13 +26,11 @@
"soong",
"soong-android",
"soong-provenance",
- "soong-bp2build",
"soong-ui-metrics_proto",
],
srcs: [
"main.go",
"writedocs.go",
- "queryview.go",
],
primaryBuilder: true,
}
diff --git a/cmd/soong_build/main.go b/cmd/soong_build/main.go
index 5b1ae54..6642023 100644
--- a/cmd/soong_build/main.go
+++ b/cmd/soong_build/main.go
@@ -26,7 +26,6 @@
"android/soong/android"
"android/soong/android/allowlists"
- "android/soong/bp2build"
"android/soong/shared"
"github.com/google/blueprint"
@@ -78,7 +77,6 @@
flag.StringVar(&cmdlineArgs.ModuleGraphFile, "module_graph_file", "", "JSON module graph file to output")
flag.StringVar(&cmdlineArgs.ModuleActionsFile, "module_actions_file", "", "JSON file to output inputs/outputs of actions of modules")
flag.StringVar(&cmdlineArgs.DocFile, "soong_docs", "", "build documentation file to output")
- flag.StringVar(&cmdlineArgs.BazelQueryViewDir, "bazel_queryview_dir", "", "path to the bazel queryview directory relative to --top")
flag.StringVar(&cmdlineArgs.OutFile, "o", "build.ninja", "the Ninja file to output")
flag.StringVar(&cmdlineArgs.SoongVariables, "soong_variables", "soong.variables", "the file contains all build variables")
flag.BoolVar(&cmdlineArgs.EmptyNinjaFile, "empty-ninja-file", false, "write out a 0-byte ninja file")
@@ -121,16 +119,6 @@
return false
}
-// Run the code-generation phase to convert BazelTargetModules to BUILD files.
-func runQueryView(queryviewDir, queryviewMarker string, ctx *android.Context) {
- ctx.EventHandler.Begin("queryview")
- defer ctx.EventHandler.End("queryview")
- codegenContext := bp2build.NewCodegenContext(ctx.Config(), ctx, bp2build.QueryView, topDir)
- err := createBazelWorkspace(codegenContext, shared.JoinPath(topDir, queryviewDir), false)
- maybeQuit(err, "")
- touch(shared.JoinPath(topDir, queryviewMarker))
-}
-
func writeNinjaHint(ctx *android.Context) error {
ctx.BeginEvent("ninja_hint")
defer ctx.EndEvent("ninja_hint")
@@ -283,7 +271,7 @@
switch ctx.Config().BuildMode {
case android.GenerateModuleGraph:
stopBefore = bootstrap.StopBeforeWriteNinja
- case android.GenerateQueryView, android.GenerateDocFile:
+ case android.GenerateDocFile:
stopBefore = bootstrap.StopBeforePrepareBuildActions
default:
stopBefore = bootstrap.DoEverything
@@ -294,10 +282,6 @@
// Convert the Soong module graph into Bazel BUILD files.
switch ctx.Config().BuildMode {
- case android.GenerateQueryView:
- queryviewMarkerFile := cmdlineArgs.BazelQueryViewDir + ".marker"
- runQueryView(cmdlineArgs.BazelQueryViewDir, queryviewMarkerFile, ctx)
- return queryviewMarkerFile, ninjaDeps
case android.GenerateModuleGraph:
writeJsonModuleGraphAndActions(ctx, cmdlineArgs)
return cmdlineArgs.ModuleGraphFile, ninjaDeps
diff --git a/cmd/soong_build/queryview.go b/cmd/soong_build/queryview.go
deleted file mode 100644
index eafd67a..0000000
--- a/cmd/soong_build/queryview.go
+++ /dev/null
@@ -1,112 +0,0 @@
-// Copyright 2020 Google Inc. All rights reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package main
-
-import (
- "io/fs"
- "io/ioutil"
- "os"
- "path/filepath"
-
- "android/soong/android"
- "android/soong/bp2build"
-)
-
-// A helper function to generate a Read-only Bazel workspace in outDir
-func createBazelWorkspace(ctx *bp2build.CodegenContext, outDir string, generateFilegroups bool) error {
- os.RemoveAll(outDir)
- ruleShims := bp2build.CreateRuleShims(android.ModuleTypeFactories())
-
- res, err := bp2build.GenerateBazelTargets(ctx, generateFilegroups)
- if err != nil {
- panic(err)
- }
-
- filesToWrite := bp2build.CreateBazelFiles(ruleShims, res.BuildDirToTargets(), ctx.Mode())
- bazelRcFiles, err2 := CopyBazelRcFiles()
- if err2 != nil {
- return err2
- }
- filesToWrite = append(filesToWrite, bazelRcFiles...)
- for _, f := range filesToWrite {
- if err := writeReadOnlyFile(outDir, f); err != nil {
- return err
- }
- }
-
- return nil
-}
-
-// CopyBazelRcFiles creates BazelFiles for all the bazelrc files under
-// build/bazel. They're needed because the rc files are still read when running
-// queryview, so they have to be in the queryview workspace.
-func CopyBazelRcFiles() ([]bp2build.BazelFile, error) {
- result := make([]bp2build.BazelFile, 0)
- err := filepath.WalkDir(filepath.Join(topDir, "build/bazel"), func(path string, info fs.DirEntry, err error) error {
- if filepath.Ext(path) == ".bazelrc" {
- contents, err := os.ReadFile(path)
- if err != nil {
- return err
- }
- path, err = filepath.Rel(topDir, path)
- if err != nil {
- return err
- }
- result = append(result, bp2build.BazelFile{
- Dir: filepath.Dir(path),
- Basename: filepath.Base(path),
- Contents: string(contents),
- })
- }
- return nil
- })
- return result, err
-}
-
-// The auto-conversion directory should be read-only, sufficient for bazel query. The files
-// are not intended to be edited by end users.
-func writeReadOnlyFile(dir string, f bp2build.BazelFile) error {
- dir = filepath.Join(dir, f.Dir)
- if err := createDirectoryIfNonexistent(dir); err != nil {
- return err
- }
- pathToFile := filepath.Join(dir, f.Basename)
-
- // 0444 is read-only
- err := ioutil.WriteFile(pathToFile, []byte(f.Contents), 0444)
-
- return err
-}
-
-func writeReadWriteFile(dir string, f bp2build.BazelFile) error {
- dir = filepath.Join(dir, f.Dir)
- if err := createDirectoryIfNonexistent(dir); err != nil {
- return err
- }
- pathToFile := filepath.Join(dir, f.Basename)
-
- // 0644 is read-write
- err := ioutil.WriteFile(pathToFile, []byte(f.Contents), 0644)
-
- return err
-}
-
-func createDirectoryIfNonexistent(dir string) error {
- if _, err := os.Stat(dir); os.IsNotExist(err) {
- return os.MkdirAll(dir, os.ModePerm)
- } else {
- return err
- }
-}
diff --git a/cmd/soong_ui/main.go b/cmd/soong_ui/main.go
index 2d3156a..c7134d7 100644
--- a/cmd/soong_ui/main.go
+++ b/cmd/soong_ui/main.go
@@ -251,11 +251,10 @@
buildErrorFile := filepath.Join(logsDir, logsPrefix+"build_error")
rbeMetricsFile := filepath.Join(logsDir, logsPrefix+"rbe_metrics.pb")
soongMetricsFile := filepath.Join(logsDir, logsPrefix+"soong_metrics")
- bp2buildMetricsFile := filepath.Join(logsDir, logsPrefix+"bp2build_metrics.pb")
soongBuildMetricsFile := filepath.Join(logsDir, logsPrefix+"soong_build_metrics.pb")
//Delete the stale metrics files
- staleFileSlice := []string{buildErrorFile, rbeMetricsFile, soongMetricsFile, bp2buildMetricsFile, soongBuildMetricsFile}
+ staleFileSlice := []string{buildErrorFile, rbeMetricsFile, soongMetricsFile, soongBuildMetricsFile}
if err := deleteStaleMetrics(staleFileSlice); err != nil {
log.Fatalln(err)
}
diff --git a/docs/perf.md b/docs/perf.md
index 5b53c8d..446ba9d 100644
--- a/docs/perf.md
+++ b/docs/perf.md
@@ -61,8 +61,7 @@
saves CPU profile for each Soong invocation in /tmp/foo._step_ file, where
_step_ is Soong execution step. The main step is `build`. The others as
-`bp2build_files`, `bp2build_workspace`, `modulegraph`, `queryview`,
-`api_bp2build`, `soong_docs` (not all of them necessarily run during the build).
+`soong_docs` (not all of them necessarily run during the build).
The profiles can be inspected with `go tool pprof` from the command line or
with _Run>Open Profiler Snapshot_ in IntelliJ IDEA.
diff --git a/shared/paths.go b/shared/paths.go
index 1ee66d5..64f94ba 100644
--- a/shared/paths.go
+++ b/shared/paths.go
@@ -20,14 +20,6 @@
"path/filepath"
)
-// A SharedPaths represents a list of paths that are shared between
-// soong_ui and soong.
-type SharedPaths interface {
- // BazelMetricsDir returns the path where a set of bazel profile
- // files are stored for later processed by the metrics pipeline.
- BazelMetricsDir() string
-}
-
// Joins the path strings in the argument list, taking absolute paths into
// account. That is, if one of the strings is an absolute path, the ones before
// are ignored.
diff --git a/tests/b_args_test.sh b/tests/b_args_test.sh
deleted file mode 100755
index 0dfbabf..0000000
--- a/tests/b_args_test.sh
+++ /dev/null
@@ -1,43 +0,0 @@
-#!/bin/bash -eu
-
-# This file tests the creation of bazel commands for b usage
-set -o pipefail
-source "$(dirname "$0")/../../bazel/lib.sh"
-
-BES_UUID="blank"
-OUT_DIR="arbitrary_out"
-b_args=$(formulate_b_args "build --config=nonsense foo:bar")
-
-if [[ $b_args != "build --profile=$OUT_DIR/bazel_metrics-profile --config=bp2build --invocation_id=$BES_UUID --config=metrics_data --config=nonsense foo:bar" ]]; then
- echo "b args are malformed"
- echo "Expected : build --profile=$OUT_DIR/bazel_metrics-profile --config=bp2build --invocation_id=$BES_UUID --config=metrics_data --config=nonsense foo:bar"
- echo "Actual: $b_args"
- exit 1
-fi
-
-b_args=$(formulate_b_args "build --config=nonsense --disable_bes --package_path \"my package\" foo:bar")
-
-if [[ $b_args != "build --profile=$OUT_DIR/bazel_metrics-profile --config=bp2build --invocation_id=$BES_UUID --config=nonsense --package_path \"my package\" foo:bar" ]]; then
- echo "b args are malformed"
- echo "Expected : build --profile=$OUT_DIR/bazel_metrics-profile --config=bp2build --invocation_id=$BES_UUID --config=nonsense --package_path \"my package\" foo:bar"
- echo "Actual: $b_args"
- exit 1
-fi
-
-# Test with startup option
-b_args=$(formulate_b_args "--batch build --config=nonsense --disable_bes --package_path \"my package\" foo:bar")
-if [[ $b_args != "--batch build --profile=$OUT_DIR/bazel_metrics-profile --config=bp2build --invocation_id=$BES_UUID --config=nonsense --package_path \"my package\" foo:bar" ]]; then
- echo "b args are malformed"
- echo "Expected : --batch build --profile=$OUT_DIR/bazel_metrics-profile --config=bp2build --invocation_id=$BES_UUID --config=nonsense --package_path \"my package\" foo:bar"
- echo "Actual: $b_args"
- exit 1
-fi
-
-OUT_DIR="mock_out"
-TEST_PROFILE_OUT=$(get_profile_out_dir)
-if [[ $TEST_PROFILE_OUT != "mock_out" ]]; then
- echo "Profile Out is malformed."
- echo "Expected: mock_out"
- echo "Actual: $TEST_PROFILE_OUT"
- exit 1
-fi
diff --git a/tests/bootstrap_test.sh b/tests/bootstrap_test.sh
index 715f976..5a660e9 100755
--- a/tests/bootstrap_test.sh
+++ b/tests/bootstrap_test.sh
@@ -577,20 +577,6 @@
}
-function test_queryview_null_build() {
- setup
-
- run_soong queryview
- local -r output_mtime1=$(stat -c "%y" out/soong/queryview.marker)
-
- run_soong queryview
- local -r output_mtime2=$(stat -c "%y" out/soong/queryview.marker)
-
- if [[ "$output_mtime1" != "$output_mtime2" ]]; then
- fail "Queryview marker file changed on null build"
- fi
-}
-
# This test verifies that adding a new glob to a blueprint file only
# causes build."${target_product}".ninja to be regenerated on the *next* build, and *not*
# the build after. (This is a regression test for a bug where globs
diff --git a/ui/build/build.go b/ui/build/build.go
index 28c3284..d5a20b4 100644
--- a/ui/build/build.go
+++ b/ui/build/build.go
@@ -428,7 +428,7 @@
if !config.SoongBuildInvocationNeeded() {
// This means that the output of soong_build is not needed and thus it would
// run unnecessarily. In addition, if this code wasn't there invocations
- // with only special-cased target names like "m bp2build" would result in
+ // with only special-cased target names would result in
// passing Ninja the empty target list and it would then build the default
// targets which is not what the user asked for.
what = what &^ RunNinja
diff --git a/ui/build/config.go b/ui/build/config.go
index 75edfcd..7095f3a 100644
--- a/ui/build/config.go
+++ b/ui/build/config.go
@@ -68,7 +68,6 @@
type configImpl struct {
// Some targets that are implemented in soong_build
- // (bp2build, json-module-graph) are not here and have their own bits below.
arguments []string
goma bool
environ *Environment
@@ -83,7 +82,6 @@
checkbuild bool
dist bool
jsonModuleGraph bool
- queryview bool
reportMkMetrics bool // Collect and report mk2bp migration progress metrics.
soongDocs bool
skipConfig bool
@@ -983,8 +981,6 @@
c.dist = true
} else if arg == "json-module-graph" {
c.jsonModuleGraph = true
- } else if arg == "queryview" {
- c.queryview = true
} else if arg == "soong_docs" {
c.soongDocs = true
} else {
@@ -1079,7 +1075,7 @@
return true
}
- if !c.JsonModuleGraph() && !c.Queryview() && !c.SoongDocs() {
+ if !c.JsonModuleGraph() && !c.SoongDocs() {
// Command line was empty, the default Ninja target is built
return true
}
@@ -1152,10 +1148,6 @@
return shared.JoinPath(c.SoongOutDir(), "docs/soong_build.html")
}
-func (c *configImpl) QueryviewMarkerFile() string {
- return shared.JoinPath(c.SoongOutDir(), "queryview.marker")
-}
-
func (c *configImpl) ModuleGraphFile() string {
return shared.JoinPath(c.SoongOutDir(), "module-graph.json")
}
@@ -1193,10 +1185,6 @@
return c.jsonModuleGraph
}
-func (c *configImpl) Queryview() bool {
- return c.queryview
-}
-
func (c *configImpl) SoongDocs() bool {
return c.soongDocs
}
@@ -1413,7 +1401,7 @@
func (c *configImpl) UseRBE() bool {
// These alternate modes of running Soong do not use RBE / reclient.
- if c.Queryview() || c.JsonModuleGraph() {
+ if c.JsonModuleGraph() {
return false
}
diff --git a/ui/build/soong.go b/ui/build/soong.go
index f70d9b7..cd20a4a 100644
--- a/ui/build/soong.go
+++ b/ui/build/soong.go
@@ -52,7 +52,6 @@
soongBuildTag = "build"
jsonModuleGraphTag = "modulegraph"
- queryviewTag = "queryview"
soongDocsTag = "soong_docs"
// bootstrapEpoch is used to determine if an incremental build is incompatible with the current
@@ -307,8 +306,6 @@
mainSoongBuildExtraArgs = append(mainSoongBuildExtraArgs, "--incremental-build-actions")
}
- queryviewDir := filepath.Join(config.SoongOutDir(), "queryview")
-
pbfs := []PrimaryBuilderFactory{
{
name: soongBuildTag,
@@ -328,15 +325,6 @@
),
},
{
- name: queryviewTag,
- description: fmt.Sprintf("generating the Soong module graph as a Bazel workspace at %s", queryviewDir),
- config: config,
- output: config.QueryviewMarkerFile(),
- specificArgs: append(baseArgs,
- "--bazel_queryview_dir", queryviewDir,
- ),
- },
- {
name: soongDocsTag,
description: fmt.Sprintf("generating Soong docs at %s", config.SoongDocsHtml()),
config: config,
@@ -572,10 +560,6 @@
checkEnvironmentFile(ctx, soongBuildEnv, config.UsedEnvFile(jsonModuleGraphTag))
}
- if config.Queryview() {
- checkEnvironmentFile(ctx, soongBuildEnv, config.UsedEnvFile(queryviewTag))
- }
-
if config.SoongDocs() {
checkEnvironmentFile(ctx, soongBuildEnv, config.UsedEnvFile(soongDocsTag))
}
@@ -670,10 +654,6 @@
targets = append(targets, config.ModuleGraphFile())
}
- if config.Queryview() {
- targets = append(targets, config.QueryviewMarkerFile())
- }
-
if config.SoongDocs() {
targets = append(targets, config.SoongDocsHtml())
}
diff --git a/ui/metrics/Android.bp b/ui/metrics/Android.bp
index bd1517c..cf045fd 100644
--- a/ui/metrics/Android.bp
+++ b/ui/metrics/Android.bp
@@ -21,8 +21,6 @@
pkgPath: "android/soong/ui/metrics",
deps: [
"golang-protobuf-proto",
- "soong-ui-bp2build_metrics_proto",
- "soong-ui-bazel_metrics_proto",
"soong-ui-metrics_upload_proto",
"soong-ui-metrics_proto",
"soong-ui-mk_metrics_proto",
@@ -62,30 +60,6 @@
}
bootstrap_go_package {
- name: "soong-ui-bp2build_metrics_proto",
- pkgPath: "android/soong/ui/metrics/bp2build_metrics_proto",
- deps: [
- "golang-protobuf-reflect-protoreflect",
- "golang-protobuf-runtime-protoimpl",
- ],
- srcs: [
- "bp2build_metrics_proto/bp2build_metrics.pb.go",
- ],
-}
-
-bootstrap_go_package {
- name: "soong-ui-bazel_metrics_proto",
- pkgPath: "android/soong/ui/metrics/bazel_metrics_proto",
- deps: [
- "golang-protobuf-reflect-protoreflect",
- "golang-protobuf-runtime-protoimpl",
- ],
- srcs: [
- "bazel_metrics_proto/bazel_metrics.pb.go",
- ],
-}
-
-bootstrap_go_package {
name: "soong-ui-mk_metrics_proto",
pkgPath: "android/soong/ui/metrics/mk_metrics_proto",
deps: [
diff --git a/ui/metrics/BUILD.bazel b/ui/metrics/BUILD.bazel
deleted file mode 100644
index ca39c59..0000000
--- a/ui/metrics/BUILD.bazel
+++ /dev/null
@@ -1,31 +0,0 @@
-# Copyright (C) 2023 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-load("//build/bazel/rules/python:py_proto.bzl", "py_proto_library")
-
-py_proto_library(
- name = "metrics-py-proto",
- visibility = ["//build/bazel/scripts:__subpackages__"],
- deps = [":metrics-proto"],
-)
-
-proto_library(
- name = "metrics-proto",
- srcs = [
- "bazel_metrics_proto/bazel_metrics.proto",
- "bp2build_metrics_proto/bp2build_metrics.proto",
- "metrics_proto/metrics.proto",
- ],
- strip_import_prefix = "",
-)
diff --git a/ui/metrics/bazel_metrics_proto/bazel_metrics.pb.go b/ui/metrics/bazel_metrics_proto/bazel_metrics.pb.go
deleted file mode 100644
index 8b97b83..0000000
--- a/ui/metrics/bazel_metrics_proto/bazel_metrics.pb.go
+++ /dev/null
@@ -1,290 +0,0 @@
-// Copyright 2022 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.30.0
-// protoc v3.21.12
-// source: bazel_metrics.proto
-
-package bazel_metrics_proto
-
-import (
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- reflect "reflect"
- sync "sync"
-)
-
-const (
- // Verify that this generated code is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
- // Verify that runtime/protoimpl is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-type BazelMetrics struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- PhaseTimings []*PhaseTiming `protobuf:"bytes,1,rep,name=phase_timings,json=phaseTimings,proto3" json:"phase_timings,omitempty"`
- Total *int64 `protobuf:"varint,2,opt,name=total,proto3,oneof" json:"total,omitempty"`
- ExitCode *int32 `protobuf:"varint,3,opt,name=exit_code,json=exitCode,proto3,oneof" json:"exit_code,omitempty"`
- BesId *string `protobuf:"bytes,4,opt,name=bes_id,json=besId,proto3,oneof" json:"bes_id,omitempty"`
-}
-
-func (x *BazelMetrics) Reset() {
- *x = BazelMetrics{}
- if protoimpl.UnsafeEnabled {
- mi := &file_bazel_metrics_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *BazelMetrics) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*BazelMetrics) ProtoMessage() {}
-
-func (x *BazelMetrics) ProtoReflect() protoreflect.Message {
- mi := &file_bazel_metrics_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use BazelMetrics.ProtoReflect.Descriptor instead.
-func (*BazelMetrics) Descriptor() ([]byte, []int) {
- return file_bazel_metrics_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *BazelMetrics) GetPhaseTimings() []*PhaseTiming {
- if x != nil {
- return x.PhaseTimings
- }
- return nil
-}
-
-func (x *BazelMetrics) GetTotal() int64 {
- if x != nil && x.Total != nil {
- return *x.Total
- }
- return 0
-}
-
-func (x *BazelMetrics) GetExitCode() int32 {
- if x != nil && x.ExitCode != nil {
- return *x.ExitCode
- }
- return 0
-}
-
-func (x *BazelMetrics) GetBesId() string {
- if x != nil && x.BesId != nil {
- return *x.BesId
- }
- return ""
-}
-
-type PhaseTiming struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // E.g. "execution", "analysis", "launch"
- PhaseName *string `protobuf:"bytes,1,opt,name=phase_name,json=phaseName,proto3,oneof" json:"phase_name,omitempty"`
- DurationNanos *int64 `protobuf:"varint,2,opt,name=duration_nanos,json=durationNanos,proto3,oneof" json:"duration_nanos,omitempty"`
- // What portion of the build time this phase took, with ten-thousandths precision.
- // E.g., 1111 = 11.11%, 111 = 1.11%
- PortionOfBuildTime *int32 `protobuf:"varint,3,opt,name=portion_of_build_time,json=portionOfBuildTime,proto3,oneof" json:"portion_of_build_time,omitempty"`
-}
-
-func (x *PhaseTiming) Reset() {
- *x = PhaseTiming{}
- if protoimpl.UnsafeEnabled {
- mi := &file_bazel_metrics_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *PhaseTiming) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*PhaseTiming) ProtoMessage() {}
-
-func (x *PhaseTiming) ProtoReflect() protoreflect.Message {
- mi := &file_bazel_metrics_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use PhaseTiming.ProtoReflect.Descriptor instead.
-func (*PhaseTiming) Descriptor() ([]byte, []int) {
- return file_bazel_metrics_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *PhaseTiming) GetPhaseName() string {
- if x != nil && x.PhaseName != nil {
- return *x.PhaseName
- }
- return ""
-}
-
-func (x *PhaseTiming) GetDurationNanos() int64 {
- if x != nil && x.DurationNanos != nil {
- return *x.DurationNanos
- }
- return 0
-}
-
-func (x *PhaseTiming) GetPortionOfBuildTime() int32 {
- if x != nil && x.PortionOfBuildTime != nil {
- return *x.PortionOfBuildTime
- }
- return 0
-}
-
-var File_bazel_metrics_proto protoreflect.FileDescriptor
-
-var file_bazel_metrics_proto_rawDesc = []byte{
- 0x0a, 0x13, 0x62, 0x61, 0x7a, 0x65, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x19, 0x73, 0x6f, 0x6f, 0x6e, 0x67, 0x5f, 0x62, 0x75, 0x69,
- 0x6c, 0x64, 0x5f, 0x62, 0x61, 0x7a, 0x65, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73,
- 0x22, 0xd7, 0x01, 0x0a, 0x0c, 0x42, 0x61, 0x7a, 0x65, 0x6c, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63,
- 0x73, 0x12, 0x4b, 0x0a, 0x0d, 0x70, 0x68, 0x61, 0x73, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x69, 0x6e,
- 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x6f, 0x6f, 0x6e, 0x67,
- 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x62, 0x61, 0x7a, 0x65, 0x6c, 0x5f, 0x6d, 0x65, 0x74,
- 0x72, 0x69, 0x63, 0x73, 0x2e, 0x50, 0x68, 0x61, 0x73, 0x65, 0x54, 0x69, 0x6d, 0x69, 0x6e, 0x67,
- 0x52, 0x0c, 0x70, 0x68, 0x61, 0x73, 0x65, 0x54, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x19,
- 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52,
- 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x65, 0x78, 0x69,
- 0x74, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x08,
- 0x65, 0x78, 0x69, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1a, 0x0a, 0x06, 0x62,
- 0x65, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x05, 0x62,
- 0x65, 0x73, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x74, 0x6f, 0x74, 0x61,
- 0x6c, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x65, 0x78, 0x69, 0x74, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x42,
- 0x09, 0x0a, 0x07, 0x5f, 0x62, 0x65, 0x73, 0x5f, 0x69, 0x64, 0x22, 0xd1, 0x01, 0x0a, 0x0b, 0x50,
- 0x68, 0x61, 0x73, 0x65, 0x54, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x68,
- 0x61, 0x73, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00,
- 0x52, 0x09, 0x70, 0x68, 0x61, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2a,
- 0x0a, 0x0e, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6e, 0x6f, 0x73,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x48, 0x01, 0x52, 0x0d, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x4e, 0x61, 0x6e, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x15, 0x70, 0x6f,
- 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x66, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x74,
- 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x48, 0x02, 0x52, 0x12, 0x70, 0x6f, 0x72,
- 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x66, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x88,
- 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x68, 0x61, 0x73, 0x65, 0x5f, 0x6e, 0x61, 0x6d,
- 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e,
- 0x61, 0x6e, 0x6f, 0x73, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6f, 0x6e,
- 0x5f, 0x6f, 0x66, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x2e,
- 0x5a, 0x2c, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x2f, 0x73, 0x6f, 0x6f, 0x6e, 0x67, 0x2f,
- 0x75, 0x69, 0x2f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2f, 0x62, 0x61, 0x7a, 0x65, 0x6c,
- 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_bazel_metrics_proto_rawDescOnce sync.Once
- file_bazel_metrics_proto_rawDescData = file_bazel_metrics_proto_rawDesc
-)
-
-func file_bazel_metrics_proto_rawDescGZIP() []byte {
- file_bazel_metrics_proto_rawDescOnce.Do(func() {
- file_bazel_metrics_proto_rawDescData = protoimpl.X.CompressGZIP(file_bazel_metrics_proto_rawDescData)
- })
- return file_bazel_metrics_proto_rawDescData
-}
-
-var file_bazel_metrics_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
-var file_bazel_metrics_proto_goTypes = []interface{}{
- (*BazelMetrics)(nil), // 0: soong_build_bazel_metrics.BazelMetrics
- (*PhaseTiming)(nil), // 1: soong_build_bazel_metrics.PhaseTiming
-}
-var file_bazel_metrics_proto_depIdxs = []int32{
- 1, // 0: soong_build_bazel_metrics.BazelMetrics.phase_timings:type_name -> soong_build_bazel_metrics.PhaseTiming
- 1, // [1:1] is the sub-list for method output_type
- 1, // [1:1] is the sub-list for method input_type
- 1, // [1:1] is the sub-list for extension type_name
- 1, // [1:1] is the sub-list for extension extendee
- 0, // [0:1] is the sub-list for field type_name
-}
-
-func init() { file_bazel_metrics_proto_init() }
-func file_bazel_metrics_proto_init() {
- if File_bazel_metrics_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_bazel_metrics_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*BazelMetrics); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_bazel_metrics_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*PhaseTiming); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- file_bazel_metrics_proto_msgTypes[0].OneofWrappers = []interface{}{}
- file_bazel_metrics_proto_msgTypes[1].OneofWrappers = []interface{}{}
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_bazel_metrics_proto_rawDesc,
- NumEnums: 0,
- NumMessages: 2,
- NumExtensions: 0,
- NumServices: 0,
- },
- GoTypes: file_bazel_metrics_proto_goTypes,
- DependencyIndexes: file_bazel_metrics_proto_depIdxs,
- MessageInfos: file_bazel_metrics_proto_msgTypes,
- }.Build()
- File_bazel_metrics_proto = out.File
- file_bazel_metrics_proto_rawDesc = nil
- file_bazel_metrics_proto_goTypes = nil
- file_bazel_metrics_proto_depIdxs = nil
-}
diff --git a/ui/metrics/bazel_metrics_proto/bazel_metrics.proto b/ui/metrics/bazel_metrics_proto/bazel_metrics.proto
deleted file mode 100644
index e45d2bf..0000000
--- a/ui/metrics/bazel_metrics_proto/bazel_metrics.proto
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright 2022 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-syntax = "proto3";
-
-package soong_build_bazel_metrics;
-option go_package = "android/soong/ui/metrics/bazel_metrics_proto";
-
-message BazelMetrics {
- repeated PhaseTiming phase_timings = 1;
- optional int64 total = 2;
- optional int32 exit_code = 3;
- optional string bes_id = 4;
-}
-
-message PhaseTiming {
- // E.g. "execution", "analysis", "launch"
- optional string phase_name = 1;
- optional int64 duration_nanos = 2;
- // What portion of the build time this phase took, with ten-thousandths precision.
- // E.g., 1111 = 11.11%, 111 = 1.11%
- optional int32 portion_of_build_time = 3;
-}
diff --git a/ui/metrics/bazel_metrics_proto/regen.sh b/ui/metrics/bazel_metrics_proto/regen.sh
deleted file mode 100755
index 2cf2bf6..0000000
--- a/ui/metrics/bazel_metrics_proto/regen.sh
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/bin/bash -e
-
-# Copyright 2022 Google Inc. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Generates the golang source file of bp2build_metrics.proto protobuf file.
-
-function die() { echo "ERROR: $1" >&2; exit 1; }
-
-readonly error_msg="Maybe you need to run 'lunch aosp_arm-eng && m aprotoc blueprint_tools'?"
-
-if ! hash aprotoc &>/dev/null; then
- die "could not find aprotoc. ${error_msg}"
-fi
-
-if ! aprotoc --go_out=paths=source_relative:. bazel_metrics.proto; then
- die "build failed. ${error_msg}"
-fi
diff --git a/ui/metrics/bp2build_metrics_proto/bp2build_metrics.pb.go b/ui/metrics/bp2build_metrics_proto/bp2build_metrics.pb.go
deleted file mode 100644
index b34c2b6..0000000
--- a/ui/metrics/bp2build_metrics_proto/bp2build_metrics.pb.go
+++ /dev/null
@@ -1,590 +0,0 @@
-// Copyright 2021 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.30.0
-// protoc v3.21.12
-// source: bp2build_metrics.proto
-
-package bp2build_metrics_proto
-
-import (
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- reflect "reflect"
- sync "sync"
-)
-
-const (
- // Verify that this generated code is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
- // Verify that runtime/protoimpl is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-type UnconvertedReasonType int32
-
-const (
- // Bp2build does not know how to convert this specific module for some reason
- // not covered by other reason types. The reason detail should explain the
- // specific issue.
- UnconvertedReasonType_UNSUPPORTED UnconvertedReasonType = 0
- // The module was already defined in a BUILD file available in the source tree.
- UnconvertedReasonType_DEFINED_IN_BUILD_FILE UnconvertedReasonType = 1
- // The module was explicitly denylisted by name.
- UnconvertedReasonType_DENYLISTED UnconvertedReasonType = 2
- // The module's type has no bp2build implementation.
- UnconvertedReasonType_TYPE_UNSUPPORTED UnconvertedReasonType = 3
- // The module has a property not yet supported. The detail field should
- // name the unsupported property name.
- UnconvertedReasonType_PROPERTY_UNSUPPORTED UnconvertedReasonType = 4
- // The module has an unconverted dependency. The detail should consist of
- // the name of the unconverted module.
- UnconvertedReasonType_UNCONVERTED_DEP UnconvertedReasonType = 5
- // The module has a source file with the same name as the module itself.
- UnconvertedReasonType_SRC_NAME_COLLISION UnconvertedReasonType = 6
-)
-
-// Enum value maps for UnconvertedReasonType.
-var (
- UnconvertedReasonType_name = map[int32]string{
- 0: "UNSUPPORTED",
- 1: "DEFINED_IN_BUILD_FILE",
- 2: "DENYLISTED",
- 3: "TYPE_UNSUPPORTED",
- 4: "PROPERTY_UNSUPPORTED",
- 5: "UNCONVERTED_DEP",
- 6: "SRC_NAME_COLLISION",
- }
- UnconvertedReasonType_value = map[string]int32{
- "UNSUPPORTED": 0,
- "DEFINED_IN_BUILD_FILE": 1,
- "DENYLISTED": 2,
- "TYPE_UNSUPPORTED": 3,
- "PROPERTY_UNSUPPORTED": 4,
- "UNCONVERTED_DEP": 5,
- "SRC_NAME_COLLISION": 6,
- }
-)
-
-func (x UnconvertedReasonType) Enum() *UnconvertedReasonType {
- p := new(UnconvertedReasonType)
- *p = x
- return p
-}
-
-func (x UnconvertedReasonType) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (UnconvertedReasonType) Descriptor() protoreflect.EnumDescriptor {
- return file_bp2build_metrics_proto_enumTypes[0].Descriptor()
-}
-
-func (UnconvertedReasonType) Type() protoreflect.EnumType {
- return &file_bp2build_metrics_proto_enumTypes[0]
-}
-
-func (x UnconvertedReasonType) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use UnconvertedReasonType.Descriptor instead.
-func (UnconvertedReasonType) EnumDescriptor() ([]byte, []int) {
- return file_bp2build_metrics_proto_rawDescGZIP(), []int{0}
-}
-
-type Bp2BuildMetrics struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Total number of Soong modules converted to generated targets
- GeneratedModuleCount uint64 `protobuf:"varint,1,opt,name=generatedModuleCount,proto3" json:"generatedModuleCount,omitempty"`
- // Total number of Soong modules converted to handcrafted targets
- HandCraftedModuleCount uint64 `protobuf:"varint,2,opt,name=handCraftedModuleCount,proto3" json:"handCraftedModuleCount,omitempty"`
- // Total number of unconverted Soong modules
- UnconvertedModuleCount uint64 `protobuf:"varint,3,opt,name=unconvertedModuleCount,proto3" json:"unconvertedModuleCount,omitempty"`
- // Counts of symlinks in synthetic bazel workspace
- WorkspaceSymlinkCount uint64 `protobuf:"varint,9,opt,name=workspaceSymlinkCount,proto3" json:"workspaceSymlinkCount,omitempty"`
- // Counts of mkdir calls during creation of synthetic bazel workspace
- WorkspaceMkDirCount uint64 `protobuf:"varint,10,opt,name=workspaceMkDirCount,proto3" json:"workspaceMkDirCount,omitempty"`
- // Counts of generated Bazel targets per Bazel rule class
- RuleClassCount map[string]uint64 `protobuf:"bytes,4,rep,name=ruleClassCount,proto3" json:"ruleClassCount,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
- // List of converted modules
- ConvertedModules []string `protobuf:"bytes,5,rep,name=convertedModules,proto3" json:"convertedModules,omitempty"`
- // Unconverted modules, mapped to the reason the module was not converted.
- UnconvertedModules map[string]*UnconvertedReason `protobuf:"bytes,11,rep,name=unconvertedModules,proto3" json:"unconvertedModules,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
- // Counts of converted modules by module type.
- ConvertedModuleTypeCount map[string]uint64 `protobuf:"bytes,6,rep,name=convertedModuleTypeCount,proto3" json:"convertedModuleTypeCount,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
- // Counts of total modules by module type.
- TotalModuleTypeCount map[string]uint64 `protobuf:"bytes,7,rep,name=totalModuleTypeCount,proto3" json:"totalModuleTypeCount,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
- // List of traced runtime events of bp2build, useful for tracking bp2build
- // runtime.
- Events []*Event `protobuf:"bytes,8,rep,name=events,proto3" json:"events,omitempty"`
-}
-
-func (x *Bp2BuildMetrics) Reset() {
- *x = Bp2BuildMetrics{}
- if protoimpl.UnsafeEnabled {
- mi := &file_bp2build_metrics_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Bp2BuildMetrics) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Bp2BuildMetrics) ProtoMessage() {}
-
-func (x *Bp2BuildMetrics) ProtoReflect() protoreflect.Message {
- mi := &file_bp2build_metrics_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Bp2BuildMetrics.ProtoReflect.Descriptor instead.
-func (*Bp2BuildMetrics) Descriptor() ([]byte, []int) {
- return file_bp2build_metrics_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *Bp2BuildMetrics) GetGeneratedModuleCount() uint64 {
- if x != nil {
- return x.GeneratedModuleCount
- }
- return 0
-}
-
-func (x *Bp2BuildMetrics) GetHandCraftedModuleCount() uint64 {
- if x != nil {
- return x.HandCraftedModuleCount
- }
- return 0
-}
-
-func (x *Bp2BuildMetrics) GetUnconvertedModuleCount() uint64 {
- if x != nil {
- return x.UnconvertedModuleCount
- }
- return 0
-}
-
-func (x *Bp2BuildMetrics) GetWorkspaceSymlinkCount() uint64 {
- if x != nil {
- return x.WorkspaceSymlinkCount
- }
- return 0
-}
-
-func (x *Bp2BuildMetrics) GetWorkspaceMkDirCount() uint64 {
- if x != nil {
- return x.WorkspaceMkDirCount
- }
- return 0
-}
-
-func (x *Bp2BuildMetrics) GetRuleClassCount() map[string]uint64 {
- if x != nil {
- return x.RuleClassCount
- }
- return nil
-}
-
-func (x *Bp2BuildMetrics) GetConvertedModules() []string {
- if x != nil {
- return x.ConvertedModules
- }
- return nil
-}
-
-func (x *Bp2BuildMetrics) GetUnconvertedModules() map[string]*UnconvertedReason {
- if x != nil {
- return x.UnconvertedModules
- }
- return nil
-}
-
-func (x *Bp2BuildMetrics) GetConvertedModuleTypeCount() map[string]uint64 {
- if x != nil {
- return x.ConvertedModuleTypeCount
- }
- return nil
-}
-
-func (x *Bp2BuildMetrics) GetTotalModuleTypeCount() map[string]uint64 {
- if x != nil {
- return x.TotalModuleTypeCount
- }
- return nil
-}
-
-func (x *Bp2BuildMetrics) GetEvents() []*Event {
- if x != nil {
- return x.Events
- }
- return nil
-}
-
-// Traced runtime event of bp2build.
-type Event struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The event name.
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
- // The absolute start time of the event
- // The number of nanoseconds elapsed since January 1, 1970 UTC.
- StartTime uint64 `protobuf:"varint,2,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`
- // The real running time.
- // The number of nanoseconds elapsed since start_time.
- RealTime uint64 `protobuf:"varint,3,opt,name=real_time,json=realTime,proto3" json:"real_time,omitempty"`
-}
-
-func (x *Event) Reset() {
- *x = Event{}
- if protoimpl.UnsafeEnabled {
- mi := &file_bp2build_metrics_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Event) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Event) ProtoMessage() {}
-
-func (x *Event) ProtoReflect() protoreflect.Message {
- mi := &file_bp2build_metrics_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Event.ProtoReflect.Descriptor instead.
-func (*Event) Descriptor() ([]byte, []int) {
- return file_bp2build_metrics_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *Event) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *Event) GetStartTime() uint64 {
- if x != nil {
- return x.StartTime
- }
- return 0
-}
-
-func (x *Event) GetRealTime() uint64 {
- if x != nil {
- return x.RealTime
- }
- return 0
-}
-
-type UnconvertedReason struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The type of reason that the module could not be converted.
- Type UnconvertedReasonType `protobuf:"varint,1,opt,name=type,proto3,enum=soong_build_bp2build_metrics.UnconvertedReasonType" json:"type,omitempty"`
- // Descriptive details describing why the module could not be converted.
- // This detail should be kept very short and should be in the context of
- // the type. (Otherwise, this would significantly bloat metrics.)
- Detail string `protobuf:"bytes,2,opt,name=detail,proto3" json:"detail,omitempty"`
-}
-
-func (x *UnconvertedReason) Reset() {
- *x = UnconvertedReason{}
- if protoimpl.UnsafeEnabled {
- mi := &file_bp2build_metrics_proto_msgTypes[2]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *UnconvertedReason) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*UnconvertedReason) ProtoMessage() {}
-
-func (x *UnconvertedReason) ProtoReflect() protoreflect.Message {
- mi := &file_bp2build_metrics_proto_msgTypes[2]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use UnconvertedReason.ProtoReflect.Descriptor instead.
-func (*UnconvertedReason) Descriptor() ([]byte, []int) {
- return file_bp2build_metrics_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *UnconvertedReason) GetType() UnconvertedReasonType {
- if x != nil {
- return x.Type
- }
- return UnconvertedReasonType_UNSUPPORTED
-}
-
-func (x *UnconvertedReason) GetDetail() string {
- if x != nil {
- return x.Detail
- }
- return ""
-}
-
-var File_bp2build_metrics_proto protoreflect.FileDescriptor
-
-var file_bp2build_metrics_proto_rawDesc = []byte{
- 0x0a, 0x16, 0x62, 0x70, 0x32, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69,
- 0x63, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1c, 0x73, 0x6f, 0x6f, 0x6e, 0x67, 0x5f,
- 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x62, 0x70, 0x32, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x6d,
- 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x22, 0xc0, 0x09, 0x0a, 0x0f, 0x42, 0x70, 0x32, 0x42, 0x75,
- 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x32, 0x0a, 0x14, 0x67, 0x65,
- 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x43, 0x6f, 0x75,
- 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x14, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61,
- 0x74, 0x65, 0x64, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x36,
- 0x0a, 0x16, 0x68, 0x61, 0x6e, 0x64, 0x43, 0x72, 0x61, 0x66, 0x74, 0x65, 0x64, 0x4d, 0x6f, 0x64,
- 0x75, 0x6c, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x16,
- 0x68, 0x61, 0x6e, 0x64, 0x43, 0x72, 0x61, 0x66, 0x74, 0x65, 0x64, 0x4d, 0x6f, 0x64, 0x75, 0x6c,
- 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x36, 0x0a, 0x16, 0x75, 0x6e, 0x63, 0x6f, 0x6e, 0x76,
- 0x65, 0x72, 0x74, 0x65, 0x64, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74,
- 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x16, 0x75, 0x6e, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72,
- 0x74, 0x65, 0x64, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x34,
- 0x0a, 0x15, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x79, 0x6d, 0x6c, 0x69,
- 0x6e, 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, 0x15, 0x77,
- 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x79, 0x6d, 0x6c, 0x69, 0x6e, 0x6b, 0x43,
- 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x13, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63,
- 0x65, 0x4d, 0x6b, 0x44, 0x69, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28,
- 0x04, 0x52, 0x13, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4d, 0x6b, 0x44, 0x69,
- 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x69, 0x0a, 0x0e, 0x72, 0x75, 0x6c, 0x65, 0x43, 0x6c,
- 0x61, 0x73, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x41,
- 0x2e, 0x73, 0x6f, 0x6f, 0x6e, 0x67, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x62, 0x70, 0x32,
- 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x42, 0x70,
- 0x32, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x52, 0x75,
- 0x6c, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x6e, 0x74, 0x72,
- 0x79, 0x52, 0x0e, 0x72, 0x75, 0x6c, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x43, 0x6f, 0x75, 0x6e,
- 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x64, 0x4d, 0x6f,
- 0x64, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x63, 0x6f, 0x6e,
- 0x76, 0x65, 0x72, 0x74, 0x65, 0x64, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x75, 0x0a,
- 0x12, 0x75, 0x6e, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x64, 0x4d, 0x6f, 0x64, 0x75,
- 0x6c, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x73, 0x6f, 0x6f, 0x6e,
- 0x67, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x62, 0x70, 0x32, 0x62, 0x75, 0x69, 0x6c, 0x64,
- 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x42, 0x70, 0x32, 0x42, 0x75, 0x69, 0x6c,
- 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x55, 0x6e, 0x63, 0x6f, 0x6e, 0x76, 0x65,
- 0x72, 0x74, 0x65, 0x64, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79,
- 0x52, 0x12, 0x75, 0x6e, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x64, 0x4d, 0x6f, 0x64,
- 0x75, 0x6c, 0x65, 0x73, 0x12, 0x87, 0x01, 0x0a, 0x18, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74,
- 0x65, 0x64, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e,
- 0x74, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4b, 0x2e, 0x73, 0x6f, 0x6f, 0x6e, 0x67, 0x5f,
- 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x62, 0x70, 0x32, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x6d,
- 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x42, 0x70, 0x32, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x4d,
- 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x64,
- 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x45,
- 0x6e, 0x74, 0x72, 0x79, 0x52, 0x18, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x64, 0x4d,
- 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x7b,
- 0x0a, 0x14, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70,
- 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x47, 0x2e, 0x73,
- 0x6f, 0x6f, 0x6e, 0x67, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x62, 0x70, 0x32, 0x62, 0x75,
- 0x69, 0x6c, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x42, 0x70, 0x32, 0x42,
- 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x54, 0x6f, 0x74, 0x61,
- 0x6c, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74,
- 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x14, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4d, 0x6f, 0x64, 0x75,
- 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3b, 0x0a, 0x06, 0x65,
- 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x6f,
- 0x6f, 0x6e, 0x67, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x62, 0x70, 0x32, 0x62, 0x75, 0x69,
- 0x6c, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74,
- 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x1a, 0x41, 0x0a, 0x13, 0x52, 0x75, 0x6c, 0x65,
- 0x43, 0x6c, 0x61, 0x73, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
- 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65,
- 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04,
- 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x76, 0x0a, 0x17, 0x55,
- 0x6e, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x64, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65,
- 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x45, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
- 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x73, 0x6f, 0x6f, 0x6e, 0x67, 0x5f,
- 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x62, 0x70, 0x32, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x6d,
- 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x55, 0x6e, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74,
- 0x65, 0x64, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
- 0x02, 0x38, 0x01, 0x1a, 0x4b, 0x0a, 0x1d, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x64,
- 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x45,
- 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
- 0x1a, 0x47, 0x0a, 0x19, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x54,
- 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a,
- 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
- 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05,
- 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x57, 0x0a, 0x05, 0x45, 0x76, 0x65,
- 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f,
- 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72,
- 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x6c, 0x5f, 0x74, 0x69,
- 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x72, 0x65, 0x61, 0x6c, 0x54, 0x69,
- 0x6d, 0x65, 0x22, 0x74, 0x0a, 0x11, 0x55, 0x6e, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x65,
- 0x64, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x47, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x73, 0x6f, 0x6f, 0x6e, 0x67, 0x5f, 0x62, 0x75,
- 0x69, 0x6c, 0x64, 0x5f, 0x62, 0x70, 0x32, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x6d, 0x65, 0x74,
- 0x72, 0x69, 0x63, 0x73, 0x2e, 0x55, 0x6e, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x64,
- 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65,
- 0x12, 0x16, 0x0a, 0x06, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x06, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2a, 0xb0, 0x01, 0x0a, 0x15, 0x55, 0x6e, 0x63,
- 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x64, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x54, 0x79,
- 0x70, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45,
- 0x44, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x5f, 0x49,
- 0x4e, 0x5f, 0x42, 0x55, 0x49, 0x4c, 0x44, 0x5f, 0x46, 0x49, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x0e,
- 0x0a, 0x0a, 0x44, 0x45, 0x4e, 0x59, 0x4c, 0x49, 0x53, 0x54, 0x45, 0x44, 0x10, 0x02, 0x12, 0x14,
- 0x0a, 0x10, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54,
- 0x45, 0x44, 0x10, 0x03, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, 0x50, 0x45, 0x52, 0x54, 0x59,
- 0x5f, 0x55, 0x4e, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x10, 0x04, 0x12, 0x13,
- 0x0a, 0x0f, 0x55, 0x4e, 0x43, 0x4f, 0x4e, 0x56, 0x45, 0x52, 0x54, 0x45, 0x44, 0x5f, 0x44, 0x45,
- 0x50, 0x10, 0x05, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x52, 0x43, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x5f,
- 0x43, 0x4f, 0x4c, 0x4c, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x06, 0x42, 0x31, 0x5a, 0x2f, 0x61,
- 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x2f, 0x73, 0x6f, 0x6f, 0x6e, 0x67, 0x2f, 0x75, 0x69, 0x2f,
- 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2f, 0x62, 0x70, 0x32, 0x62, 0x75, 0x69, 0x6c, 0x64,
- 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_bp2build_metrics_proto_rawDescOnce sync.Once
- file_bp2build_metrics_proto_rawDescData = file_bp2build_metrics_proto_rawDesc
-)
-
-func file_bp2build_metrics_proto_rawDescGZIP() []byte {
- file_bp2build_metrics_proto_rawDescOnce.Do(func() {
- file_bp2build_metrics_proto_rawDescData = protoimpl.X.CompressGZIP(file_bp2build_metrics_proto_rawDescData)
- })
- return file_bp2build_metrics_proto_rawDescData
-}
-
-var file_bp2build_metrics_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
-var file_bp2build_metrics_proto_msgTypes = make([]protoimpl.MessageInfo, 7)
-var file_bp2build_metrics_proto_goTypes = []interface{}{
- (UnconvertedReasonType)(0), // 0: soong_build_bp2build_metrics.UnconvertedReasonType
- (*Bp2BuildMetrics)(nil), // 1: soong_build_bp2build_metrics.Bp2BuildMetrics
- (*Event)(nil), // 2: soong_build_bp2build_metrics.Event
- (*UnconvertedReason)(nil), // 3: soong_build_bp2build_metrics.UnconvertedReason
- nil, // 4: soong_build_bp2build_metrics.Bp2BuildMetrics.RuleClassCountEntry
- nil, // 5: soong_build_bp2build_metrics.Bp2BuildMetrics.UnconvertedModulesEntry
- nil, // 6: soong_build_bp2build_metrics.Bp2BuildMetrics.ConvertedModuleTypeCountEntry
- nil, // 7: soong_build_bp2build_metrics.Bp2BuildMetrics.TotalModuleTypeCountEntry
-}
-var file_bp2build_metrics_proto_depIdxs = []int32{
- 4, // 0: soong_build_bp2build_metrics.Bp2BuildMetrics.ruleClassCount:type_name -> soong_build_bp2build_metrics.Bp2BuildMetrics.RuleClassCountEntry
- 5, // 1: soong_build_bp2build_metrics.Bp2BuildMetrics.unconvertedModules:type_name -> soong_build_bp2build_metrics.Bp2BuildMetrics.UnconvertedModulesEntry
- 6, // 2: soong_build_bp2build_metrics.Bp2BuildMetrics.convertedModuleTypeCount:type_name -> soong_build_bp2build_metrics.Bp2BuildMetrics.ConvertedModuleTypeCountEntry
- 7, // 3: soong_build_bp2build_metrics.Bp2BuildMetrics.totalModuleTypeCount:type_name -> soong_build_bp2build_metrics.Bp2BuildMetrics.TotalModuleTypeCountEntry
- 2, // 4: soong_build_bp2build_metrics.Bp2BuildMetrics.events:type_name -> soong_build_bp2build_metrics.Event
- 0, // 5: soong_build_bp2build_metrics.UnconvertedReason.type:type_name -> soong_build_bp2build_metrics.UnconvertedReasonType
- 3, // 6: soong_build_bp2build_metrics.Bp2BuildMetrics.UnconvertedModulesEntry.value:type_name -> soong_build_bp2build_metrics.UnconvertedReason
- 7, // [7:7] is the sub-list for method output_type
- 7, // [7:7] is the sub-list for method input_type
- 7, // [7:7] is the sub-list for extension type_name
- 7, // [7:7] is the sub-list for extension extendee
- 0, // [0:7] is the sub-list for field type_name
-}
-
-func init() { file_bp2build_metrics_proto_init() }
-func file_bp2build_metrics_proto_init() {
- if File_bp2build_metrics_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_bp2build_metrics_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Bp2BuildMetrics); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_bp2build_metrics_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Event); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_bp2build_metrics_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*UnconvertedReason); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_bp2build_metrics_proto_rawDesc,
- NumEnums: 1,
- NumMessages: 7,
- NumExtensions: 0,
- NumServices: 0,
- },
- GoTypes: file_bp2build_metrics_proto_goTypes,
- DependencyIndexes: file_bp2build_metrics_proto_depIdxs,
- EnumInfos: file_bp2build_metrics_proto_enumTypes,
- MessageInfos: file_bp2build_metrics_proto_msgTypes,
- }.Build()
- File_bp2build_metrics_proto = out.File
- file_bp2build_metrics_proto_rawDesc = nil
- file_bp2build_metrics_proto_goTypes = nil
- file_bp2build_metrics_proto_depIdxs = nil
-}
diff --git a/ui/metrics/bp2build_metrics_proto/bp2build_metrics.proto b/ui/metrics/bp2build_metrics_proto/bp2build_metrics.proto
deleted file mode 100644
index 49cb2b4..0000000
--- a/ui/metrics/bp2build_metrics_proto/bp2build_metrics.proto
+++ /dev/null
@@ -1,105 +0,0 @@
-// Copyright 2021 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-syntax = "proto3";
-
-package soong_build_bp2build_metrics;
-option go_package = "android/soong/ui/metrics/bp2build_metrics_proto";
-
-message Bp2BuildMetrics {
- // Total number of Soong modules converted to generated targets
- uint64 generatedModuleCount = 1;
-
- // Total number of Soong modules converted to handcrafted targets
- uint64 handCraftedModuleCount = 2;
-
- // Total number of unconverted Soong modules
- uint64 unconvertedModuleCount = 3;
-
- // Counts of symlinks in synthetic bazel workspace
- uint64 workspaceSymlinkCount= 9;
-
- // Counts of mkdir calls during creation of synthetic bazel workspace
- uint64 workspaceMkDirCount= 10;
-
- // Counts of generated Bazel targets per Bazel rule class
- map<string, uint64> ruleClassCount = 4;
-
- // List of converted modules
- repeated string convertedModules = 5;
-
- // Unconverted modules, mapped to the reason the module was not converted.
- map<string, UnconvertedReason> unconvertedModules = 11;
-
- // Counts of converted modules by module type.
- map<string, uint64> convertedModuleTypeCount = 6;
-
- // Counts of total modules by module type.
- map<string, uint64> totalModuleTypeCount = 7;
-
- // List of traced runtime events of bp2build, useful for tracking bp2build
- // runtime.
- repeated Event events = 8;
-}
-
-// Traced runtime event of bp2build.
-message Event {
- // The event name.
- string name = 1;
-
- // The absolute start time of the event
- // The number of nanoseconds elapsed since January 1, 1970 UTC.
- uint64 start_time = 2;
-
- // The real running time.
- // The number of nanoseconds elapsed since start_time.
- uint64 real_time = 3;
-}
-
-message UnconvertedReason {
- // The type of reason that the module could not be converted.
- UnconvertedReasonType type = 1;
-
- // Descriptive details describing why the module could not be converted.
- // This detail should be kept very short and should be in the context of
- // the type. (Otherwise, this would significantly bloat metrics.)
- string detail = 2;
-}
-
-enum UnconvertedReasonType {
- // Bp2build does not know how to convert this specific module for some reason
- // not covered by other reason types. The reason detail should explain the
- // specific issue.
- UNSUPPORTED = 0;
-
- // The module was already defined in a BUILD file available in the source tree.
- DEFINED_IN_BUILD_FILE = 1;
-
- // The module was explicitly denylisted by name.
- DENYLISTED = 2;
-
- // The module's type has no bp2build implementation.
- TYPE_UNSUPPORTED = 3;
-
- // The module has a property not yet supported. The detail field should
- // name the unsupported property name.
- PROPERTY_UNSUPPORTED = 4;
-
- // The module has an unconverted dependency. The detail should consist of
- // the name of the unconverted module.
- UNCONVERTED_DEP = 5;
-
- // The module has a source file with the same name as the module itself.
- SRC_NAME_COLLISION = 6;
-}
\ No newline at end of file
diff --git a/ui/metrics/bp2build_metrics_proto/regen.sh b/ui/metrics/bp2build_metrics_proto/regen.sh
deleted file mode 100755
index bfe4294..0000000
--- a/ui/metrics/bp2build_metrics_proto/regen.sh
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/bin/bash -e
-
-# Copyright 2021 Google Inc. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Generates the golang source file of bp2build_metrics.proto protobuf file.
-
-function die() { echo "ERROR: $1" >&2; exit 1; }
-
-readonly error_msg="Maybe you need to run 'lunch aosp_arm-eng && m aprotoc blueprint_tools'?"
-
-if ! hash aprotoc &>/dev/null; then
- die "could not find aprotoc. ${error_msg}"
-fi
-
-if ! aprotoc --go_out=paths=source_relative:. bp2build_metrics.proto; then
- die "build failed. ${error_msg}"
-fi
diff --git a/ui/metrics/bp2build_progress_metrics_proto/BUILD.bazel b/ui/metrics/bp2build_progress_metrics_proto/BUILD.bazel
deleted file mode 100644
index f6c6df8..0000000
--- a/ui/metrics/bp2build_progress_metrics_proto/BUILD.bazel
+++ /dev/null
@@ -1,27 +0,0 @@
-# Copyright (C) 2022 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-load("//build/bazel/rules/python:py_proto.bzl", "py_proto_library")
-
-proto_library(
- name = "bp2build_proto",
- srcs = ["bp2build.proto"],
- strip_import_prefix = "",
-)
-
-py_proto_library(
- name = "bp2build_py_proto",
- visibility = ["//build/bazel/scripts/bp2build_progress:__pkg__"],
- deps = [":bp2build_proto"],
-)
diff --git a/ui/metrics/bp2build_progress_metrics_proto/bp2build.proto b/ui/metrics/bp2build_progress_metrics_proto/bp2build.proto
deleted file mode 100644
index 5b44002..0000000
--- a/ui/metrics/bp2build_progress_metrics_proto/bp2build.proto
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright (C) 2022 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-syntax = "proto3";
-
-package bp2build_proto;
-
-
-// Conversion progress report for root_modules .
-message Bp2buildConversionProgress {
-
- // Soong module identifying information.
- message Module {
- // Name of the Soong module.
- string name = 1;
-
- // Directory that the Soong module is in.
- string directory = 2;
-
- // Module type of this module.
- string type = 3;
-
- // All unconverted transitive dependencies.
- repeated string unconverted_deps = 4;
-
- // Total number of transitive dependencies.
- int32 num_deps = 5;
-
- // Unconverted reasons from heuristics
- repeated string unconverted_reasons_from_heuristics = 6;
- }
-
- // Modules that the transitive dependencies were identified for.
- repeated string root_modules = 1;
-
- // Names of all dependencies of the root_modules.
- int32 num_deps = 2;
-
- // Module with all its unconverted transitive dependencies.
- repeated Module unconverted = 3;
-}