Remove ConvertWithBp2build implementations

Remove the ConvertWithBp2build implementations from all the module
types, along with the related code.

Bug: 315353489
Test: m blueprint_tests
Change-Id: I212672286686a318893bc7348ddd5a5ec51e77a7
This commit is contained in:
Colin Cross
2023-12-07 13:10:56 -08:00
parent e51c6e4109
commit 8ff105860d
168 changed files with 64 additions and 39712 deletions

View File

@@ -31,16 +31,12 @@ import (
"encoding/json"
"fmt"
"path/filepath"
"reflect"
"strings"
"github.com/google/blueprint/proptools"
"android/soong/android"
"android/soong/bazel"
"android/soong/bazel/cquery"
"android/soong/snapshot"
"android/soong/ui/metrics/bp2build_metrics_proto"
)
var pctx = android.NewPackageContext("android/soong/etc")
@@ -139,7 +135,6 @@ type PrebuiltEtcModule interface {
type PrebuiltEtc struct {
android.ModuleBase
android.DefaultableModuleBase
android.BazelModuleBase
snapshot.VendorSnapshotModuleInterface
snapshot.RecoverySnapshotModuleInterface
@@ -462,7 +457,6 @@ func PrebuiltEtcFactory() android.Module {
// This module is device-only
android.InitAndroidArchModule(module, android.DeviceSupported, android.MultilibFirst)
android.InitDefaultableModule(module)
android.InitBazelModule(module)
return module
}
@@ -492,7 +486,6 @@ func PrebuiltEtcHostFactory() android.Module {
// This module is host-only
android.InitAndroidArchModule(module, android.HostSupported, android.MultilibCommon)
android.InitDefaultableModule(module)
android.InitBazelModule(module)
return module
}
@@ -503,7 +496,6 @@ func PrebuiltEtcCaCertsFactory() android.Module {
InitPrebuiltEtcModule(module, "cacerts")
// This module is device-only
android.InitAndroidArchModule(module, android.DeviceSupported, android.MultilibFirst)
android.InitBazelModule(module)
return module
}
@@ -526,7 +518,6 @@ func PrebuiltRootHostFactory() android.Module {
// This module is host-only
android.InitAndroidArchModule(module, android.HostSupported, android.MultilibCommon)
android.InitDefaultableModule(module)
android.InitBazelModule(module)
return module
}
@@ -538,7 +529,6 @@ func PrebuiltUserShareFactory() android.Module {
// This module is device-only
android.InitAndroidArchModule(module, android.DeviceSupported, android.MultilibFirst)
android.InitDefaultableModule(module)
android.InitBazelModule(module)
return module
}
@@ -730,154 +720,3 @@ func generatePrebuiltSnapshot(s snapshot.SnapshotSingleton, ctx android.Singleto
return snapshot.SnapshotPaths{OutputFiles: snapshotOutputs, NoticeFiles: snapshotNotices}
}
// For Bazel / bp2build
type bazelPrebuiltFileAttributes struct {
Src bazel.LabelAttribute
Filename bazel.LabelAttribute
Dir string
Installable bazel.BoolAttribute
Filename_from_src bazel.BoolAttribute
}
// Bp2buildHelper returns a bazelPrebuiltFileAttributes used for the conversion
// of prebuilt_* modules. bazelPrebuiltFileAttributes has the common attributes
// used by both prebuilt_etc_xml and other prebuilt_* moodules
func (module *PrebuiltEtc) Bp2buildHelper(ctx android.Bp2buildMutatorContext) (*bazelPrebuiltFileAttributes, bool) {
var src bazel.LabelAttribute
for axis, configToProps := range module.GetArchVariantProperties(ctx, &prebuiltEtcProperties{}) {
for config, p := range configToProps {
props, ok := p.(*prebuiltEtcProperties)
if !ok {
continue
}
if props.Src != nil {
srcStr := proptools.String(props.Src)
if srcStr == ctx.ModuleName() {
ctx.MarkBp2buildUnconvertible(bp2build_metrics_proto.UnconvertedReasonType_PROPERTY_UNSUPPORTED, "src == name")
return &bazelPrebuiltFileAttributes{}, false
}
label := android.BazelLabelForModuleSrcSingle(ctx, srcStr)
src.SetSelectValue(axis, config, label)
}
}
productVarProperties, errs := android.ProductVariableProperties(ctx, ctx.Module())
for _, err := range errs {
ctx.ModuleErrorf("ProductVariableProperties error: %s", err)
}
for propName, productConfigProps := range productVarProperties {
for configProp, propVal := range productConfigProps {
if propName == "Src" {
props, ok := propVal.(*string)
if !ok {
ctx.PropertyErrorf(" Expected Property to have type string, but was %s\n", reflect.TypeOf(propVal).String())
continue
}
if props != nil {
label := android.BazelLabelForModuleSrcSingle(ctx, *props)
src.SetSelectValue(configProp.ConfigurationAxis(), configProp.SelectKey(), label)
}
}
}
}
}
var filename string
var filenameFromSrc bool
moduleProps := module.properties
if moduleProps.Filename != nil && *moduleProps.Filename != "" {
filename = *moduleProps.Filename
} else if moduleProps.Filename_from_src != nil && *moduleProps.Filename_from_src {
if moduleProps.Src != nil {
filename = android.BazelLabelForModuleSrcSingle(ctx, *moduleProps.Src).Label
}
filenameFromSrc = true
} else {
filename = ctx.ModuleName()
}
var dir = module.installDirBase
if module.SubDir() != "" {
dir = dir + "/" + module.SubDir()
}
var installable bazel.BoolAttribute
if install := module.properties.Installable; install != nil {
installable.Value = install
}
attrs := &bazelPrebuiltFileAttributes{
Src: src,
Dir: dir,
Installable: installable,
}
if filename != "" {
attrs.Filename = bazel.LabelAttribute{Value: &bazel.Label{Label: filename}}
} else if filenameFromSrc {
attrs.Filename_from_src = bazel.BoolAttribute{Value: moduleProps.Filename_from_src}
}
return attrs, true
}
// ConvertWithBp2build performs bp2build conversion of PrebuiltEtc
// prebuilt_* modules (except prebuilt_etc_xml) are PrebuiltEtc,
// which we treat as *PrebuiltFile*
func (module *PrebuiltEtc) ConvertWithBp2build(ctx android.Bp2buildMutatorContext) {
var dir = module.installDirBase
// prebuilt_file only supports "etc" or "usr/share" or "." as module installDirBase
if !(dir == "etc" || dir == "usr/share" || dir == ".") {
ctx.MarkBp2buildUnconvertible(bp2build_metrics_proto.UnconvertedReasonType_TYPE_UNSUPPORTED, "dir")
return
}
attrs, convertible := module.Bp2buildHelper(ctx)
if !convertible {
return
}
props := bazel.BazelTargetModuleProperties{
Rule_class: "prebuilt_file",
Bzl_load_location: "//build/bazel/rules:prebuilt_file.bzl",
}
ctx.CreateBazelTargetModule(props, android.CommonAttributes{Name: module.Name()}, attrs)
}
var _ android.MixedBuildBuildable = (*PrebuiltEtc)(nil)
func (pe *PrebuiltEtc) IsMixedBuildSupported(ctx android.BaseModuleContext) bool {
return true
}
func (pe *PrebuiltEtc) QueueBazelCall(ctx android.BaseModuleContext) {
ctx.Config().BazelContext.QueueBazelRequest(
pe.GetBazelLabel(ctx, pe),
cquery.GetPrebuiltFileInfo,
android.GetConfigKey(ctx),
)
}
func (pe *PrebuiltEtc) ProcessBazelQueryResponse(ctx android.ModuleContext) {
bazelCtx := ctx.Config().BazelContext
pfi, err := bazelCtx.GetPrebuiltFileInfo(pe.GetBazelLabel(ctx, pe), android.GetConfigKey(ctx))
if err != nil {
ctx.ModuleErrorf(err.Error())
return
}
// Set properties for androidmk
pe.installDirPath = android.PathForModuleInstall(ctx, pfi.Dir)
// Installation rules
ip := installProperties{
installable: pfi.Installable,
filename: pfi.Filename,
sourceFilePath: android.PathForSource(ctx, pfi.Src),
// symlinks: pe.properties.Symlinks, // TODO: b/207489266 - Fully support all properties in prebuilt_file
}
pe.addInstallRules(ctx, ip)
}