Remove old BUILD file merging code

It's not needed anymore since aosp/2197837,
it should've been removed in that cl but I forgot.

Bug: 234167862
Test: ./build/bazel/ci/bp2build.sh
Change-Id: I3d67a6e1894ad401525070ad37d3158708898306
This commit is contained in:
Cole Faust
2022-08-31 14:48:26 -07:00
parent 52d9b95f54
commit ea602c5a41
5 changed files with 9 additions and 124 deletions

View File

@@ -295,6 +295,7 @@ var (
"external/bazel-skylib":/* recursive = */ true, "external/bazel-skylib":/* recursive = */ true,
"external/guava":/* recursive = */ true, "external/guava":/* recursive = */ true,
"external/jsr305":/* recursive = */ true, "external/jsr305":/* recursive = */ true,
"external/protobuf":/* recursive = */ false,
"frameworks/ex/common":/* recursive = */ true, "frameworks/ex/common":/* recursive = */ true,
"packages/apps/Music":/* recursive = */ true, "packages/apps/Music":/* recursive = */ true,
@@ -302,6 +303,7 @@ var (
"prebuilts/bazel":/* recursive = */ true, "prebuilts/bazel":/* recursive = */ true,
"prebuilts/bundletool":/* recursive = */ true, "prebuilts/bundletool":/* recursive = */ true,
"prebuilts/clang/host/linux-x86":/* recursive = */ false,
"prebuilts/gcc":/* recursive = */ true, "prebuilts/gcc":/* recursive = */ true,
"prebuilts/build-tools":/* recursive = */ true, "prebuilts/build-tools":/* recursive = */ true,
"prebuilts/jdk/jdk11":/* recursive = */ false, "prebuilts/jdk/jdk11":/* recursive = */ false,

View File

@@ -17,9 +17,6 @@ package android
import ( import (
"bufio" "bufio"
"errors" "errors"
"fmt"
"io/ioutil"
"path/filepath"
"strings" "strings"
"github.com/google/blueprint" "github.com/google/blueprint"
@@ -117,7 +114,6 @@ type Bazelable interface {
GetBazelLabel(ctx BazelConversionPathContext, module blueprint.Module) string GetBazelLabel(ctx BazelConversionPathContext, module blueprint.Module) string
ShouldConvertWithBp2build(ctx BazelConversionContext) bool ShouldConvertWithBp2build(ctx BazelConversionContext) bool
shouldConvertWithBp2build(ctx bazelOtherModuleContext, module blueprint.Module) bool shouldConvertWithBp2build(ctx bazelOtherModuleContext, module blueprint.Module) bool
GetBazelBuildFileContents(c Config, path, name string) (string, error)
ConvertWithBp2build(ctx TopDownMutatorContext) ConvertWithBp2build(ctx TopDownMutatorContext)
// namespacedVariableProps is a map from a soong config variable namespace // namespacedVariableProps is a map from a soong config variable namespace
@@ -498,28 +494,6 @@ func bp2buildDefaultTrueRecursively(packagePath string, config allowlists.Bp2Bui
return false, packagePath return false, packagePath
} }
// GetBazelBuildFileContents returns the file contents of a hand-crafted BUILD file if available or
// an error if there are errors reading the file.
// TODO(b/181575318): currently we append the whole BUILD file, let's change that to do
// something more targeted based on the rule type and target.
func (b *BazelModuleBase) GetBazelBuildFileContents(c Config, path, name string) (string, error) {
if !strings.Contains(b.HandcraftedLabel(), path) {
return "", fmt.Errorf("%q not found in bazel_module.label %q", path, b.HandcraftedLabel())
}
name = filepath.Join(path, name)
f, err := c.fs.Open(name)
if err != nil {
return "", err
}
defer f.Close()
data, err := ioutil.ReadAll(f)
if err != nil {
return "", err
}
return string(data[:]), nil
}
func registerBp2buildConversionMutator(ctx RegisterMutatorsContext) { func registerBp2buildConversionMutator(ctx RegisterMutatorsContext) {
ctx.TopDown("bp2build_conversion", convertWithBp2build).Parallel() ctx.TopDown("bp2build_conversion", convertWithBp2build).Parallel()
} }

View File

@@ -43,7 +43,6 @@ type BazelTarget struct {
content string content string
ruleClass string ruleClass string
bzlLoadLocation string bzlLoadLocation string
handcrafted bool
} }
// IsLoadedFromStarlark determines if the BazelTarget's rule class is loaded from a .bzl file, // IsLoadedFromStarlark determines if the BazelTarget's rule class is loaded from a .bzl file,
@@ -65,25 +64,9 @@ func (t BazelTarget) Label() string {
// BazelTargets is a typedef for a slice of BazelTarget objects. // BazelTargets is a typedef for a slice of BazelTarget objects.
type BazelTargets []BazelTarget type BazelTargets []BazelTarget
// HasHandcraftedTargetsreturns true if a set of bazel targets contain // sort a list of BazelTargets in-place by name
// handcrafted ones.
func (targets BazelTargets) hasHandcraftedTargets() bool {
for _, target := range targets {
if target.handcrafted {
return true
}
}
return false
}
// sort a list of BazelTargets in-place, by name, and by generated/handcrafted types.
func (targets BazelTargets) sort() { func (targets BazelTargets) sort() {
sort.Slice(targets, func(i, j int) bool { sort.Slice(targets, func(i, j int) bool {
if targets[i].handcrafted != targets[j].handcrafted {
// Handcrafted targets will be generated after the bp2build generated targets.
return targets[j].handcrafted
}
// This will cover all bp2build generated targets.
return targets[i].name < targets[j].name return targets[i].name < targets[j].name
}) })
} }
@@ -94,18 +77,6 @@ func (targets BazelTargets) sort() {
func (targets BazelTargets) String() string { func (targets BazelTargets) String() string {
var res string var res string
for i, target := range targets { for i, target := range targets {
// There is only at most 1 handcrafted "target", because its contents
// represent the entire BUILD file content from the tree. See
// build_conversion.go#getHandcraftedBuildContent for more information.
//
// Add a header to make it easy to debug where the handcrafted targets
// are in a generated BUILD file.
if target.handcrafted {
res += "# -----------------------------\n"
res += "# Section: Handcrafted targets. \n"
res += "# -----------------------------\n\n"
}
res += target.content res += target.content
if i != len(targets)-1 { if i != len(targets)-1 {
res += "\n\n" res += "\n\n"
@@ -256,7 +227,6 @@ func (r conversionResults) BuildDirToTargets() map[string]BazelTargets {
func GenerateBazelTargets(ctx *CodegenContext, generateFilegroups bool) (conversionResults, []error) { func GenerateBazelTargets(ctx *CodegenContext, generateFilegroups bool) (conversionResults, []error) {
buildFileToTargets := make(map[string]BazelTargets) buildFileToTargets := make(map[string]BazelTargets)
buildFileToAppend := make(map[string]bool)
// Simple metrics tracking for bp2build // Simple metrics tracking for bp2build
metrics := CodegenMetrics{ metrics := CodegenMetrics{
@@ -288,30 +258,10 @@ func GenerateBazelTargets(ctx *CodegenContext, generateFilegroups bool) (convers
// Handle modules converted to handcrafted targets. // Handle modules converted to handcrafted targets.
// //
// Since these modules are associated with some handcrafted // Since these modules are associated with some handcrafted
// target in a BUILD file, we simply append the entire contents // target in a BUILD file, we don't autoconvert them.
// of that BUILD file to the generated BUILD file.
//
// The append operation is only done once, even if there are
// multiple modules from the same directory associated to
// targets in the same BUILD file (or package).
// Log the module. // Log the module.
metrics.AddConvertedModule(m, moduleType, Handcrafted) metrics.AddConvertedModule(m, moduleType, Handcrafted)
pathToBuildFile := getBazelPackagePath(b)
if _, exists := buildFileToAppend[pathToBuildFile]; exists {
// Append the BUILD file content once per package, at most.
return
}
t, err := getHandcraftedBuildContent(ctx, b, pathToBuildFile)
if err != nil {
errs = append(errs, fmt.Errorf("Error converting %s: %s", bpCtx.ModuleName(m), err))
return
}
targets = append(targets, t)
// TODO(b/181575318): currently we append the whole BUILD file, let's change that to do
// something more targeted based on the rule type and target
buildFileToAppend[pathToBuildFile] = true
} else if aModule, ok := m.(android.Module); ok && aModule.IsConvertedByBp2build() { } else if aModule, ok := m.(android.Module); ok && aModule.IsConvertedByBp2build() {
// Handle modules converted to generated targets. // Handle modules converted to generated targets.
@@ -397,29 +347,6 @@ func GenerateBazelTargets(ctx *CodegenContext, generateFilegroups bool) (convers
}, errs }, errs
} }
func getBazelPackagePath(b android.Bazelable) string {
label := b.HandcraftedLabel()
pathToBuildFile := strings.TrimPrefix(label, "//")
pathToBuildFile = strings.Split(pathToBuildFile, ":")[0]
return pathToBuildFile
}
func getHandcraftedBuildContent(ctx *CodegenContext, b android.Bazelable, pathToBuildFile string) (BazelTarget, error) {
p := android.ExistentPathForSource(ctx, pathToBuildFile, HandcraftedBuildFileName)
if !p.Valid() {
return BazelTarget{}, fmt.Errorf("Could not find file %q for handcrafted target.", pathToBuildFile)
}
c, err := b.GetBazelBuildFileContents(ctx.Config(), pathToBuildFile, HandcraftedBuildFileName)
if err != nil {
return BazelTarget{}, err
}
// TODO(b/181575318): once this is more targeted, we need to include name, rule class, etc
return BazelTarget{
content: c,
handcrafted: true,
}, nil
}
func generateBazelTargets(ctx bpToBuildContext, m android.Module) []BazelTarget { func generateBazelTargets(ctx bpToBuildContext, m android.Module) []BazelTarget {
var targets []BazelTarget var targets []BazelTarget
for _, m := range m.Bp2buildTargets() { for _, m := range m.Bp2buildTargets() {
@@ -462,7 +389,6 @@ func generateBazelTarget(ctx bpToBuildContext, m bp2buildModule) BazelTarget {
targetName, targetName,
attributes, attributes,
), ),
handcrafted: false,
} }
} }

View File

@@ -1299,9 +1299,7 @@ func TestCombineBuildFilesBp2buildTargets(t *testing.T) {
name: "fg_foo", name: "fg_foo",
bazel_module: { label: "//other:fg_foo" }, bazel_module: { label: "//other:fg_foo" },
}`, }`,
ExpectedBazelTargets: []string{ ExpectedBazelTargets: []string{},
`// BUILD file`,
},
Filesystem: map[string]string{ Filesystem: map[string]string{
"other/BUILD.bazel": `// BUILD file`, "other/BUILD.bazel": `// BUILD file`,
}, },
@@ -1319,9 +1317,7 @@ func TestCombineBuildFilesBp2buildTargets(t *testing.T) {
name: "foo", name: "foo",
bazel_module: { label: "//other:foo" }, bazel_module: { label: "//other:foo" },
}`, }`,
ExpectedBazelTargets: []string{ ExpectedBazelTargets: []string{},
`// BUILD file`,
},
Filesystem: map[string]string{ Filesystem: map[string]string{
"other/BUILD.bazel": `// BUILD file`, "other/BUILD.bazel": `// BUILD file`,
}, },
@@ -1349,7 +1345,6 @@ func TestCombineBuildFilesBp2buildTargets(t *testing.T) {
}, },
ExpectedBazelTargets: []string{ ExpectedBazelTargets: []string{
MakeBazelTargetNoRestrictions("filegroup", "fg_foo", map[string]string{}), MakeBazelTargetNoRestrictions("filegroup", "fg_foo", map[string]string{}),
`// definition for fg_bar`,
}, },
}, },
{ {
@@ -1375,7 +1370,6 @@ func TestCombineBuildFilesBp2buildTargets(t *testing.T) {
}`, }`,
ExpectedBazelTargets: []string{ ExpectedBazelTargets: []string{
MakeBazelTargetNoRestrictions("filegroup", "fg_bar", map[string]string{}), MakeBazelTargetNoRestrictions("filegroup", "fg_bar", map[string]string{}),
`// BUILD file`,
}, },
}, },
} }
@@ -1420,9 +1414,6 @@ func TestCombineBuildFilesBp2buildTargets(t *testing.T) {
if actualCount != expectedCount { if actualCount != expectedCount {
t.Errorf("Expected %d bazel target, got %d\n%s", expectedCount, actualCount, bazelTargets) t.Errorf("Expected %d bazel target, got %d\n%s", expectedCount, actualCount, bazelTargets)
} }
if !strings.Contains(bazelTargets.String(), "Section: Handcrafted targets. ") {
t.Errorf("Expected string representation of bazelTargets to contain handcrafted section header.")
}
for i, target := range bazelTargets { for i, target := range bazelTargets {
actualContent := target.content actualContent := target.content
expectedContent := testCase.ExpectedBazelTargets[i] expectedContent := testCase.ExpectedBazelTargets[i]

View File

@@ -96,17 +96,9 @@ func createBuildFiles(buildToTargets map[string]BazelTargets, mode CodegenMode)
# This file was automatically generated by bp2build for the Bazel migration project. # This file was automatically generated by bp2build for the Bazel migration project.
# Feel free to edit or test it, but do *not* check it into your version control system. # Feel free to edit or test it, but do *not* check it into your version control system.
` `
if targets.hasHandcraftedTargets() {
// For BUILD files with both handcrafted and generated targets, // Hardcode the default visibility.
// don't hardcode actual content, like package() declarations. content += "package(default_visibility = [\"//visibility:public\"])\n"
// Leave that responsibility to the checked-in BUILD file
// instead.
content += `# This file contains generated targets and handcrafted targets that are manually managed in the source tree.`
} else {
// For fully-generated BUILD files, hardcode the default visibility.
content += "package(default_visibility = [\"//visibility:public\"])"
}
content += "\n"
content += targets.LoadStatements() content += targets.LoadStatements()
} else if mode == QueryView { } else if mode == QueryView {
content = soongModuleLoad content = soongModuleLoad