mixed builds: add cc_test bazel handler, and add adbd_test to staging allowlist.
This will allow the test_suites_{arm64, x86_64} CI targets on git_master-bazel to build adbd_test with bazel in `m`. This is currently implemented similar to the cc_binary handler to hydrate the output path field. The tradefed config is still currently handled by Soong in testBinary#install, which is called from both ProcessBazelQueryResponse and GenerateAndroidBuildActions. We'll move the tradefed config path to a mixed builds handler when it's ready on the cc_test bazel rule side. Tested with `atest` with cuttlefish. Since `atest` doesn't have a way to pass --bazel-mode-staging to its internal call to Soong, so I manually tested this by adding adbt_test to the prod allowlist, and confirmed that the installed adbd_test is the same binary as the one in bazel-out. Test: $ showcommands adbd_test | grep bazel-out | tail -n1 ``` /bin/bash -c "rm -f out/target/product/vsoc_x86_64/data/nativetest64/adbd_test/adbd_test && cp -f -d out/bazel/output/execroot/__main__/bazel-out/android_x86_64_silvermont-opt-ST-59d4124ca041/bin/packages/modules/adb/adbd_test out/target/product/vsoc_x86_64/data/nativetest64/adbd_test/adbd_test" ``` Test: Add adbd_test to prod allowlist and run 'lunch aosp_cf_x86_64_phone-userdebug; atest adbd_test', all tests pass. Bug: 258426425 Bug: 261692372 Change-Id: I6be329f39d607af8daa1dc772b23e8dd0247418c
This commit is contained in:
20
cc/cc.go
20
cc/cc.go
@@ -1858,7 +1858,22 @@ func (c *Module) QueueBazelCall(ctx android.BaseModuleContext) {
|
||||
c.bazelHandler.QueueBazelCall(ctx, c.getBazelModuleLabel(ctx))
|
||||
}
|
||||
|
||||
var (
|
||||
mixedBuildSupportedCcTest = []string{
|
||||
"adbd_test",
|
||||
}
|
||||
)
|
||||
|
||||
// IsMixedBuildSupported returns true if the module should be analyzed by Bazel
|
||||
// in any of the --bazel-mode(s). This filters at the module level and takes
|
||||
// precedence over the allowlists in allowlists/allowlists.go.
|
||||
func (c *Module) IsMixedBuildSupported(ctx android.BaseModuleContext) bool {
|
||||
if c.testBinary() && !android.InList(c.Name(), mixedBuildSupportedCcTest) {
|
||||
// Per-module rollout of mixed-builds for cc_test modules.
|
||||
return false
|
||||
}
|
||||
|
||||
// Enable mixed builds as long as the cc_* module type has a bazel handler.
|
||||
return c.bazelHandler != nil
|
||||
}
|
||||
|
||||
@@ -1888,6 +1903,8 @@ func (c *Module) ProcessBazelQueryResponse(ctx android.ModuleContext) {
|
||||
}
|
||||
mctx.ctx = mctx
|
||||
|
||||
// TODO(b/244432500): Get the tradefed config from the bazel target instead
|
||||
// of generating it with Soong.
|
||||
c.maybeInstall(mctx, apexInfo)
|
||||
}
|
||||
|
||||
@@ -2038,6 +2055,9 @@ func (c *Module) maybeUnhideFromMake() {
|
||||
}
|
||||
}
|
||||
|
||||
// maybeInstall is called at the end of both GenerateAndroidBuildActions and
|
||||
// ProcessBazelQueryResponse to run the install hooks for installable modules,
|
||||
// like binaries and tests.
|
||||
func (c *Module) maybeInstall(ctx ModuleContext, apexInfo android.ApexInfo) {
|
||||
if !proptools.BoolDefault(c.Installable(), true) {
|
||||
// If the module has been specifically configure to not be installed then
|
||||
|
Reference in New Issue
Block a user