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

Commit c6dc5510 authored by Dennis Shen's avatar Dennis Shen
Browse files

do not include sever_configurable_flags dependency when in

force-read-only-mode

Bug: b/316932568
Test: m --no-skip-soong-tests nothing
Change-Id: I02a7925dd6b5b33107dae1507447f8e7a1991795
parent 2127887e
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -77,8 +77,12 @@ func (this *CcAconfigLibraryCallbacks) GeneratorDeps(ctx cc.DepsContext, deps cc
		ctx.AddDependency(ctx.Module(), ccDeclarationsTag, declarations)
	}

	// Add a dependency for the aconfig flags base library
	mode := proptools.StringDefault(this.properties.Mode, "production")

	// Add a dependency for the aconfig flags base library if it is not forced read only
	if mode != "force-read-only" {
		deps.SharedLibs = append(deps.SharedLibs, baseLibDep)
	}
	// TODO: It'd be really nice if we could reexport this library and not make everyone do it.

	return deps
+33 −0
Original line number Diff line number Diff line
@@ -20,6 +20,8 @@ import (

	"android/soong/android"
	"android/soong/cc"

	"github.com/google/blueprint"
)

var ccCodegenModeTestData = []struct {
@@ -164,3 +166,34 @@ func TestAndroidMkCcLibrary(t *testing.T) {
	android.AssertIntEquals(t, "len(LOCAL_ACONFIG_FILES)", 1, len(makeVar))
	android.EnsureListContainsSuffix(t, makeVar, "my_aconfig_declarations_foo/intermediate.pb")
}

func TestForceReadOnly(t *testing.T) {
	t.Helper()
	result := android.GroupFixturePreparers(
		PrepareForTestWithAconfigBuildComponents,
		cc.PrepareForTestWithCcDefaultModules).
		ExtendWithErrorHandler(android.FixtureExpectsNoErrors).
		RunTestWithBp(t, fmt.Sprintf(`
			aconfig_declarations {
				name: "my_aconfig_declarations",
				package: "com.example.package",
				srcs: ["foo.aconfig"],
			}

			cc_aconfig_library {
				name: "my_cc_aconfig_library",
				aconfig_declarations: "my_aconfig_declarations",
				mode: "force-read-only",
			}
		`))

	module := result.ModuleForTests("my_cc_aconfig_library", "android_arm64_armv8-a_shared").Module()
	dependOnBaseLib := false
	result.VisitDirectDeps(module, func(dep blueprint.Module) {
		if dep.Name() == baseLibDep {
			dependOnBaseLib = true
		}
	})
	android.AssertBoolEquals(t, "should not have dependency on server_configuriable_flags",
		dependOnBaseLib, false)
}