Loading android/bazel_handler.go +5 −1 Original line number Diff line number Diff line Loading @@ -84,8 +84,12 @@ func RegisterMixedBuildsMutator(ctx RegistrationContext) { func mixedBuildsPrepareMutator(ctx BottomUpMutatorContext) { if m := ctx.Module(); m.Enabled() { if mixedBuildMod, ok := m.(MixedBuildBuildable); ok { if mixedBuildMod.IsMixedBuildSupported(ctx) && MixedBuildsEnabled(ctx) { queueMixedBuild := mixedBuildMod.IsMixedBuildSupported(ctx) && MixedBuildsEnabled(ctx) if queueMixedBuild { mixedBuildMod.QueueBazelCall(ctx) } else if _, ok := ctx.Config().bazelForceEnabledModules[m.Name()]; ok { // TODO(b/273910287) - remove this once --ensure_allowlist_integrity is added ctx.ModuleErrorf("Attempted to force enable an unready module: %s. Did you forget to Bp2BuildDefaultTrue its directory?\n", m.Name()) } } } Loading android/config.go +7 −3 Original line number Diff line number Diff line Loading @@ -592,12 +592,11 @@ func NewConfig(cmdArgs CmdArgs, availableEnv map[string]string) (Config, error) setBazelMode(cmdArgs.BazelMode, "--bazel-mode", BazelProdMode) setBazelMode(cmdArgs.BazelModeStaging, "--bazel-mode-staging", BazelStagingMode) config.BazelContext, err = NewBazelContext(config) config.Bp2buildPackageConfig = GetBp2BuildAllowList() for _, module := range strings.Split(cmdArgs.BazelForceEnabledModules, ",") { config.bazelForceEnabledModules[module] = struct{}{} } config.BazelContext, err = NewBazelContext(config) config.Bp2buildPackageConfig = GetBp2BuildAllowList() return Config{config}, err } Loading Loading @@ -1934,3 +1933,8 @@ func (c *config) BuildFromTextStub() bool { func (c *config) SetBuildFromTextStub(b bool) { c.buildFromTextStub = b } func (c *config) AddForceEnabledModules(forceEnabled []string) { for _, forceEnabledModule := range forceEnabled { c.bazelForceEnabledModules[forceEnabledModule] = struct{}{} } } android/test_config.go +1 −0 Original line number Diff line number Diff line Loading @@ -65,6 +65,7 @@ func TestConfig(buildDir string, env map[string]string, bp string, fs map[string BuildMode: BazelProdMode, mixedBuildDisabledModules: make(map[string]struct{}), mixedBuildEnabledModules: make(map[string]struct{}), bazelForceEnabledModules: make(map[string]struct{}), } config.deviceConfig = &deviceConfig{ config: config, Loading bp2build/build_conversion.go +3 −0 Original line number Diff line number Diff line Loading @@ -321,6 +321,9 @@ func GenerateBazelTargets(ctx *CodegenContext, generateFilegroups bool) (convers // target, each of a different rule class. metrics.IncrementRuleClassCount(t.ruleClass) } } else if _, ok := ctx.Config().BazelModulesForceEnabledByFlag()[m.Name()]; ok && m.Name() != "" { err := fmt.Errorf("Force Enabled Module %s not converted", m.Name()) errs = append(errs, err) } else { metrics.AddUnconvertedModule(moduleType) return Loading bp2build/build_conversion_test.go +22 −1 Original line number Diff line number Diff line Loading @@ -1175,6 +1175,8 @@ func TestAllowlistingBp2buildTargetsWithConfig(t *testing.T) { bp2buildConfig allowlists.Bp2BuildConfig checkDir string fs map[string]string forceEnabledModules []string expectedErrorMessages []string }{ { description: "test bp2build config package and subpackages config", Loading Loading @@ -1237,6 +1239,24 @@ filegroup { name: "opt-out-h", bazel_module: { bp2build_available: false } } `, }, }, { description: "test force-enabled errors out", moduleTypeUnderTest: "filegroup", moduleTypeUnderTestFactory: android.FileGroupFactory, expectedCount: map[string]int{ "migrated": 0, "not_migrated": 0, }, bp2buildConfig: allowlists.Bp2BuildConfig{ "migrated/but_not_really": allowlists.Bp2BuildDefaultFalse, "not_migrated": allowlists.Bp2BuildDefaultFalse, }, fs: map[string]string{ "migrated/Android.bp": `filegroup { name: "a" }`, }, forceEnabledModules: []string{"a"}, expectedErrorMessages: []string{"Force Enabled Module a not converted"}, }, } dir := "." Loading @@ -1252,6 +1272,7 @@ filegroup { name: "opt-out-h", bazel_module: { bp2build_available: false } } fs[f] = []byte(content) } config := android.TestConfig(buildDir, nil, "", fs) config.AddForceEnabledModules(testCase.forceEnabledModules) ctx := android.NewTestContext(config) ctx.RegisterModuleType(testCase.moduleTypeUnderTest, testCase.moduleTypeUnderTestFactory) allowlist := android.NewBp2BuildAllowlist().SetDefaultConfig(testCase.bp2buildConfig) Loading @@ -1268,7 +1289,7 @@ filegroup { name: "opt-out-h", bazel_module: { bp2build_available: false } } // For each directory, test that the expected number of generated targets is correct. for dir, expectedCount := range testCase.expectedCount { bazelTargets, err := generateBazelTargetsForDir(codegenCtx, dir) android.FailIfErrored(t, err) android.CheckErrorsAgainstExpectations(t, err, testCase.expectedErrorMessages) if actualCount := len(bazelTargets); actualCount != expectedCount { t.Fatalf( "%s: Expected %d bazel target for %s package, got %d", Loading Loading
android/bazel_handler.go +5 −1 Original line number Diff line number Diff line Loading @@ -84,8 +84,12 @@ func RegisterMixedBuildsMutator(ctx RegistrationContext) { func mixedBuildsPrepareMutator(ctx BottomUpMutatorContext) { if m := ctx.Module(); m.Enabled() { if mixedBuildMod, ok := m.(MixedBuildBuildable); ok { if mixedBuildMod.IsMixedBuildSupported(ctx) && MixedBuildsEnabled(ctx) { queueMixedBuild := mixedBuildMod.IsMixedBuildSupported(ctx) && MixedBuildsEnabled(ctx) if queueMixedBuild { mixedBuildMod.QueueBazelCall(ctx) } else if _, ok := ctx.Config().bazelForceEnabledModules[m.Name()]; ok { // TODO(b/273910287) - remove this once --ensure_allowlist_integrity is added ctx.ModuleErrorf("Attempted to force enable an unready module: %s. Did you forget to Bp2BuildDefaultTrue its directory?\n", m.Name()) } } } Loading
android/config.go +7 −3 Original line number Diff line number Diff line Loading @@ -592,12 +592,11 @@ func NewConfig(cmdArgs CmdArgs, availableEnv map[string]string) (Config, error) setBazelMode(cmdArgs.BazelMode, "--bazel-mode", BazelProdMode) setBazelMode(cmdArgs.BazelModeStaging, "--bazel-mode-staging", BazelStagingMode) config.BazelContext, err = NewBazelContext(config) config.Bp2buildPackageConfig = GetBp2BuildAllowList() for _, module := range strings.Split(cmdArgs.BazelForceEnabledModules, ",") { config.bazelForceEnabledModules[module] = struct{}{} } config.BazelContext, err = NewBazelContext(config) config.Bp2buildPackageConfig = GetBp2BuildAllowList() return Config{config}, err } Loading Loading @@ -1934,3 +1933,8 @@ func (c *config) BuildFromTextStub() bool { func (c *config) SetBuildFromTextStub(b bool) { c.buildFromTextStub = b } func (c *config) AddForceEnabledModules(forceEnabled []string) { for _, forceEnabledModule := range forceEnabled { c.bazelForceEnabledModules[forceEnabledModule] = struct{}{} } }
android/test_config.go +1 −0 Original line number Diff line number Diff line Loading @@ -65,6 +65,7 @@ func TestConfig(buildDir string, env map[string]string, bp string, fs map[string BuildMode: BazelProdMode, mixedBuildDisabledModules: make(map[string]struct{}), mixedBuildEnabledModules: make(map[string]struct{}), bazelForceEnabledModules: make(map[string]struct{}), } config.deviceConfig = &deviceConfig{ config: config, Loading
bp2build/build_conversion.go +3 −0 Original line number Diff line number Diff line Loading @@ -321,6 +321,9 @@ func GenerateBazelTargets(ctx *CodegenContext, generateFilegroups bool) (convers // target, each of a different rule class. metrics.IncrementRuleClassCount(t.ruleClass) } } else if _, ok := ctx.Config().BazelModulesForceEnabledByFlag()[m.Name()]; ok && m.Name() != "" { err := fmt.Errorf("Force Enabled Module %s not converted", m.Name()) errs = append(errs, err) } else { metrics.AddUnconvertedModule(moduleType) return Loading
bp2build/build_conversion_test.go +22 −1 Original line number Diff line number Diff line Loading @@ -1175,6 +1175,8 @@ func TestAllowlistingBp2buildTargetsWithConfig(t *testing.T) { bp2buildConfig allowlists.Bp2BuildConfig checkDir string fs map[string]string forceEnabledModules []string expectedErrorMessages []string }{ { description: "test bp2build config package and subpackages config", Loading Loading @@ -1237,6 +1239,24 @@ filegroup { name: "opt-out-h", bazel_module: { bp2build_available: false } } `, }, }, { description: "test force-enabled errors out", moduleTypeUnderTest: "filegroup", moduleTypeUnderTestFactory: android.FileGroupFactory, expectedCount: map[string]int{ "migrated": 0, "not_migrated": 0, }, bp2buildConfig: allowlists.Bp2BuildConfig{ "migrated/but_not_really": allowlists.Bp2BuildDefaultFalse, "not_migrated": allowlists.Bp2BuildDefaultFalse, }, fs: map[string]string{ "migrated/Android.bp": `filegroup { name: "a" }`, }, forceEnabledModules: []string{"a"}, expectedErrorMessages: []string{"Force Enabled Module a not converted"}, }, } dir := "." Loading @@ -1252,6 +1272,7 @@ filegroup { name: "opt-out-h", bazel_module: { bp2build_available: false } } fs[f] = []byte(content) } config := android.TestConfig(buildDir, nil, "", fs) config.AddForceEnabledModules(testCase.forceEnabledModules) ctx := android.NewTestContext(config) ctx.RegisterModuleType(testCase.moduleTypeUnderTest, testCase.moduleTypeUnderTestFactory) allowlist := android.NewBp2BuildAllowlist().SetDefaultConfig(testCase.bp2buildConfig) Loading @@ -1268,7 +1289,7 @@ filegroup { name: "opt-out-h", bazel_module: { bp2build_available: false } } // For each directory, test that the expected number of generated targets is correct. for dir, expectedCount := range testCase.expectedCount { bazelTargets, err := generateBazelTargetsForDir(codegenCtx, dir) android.FailIfErrored(t, err) android.CheckErrorsAgainstExpectations(t, err, testCase.expectedErrorMessages) if actualCount := len(bazelTargets); actualCount != expectedCount { t.Fatalf( "%s: Expected %d bazel target for %s package, got %d", Loading