summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Paul Duffin <paulduffin@google.com> 2022-11-04 13:35:21 +0000
committer Paul Duffin <paulduffin@google.com> 2022-11-05 17:43:12 +0000
commitc639059fd86de81cb0159f712f9e6f41b86a6904 (patch)
tree5d545fec23be1f9064401d827952e2bd4aff9acf
parentd6dec6f51ed27bd9d1f5a4c373b2fb97cf726c70 (diff)
Make CodegenContext reference *android.Context
Previously, it stored an android.Context (no pointer) which while it worked (because the current contents are themselves pointers) it is inconsistent with how the rest of the code references it and could cause weird behavior if additional fields were added to the Context. Test: m nothing m bp2build Change-Id: I9c70f925dde85e5b15431cc232b0c2eb6371ec6d
-rw-r--r--bp2build/build_conversion.go8
-rw-r--r--bp2build/build_conversion_test.go12
-rw-r--r--bp2build/performance_test.go5
-rw-r--r--bp2build/testing.go2
-rw-r--r--cmd/soong_build/main.go6
5 files changed, 17 insertions, 16 deletions
diff --git a/bp2build/build_conversion.go b/bp2build/build_conversion.go
index a06b89edb..5ab54e3e5 100644
--- a/bp2build/build_conversion.go
+++ b/bp2build/build_conversion.go
@@ -136,7 +136,7 @@ type bpToBuildContext interface {
type CodegenContext struct {
config android.Config
- context android.Context
+ context *android.Context
mode CodegenMode
additionalDeps []string
unconvertedDepMode unconvertedDepsMode
@@ -203,12 +203,12 @@ 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 }
+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) *CodegenContext {
+func NewCodegenContext(config android.Config, context *android.Context, mode CodegenMode) *CodegenContext {
var unconvertedDeps unconvertedDepsMode
if config.IsEnvTrue("BP2BUILD_ERROR_UNCONVERTED") {
unconvertedDeps = errorModulesUnconvertedDeps
diff --git a/bp2build/build_conversion_test.go b/bp2build/build_conversion_test.go
index 7c24a94d8..c40c45a31 100644
--- a/bp2build/build_conversion_test.go
+++ b/bp2build/build_conversion_test.go
@@ -209,7 +209,7 @@ func TestGenerateSoongModuleTargets(t *testing.T) {
_, errs = ctx.PrepareBuildActions(config)
android.FailIfErrored(t, errs)
- codegenCtx := NewCodegenContext(config, *ctx.Context, QueryView)
+ codegenCtx := NewCodegenContext(config, ctx.Context, QueryView)
bazelTargets, err := generateBazelTargetsForDir(codegenCtx, dir)
android.FailIfErrored(t, err)
if actualCount, expectedCount := len(bazelTargets), 1; actualCount != expectedCount {
@@ -530,7 +530,7 @@ custom {
return
}
- codegenCtx := NewCodegenContext(config, *ctx.Context, Bp2Build)
+ codegenCtx := NewCodegenContext(config, ctx.Context, Bp2Build)
bazelTargets, err := generateBazelTargetsForDir(codegenCtx, dir)
android.FailIfErrored(t, err)
@@ -903,7 +903,7 @@ load("//build/bazel/rules:rules.bzl", "my_library")`,
_, errs = ctx.ResolveDependencies(config)
android.FailIfErrored(t, errs)
- codegenCtx := NewCodegenContext(config, *ctx.Context, Bp2Build)
+ codegenCtx := NewCodegenContext(config, ctx.Context, Bp2Build)
bazelTargets, err := generateBazelTargetsForDir(codegenCtx, dir)
android.FailIfErrored(t, err)
if actualCount := len(bazelTargets); actualCount != testCase.expectedBazelTargetCount {
@@ -1156,7 +1156,7 @@ func TestAllowlistingBp2buildTargetsExplicitly(t *testing.T) {
_, errs = ctx.ResolveDependencies(config)
android.FailIfErrored(t, errs)
- codegenCtx := NewCodegenContext(config, *ctx.Context, Bp2Build)
+ codegenCtx := NewCodegenContext(config, ctx.Context, Bp2Build)
bazelTargets, err := generateBazelTargetsForDir(codegenCtx, dir)
android.FailIfErrored(t, err)
if actualCount := len(bazelTargets); actualCount != testCase.expectedCount {
@@ -1263,7 +1263,7 @@ filegroup { name: "opt-out-h", bazel_module: { bp2build_available: false } }
_, errs = ctx.ResolveDependencies(config)
android.FailIfErrored(t, errs)
- codegenCtx := NewCodegenContext(config, *ctx.Context, Bp2Build)
+ codegenCtx := NewCodegenContext(config, ctx.Context, Bp2Build)
// For each directory, test that the expected number of generated targets is correct.
for dir, expectedCount := range testCase.expectedCount {
@@ -1398,7 +1398,7 @@ func TestCombineBuildFilesBp2buildTargets(t *testing.T) {
if testCase.Dir != "" {
checkDir = testCase.Dir
}
- codegenCtx := NewCodegenContext(config, *ctx.Context, Bp2Build)
+ codegenCtx := NewCodegenContext(config, ctx.Context, Bp2Build)
bazelTargets, err := generateBazelTargetsForDir(codegenCtx, checkDir)
android.FailIfErrored(t, err)
bazelTargets.sort()
diff --git a/bp2build/performance_test.go b/bp2build/performance_test.go
index c4bbae262..272ebf54b 100644
--- a/bp2build/performance_test.go
+++ b/bp2build/performance_test.go
@@ -22,11 +22,12 @@ package bp2build
// run for longer, set -benchtime to a larger value.
import (
- "android/soong/android"
"fmt"
"math"
"strings"
"testing"
+
+ "android/soong/android"
)
const (
@@ -105,7 +106,7 @@ func setup(builddir string, tcSize float64) testConfig {
ctx := android.NewTestContext(config)
registerCustomModuleForBp2buildConversion(ctx)
- codegenCtx := NewCodegenContext(config, *ctx.Context, Bp2Build)
+ codegenCtx := NewCodegenContext(config, ctx.Context, Bp2Build)
return testConfig{
config,
ctx,
diff --git a/bp2build/testing.go b/bp2build/testing.go
index 31aa8304a..37508047e 100644
--- a/bp2build/testing.go
+++ b/bp2build/testing.go
@@ -155,7 +155,7 @@ func runBp2BuildTestCaseWithSetup(t *testing.T, setup func(ctx *android.TestCont
if tc.Dir != "" {
checkDir = tc.Dir
}
- codegenCtx := NewCodegenContext(config, *ctx.Context, Bp2Build)
+ codegenCtx := NewCodegenContext(config, ctx.Context, Bp2Build)
codegenCtx.unconvertedDepMode = tc.UnconvertedDepsMode
bazelTargets, errs := generateBazelTargetsForDir(codegenCtx, checkDir)
if tc.ExpectedErr != nil {
diff --git a/cmd/soong_build/main.go b/cmd/soong_build/main.go
index 0669f65db..57a41b536 100644
--- a/cmd/soong_build/main.go
+++ b/cmd/soong_build/main.go
@@ -194,7 +194,7 @@ func runMixedModeBuild(configuration android.Config, ctx *android.Context, extra
func runQueryView(queryviewDir, queryviewMarker string, configuration android.Config, ctx *android.Context) {
ctx.EventHandler.Begin("queryview")
defer ctx.EventHandler.End("queryview")
- codegenContext := bp2build.NewCodegenContext(configuration, *ctx, bp2build.QueryView)
+ codegenContext := bp2build.NewCodegenContext(configuration, ctx, bp2build.QueryView)
absoluteQueryViewDir := shared.JoinPath(topDir, queryviewDir)
if err := createBazelWorkspace(codegenContext, absoluteQueryViewDir); err != nil {
fmt.Fprintf(os.Stderr, "%s", err)
@@ -235,7 +235,7 @@ func runApiBp2build(configuration android.Config, extraNinjaDeps []string) strin
ninjaDeps = append(ninjaDeps, globs...)
// Run codegen to generate BUILD files
- codegenContext := bp2build.NewCodegenContext(configuration, *ctx, bp2build.ApiBp2build)
+ codegenContext := bp2build.NewCodegenContext(configuration, ctx, bp2build.ApiBp2build)
absoluteApiBp2buildDir := shared.JoinPath(topDir, bazelApiBp2buildDir)
if err := createBazelWorkspace(codegenContext, absoluteApiBp2buildDir); err != nil {
fmt.Fprintf(os.Stderr, "%s", err)
@@ -699,7 +699,7 @@ func runBp2Build(configuration android.Config, extraNinjaDeps []string) {
// Run the code-generation phase to convert BazelTargetModules to BUILD files
// and print conversion codegenMetrics to the user.
- codegenContext := bp2build.NewCodegenContext(configuration, *bp2buildCtx, bp2build.Bp2Build)
+ codegenContext := bp2build.NewCodegenContext(configuration, bp2buildCtx, bp2build.Bp2Build)
eventHandler.Do("codegen", func() {
codegenMetrics = bp2build.Codegen(codegenContext)
})