Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 35ca77ed authored by Liz Kammer's avatar Liz Kammer
Browse files

Allowlist additional com.android.runtime blockers

To unblock mixed builds, uses a common mechanism to determine cc module
type across bp2build and mixed builds.

Test: mixed_droid.sh
Change-Id: I1f69ad0858cda549b7c95dbadd596e46df0f23b2
parent a6c0ac65
Loading
Loading
Loading
Loading
+21 −4
Original line number Diff line number Diff line
@@ -235,6 +235,7 @@ var (

	// Configure modules in these directories to enable bp2build_available: true or false by default.
	bp2buildDefaultConfig = Bp2BuildConfig{
		"art/libartpalette":                     Bp2BuildDefaultTrueRecursively,
		"art/libdexfile":                        Bp2BuildDefaultTrueRecursively,
		"art/runtime":                           Bp2BuildDefaultTrueRecursively,
		"art/tools":                             Bp2BuildDefaultTrue,
@@ -296,6 +297,9 @@ var (
		"external/google-benchmark":                          Bp2BuildDefaultTrueRecursively,
		"external/googletest":                                Bp2BuildDefaultTrueRecursively,
		"external/gwp_asan":                                  Bp2BuildDefaultTrueRecursively,
		"external/icu":                                       Bp2BuildDefaultTrueRecursively,
		"external/icu/android_icu4j":                         Bp2BuildDefaultFalse, // java rules incomplete
		"external/icu/icu4j":                                 Bp2BuildDefaultFalse, // java rules incomplete
		"external/jemalloc_new":                              Bp2BuildDefaultTrueRecursively,
		"external/jsoncpp":                                   Bp2BuildDefaultTrueRecursively,
		"external/libcap":                                    Bp2BuildDefaultTrueRecursively,
@@ -482,13 +486,26 @@ var (

		// go deps:
		"apex-protos",                                                                                // depends on soong_zip, a go binary
		"robolectric_tzdata",             // depends on soong_zip, a go binary
		"robolectric-sqlite4java-native", // depends on soong_zip, a go binary
		"generated_android_icu4j_src_files", "generated_android_icu4j_test_files", "icu4c_test_data", // depends on unconverted modules: soong_zip
		"host_bionic_linker_asm",         // depends on extract_linker, a go binary.
		"host_bionic_linker_script",      // depends on extract_linker, a go binary.
		"robolectric-sqlite4java-native", // depends on soong_zip, a go binary
		"robolectric_tzdata",             // depends on soong_zip, a go binary

		"android_icu4j_srcgen_binary", // Bazel build error: deps not allowed without srcs; move to runtime_deps
		"core-icu4j-for-host",         // Bazel build error: deps not allowed without srcs; move to runtime_deps

		// java deps
		"bin2c_fastdeployagent", // depends on deployagent, a java binary
		"android_icu4j_srcgen",          // depends on unconverted modules: currysrc
		"currysrc",                      // depends on unconverted modules: currysrc_org.eclipse, guavalib, jopt-simple-4.9
		"bin2c_fastdeployagent",         // depends on unconverted module: deployagent
		"timezone-host",                 // depends on unconverted modules: art.module.api.annotations
		"robolectric-sqlite4java-0.282", // depends on unconverted modules: robolectric-sqlite4java-import, robolectric-sqlite4java-native
		"truth-prebuilt",                // depends on unconverted modules: asm-7.0, guava
		"truth-host-prebuilt",           // depends on unconverted modules: truth-prebuilt

		"generated_android_icu4j_resources",      // depends on unconverted modules: android_icu4j_srcgen_binary, soong_zip
		"generated_android_icu4j_test_resources", // depends on unconverted modules: android_icu4j_srcgen_binary, soong_zip
	}

	// Per-module denylist of cc_library modules to only generate the static
+2 −4
Original line number Diff line number Diff line
@@ -844,11 +844,9 @@ func bp2BuildParseExportedIncludesHelper(ctx android.BazelConversionPathContext,

func bazelLabelForStaticModule(ctx android.BazelConversionPathContext, m blueprint.Module) string {
	label := android.BazelModuleLabel(ctx, m)
	if aModule, ok := m.(android.Module); ok {
		if ctx.OtherModuleType(aModule) == "cc_library" && !android.GenerateCcLibraryStaticOnly(m.Name()) {
	if ccModule, ok := m.(*Module); ok && ccModule.typ() == fullLibrary && !android.GenerateCcLibraryStaticOnly(m.Name()) {
		label += "_bp2build_cc_library_static"
	}
	}
	return label
}

+56 −26
Original line number Diff line number Diff line
@@ -1751,7 +1751,7 @@ func (c *Module) setSubnameProperty(actx android.ModuleContext) {
// Returns true if Bazel was successfully used for the analysis of this module.
func (c *Module) maybeGenerateBazelActions(actx android.ModuleContext) bool {
	var bazelModuleLabel string
	if actx.ModuleType() == "cc_library" && c.static() {
	if c.typ() == fullLibrary && c.static() {
		// cc_library is a special case in bp2build; two targets are generated -- one for each
		// of the shared and static variants. The shared variant keeps the module name, but the
		// static variant uses a different suffixed name.
@@ -1759,6 +1759,7 @@ func (c *Module) maybeGenerateBazelActions(actx android.ModuleContext) bool {
	} else {
		bazelModuleLabel = c.GetBazelLabel(actx, c)
	}

	bazelActionsUsed := false
	// Mixed builds mode is disabled for modules outside of device OS.
	// TODO(b/200841190): Support non-device OS in mixed builds.
@@ -3466,17 +3467,23 @@ func (c *Module) AlwaysRequiresPlatformApexVariant() bool {

var _ snapshot.RelativeInstallPath = (*Module)(nil)

// ConvertWithBp2build converts Module to Bazel for bp2build.
func (c *Module) ConvertWithBp2build(ctx android.TopDownMutatorContext) {
	prebuilt := c.IsPrebuilt()
type moduleType int

const (
	unknownType moduleType = iota
	binary
	object
	fullLibrary
	staticLibrary
	sharedLibrary
	headerLibrary
)

func (c *Module) typ() moduleType {
	if c.Binary() {
		if !prebuilt {
			binaryBp2build(ctx, c, ctx.ModuleType())
		}
		return binary
	} else if c.Object() {
		if !prebuilt {
			objectBp2Build(ctx, c)
		}
		return object
	} else if c.CcLibrary() {
		static := false
		shared := false
@@ -3487,20 +3494,44 @@ func (c *Module) ConvertWithBp2build(ctx android.TopDownMutatorContext) {
			static = library.MutatedProperties.BuildStatic
			shared = library.MutatedProperties.BuildShared
		}

		if static && shared {
			return fullLibrary
		} else if !static && !shared {
			return headerLibrary
		} else if static {
			return staticLibrary
		}
		return sharedLibrary
	}
	return unknownType
}

// ConvertWithBp2build converts Module to Bazel for bp2build.
func (c *Module) ConvertWithBp2build(ctx android.TopDownMutatorContext) {
	prebuilt := c.IsPrebuilt()
	switch c.typ() {
	case binary:
		if !prebuilt {
			binaryBp2build(ctx, c, ctx.ModuleType())
		}
	case object:
		if !prebuilt {
			objectBp2Build(ctx, c)
		}
	case fullLibrary:
		if !prebuilt {
			libraryBp2Build(ctx, c)
		}
		} else if !static && !shared {
	case headerLibrary:
		libraryHeadersBp2Build(ctx, c)
		} else if static {
	case staticLibrary:

		if prebuilt {
			prebuiltLibraryStaticBp2Build(ctx, c)
		} else {
			sharedOrStaticLibraryBp2Build(ctx, c, true)
		}
		} else if shared {
	case sharedLibrary:
		if prebuilt {
			prebuiltLibrarySharedBp2Build(ctx, c)
		} else {
@@ -3508,7 +3539,6 @@ func (c *Module) ConvertWithBp2build(ctx android.TopDownMutatorContext) {
		}
	}
}
}

//
// Defaults