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

Commit e3ef3c8f authored by Jiyong Park's avatar Jiyong Park
Browse files

Fix the unbundled mainline module build

This change fixes two problems:

1) the prebuilt apexes are force disabled for the unbundled builds
because we need to build the modules from the source then

2) the dependencies from an sdk_library module to
*.stubs.{public|system|tests} are not added for the unbundled build
because the stubs modules are disabled.

Bug: 137282010
Test: unbundled mainline builds are successful
Test: build com.android.media and inspect the jar file to see if
hiddenapi flags are there
$ cd out/dist/mainline_modules_arm
$ unzip com.android.media.apex apex_payload.img
$ mkdir -p mnt
$ sudo mount -o ro,loop apex_payload.img mnt
$ dexdump2 mnt/javalib/updatable-media.jar | grep hiddenapi
shows results

Change-Id: I2c00af07aac4a15770d3acab011a36e2e4803bfc
parent 09cb629c
Loading
Loading
Loading
Loading
+7 −4
Original line number Original line Diff line number Diff line
@@ -1433,10 +1433,13 @@ func (p *Prebuilt) installable() bool {
}
}


func (p *Prebuilt) DepsMutator(ctx android.BottomUpMutatorContext) {
func (p *Prebuilt) DepsMutator(ctx android.BottomUpMutatorContext) {
	// If the device is configured to use flattened APEX, don't set
	// If the device is configured to use flattened APEX, force disable the prebuilt because
	// p.properties.Source so that the prebuilt module (which is
	// the prebuilt is a non-flattened one.
	// a non-flattened APEX) is not used.
	forceDisable := ctx.Config().FlattenApex()
	forceDisable := ctx.Config().FlattenApex() && !ctx.Config().UnbundledBuild()

	// Force disable the prebuilts when we are doing unbundled build. We do unbundled build
	// to build the prebuilts themselves.
	forceDisable = forceDisable || !ctx.Config().UnbundledBuild()


	// b/137216042 don't use prebuilts when address sanitizer is on
	// b/137216042 don't use prebuilts when address sanitizer is on
	forceDisable = forceDisable || android.InList("address", ctx.Config().SanitizeDevice()) ||
	forceDisable = forceDisable || android.InList("address", ctx.Config().SanitizeDevice()) ||
+1 −1
Original line number Original line Diff line number Diff line
@@ -97,7 +97,7 @@ func stubFlagsRule(ctx android.SingletonContext) {
	// Add the android.test.base to the set of stubs only if the android.test.base module is on
	// Add the android.test.base to the set of stubs only if the android.test.base module is on
	// the boot jars list as the runtime will only enforce hiddenapi access against modules on
	// the boot jars list as the runtime will only enforce hiddenapi access against modules on
	// that list.
	// that list.
	if inList("android.test.base", ctx.Config().BootJars()) {
	if inList("android.test.base", ctx.Config().BootJars()) && !ctx.Config().UnbundledBuildUsePrebuiltSdks() {
		publicStubModules = append(publicStubModules, "android.test.base.stubs")
		publicStubModules = append(publicStubModules, "android.test.base.stubs")
	}
	}


+8 −3
Original line number Original line Diff line number Diff line
@@ -149,16 +149,21 @@ var _ Dependency = (*SdkLibrary)(nil)
var _ SdkLibraryDependency = (*SdkLibrary)(nil)
var _ SdkLibraryDependency = (*SdkLibrary)(nil)


func (module *SdkLibrary) DepsMutator(ctx android.BottomUpMutatorContext) {
func (module *SdkLibrary) DepsMutator(ctx android.BottomUpMutatorContext) {
	useBuiltStubs := !ctx.Config().UnbundledBuildUsePrebuiltSdks()
	// Add dependencies to the stubs library
	// Add dependencies to the stubs library
	if useBuiltStubs {
		ctx.AddVariationDependencies(nil, publicApiStubsTag, module.stubsName(apiScopePublic))
		ctx.AddVariationDependencies(nil, publicApiStubsTag, module.stubsName(apiScopePublic))
	}
	ctx.AddVariationDependencies(nil, publicApiFileTag, module.docsName(apiScopePublic))
	ctx.AddVariationDependencies(nil, publicApiFileTag, module.docsName(apiScopePublic))


	sdkDep := decodeSdkDep(ctx, sdkContext(&module.Library))
	sdkDep := decodeSdkDep(ctx, sdkContext(&module.Library))
	if sdkDep.hasStandardLibs() {
	if sdkDep.hasStandardLibs() {
		if useBuiltStubs {
			ctx.AddVariationDependencies(nil, systemApiStubsTag, module.stubsName(apiScopeSystem))
			ctx.AddVariationDependencies(nil, systemApiStubsTag, module.stubsName(apiScopeSystem))
			ctx.AddVariationDependencies(nil, testApiStubsTag, module.stubsName(apiScopeTest))
		}
		ctx.AddVariationDependencies(nil, systemApiFileTag, module.docsName(apiScopeSystem))
		ctx.AddVariationDependencies(nil, systemApiFileTag, module.docsName(apiScopeSystem))
		ctx.AddVariationDependencies(nil, testApiFileTag, module.docsName(apiScopeTest))
		ctx.AddVariationDependencies(nil, testApiFileTag, module.docsName(apiScopeTest))
		ctx.AddVariationDependencies(nil, testApiStubsTag, module.stubsName(apiScopeTest))
	}
	}


	module.Library.deps(ctx)
	module.Library.deps(ctx)