From 06a8a1c38456a0037e75b945faf8f0019efa0d54 Mon Sep 17 00:00:00 2001 From: Jooyung Han Date: Wed, 23 Aug 2023 11:11:43 +0900 Subject: [PATCH 1/3] apex: Remove 'zip' apex support zip apex is no longer supported. Bug: 279835185 Test: m Change-Id: I651b0dc4e0efe766f61e97b1e5dd263e0ab74102 --- apex/androidmk.go | 19 +- apex/apex.go | 149 ++------------ apex/apex_test.go | 77 -------- apex/builder.go | 489 +++++++++++++++++++++------------------------- apex/prebuilt.go | 8 +- apex/vndk.go | 8 +- 6 files changed, 255 insertions(+), 495 deletions(-) diff --git a/apex/androidmk.go b/apex/androidmk.go index f4690620c..6b2126e5e 100644 --- a/apex/androidmk.go +++ b/apex/androidmk.go @@ -67,7 +67,7 @@ func (a *apexBundle) fullModuleName(apexBundleName string, linkToSystemLib bool, if linkToSystemLib { return fi.androidMkModuleName } - return fi.androidMkModuleName + "." + apexBundleName + a.suffix + return fi.androidMkModuleName + "." + apexBundleName } // androidMkForFiles generates Make definitions for the contents of an @@ -85,11 +85,6 @@ func (a *apexBundle) androidMkForFiles(w io.Writer, apexBundleName, moduleDir st // conflicts between two apexes with the same apexName. moduleNames := []string{} - // To avoid creating duplicate build rules, run this function only when primaryApexType is true - // to install symbol files in $(PRODUCT_OUT}/apex. - if !a.primaryApexType { - return moduleNames - } for _, fi := range a.filesInfo { linkToSystemLib := a.linkToSystemLib && fi.transitiveDep && fi.availableToPlatform() @@ -237,7 +232,7 @@ func (a *apexBundle) androidMkForFiles(w io.Writer, apexBundleName, moduleDir st } // m will build . as well. - if fi.androidMkModuleName != moduleName && a.primaryApexType { + if fi.androidMkModuleName != moduleName { fmt.Fprintf(w, ".PHONY: %s\n", fi.androidMkModuleName) fmt.Fprintf(w, "%s: %s\n", fi.androidMkModuleName, moduleName) } @@ -266,19 +261,18 @@ func (a *apexBundle) androidMkForType() android.AndroidMkData { return android.AndroidMkData{ Custom: func(w io.Writer, name, prefix, moduleDir string, data android.AndroidMkData) { moduleNames := []string{} - apexType := a.properties.ApexType if a.installable() { moduleNames = a.androidMkForFiles(w, name, moduleDir, data) } fmt.Fprintln(w, "\ninclude $(CLEAR_VARS) # apex.apexBundle") fmt.Fprintln(w, "LOCAL_PATH :=", moduleDir) - fmt.Fprintln(w, "LOCAL_MODULE :=", name+a.suffix) + fmt.Fprintln(w, "LOCAL_MODULE :=", name) data.Entries.WriteLicenseVariables(w) fmt.Fprintln(w, "LOCAL_MODULE_CLASS := ETC") // do we need a new class? fmt.Fprintln(w, "LOCAL_PREBUILT_MODULE_FILE :=", a.outputFile.String()) fmt.Fprintln(w, "LOCAL_MODULE_PATH :=", a.installDir.String()) - stemSuffix := apexType.suffix() + stemSuffix := imageApexSuffix if a.isCompressed { stemSuffix = imageCapexSuffix } @@ -306,10 +300,7 @@ func (a *apexBundle) androidMkForType() android.AndroidMkData { a.writeRequiredModules(w, moduleNames) fmt.Fprintln(w, "include $(BUILD_PREBUILT)") - - if apexType == imageApex { - fmt.Fprintln(w, "ALL_MODULES.$(my_register_name).BUNDLE :=", a.bundleModuleFile.String()) - } + fmt.Fprintln(w, "ALL_MODULES.$(my_register_name).BUNDLE :=", a.bundleModuleFile.String()) android.AndroidMkEmitAssignList(w, "ALL_MODULES.$(my_register_name).LINT_REPORTS", a.lintReports.Strings()) if a.installedFilesFile != nil { diff --git a/apex/apex.go b/apex/apex.go index 8c21d3d7c..44a85b8ae 100644 --- a/apex/apex.go +++ b/apex/apex.go @@ -166,15 +166,7 @@ type apexBundleProperties struct { // Should be only used in non-system apexes (e.g. vendor: true). Default is false. Use_vndk_as_stable *bool - // The type of APEX to build. Controls what the APEX payload is. Either 'image', 'zip' or - // 'both'. When set to image, contents are stored in a filesystem image inside a zip - // container. When set to zip, contents are stored in a zip container directly. This type is - // mostly for host-side debugging. When set to both, the two types are both built. Default - // is 'image'. - Payload_type *string - - // The type of filesystem to use when the payload_type is 'image'. Either 'ext4', 'f2fs' - // or 'erofs'. Default 'ext4'. + // The type of filesystem to use. Either 'ext4', 'f2fs' or 'erofs'. Default 'ext4'. Payload_fs_type *string // For telling the APEX to ignore special handling for system libraries such as bionic. @@ -216,9 +208,6 @@ type apexBundleProperties struct { HideFromMake bool `blueprint:"mutated"` - // Internal package method for this APEX. - ApexType apexPackaging `blueprint:"mutated"` - // Name that dependencies can specify in their apex_available properties to refer to this module. // If not specified, this defaults to Soong module name. This must be the name of a Soong module. Apex_available_name *string @@ -421,13 +410,6 @@ type apexBundle struct { testApex bool vndkApex bool - // Tells whether this variant of the APEX bundle is the primary one or not. Only the primary - // one gets installed to the device. - primaryApexType bool - - // Suffix of module name in Android.mk ".apex", ".zipapex", or "" - suffix string - // File system type of apex_payload.img payloadFsType fsType @@ -1353,88 +1335,26 @@ func apexDirectlyInAnyMutator(mctx android.BottomUpMutatorContext) { } } -// apexPackaging represents a specific packaging method for an APEX. -type apexPackaging int - -const ( - // imageApex is a packaging method where contents are included in a filesystem image which - // is then included in a zip container. This is the most typical way of packaging. - imageApex apexPackaging = iota - - // zipApex is a packaging method where contents are directly included in the zip container. - // This is used for host-side testing - because the contents are easily accessible by - // unzipping the container. - // TODO(b/279835185) deprecate zipApex - zipApex -) - const ( // File extensions of an APEX for different packaging methods imageApexSuffix = ".apex" imageCapexSuffix = ".capex" - zipApexSuffix = ".zipapex" // variant names each of which is for a packaging method imageApexType = "image" - zipApexType = "zip" ext4FsType = "ext4" f2fsFsType = "f2fs" erofsFsType = "erofs" ) -// The suffix for the output "file", not the module -func (a apexPackaging) suffix() string { - switch a { - case imageApex: - return imageApexSuffix - case zipApex: - return zipApexSuffix - default: - panic(fmt.Errorf("unknown APEX type %d", a)) - } -} - -func (a apexPackaging) name() string { - switch a { - case imageApex: - return imageApexType - case zipApex: - return zipApexType - default: - panic(fmt.Errorf("unknown APEX type %d", a)) - } -} - // apexPackagingMutator creates one or more variations each of which is for a packaging method. func apexPackagingMutator(mctx android.BottomUpMutatorContext) { if !mctx.Module().Enabled() { return } - if ab, ok := mctx.Module().(*apexBundle); ok { - var variants []string - switch proptools.StringDefault(ab.properties.Payload_type, "image") { - case "image": - variants = append(variants, imageApexType) - case "zip": - variants = append(variants, zipApexType) - case "both": - variants = append(variants, imageApexType, zipApexType) - default: - mctx.PropertyErrorf("payload_type", "%q is not one of \"image\", \"zip\", or \"both\".", *ab.properties.Payload_type) - return - } - - modules := mctx.CreateLocalVariations(variants...) - - for i, v := range variants { - switch v { - case imageApexType: - modules[i].(*apexBundle).properties.ApexType = imageApex - case zipApexType: - modules[i].(*apexBundle).properties.ApexType = zipApex - } - } + if _, ok := mctx.Module().(*apexBundle); ok { + mctx.CreateLocalVariations(imageApexType) } else if _, ok := mctx.Module().(*OverrideApex); ok { // payload_type is forcibly overridden to "image" // TODO(jiyong): is this the right decision? @@ -1945,7 +1865,7 @@ func (f fsType) string() string { var _ android.MixedBuildBuildable = (*apexBundle)(nil) func (a *apexBundle) IsMixedBuildSupported(ctx android.BaseModuleContext) bool { - return a.properties.ApexType == imageApex + return true } func (a *apexBundle) QueueBazelCall(ctx android.BaseModuleContext) { @@ -1966,13 +1886,9 @@ func (a *apexBundle) ProcessBazelQueryResponse(ctx android.ModuleContext) { return } - a.setApexTypeAndSuffix(ctx) a.setPayloadFsType(ctx) a.setSystemLibLink(ctx) - - if a.properties.ApexType != zipApex { - a.compatSymlinks = makeCompatSymlinks(a.BaseModuleName(), ctx, a.primaryApexType) - } + a.compatSymlinks = makeCompatSymlinks(a.BaseModuleName(), ctx) bazelCtx := ctx.Config().BazelContext outputs, err := bazelCtx.GetApexInfo(a.GetBazelLabel(ctx, a), android.GetConfigKey(ctx)) @@ -2007,24 +1923,18 @@ func (a *apexBundle) ProcessBazelQueryResponse(ctx android.ModuleContext) { // part of a bundled build. a.makeModulesToInstall = append(a.makeModulesToInstall, outputs.MakeModulesToInstall...) - apexType := a.properties.ApexType - switch apexType { - case imageApex: - a.bundleModuleFile = android.PathForBazelOut(ctx, outputs.BundleFile) - a.nativeApisUsedByModuleFile = android.ModuleOutPath(android.PathForBazelOut(ctx, outputs.SymbolsUsedByApex)) - a.nativeApisBackedByModuleFile = android.ModuleOutPath(android.PathForBazelOut(ctx, outputs.BackingLibs)) - // TODO(b/239084755): Generate the java api using.xml file from Bazel. - a.javaApisUsedByModuleFile = android.ModuleOutPath(android.PathForBazelOut(ctx, outputs.JavaSymbolsUsedByApex)) - a.installedFilesFile = android.ModuleOutPath(android.PathForBazelOut(ctx, outputs.InstalledFiles)) - installSuffix := imageApexSuffix - if a.isCompressed { - installSuffix = imageCapexSuffix - } - a.installedFile = ctx.InstallFile(a.installDir, a.Name()+installSuffix, a.outputFile, - a.compatSymlinks.Paths()...) - default: - panic(fmt.Errorf("internal error: unexpected apex_type for the ProcessBazelQueryResponse: %v", a.properties.ApexType)) + a.bundleModuleFile = android.PathForBazelOut(ctx, outputs.BundleFile) + a.nativeApisUsedByModuleFile = android.ModuleOutPath(android.PathForBazelOut(ctx, outputs.SymbolsUsedByApex)) + a.nativeApisBackedByModuleFile = android.ModuleOutPath(android.PathForBazelOut(ctx, outputs.BackingLibs)) + // TODO(b/239084755): Generate the java api using.xml file from Bazel. + a.javaApisUsedByModuleFile = android.ModuleOutPath(android.PathForBazelOut(ctx, outputs.JavaSymbolsUsedByApex)) + a.installedFilesFile = android.ModuleOutPath(android.PathForBazelOut(ctx, outputs.InstalledFiles)) + installSuffix := imageApexSuffix + if a.isCompressed { + installSuffix = imageCapexSuffix } + a.installedFile = ctx.InstallFile(a.installDir, a.Name()+installSuffix, a.outputFile, + a.compatSymlinks.Paths()...) // filesInfo in mixed mode must retrieve all information about the apex's // contents completely from the Starlark providers. It should never rely on @@ -2065,9 +1975,7 @@ func (a *apexBundle) ProcessBazelQueryResponse(ctx android.ModuleContext) { } func (a *apexBundle) setCompression(ctx android.ModuleContext) { - if a.properties.ApexType != imageApex { - a.isCompressed = false - } else if a.testOnlyShouldForceCompression() { + if a.testOnlyShouldForceCompression() { a.isCompressed = true } else { a.isCompressed = ctx.Config().ApexCompressionEnabled() && a.isCompressable() @@ -2093,7 +2001,7 @@ func (a *apexBundle) setSystemLibLink(ctx android.ModuleContext) { // We don't need the optimization for updatable APEXes, as it might give false signal // to the system health when the APEXes are still bundled (b/149805758). - if !forced && updatable && a.properties.ApexType == imageApex { + if !forced && updatable { a.linkToSystemLib = false } @@ -2116,22 +2024,6 @@ func (a *apexBundle) setPayloadFsType(ctx android.ModuleContext) { } } -func (a *apexBundle) setApexTypeAndSuffix(ctx android.ModuleContext) { - // Set suffix and primaryApexType depending on the ApexType - switch a.properties.ApexType { - case imageApex: - a.suffix = "" - a.primaryApexType = true - case zipApex: - if proptools.String(a.properties.Payload_type) == "zip" { - a.suffix = "" - a.primaryApexType = true - } else { - a.suffix = zipApexSuffix - } - } -} - func (a *apexBundle) isCompressable() bool { return proptools.BoolDefault(a.overridableProperties.Compressible, false) && !a.testApex } @@ -2621,12 +2513,9 @@ func (a *apexBundle) GenerateAndroidBuildActions(ctx android.ModuleContext) { a.installDir = android.PathForModuleInstall(ctx, "apex") a.filesInfo = vctx.filesInfo - a.setApexTypeAndSuffix(ctx) a.setPayloadFsType(ctx) a.setSystemLibLink(ctx) - if a.properties.ApexType != zipApex { - a.compatSymlinks = makeCompatSymlinks(a.BaseModuleName(), ctx, a.primaryApexType) - } + a.compatSymlinks = makeCompatSymlinks(a.BaseModuleName(), ctx) //////////////////////////////////////////////////////////////////////////////////////////// // 4) generate the build rules to create the APEX. This is done in builder.go. diff --git a/apex/apex_test.go b/apex/apex_test.go index da059eb0a..076dc3f0f 100644 --- a/apex/apex_test.go +++ b/apex/apex_test.go @@ -819,57 +819,6 @@ func TestFileContexts(t *testing.T) { } } -func TestBasicZipApex(t *testing.T) { - ctx := testApex(t, ` - apex { - name: "myapex", - key: "myapex.key", - payload_type: "zip", - native_shared_libs: ["mylib"], - updatable: false, - } - - apex_key { - name: "myapex.key", - public_key: "testkey.avbpubkey", - private_key: "testkey.pem", - } - - cc_library { - name: "mylib", - srcs: ["mylib.cpp"], - shared_libs: ["mylib2"], - system_shared_libs: [], - stl: "none", - apex_available: [ "myapex" ], - } - - cc_library { - name: "mylib2", - srcs: ["mylib.cpp"], - system_shared_libs: [], - stl: "none", - apex_available: [ "myapex" ], - } - `) - - zipApexRule := ctx.ModuleForTests("myapex", "android_common_myapex_zip").Rule("zipApexRule") - copyCmds := zipApexRule.Args["copy_commands"] - - // Ensure that main rule creates an output - ensureContains(t, zipApexRule.Output.String(), "myapex.zipapex.unsigned") - - // Ensure that APEX variant is created for the direct dep - ensureListContains(t, ctx.ModuleVariantsForTests("mylib"), "android_arm64_armv8-a_shared_apex10000") - - // Ensure that APEX variant is created for the indirect dep - ensureListContains(t, ctx.ModuleVariantsForTests("mylib2"), "android_arm64_armv8-a_shared_apex10000") - - // Ensure that both direct and indirect deps are copied into apex - ensureContains(t, copyCmds, "image.zipapex/lib64/mylib.so") - ensureContains(t, copyCmds, "image.zipapex/lib64/mylib2.so") -} - func TestApexWithStubs(t *testing.T) { ctx := testApex(t, ` apex { @@ -3657,10 +3606,6 @@ func getFiles(t *testing.T, ctx *android.TestContext, moduleName, variant string module := ctx.ModuleForTests(moduleName, variant) apexRule := module.MaybeRule("apexRule") apexDir := "/image.apex/" - if apexRule.Rule == nil { - apexRule = module.Rule("zipApexRule") - apexDir = "/image.zipapex/" - } copyCmds := apexRule.Args["copy_commands"] var ret []fileInApex for _, cmd := range strings.Split(copyCmds, "&&") { @@ -9554,28 +9499,6 @@ func TestPrebuiltStubLibDep(t *testing.T) { } } -func TestHostApexInHostOnlyBuild(t *testing.T) { - testApex(t, ` - apex { - name: "myapex", - host_supported: true, - key: "myapex.key", - updatable: false, - payload_type: "zip", - } - apex_key { - name: "myapex.key", - public_key: "testkey.avbpubkey", - private_key: "testkey.pem", - } - `, - android.FixtureModifyConfig(func(config android.Config) { - // We may not have device targets in all builds, e.g. in - // prebuilts/build-tools/build-prebuilts.sh - config.Targets[android.Android] = []android.Target{} - })) -} - func TestApexJavaCoverage(t *testing.T) { bp := ` apex { diff --git a/apex/builder.go b/apex/builder.go index db66a72ce..ec5b3398e 100644 --- a/apex/builder.go +++ b/apex/builder.go @@ -179,19 +179,6 @@ var ( }, "tool_path", "image_dir", "copy_commands", "file_contexts", "canned_fs_config", "key", "opt_flags", "manifest", "libs_to_trim") - zipApexRule = pctx.StaticRule("zipApexRule", blueprint.RuleParams{ - Command: `rm -rf ${image_dir} && mkdir -p ${image_dir} && ` + - `(. ${out}.copy_commands) && ` + - `APEXER_TOOL_PATH=${tool_path} ` + - `${apexer} --force --manifest ${manifest} ` + - `--payload_type zip ` + - `${image_dir} ${out} `, - CommandDeps: []string{"${apexer}", "${merge_zips}", "${soong_zip}", "${zipalign}", "${aapt2}"}, - Rspfile: "${out}.copy_commands", - RspfileContent: "${copy_commands}", - Description: "ZipAPEX ${image_dir} => ${out}", - }, "tool_path", "image_dir", "copy_commands", "manifest") - apexProtoConvertRule = pctx.AndroidStaticRule("apexProtoConvertRule", blueprint.RuleParams{ Command: `${aapt2} convert --output-format proto $in -o $out`, @@ -369,21 +356,16 @@ func (a *apexBundle) buildFileContexts(ctx android.ModuleContext) android.Output // even though VNDK APEX is supposed to be installed on /system. (See com.android.vndk.current.on_vendor) forceLabel = "u:object_r:vendor_apex_metadata_file:s0" } - switch a.properties.ApexType { - case imageApex: - // remove old file - rule.Command().Text("rm").FlagWithOutput("-f ", output) - // copy file_contexts - rule.Command().Text("cat").Input(fileContexts).Text(">>").Output(output) - // new line - rule.Command().Text("echo").Text(">>").Output(output) - if !useFileContextsAsIs { - // force-label /apex_manifest.pb and / - rule.Command().Text("echo").Text("/apex_manifest\\\\.pb").Text(forceLabel).Text(">>").Output(output) - rule.Command().Text("echo").Text("/").Text(forceLabel).Text(">>").Output(output) - } - default: - panic(fmt.Errorf("unsupported type %v", a.properties.ApexType)) + // remove old file + rule.Command().Text("rm").FlagWithOutput("-f ", output) + // copy file_contexts + rule.Command().Text("cat").Input(fileContexts).Text(">>").Output(output) + // new line + rule.Command().Text("echo").Text(">>").Output(output) + if !useFileContextsAsIs { + // force-label /apex_manifest.pb and / + rule.Command().Text("echo").Text("/apex_manifest\\\\.pb").Text(forceLabel).Text(">>").Output(output) + rule.Command().Text("echo").Text("/").Text(forceLabel).Text(">>").Output(output) } rule.Build("file_contexts."+a.Name(), "Generate file_contexts") @@ -464,8 +446,7 @@ func markManifestTestOnly(ctx android.ModuleContext, androidManifestFile android // buildApex creates build rules to build an APEX using apexer. func (a *apexBundle) buildApex(ctx android.ModuleContext) { - apexType := a.properties.ApexType - suffix := apexType.suffix() + suffix := imageApexSuffix apexName := a.BaseModuleName() //////////////////////////////////////////////////////////////////////////////////////////// @@ -604,263 +585,247 @@ func (a *apexBundle) buildApex(ctx android.ModuleContext) { outHostBinDir := ctx.Config().HostToolPath(ctx, "").String() prebuiltSdkToolsBinDir := filepath.Join("prebuilts", "sdk", "tools", runtime.GOOS, "bin") - if apexType == imageApex { + //////////////////////////////////////////////////////////////////////////////////// + // Step 2: create canned_fs_config which encodes filemode,uid,gid of each files + // in this APEX. The file will be used by apexer in later steps. + cannedFsConfig := a.buildCannedFsConfig(ctx) + implicitInputs = append(implicitInputs, cannedFsConfig) - //////////////////////////////////////////////////////////////////////////////////// - // Step 2: create canned_fs_config which encodes filemode,uid,gid of each files - // in this APEX. The file will be used by apexer in later steps. - cannedFsConfig := a.buildCannedFsConfig(ctx) - implicitInputs = append(implicitInputs, cannedFsConfig) + //////////////////////////////////////////////////////////////////////////////////// + // Step 3: Prepare option flags for apexer and invoke it to create an unsigned APEX. + // TODO(jiyong): use the RuleBuilder + optFlags := []string{} - //////////////////////////////////////////////////////////////////////////////////// - // Step 3: Prepare option flags for apexer and invoke it to create an unsigned APEX. - // TODO(jiyong): use the RuleBuilder - optFlags := []string{} + fileContexts := a.buildFileContexts(ctx) + implicitInputs = append(implicitInputs, fileContexts) - fileContexts := a.buildFileContexts(ctx) - implicitInputs = append(implicitInputs, fileContexts) + implicitInputs = append(implicitInputs, a.privateKeyFile, a.publicKeyFile) + optFlags = append(optFlags, "--pubkey "+a.publicKeyFile.String()) - implicitInputs = append(implicitInputs, a.privateKeyFile, a.publicKeyFile) - optFlags = append(optFlags, "--pubkey "+a.publicKeyFile.String()) + manifestPackageName := a.getOverrideManifestPackageName(ctx) + if manifestPackageName != "" { + optFlags = append(optFlags, "--override_apk_package_name "+manifestPackageName) + } - manifestPackageName := a.getOverrideManifestPackageName(ctx) - if manifestPackageName != "" { - optFlags = append(optFlags, "--override_apk_package_name "+manifestPackageName) + if a.properties.AndroidManifest != nil { + androidManifestFile := android.PathForModuleSrc(ctx, proptools.String(a.properties.AndroidManifest)) + + if a.testApex { + androidManifestFile = markManifestTestOnly(ctx, androidManifestFile) } - if a.properties.AndroidManifest != nil { - androidManifestFile := android.PathForModuleSrc(ctx, proptools.String(a.properties.AndroidManifest)) + implicitInputs = append(implicitInputs, androidManifestFile) + optFlags = append(optFlags, "--android_manifest "+androidManifestFile.String()) + } else if a.testApex { + optFlags = append(optFlags, "--test_only") + } - if a.testApex { - androidManifestFile = markManifestTestOnly(ctx, androidManifestFile) - } + // Determine target/min sdk version from the context + // TODO(jiyong): make this as a function + moduleMinSdkVersion := a.minSdkVersion(ctx) + minSdkVersion := moduleMinSdkVersion.String() - implicitInputs = append(implicitInputs, androidManifestFile) - optFlags = append(optFlags, "--android_manifest "+androidManifestFile.String()) - } else if a.testApex { - optFlags = append(optFlags, "--test_only") - } - - // Determine target/min sdk version from the context - // TODO(jiyong): make this as a function - moduleMinSdkVersion := a.minSdkVersion(ctx) - minSdkVersion := moduleMinSdkVersion.String() - - // bundletool doesn't understand what "current" is. We need to transform it to - // codename - if moduleMinSdkVersion.IsCurrent() || moduleMinSdkVersion.IsNone() { - minSdkVersion = ctx.Config().DefaultAppTargetSdk(ctx).String() - - if java.UseApiFingerprint(ctx) { - minSdkVersion = ctx.Config().PlatformSdkCodename() + fmt.Sprintf(".$$(cat %s)", java.ApiFingerprintPath(ctx).String()) - implicitInputs = append(implicitInputs, java.ApiFingerprintPath(ctx)) - } - } - // apex module doesn't have a concept of target_sdk_version, hence for the time - // being targetSdkVersion == default targetSdkVersion of the branch. - targetSdkVersion := strconv.Itoa(ctx.Config().DefaultAppTargetSdk(ctx).FinalOrFutureInt()) + // bundletool doesn't understand what "current" is. We need to transform it to + // codename + if moduleMinSdkVersion.IsCurrent() || moduleMinSdkVersion.IsNone() { + minSdkVersion = ctx.Config().DefaultAppTargetSdk(ctx).String() if java.UseApiFingerprint(ctx) { - targetSdkVersion = ctx.Config().PlatformSdkCodename() + fmt.Sprintf(".$$(cat %s)", java.ApiFingerprintPath(ctx).String()) + minSdkVersion = ctx.Config().PlatformSdkCodename() + fmt.Sprintf(".$$(cat %s)", java.ApiFingerprintPath(ctx).String()) implicitInputs = append(implicitInputs, java.ApiFingerprintPath(ctx)) } - optFlags = append(optFlags, "--target_sdk_version "+targetSdkVersion) - optFlags = append(optFlags, "--min_sdk_version "+minSdkVersion) + } + // apex module doesn't have a concept of target_sdk_version, hence for the time + // being targetSdkVersion == default targetSdkVersion of the branch. + targetSdkVersion := strconv.Itoa(ctx.Config().DefaultAppTargetSdk(ctx).FinalOrFutureInt()) - if a.overridableProperties.Logging_parent != "" { - optFlags = append(optFlags, "--logging_parent ", a.overridableProperties.Logging_parent) - } + if java.UseApiFingerprint(ctx) { + targetSdkVersion = ctx.Config().PlatformSdkCodename() + fmt.Sprintf(".$$(cat %s)", java.ApiFingerprintPath(ctx).String()) + implicitInputs = append(implicitInputs, java.ApiFingerprintPath(ctx)) + } + optFlags = append(optFlags, "--target_sdk_version "+targetSdkVersion) + optFlags = append(optFlags, "--min_sdk_version "+minSdkVersion) - // Create a NOTICE file, and embed it as an asset file in the APEX. - htmlGzNotice := android.PathForModuleOut(ctx, "NOTICE.html.gz") - android.BuildNoticeHtmlOutputFromLicenseMetadata( - ctx, htmlGzNotice, "", "", - []string{ - android.PathForModuleInstall(ctx).String() + "/", - android.PathForModuleInPartitionInstall(ctx, "apex").String() + "/", - }) - noticeAssetPath := android.PathForModuleOut(ctx, "NOTICE", "NOTICE.html.gz") - builder := android.NewRuleBuilder(pctx, ctx) - builder.Command().Text("cp"). - Input(htmlGzNotice). - Output(noticeAssetPath) - builder.Build("notice_dir", "Building notice dir") - implicitInputs = append(implicitInputs, noticeAssetPath) - optFlags = append(optFlags, "--assets_dir "+filepath.Dir(noticeAssetPath.String())) + if a.overridableProperties.Logging_parent != "" { + optFlags = append(optFlags, "--logging_parent ", a.overridableProperties.Logging_parent) + } - // Apexes which are supposed to be installed in builtin dirs(/system, etc) - // don't need hashtree for activation. Therefore, by removing hashtree from - // apex bundle (filesystem image in it, to be specific), we can save storage. - needHashTree := moduleMinSdkVersion.LessThanOrEqualTo(android.SdkVersion_Android10) || - a.shouldGenerateHashtree() - if ctx.Config().ApexCompressionEnabled() && a.isCompressable() { - needHashTree = true - } - if !needHashTree { - optFlags = append(optFlags, "--no_hashtree") - } - - if a.testOnlyShouldSkipPayloadSign() { - optFlags = append(optFlags, "--unsigned_payload") - } - - if moduleMinSdkVersion == android.SdkVersion_Android10 { - implicitInputs = append(implicitInputs, a.manifestJsonOut) - optFlags = append(optFlags, "--manifest_json "+a.manifestJsonOut.String()) - } - - optFlags = append(optFlags, "--payload_fs_type "+a.payloadFsType.string()) - - if a.dynamic_common_lib_apex() { - ctx.Build(pctx, android.BuildParams{ - Rule: DCLAApexRule, - Implicits: implicitInputs, - Output: unsignedOutputFile, - Description: "apex (" + apexType.name() + ")", - Args: map[string]string{ - "tool_path": outHostBinDir + ":" + prebuiltSdkToolsBinDir, - "image_dir": imageDir.String(), - "copy_commands": strings.Join(copyCommands, " && "), - "manifest": a.manifestPbOut.String(), - "file_contexts": fileContexts.String(), - "canned_fs_config": cannedFsConfig.String(), - "key": a.privateKeyFile.String(), - "opt_flags": strings.Join(optFlags, " "), - }, - }) - } else if ctx.Config().ApexTrimEnabled() && len(a.libs_to_trim(ctx)) > 0 { - ctx.Build(pctx, android.BuildParams{ - Rule: TrimmedApexRule, - Implicits: implicitInputs, - Output: unsignedOutputFile, - Description: "apex (" + apexType.name() + ")", - Args: map[string]string{ - "tool_path": outHostBinDir + ":" + prebuiltSdkToolsBinDir, - "image_dir": imageDir.String(), - "copy_commands": strings.Join(copyCommands, " && "), - "manifest": a.manifestPbOut.String(), - "file_contexts": fileContexts.String(), - "canned_fs_config": cannedFsConfig.String(), - "key": a.privateKeyFile.String(), - "opt_flags": strings.Join(optFlags, " "), - "libs_to_trim": strings.Join(a.libs_to_trim(ctx), ","), - }, - }) - } else { - ctx.Build(pctx, android.BuildParams{ - Rule: apexRule, - Implicits: implicitInputs, - Output: unsignedOutputFile, - Description: "apex (" + apexType.name() + ")", - Args: map[string]string{ - "tool_path": outHostBinDir + ":" + prebuiltSdkToolsBinDir, - "image_dir": imageDir.String(), - "copy_commands": strings.Join(copyCommands, " && "), - "manifest": a.manifestPbOut.String(), - "file_contexts": fileContexts.String(), - "canned_fs_config": cannedFsConfig.String(), - "key": a.privateKeyFile.String(), - "opt_flags": strings.Join(optFlags, " "), - }, - }) - } - - // TODO(jiyong): make the two rules below as separate functions - apexProtoFile := android.PathForModuleOut(ctx, a.Name()+".pb"+suffix) - bundleModuleFile := android.PathForModuleOut(ctx, a.Name()+suffix+"-base.zip") - a.bundleModuleFile = bundleModuleFile - - ctx.Build(pctx, android.BuildParams{ - Rule: apexProtoConvertRule, - Input: unsignedOutputFile, - Output: apexProtoFile, - Description: "apex proto convert", + // Create a NOTICE file, and embed it as an asset file in the APEX. + htmlGzNotice := android.PathForModuleOut(ctx, "NOTICE.html.gz") + android.BuildNoticeHtmlOutputFromLicenseMetadata( + ctx, htmlGzNotice, "", "", + []string{ + android.PathForModuleInstall(ctx).String() + "/", + android.PathForModuleInPartitionInstall(ctx, "apex").String() + "/", }) + noticeAssetPath := android.PathForModuleOut(ctx, "NOTICE", "NOTICE.html.gz") + builder := android.NewRuleBuilder(pctx, ctx) + builder.Command().Text("cp"). + Input(htmlGzNotice). + Output(noticeAssetPath) + builder.Build("notice_dir", "Building notice dir") + implicitInputs = append(implicitInputs, noticeAssetPath) + optFlags = append(optFlags, "--assets_dir "+filepath.Dir(noticeAssetPath.String())) - implicitInputs = append(implicitInputs, unsignedOutputFile) + // Apexes which are supposed to be installed in builtin dirs(/system, etc) + // don't need hashtree for activation. Therefore, by removing hashtree from + // apex bundle (filesystem image in it, to be specific), we can save storage. + needHashTree := moduleMinSdkVersion.LessThanOrEqualTo(android.SdkVersion_Android10) || + a.shouldGenerateHashtree() + if ctx.Config().ApexCompressionEnabled() && a.isCompressable() { + needHashTree = true + } + if !needHashTree { + optFlags = append(optFlags, "--no_hashtree") + } - // Run coverage analysis - apisUsedbyOutputFile := android.PathForModuleOut(ctx, a.Name()+"_using.txt") + if a.testOnlyShouldSkipPayloadSign() { + optFlags = append(optFlags, "--unsigned_payload") + } + + if moduleMinSdkVersion == android.SdkVersion_Android10 { + implicitInputs = append(implicitInputs, a.manifestJsonOut) + optFlags = append(optFlags, "--manifest_json "+a.manifestJsonOut.String()) + } + + optFlags = append(optFlags, "--payload_fs_type "+a.payloadFsType.string()) + + if a.dynamic_common_lib_apex() { ctx.Build(pctx, android.BuildParams{ - Rule: generateAPIsUsedbyApexRule, - Implicits: implicitInputs, - Description: "coverage", - Output: apisUsedbyOutputFile, - Args: map[string]string{ - "image_dir": imageDir.String(), - "readelf": "${config.ClangBin}/llvm-readelf", - }, - }) - a.nativeApisUsedByModuleFile = apisUsedbyOutputFile - - var nativeLibNames []string - for _, f := range a.filesInfo { - if f.class == nativeSharedLib { - nativeLibNames = append(nativeLibNames, f.stem()) - } - } - apisBackedbyOutputFile := android.PathForModuleOut(ctx, a.Name()+"_backing.txt") - rule := android.NewRuleBuilder(pctx, ctx) - rule.Command(). - Tool(android.PathForSource(ctx, "build/soong/scripts/gen_ndk_backedby_apex.sh")). - Output(apisBackedbyOutputFile). - Flags(nativeLibNames) - rule.Build("ndk_backedby_list", "Generate API libraries backed by Apex") - a.nativeApisBackedByModuleFile = apisBackedbyOutputFile - - var javaLibOrApkPath []android.Path - for _, f := range a.filesInfo { - if f.class == javaSharedLib || f.class == app { - javaLibOrApkPath = append(javaLibOrApkPath, f.builtFile) - } - } - javaApiUsedbyOutputFile := android.PathForModuleOut(ctx, a.Name()+"_using.xml") - javaUsedByRule := android.NewRuleBuilder(pctx, ctx) - javaUsedByRule.Command(). - Tool(android.PathForSource(ctx, "build/soong/scripts/gen_java_usedby_apex.sh")). - BuiltTool("dexdeps"). - Output(javaApiUsedbyOutputFile). - Inputs(javaLibOrApkPath) - javaUsedByRule.Build("java_usedby_list", "Generate Java APIs used by Apex") - a.javaApisUsedByModuleFile = javaApiUsedbyOutputFile - - bundleConfig := a.buildBundleConfig(ctx) - - var abis []string - for _, target := range ctx.MultiTargets() { - if len(target.Arch.Abi) > 0 { - abis = append(abis, target.Arch.Abi[0]) - } - } - - abis = android.FirstUniqueStrings(abis) - - ctx.Build(pctx, android.BuildParams{ - Rule: apexBundleRule, - Input: apexProtoFile, - Implicit: bundleConfig, - Output: a.bundleModuleFile, - Description: "apex bundle module", - Args: map[string]string{ - "abi": strings.Join(abis, "."), - "config": bundleConfig.String(), - }, - }) - } else { // zipApex - ctx.Build(pctx, android.BuildParams{ - Rule: zipApexRule, + Rule: DCLAApexRule, Implicits: implicitInputs, Output: unsignedOutputFile, - Description: "apex (" + apexType.name() + ")", + Description: "apex", Args: map[string]string{ - "tool_path": outHostBinDir + ":" + prebuiltSdkToolsBinDir, - "image_dir": imageDir.String(), - "copy_commands": strings.Join(copyCommands, " && "), - "manifest": a.manifestPbOut.String(), + "tool_path": outHostBinDir + ":" + prebuiltSdkToolsBinDir, + "image_dir": imageDir.String(), + "copy_commands": strings.Join(copyCommands, " && "), + "manifest": a.manifestPbOut.String(), + "file_contexts": fileContexts.String(), + "canned_fs_config": cannedFsConfig.String(), + "key": a.privateKeyFile.String(), + "opt_flags": strings.Join(optFlags, " "), + }, + }) + } else if ctx.Config().ApexTrimEnabled() && len(a.libs_to_trim(ctx)) > 0 { + ctx.Build(pctx, android.BuildParams{ + Rule: TrimmedApexRule, + Implicits: implicitInputs, + Output: unsignedOutputFile, + Description: "apex", + Args: map[string]string{ + "tool_path": outHostBinDir + ":" + prebuiltSdkToolsBinDir, + "image_dir": imageDir.String(), + "copy_commands": strings.Join(copyCommands, " && "), + "manifest": a.manifestPbOut.String(), + "file_contexts": fileContexts.String(), + "canned_fs_config": cannedFsConfig.String(), + "key": a.privateKeyFile.String(), + "opt_flags": strings.Join(optFlags, " "), + "libs_to_trim": strings.Join(a.libs_to_trim(ctx), ","), + }, + }) + } else { + ctx.Build(pctx, android.BuildParams{ + Rule: apexRule, + Implicits: implicitInputs, + Output: unsignedOutputFile, + Description: "apex", + Args: map[string]string{ + "tool_path": outHostBinDir + ":" + prebuiltSdkToolsBinDir, + "image_dir": imageDir.String(), + "copy_commands": strings.Join(copyCommands, " && "), + "manifest": a.manifestPbOut.String(), + "file_contexts": fileContexts.String(), + "canned_fs_config": cannedFsConfig.String(), + "key": a.privateKeyFile.String(), + "opt_flags": strings.Join(optFlags, " "), }, }) } + // TODO(jiyong): make the two rules below as separate functions + apexProtoFile := android.PathForModuleOut(ctx, a.Name()+".pb"+suffix) + bundleModuleFile := android.PathForModuleOut(ctx, a.Name()+suffix+"-base.zip") + a.bundleModuleFile = bundleModuleFile + + ctx.Build(pctx, android.BuildParams{ + Rule: apexProtoConvertRule, + Input: unsignedOutputFile, + Output: apexProtoFile, + Description: "apex proto convert", + }) + + implicitInputs = append(implicitInputs, unsignedOutputFile) + + // Run coverage analysis + apisUsedbyOutputFile := android.PathForModuleOut(ctx, a.Name()+"_using.txt") + ctx.Build(pctx, android.BuildParams{ + Rule: generateAPIsUsedbyApexRule, + Implicits: implicitInputs, + Description: "coverage", + Output: apisUsedbyOutputFile, + Args: map[string]string{ + "image_dir": imageDir.String(), + "readelf": "${config.ClangBin}/llvm-readelf", + }, + }) + a.nativeApisUsedByModuleFile = apisUsedbyOutputFile + + var nativeLibNames []string + for _, f := range a.filesInfo { + if f.class == nativeSharedLib { + nativeLibNames = append(nativeLibNames, f.stem()) + } + } + apisBackedbyOutputFile := android.PathForModuleOut(ctx, a.Name()+"_backing.txt") + rb := android.NewRuleBuilder(pctx, ctx) + rb.Command(). + Tool(android.PathForSource(ctx, "build/soong/scripts/gen_ndk_backedby_apex.sh")). + Output(apisBackedbyOutputFile). + Flags(nativeLibNames) + rb.Build("ndk_backedby_list", "Generate API libraries backed by Apex") + a.nativeApisBackedByModuleFile = apisBackedbyOutputFile + + var javaLibOrApkPath []android.Path + for _, f := range a.filesInfo { + if f.class == javaSharedLib || f.class == app { + javaLibOrApkPath = append(javaLibOrApkPath, f.builtFile) + } + } + javaApiUsedbyOutputFile := android.PathForModuleOut(ctx, a.Name()+"_using.xml") + javaUsedByRule := android.NewRuleBuilder(pctx, ctx) + javaUsedByRule.Command(). + Tool(android.PathForSource(ctx, "build/soong/scripts/gen_java_usedby_apex.sh")). + BuiltTool("dexdeps"). + Output(javaApiUsedbyOutputFile). + Inputs(javaLibOrApkPath) + javaUsedByRule.Build("java_usedby_list", "Generate Java APIs used by Apex") + a.javaApisUsedByModuleFile = javaApiUsedbyOutputFile + + bundleConfig := a.buildBundleConfig(ctx) + + var abis []string + for _, target := range ctx.MultiTargets() { + if len(target.Arch.Abi) > 0 { + abis = append(abis, target.Arch.Abi[0]) + } + } + + abis = android.FirstUniqueStrings(abis) + + ctx.Build(pctx, android.BuildParams{ + Rule: apexBundleRule, + Input: apexProtoFile, + Implicit: bundleConfig, + Output: a.bundleModuleFile, + Description: "apex bundle module", + Args: map[string]string{ + "abi": strings.Join(abis, "."), + "config": bundleConfig.String(), + }, + }) + //////////////////////////////////////////////////////////////////////////////////// // Step 4: Sign the APEX using signapk signedOutputFile := android.PathForModuleOut(ctx, a.Name()+suffix) @@ -987,10 +952,6 @@ func (a *apexBundle) getOverrideManifestPackageName(ctx android.ModuleContext) s } func (a *apexBundle) buildApexDependencyInfo(ctx android.ModuleContext) { - if !a.primaryApexType { - return - } - if a.properties.IsCoverageVariant { // Otherwise, we will have duplicated rules for coverage and // non-coverage variants of the same APEX diff --git a/apex/prebuilt.go b/apex/prebuilt.go index 3509e6cbe..784196a09 100644 --- a/apex/prebuilt.go +++ b/apex/prebuilt.go @@ -781,10 +781,10 @@ func (p *Prebuilt) GenerateAndroidBuildActions(ctx android.ModuleContext) { p.initApexFilesForAndroidMk(ctx) // in case that prebuilt_apex replaces source apex (using prefer: prop) - p.compatSymlinks = makeCompatSymlinks(p.BaseModuleName(), ctx, true) + p.compatSymlinks = makeCompatSymlinks(p.BaseModuleName(), ctx) // or that prebuilt_apex overrides other apexes (using overrides: prop) for _, overridden := range p.prebuiltCommonProperties.Overrides { - p.compatSymlinks = append(p.compatSymlinks, makeCompatSymlinks(overridden, ctx, true)...) + p.compatSymlinks = append(p.compatSymlinks, makeCompatSymlinks(overridden, ctx)...) } if p.installable() { @@ -1006,10 +1006,10 @@ func (a *ApexSet) GenerateAndroidBuildActions(ctx android.ModuleContext) { } // in case that apex_set replaces source apex (using prefer: prop) - a.compatSymlinks = makeCompatSymlinks(a.BaseModuleName(), ctx, true) + a.compatSymlinks = makeCompatSymlinks(a.BaseModuleName(), ctx) // or that apex_set overrides other apexes (using overrides: prop) for _, overridden := range a.prebuiltCommonProperties.Overrides { - a.compatSymlinks = append(a.compatSymlinks, makeCompatSymlinks(overridden, ctx, true)...) + a.compatSymlinks = append(a.compatSymlinks, makeCompatSymlinks(overridden, ctx)...) } } diff --git a/apex/vndk.go b/apex/vndk.go index 68b3a4000..26c60edc8 100644 --- a/apex/vndk.go +++ b/apex/vndk.go @@ -112,14 +112,10 @@ func apexVndkDepsMutator(mctx android.BottomUpMutatorContext) { } // name is module.BaseModuleName() which is used as LOCAL_MODULE_NAME and also LOCAL_OVERRIDES_* -func makeCompatSymlinks(name string, ctx android.ModuleContext, primaryApex bool) (symlinks android.InstallPaths) { +func makeCompatSymlinks(name string, ctx android.ModuleContext) (symlinks android.InstallPaths) { // small helper to add symlink commands addSymlink := func(target string, dir android.InstallPath, linkName string) { - if primaryApex { - symlinks = append(symlinks, ctx.InstallAbsoluteSymlink(dir, linkName, target)) - } else { - symlinks = append(symlinks, dir.Join(ctx, linkName)) - } + symlinks = append(symlinks, ctx.InstallAbsoluteSymlink(dir, linkName, target)) } // TODO(b/142911355): [VNDK APEX] Fix hard-coded references to /system/lib/vndk From a0503a51a0b255a28f9f3c96203e0cf147db2672 Mon Sep 17 00:00:00 2001 From: Jooyung Han Date: Wed, 23 Aug 2023 13:12:50 +0900 Subject: [PATCH 2/3] apex: Remove apexPackagingMutator Bug: 279835185 Test: m Change-Id: I2f5293a5a86d2ea66c1107659abc2e746fe2775e --- apex/apex.go | 15 -- apex/apex_test.go | 234 +++++++++---------- apex/bootclasspath_fragment_test.go | 18 +- apex/bp2build_test.go | 8 +- apex/systemserver_classpath_fragment_test.go | 10 +- apex/vndk_test.go | 10 +- 6 files changed, 140 insertions(+), 155 deletions(-) diff --git a/apex/apex.go b/apex/apex.go index 44a85b8ae..e35805f6b 100644 --- a/apex/apex.go +++ b/apex/apex.go @@ -79,7 +79,6 @@ func RegisterPostDepsMutators(ctx android.RegisterMutatorsContext) { ctx.BottomUp("mark_platform_availability", markPlatformAvailability).Parallel() ctx.BottomUp("apex", apexMutator).Parallel() ctx.BottomUp("apex_directly_in_any", apexDirectlyInAnyMutator).Parallel() - ctx.BottomUp("apex_packaging", apexPackagingMutator).Parallel() ctx.BottomUp("apex_dcla_deps", apexDCLADepsMutator).Parallel() // Register after apex_info mutator so that it can use ApexVariationName ctx.TopDown("apex_strict_updatability_lint", apexStrictUpdatibilityLintMutator).Parallel() @@ -1348,20 +1347,6 @@ const ( erofsFsType = "erofs" ) -// apexPackagingMutator creates one or more variations each of which is for a packaging method. -func apexPackagingMutator(mctx android.BottomUpMutatorContext) { - if !mctx.Module().Enabled() { - return - } - if _, ok := mctx.Module().(*apexBundle); ok { - mctx.CreateLocalVariations(imageApexType) - } else if _, ok := mctx.Module().(*OverrideApex); ok { - // payload_type is forcibly overridden to "image" - // TODO(jiyong): is this the right decision? - mctx.CreateVariations(imageApexType) - } -} - var _ android.DepIsInSameApex = (*apexBundle)(nil) // Implements android.DepInInSameApex diff --git a/apex/apex_test.go b/apex/apex_test.go index 076dc3f0f..1717f3e05 100644 --- a/apex/apex_test.go +++ b/apex/apex_test.go @@ -518,10 +518,10 @@ func TestBasicApex(t *testing.T) { } `) - apexRule := ctx.ModuleForTests("myapex", "android_common_myapex_image").Rule("apexRule") + apexRule := ctx.ModuleForTests("myapex", "android_common_myapex").Rule("apexRule") // Make sure that Android.mk is created - ab := ctx.ModuleForTests("myapex", "android_common_myapex_image").Module().(*apexBundle) + ab := ctx.ModuleForTests("myapex", "android_common_myapex").Module().(*apexBundle) data := android.AndroidMkDataForTest(t, ctx, ab) var builder strings.Builder data.Custom(&builder, ab.BaseModuleName(), "TARGET_", "", data) @@ -533,7 +533,7 @@ func TestBasicApex(t *testing.T) { optFlags := apexRule.Args["opt_flags"] ensureContains(t, optFlags, "--pubkey vendor/foo/devkeys/testkey.avbpubkey") // Ensure that the NOTICE output is being packaged as an asset. - ensureContains(t, optFlags, "--assets_dir out/soong/.intermediates/myapex/android_common_myapex_image/NOTICE") + ensureContains(t, optFlags, "--assets_dir out/soong/.intermediates/myapex/android_common_myapex/NOTICE") copyCmds := apexRule.Args["copy_commands"] @@ -595,13 +595,13 @@ func TestBasicApex(t *testing.T) { t.Errorf("Could not find all expected symlinks! foo: %t, foo_link_64: %t. Command was %s", found_foo, found_foo_link_64, copyCmds) } - fullDepsInfo := strings.Split(ctx.ModuleForTests("myapex", "android_common_myapex_image").Output("depsinfo/fulllist.txt").Args["content"], "\\n") + fullDepsInfo := strings.Split(ctx.ModuleForTests("myapex", "android_common_myapex").Output("depsinfo/fulllist.txt").Args["content"], "\\n") ensureListContains(t, fullDepsInfo, " myjar(minSdkVersion:(no version)) <- myapex") ensureListContains(t, fullDepsInfo, " mylib2(minSdkVersion:(no version)) <- mylib") ensureListContains(t, fullDepsInfo, " myotherjar(minSdkVersion:(no version)) <- myjar") ensureListContains(t, fullDepsInfo, " mysharedjar(minSdkVersion:(no version)) (external) <- myjar") - flatDepsInfo := strings.Split(ctx.ModuleForTests("myapex", "android_common_myapex_image").Output("depsinfo/flatlist.txt").Args["content"], "\\n") + flatDepsInfo := strings.Split(ctx.ModuleForTests("myapex", "android_common_myapex").Output("depsinfo/flatlist.txt").Args["content"], "\\n") ensureListContains(t, flatDepsInfo, "myjar(minSdkVersion:(no version))") ensureListContains(t, flatDepsInfo, "mylib2(minSdkVersion:(no version))") ensureListContains(t, flatDepsInfo, "myotherjar(minSdkVersion:(no version))") @@ -678,7 +678,7 @@ func TestDefaults(t *testing.T) { } `) - ensureExactContents(t, ctx, "myapex", "android_common_myapex_image", []string{ + ensureExactContents(t, ctx, "myapex", "android_common_myapex", []string{ "etc/myetc", "javalib/myjar.jar", "lib64/mylib.so", @@ -705,7 +705,7 @@ func TestApexManifest(t *testing.T) { } `) - module := ctx.ModuleForTests("myapex", "android_common_myapex_image") + module := ctx.ModuleForTests("myapex", "android_common_myapex") args := module.Rule("apexRule").Args if manifest := args["manifest"]; manifest != module.Output("apex_manifest.pb").Output.String() { t.Error("manifest should be apex_manifest.pb, but " + manifest) @@ -776,7 +776,7 @@ func TestApexManifestMinSdkVersion(t *testing.T) { }, } for _, tc := range testCases { - module := ctx.ModuleForTests(tc.module, "android_common_"+tc.module+"_image") + module := ctx.ModuleForTests(tc.module, "android_common_"+tc.module) args := module.Rule("apexRule").Args optFlags := args["opt_flags"] if !strings.Contains(optFlags, "--min_sdk_version "+tc.minSdkVersion) { @@ -806,7 +806,7 @@ func TestFileContexts(t *testing.T) { } `) - rule := ctx.ModuleForTests("myapex", "android_common_myapex_image").Output("file_contexts") + rule := ctx.ModuleForTests("myapex", "android_common_myapex").Output("file_contexts") if vendor { android.AssertStringDoesContain(t, "should force-label as vendor_apex_metadata_file", rule.RuleParams.Command, @@ -895,7 +895,7 @@ func TestApexWithStubs(t *testing.T) { `) - apexRule := ctx.ModuleForTests("myapex", "android_common_myapex_image").Rule("apexRule") + apexRule := ctx.ModuleForTests("myapex", "android_common_myapex").Rule("apexRule") copyCmds := apexRule.Args["copy_commands"] // Ensure that direct non-stubs dep is always included @@ -936,7 +936,7 @@ func TestApexWithStubs(t *testing.T) { // Ensure that genstub for apex-provided lib is invoked with --apex ensureContains(t, ctx.ModuleForTests("mylib3", "android_arm64_armv8-a_shared_12").Rule("genStubSrc").Args["flags"], "--apex") - ensureExactContents(t, ctx, "myapex", "android_common_myapex_image", []string{ + ensureExactContents(t, ctx, "myapex", "android_common_myapex", []string{ "lib64/mylib.so", "lib64/mylib3.so", "lib64/mylib4.so", @@ -952,7 +952,7 @@ func TestApexWithStubs(t *testing.T) { ensureContains(t, rustDeps, "libfoo.shared_from_rust/android_arm64_armv8-a_shared_current/libfoo.shared_from_rust.so") ensureNotContains(t, rustDeps, "libfoo.shared_from_rust/android_arm64_armv8-a_shared/libfoo.shared_from_rust.so") - apexManifestRule := ctx.ModuleForTests("myapex", "android_common_myapex_image").Rule("apexManifestRule") + apexManifestRule := ctx.ModuleForTests("myapex", "android_common_myapex").Rule("apexManifestRule") ensureListContains(t, names(apexManifestRule.Args["requireNativeLibs"]), "libfoo.shared_from_rust.so") } @@ -1012,7 +1012,7 @@ func TestApexCanUsePrivateApis(t *testing.T) { } `) - apexRule := ctx.ModuleForTests("myapex", "android_common_myapex_image").Rule("apexRule") + apexRule := ctx.ModuleForTests("myapex", "android_common_myapex").Rule("apexRule") copyCmds := apexRule.Args["copy_commands"] // Ensure that indirect stubs dep is not included @@ -1090,7 +1090,7 @@ func TestApexWithStubsWithMinSdkVersion(t *testing.T) { } `) - apexRule := ctx.ModuleForTests("myapex", "android_common_myapex_image").Rule("apexRule") + apexRule := ctx.ModuleForTests("myapex", "android_common_myapex").Rule("apexRule") copyCmds := apexRule.Args["copy_commands"] // Ensure that direct non-stubs dep is always included @@ -1121,7 +1121,7 @@ func TestApexWithStubsWithMinSdkVersion(t *testing.T) { // Ensure that genstub is invoked with --systemapi ensureContains(t, ctx.ModuleForTests("mylib2", "android_arm64_armv8-a_shared_29").Rule("genStubSrc").Args["flags"], "--systemapi") - ensureExactContents(t, ctx, "myapex", "android_common_myapex_image", []string{ + ensureExactContents(t, ctx, "myapex", "android_common_myapex", []string{ "lib64/mylib.so", "lib64/mylib3.so", "lib64/mylib4.so", @@ -1257,7 +1257,7 @@ func TestApexWithExplicitStubsDependency(t *testing.T) { `) - apexRule := ctx.ModuleForTests("myapex2", "android_common_myapex2_image").Rule("apexRule") + apexRule := ctx.ModuleForTests("myapex2", "android_common_myapex2").Rule("apexRule") copyCmds := apexRule.Args["copy_commands"] // Ensure that direct non-stubs dep is always included @@ -1281,10 +1281,10 @@ func TestApexWithExplicitStubsDependency(t *testing.T) { // Ensure that libfoo stubs is not linking to libbar (since it is a stubs) ensureNotContains(t, libFooStubsLdFlags, "libbar.so") - fullDepsInfo := strings.Split(ctx.ModuleForTests("myapex2", "android_common_myapex2_image").Output("depsinfo/fulllist.txt").Args["content"], "\\n") + fullDepsInfo := strings.Split(ctx.ModuleForTests("myapex2", "android_common_myapex2").Output("depsinfo/fulllist.txt").Args["content"], "\\n") ensureListContains(t, fullDepsInfo, " libfoo(minSdkVersion:(no version)) (external) <- mylib") - flatDepsInfo := strings.Split(ctx.ModuleForTests("myapex2", "android_common_myapex2_image").Output("depsinfo/flatlist.txt").Args["content"], "\\n") + flatDepsInfo := strings.Split(ctx.ModuleForTests("myapex2", "android_common_myapex2").Output("depsinfo/flatlist.txt").Args["content"], "\\n") ensureListContains(t, flatDepsInfo, "libfoo(minSdkVersion:(no version)) (external)") } @@ -1375,7 +1375,7 @@ func TestApexWithRuntimeLibsDependency(t *testing.T) { } `) - apexRule := ctx.ModuleForTests("myapex", "android_common_myapex_image").Rule("apexRule") + apexRule := ctx.ModuleForTests("myapex", "android_common_myapex").Rule("apexRule") copyCmds := apexRule.Args["copy_commands"] // Ensure that direct non-stubs dep is always included @@ -1391,7 +1391,7 @@ func TestApexWithRuntimeLibsDependency(t *testing.T) { ensureNotContains(t, copyCmds, "image.apex/lib64/libstatic_to_runtime.so") - apexManifestRule := ctx.ModuleForTests("myapex", "android_common_myapex_image").Rule("apexManifestRule") + apexManifestRule := ctx.ModuleForTests("myapex", "android_common_myapex").Rule("apexManifestRule") ensureListEmpty(t, names(apexManifestRule.Args["provideNativeLibs"])) ensureListContains(t, names(apexManifestRule.Args["requireNativeLibs"]), "libfoo.so") } @@ -1452,7 +1452,7 @@ func TestRuntimeApexShouldInstallHwasanIfLibcDependsOnIt(t *testing.T) { } `) ctx := result.TestContext - ensureExactContents(t, ctx, "com.android.runtime", "android_common_hwasan_com.android.runtime_image", []string{ + ensureExactContents(t, ctx, "com.android.runtime", "android_common_hwasan_com.android.runtime", []string{ "lib64/bionic/libc.so", "lib64/bionic/libclang_rt.hwasan-aarch64-android.so", }) @@ -1505,7 +1505,7 @@ func TestRuntimeApexShouldInstallHwasanIfHwaddressSanitized(t *testing.T) { `) ctx := result.TestContext - ensureExactContents(t, ctx, "com.android.runtime", "android_common_hwasan_com.android.runtime_image", []string{ + ensureExactContents(t, ctx, "com.android.runtime", "android_common_hwasan_com.android.runtime", []string{ "lib64/bionic/libc.so", "lib64/bionic/libclang_rt.hwasan-aarch64-android.so", }) @@ -1586,12 +1586,12 @@ func TestApexDependsOnLLNDKTransitively(t *testing.T) { ) // Ensure that LLNDK dep is not included - ensureExactContents(t, ctx, "myapex", "android_common_myapex_image", []string{ + ensureExactContents(t, ctx, "myapex", "android_common_myapex", []string{ "lib64/mylib.so", }) // Ensure that LLNDK dep is required - apexManifestRule := ctx.ModuleForTests("myapex", "android_common_myapex_image").Rule("apexManifestRule") + apexManifestRule := ctx.ModuleForTests("myapex", "android_common_myapex").Rule("apexManifestRule") ensureListEmpty(t, names(apexManifestRule.Args["provideNativeLibs"])) ensureListContains(t, names(apexManifestRule.Args["requireNativeLibs"]), "libbar.so") @@ -1651,7 +1651,7 @@ func TestApexWithSystemLibsStubs(t *testing.T) { } `) - apexRule := ctx.ModuleForTests("myapex", "android_common_myapex_image").Rule("apexRule") + apexRule := ctx.ModuleForTests("myapex", "android_common_myapex").Rule("apexRule") copyCmds := apexRule.Args["copy_commands"] // Ensure that mylib, libm, libdl are included. @@ -2025,11 +2025,11 @@ func TestTrackAllowedDeps(t *testing.T) { depsinfo := ctx.SingletonForTests("apex_depsinfo_singleton") inputs := depsinfo.Rule("generateApexDepsInfoFilesRule").BuildParams.Inputs.Strings() android.AssertStringListContains(t, "updatable myapex should generate depsinfo file", inputs, - "out/soong/.intermediates/myapex/android_common_myapex_image/depsinfo/flatlist.txt") + "out/soong/.intermediates/myapex/android_common_myapex/depsinfo/flatlist.txt") android.AssertStringListDoesNotContain(t, "non-updatable myapex2 should not generate depsinfo file", inputs, - "out/soong/.intermediates/myapex2/android_common_myapex2_image/depsinfo/flatlist.txt") + "out/soong/.intermediates/myapex2/android_common_myapex2/depsinfo/flatlist.txt") - myapex := ctx.ModuleForTests("myapex", "android_common_myapex_image") + myapex := ctx.ModuleForTests("myapex", "android_common_myapex") flatlist := strings.Split(myapex.Output("depsinfo/flatlist.txt").BuildParams.Args["content"], "\\n") android.AssertStringListContains(t, "deps with stubs should be tracked in depsinfo as external dep", flatlist, "libbar(minSdkVersion:(no version)) (external)") @@ -2787,7 +2787,7 @@ func TestFilesInSubDir(t *testing.T) { } `) - generateFsRule := ctx.ModuleForTests("myapex", "android_common_myapex_image").Rule("generateFsConfig") + generateFsRule := ctx.ModuleForTests("myapex", "android_common_myapex").Rule("generateFsConfig") cmd := generateFsRule.RuleParams.Command // Ensure that the subdirectories are all listed @@ -2852,7 +2852,7 @@ func TestFilesInSubDirWhenNativeBridgeEnabled(t *testing.T) { }, } `, withNativeBridgeEnabled) - ensureExactContents(t, ctx, "myapex", "android_common_myapex_image", []string{ + ensureExactContents(t, ctx, "myapex", "android_common_myapex", []string{ "bin/foo/bar/mybin", "bin/foo/bar/mybin64", "bin/arm/foo/bar/mybin", @@ -2892,14 +2892,14 @@ func TestVendorApex(t *testing.T) { } `) - ensureExactContents(t, result.TestContext, "myapex", "android_common_myapex_image", []string{ + ensureExactContents(t, result.TestContext, "myapex", "android_common_myapex", []string{ "bin/mybin", "lib64/libfoo.so", // TODO(b/159195575): Add an option to use VNDK libs from VNDK APEX "lib64/libc++.so", }) - apexBundle := result.ModuleForTests("myapex", "android_common_myapex_image").Module().(*apexBundle) + apexBundle := result.ModuleForTests("myapex", "android_common_myapex").Module().(*apexBundle) data := android.AndroidMkDataForTest(t, result.TestContext, apexBundle) name := apexBundle.BaseModuleName() prefix := "TARGET_" @@ -2909,7 +2909,7 @@ func TestVendorApex(t *testing.T) { installPath := "out/target/product/test_device/vendor/apex" ensureContains(t, androidMk, "LOCAL_MODULE_PATH := "+installPath) - apexManifestRule := result.ModuleForTests("myapex", "android_common_myapex_image").Rule("apexManifestRule") + apexManifestRule := result.ModuleForTests("myapex", "android_common_myapex").Rule("apexManifestRule") requireNativeLibs := names(apexManifestRule.Args["requireNativeLibs"]) ensureListNotContains(t, requireNativeLibs, ":vndk") } @@ -3052,10 +3052,10 @@ func TestVendorApex_use_vndk_as_stable(t *testing.T) { ensureListContains(t, libs, lib) } // Check apex contents - ensureExactContents(t, ctx, tc.apexName, "android_common_"+tc.apexName+"_image", tc.contents) + ensureExactContents(t, ctx, tc.apexName, "android_common_"+tc.apexName, tc.contents) // Check "requireNativeLibs" - apexManifestRule := ctx.ModuleForTests(tc.apexName, "android_common_"+tc.apexName+"_image").Rule("apexManifestRule") + apexManifestRule := ctx.ModuleForTests(tc.apexName, "android_common_"+tc.apexName).Rule("apexManifestRule") requireNativeLibs := names(apexManifestRule.Args["requireNativeLibs"]) if tc.requireVndkNamespace { ensureListContains(t, requireNativeLibs, ":vndk") @@ -3131,7 +3131,7 @@ func TestApex_withPrebuiltFirmware(t *testing.T) { `+tc.additionalProp+` } `) - ensureExactContents(t, ctx, "myapex", "android_common_myapex_image", []string{ + ensureExactContents(t, ctx, "myapex", "android_common_myapex", []string{ "etc/firmware/myfirmware.bin", }) }) @@ -3160,7 +3160,7 @@ func TestAndroidMk_VendorApexRequired(t *testing.T) { } `) - apexBundle := ctx.ModuleForTests("myapex", "android_common_myapex_image").Module().(*apexBundle) + apexBundle := ctx.ModuleForTests("myapex", "android_common_myapex").Module().(*apexBundle) data := android.AndroidMkDataForTest(t, ctx, apexBundle) name := apexBundle.BaseModuleName() prefix := "TARGET_" @@ -3189,7 +3189,7 @@ func TestAndroidMkWritesCommonProperties(t *testing.T) { } `) - apexBundle := ctx.ModuleForTests("myapex", "android_common_myapex_image").Module().(*apexBundle) + apexBundle := ctx.ModuleForTests("myapex", "android_common_myapex").Module().(*apexBundle) data := android.AndroidMkDataForTest(t, ctx, apexBundle) name := apexBundle.BaseModuleName() prefix := "TARGET_" @@ -3292,7 +3292,7 @@ func TestKeys(t *testing.T) { } // check the APK certs. It should be overridden to myapex.certificate.override - certs := ctx.ModuleForTests("myapex_keytest", "android_common_myapex_keytest_image").Rule("signapk").Args["certificates"] + certs := ctx.ModuleForTests("myapex_keytest", "android_common_myapex_keytest").Rule("signapk").Args["certificates"] if certs != "testkey.override.x509.pem testkey.override.pk8" { t.Errorf("cert and private key %q are not %q", certs, "testkey.override.509.pem testkey.override.pk8") @@ -3312,7 +3312,7 @@ func TestCertificate(t *testing.T) { public_key: "testkey.avbpubkey", private_key: "testkey.pem", }`) - rule := ctx.ModuleForTests("myapex", "android_common_myapex_image").Rule("signapk") + rule := ctx.ModuleForTests("myapex", "android_common_myapex").Rule("signapk") expected := "vendor/foo/devkeys/test.x509.pem vendor/foo/devkeys/test.pk8" if actual := rule.Args["certificates"]; actual != expected { t.Errorf("certificates should be %q, not %q", expected, actual) @@ -3335,7 +3335,7 @@ func TestCertificate(t *testing.T) { name: "myapex.certificate.override", certificate: "testkey.override", }`) - rule := ctx.ModuleForTests("myapex_keytest", "android_common_myapex_keytest_image").Rule("signapk") + rule := ctx.ModuleForTests("myapex_keytest", "android_common_myapex_keytest").Rule("signapk") expected := "testkey.override.x509.pem testkey.override.pk8" if actual := rule.Args["certificates"]; actual != expected { t.Errorf("certificates should be %q, not %q", expected, actual) @@ -3358,7 +3358,7 @@ func TestCertificate(t *testing.T) { name: "myapex.certificate", certificate: "testkey", }`) - rule := ctx.ModuleForTests("myapex", "android_common_myapex_image").Rule("signapk") + rule := ctx.ModuleForTests("myapex", "android_common_myapex").Rule("signapk") expected := "testkey.x509.pem testkey.pk8" if actual := rule.Args["certificates"]; actual != expected { t.Errorf("certificates should be %q, not %q", expected, actual) @@ -3382,7 +3382,7 @@ func TestCertificate(t *testing.T) { name: "myapex.certificate.override", certificate: "testkey.override", }`) - rule := ctx.ModuleForTests("myapex_keytest", "android_common_myapex_keytest_image").Rule("signapk") + rule := ctx.ModuleForTests("myapex_keytest", "android_common_myapex_keytest").Rule("signapk") expected := "testkey.override.x509.pem testkey.override.pk8" if actual := rule.Args["certificates"]; actual != expected { t.Errorf("certificates should be %q, not %q", expected, actual) @@ -3401,7 +3401,7 @@ func TestCertificate(t *testing.T) { public_key: "testkey.avbpubkey", private_key: "testkey.pem", }`) - rule := ctx.ModuleForTests("myapex", "android_common_myapex_image").Rule("signapk") + rule := ctx.ModuleForTests("myapex", "android_common_myapex").Rule("signapk") expected := "vendor/foo/devkeys/testkey.x509.pem vendor/foo/devkeys/testkey.pk8" if actual := rule.Args["certificates"]; actual != expected { t.Errorf("certificates should be %q, not %q", expected, actual) @@ -3425,7 +3425,7 @@ func TestCertificate(t *testing.T) { name: "myapex.certificate.override", certificate: "testkey.override", }`) - rule := ctx.ModuleForTests("myapex_keytest", "android_common_myapex_keytest_image").Rule("signapk") + rule := ctx.ModuleForTests("myapex_keytest", "android_common_myapex_keytest").Rule("signapk") expected := "testkey.override.x509.pem testkey.override.pk8" if actual := rule.Args["certificates"]; actual != expected { t.Errorf("certificates should be %q, not %q", expected, actual) @@ -3817,7 +3817,7 @@ func TestVndkApexCurrent(t *testing.T) { variables.DeviceVndkVersion = proptools.StringPtr(tc.vndkVersion) variables.KeepVndk = proptools.BoolPtr(true) })) - ensureExactContents(t, ctx, "com.android.vndk.current", "android_common_image", tc.expectedFiles) + ensureExactContents(t, ctx, "com.android.vndk.current", "android_common", tc.expectedFiles) }) } } @@ -3872,7 +3872,7 @@ func TestVndkApexWithPrebuilt(t *testing.T) { "libvndk.so": nil, "libvndk.arm.so": nil, })) - ensureExactContents(t, ctx, "com.android.vndk.current", "android_common_image", []string{ + ensureExactContents(t, ctx, "com.android.vndk.current", "android_common", []string{ "lib/libvndk.so", "lib/libvndk.arm.so", "lib64/libvndk.so", @@ -3968,7 +3968,7 @@ func TestVndkApexVersion(t *testing.T) { "libvndk27_x86_64.so": nil, })) - ensureExactContents(t, ctx, "com.android.vndk.v27", "android_common_image", []string{ + ensureExactContents(t, ctx, "com.android.vndk.v27", "android_common", []string{ "lib/libvndk27_arm.so", "lib64/libvndk27_arm64.so", "etc/*", @@ -3997,7 +3997,7 @@ func TestVndkApexNameRule(t *testing.T) { }`+vndkLibrariesTxtFiles("28", "current")) assertApexName := func(expected, moduleName string) { - module := ctx.ModuleForTests(moduleName, "android_common_image") + module := ctx.ModuleForTests(moduleName, "android_common") apexManifestRule := module.Rule("apexManifestRule") ensureContains(t, apexManifestRule.Args["opt"], "-v name "+expected) } @@ -4038,7 +4038,7 @@ func TestVndkApexSkipsNativeBridgeSupportedModules(t *testing.T) { `+vndkLibrariesTxtFiles("current"), withNativeBridgeEnabled) - ensureExactContents(t, ctx, "com.android.vndk.current", "android_common_image", []string{ + ensureExactContents(t, ctx, "com.android.vndk.current", "android_common", []string{ "lib/libvndk.so", "lib64/libvndk.so", "lib/libc++.so", @@ -4141,7 +4141,7 @@ func TestVndkApexWithBinder32(t *testing.T) { }), ) - ensureExactContents(t, ctx, "com.android.vndk.v27", "android_common_image", []string{ + ensureExactContents(t, ctx, "com.android.vndk.v27", "android_common", []string{ "lib/libvndk27binder32.so", "etc/*", }) @@ -4178,10 +4178,10 @@ func TestVndkApexShouldNotProvideNativeLibs(t *testing.T) { "libz.map.txt": nil, })) - apexManifestRule := ctx.ModuleForTests("com.android.vndk.current", "android_common_image").Rule("apexManifestRule") + apexManifestRule := ctx.ModuleForTests("com.android.vndk.current", "android_common").Rule("apexManifestRule") provideNativeLibs := names(apexManifestRule.Args["provideNativeLibs"]) ensureListEmpty(t, provideNativeLibs) - ensureExactContents(t, ctx, "com.android.vndk.current", "android_common_image", []string{ + ensureExactContents(t, ctx, "com.android.vndk.current", "android_common", []string{ "out/soong/.intermediates/libz/android_vendor.29_arm64_armv8-a_shared/libz.so:lib64/libz.so", "out/soong/.intermediates/libz/android_vendor.29_arm_armv7-a-neon_shared/libz.so:lib/libz.so", "*/*", @@ -4337,7 +4337,7 @@ func TestVendorApexWithVndkPrebuilts(t *testing.T) { })) // Should embed the prebuilt VNDK libraries in the apex - ensureExactContents(t, ctx, "myapex", "android_common_myapex_image", []string{ + ensureExactContents(t, ctx, "myapex", "android_common_myapex", []string{ "bin/foo", "prebuilts/vndk/libc++.so:lib64/libc++.so", "prebuilts/vndk/libvndk.so:lib64/libvndk.so", @@ -4351,7 +4351,7 @@ func TestVendorApexWithVndkPrebuilts(t *testing.T) { android.AssertStringDoesContain(t, "should link to prebuilt libunwind", ldRule.Args["libFlags"], "prebuilts/vndk/libunwind.a") // Should declare the LLNDK library as a "required" external dependency - manifestRule := ctx.ModuleForTests("myapex", "android_common_myapex_image").Rule("apexManifestRule") + manifestRule := ctx.ModuleForTests("myapex", "android_common_myapex").Rule("apexManifestRule") requireNativeLibs := names(manifestRule.Args["requireNativeLibs"]) ensureListContains(t, requireNativeLibs, "libllndk.so") } @@ -4464,25 +4464,25 @@ func TestDependenciesInApexManifest(t *testing.T) { var apexManifestRule android.TestingBuildParams var provideNativeLibs, requireNativeLibs []string - apexManifestRule = ctx.ModuleForTests("myapex_nodep", "android_common_myapex_nodep_image").Rule("apexManifestRule") + apexManifestRule = ctx.ModuleForTests("myapex_nodep", "android_common_myapex_nodep").Rule("apexManifestRule") provideNativeLibs = names(apexManifestRule.Args["provideNativeLibs"]) requireNativeLibs = names(apexManifestRule.Args["requireNativeLibs"]) ensureListEmpty(t, provideNativeLibs) ensureListEmpty(t, requireNativeLibs) - apexManifestRule = ctx.ModuleForTests("myapex_dep", "android_common_myapex_dep_image").Rule("apexManifestRule") + apexManifestRule = ctx.ModuleForTests("myapex_dep", "android_common_myapex_dep").Rule("apexManifestRule") provideNativeLibs = names(apexManifestRule.Args["provideNativeLibs"]) requireNativeLibs = names(apexManifestRule.Args["requireNativeLibs"]) ensureListEmpty(t, provideNativeLibs) ensureListContains(t, requireNativeLibs, "libfoo.so") - apexManifestRule = ctx.ModuleForTests("myapex_provider", "android_common_myapex_provider_image").Rule("apexManifestRule") + apexManifestRule = ctx.ModuleForTests("myapex_provider", "android_common_myapex_provider").Rule("apexManifestRule") provideNativeLibs = names(apexManifestRule.Args["provideNativeLibs"]) requireNativeLibs = names(apexManifestRule.Args["requireNativeLibs"]) ensureListContains(t, provideNativeLibs, "libfoo.so") ensureListEmpty(t, requireNativeLibs) - apexManifestRule = ctx.ModuleForTests("myapex_selfcontained", "android_common_myapex_selfcontained_image").Rule("apexManifestRule") + apexManifestRule = ctx.ModuleForTests("myapex_selfcontained", "android_common_myapex_selfcontained").Rule("apexManifestRule") provideNativeLibs = names(apexManifestRule.Args["provideNativeLibs"]) requireNativeLibs = names(apexManifestRule.Args["requireNativeLibs"]) ensureListContains(t, provideNativeLibs, "libbar.so") @@ -4518,7 +4518,7 @@ func TestOverrideApexManifestDefaultVersion(t *testing.T) { "OVERRIDE_APEX_MANIFEST_DEFAULT_VERSION": "1234", })) - module := ctx.ModuleForTests("myapex", "android_common_myapex_image") + module := ctx.ModuleForTests("myapex", "android_common_myapex") apexManifestRule := module.Rule("apexManifestRule") ensureContains(t, apexManifestRule.Args["default_version"], "1234") } @@ -4581,7 +4581,7 @@ func TestCompileMultilibProp(t *testing.T) { } `, testCase.compileMultiLibProp), ) - module := ctx.ModuleForTests("myapex", "android_common_myapex_image") + module := ctx.ModuleForTests("myapex", "android_common_myapex") apexRule := module.Rule("apexRule") copyCmds := apexRule.Args["copy_commands"] for _, containedLib := range testCase.containedLibs { @@ -4620,7 +4620,7 @@ func TestNonTestApex(t *testing.T) { } `) - module := ctx.ModuleForTests("myapex", "android_common_myapex_image") + module := ctx.ModuleForTests("myapex", "android_common_myapex") apexRule := module.Rule("apexRule") copyCmds := apexRule.Args["copy_commands"] @@ -4674,7 +4674,7 @@ func TestTestApex(t *testing.T) { } `) - module := ctx.ModuleForTests("myapex", "android_common_myapex_image") + module := ctx.ModuleForTests("myapex", "android_common_myapex") apexRule := module.Rule("apexRule") copyCmds := apexRule.Args["copy_commands"] @@ -4764,7 +4764,7 @@ func TestApexWithTarget(t *testing.T) { } `) - apexRule := ctx.ModuleForTests("myapex", "android_common_myapex_image").Rule("apexRule") + apexRule := ctx.ModuleForTests("myapex", "android_common_myapex").Rule("apexRule") copyCmds := apexRule.Args["copy_commands"] // Ensure that main rule creates an output @@ -4848,7 +4848,7 @@ func TestApexWithArch(t *testing.T) { } `) - apexRule := ctx.ModuleForTests("myapex", "android_common_myapex_image").Rule("apexRule") + apexRule := ctx.ModuleForTests("myapex", "android_common_myapex").Rule("apexRule") copyCmds := apexRule.Args["copy_commands"] // Ensure that apex variant is created for the direct dep @@ -4884,7 +4884,7 @@ func TestApexWithShBinary(t *testing.T) { } `) - apexRule := ctx.ModuleForTests("myapex", "android_common_myapex_image").Rule("apexRule") + apexRule := ctx.ModuleForTests("myapex", "android_common_myapex").Rule("apexRule") copyCmds := apexRule.Args["copy_commands"] ensureContains(t, copyCmds, "image.apex/bin/script/myscript.sh") @@ -4918,7 +4918,7 @@ func TestApexInVariousPartition(t *testing.T) { } `) - apex := ctx.ModuleForTests("myapex", "android_common_myapex_image").Module().(*apexBundle) + apex := ctx.ModuleForTests("myapex", "android_common_myapex").Module().(*apexBundle) expected := "out/soong/target/product/test_device/" + tc.partition + "/apex" actual := apex.installDir.RelativeToTop().String() if actual != expected { @@ -4942,7 +4942,7 @@ func TestFileContexts_FindInDefaultLocationIfNotSet(t *testing.T) { private_key: "testkey.pem", } `) - module := ctx.ModuleForTests("myapex", "android_common_myapex_image") + module := ctx.ModuleForTests("myapex", "android_common_myapex") rule := module.Output("file_contexts") ensureContains(t, rule.RuleParams.Command, "cat system/sepolicy/apex/myapex-file_contexts") } @@ -5000,7 +5000,7 @@ func TestFileContexts_ProductSpecificApexes(t *testing.T) { `, withFiles(map[string][]byte{ "product_specific_file_contexts": nil, })) - module := ctx.ModuleForTests("myapex", "android_common_myapex_image") + module := ctx.ModuleForTests("myapex", "android_common_myapex") rule := module.Output("file_contexts") ensureContains(t, rule.RuleParams.Command, "cat product_specific_file_contexts") } @@ -5028,7 +5028,7 @@ func TestFileContexts_SetViaFileGroup(t *testing.T) { `, withFiles(map[string][]byte{ "product_specific_file_contexts": nil, })) - module := ctx.ModuleForTests("myapex", "android_common_myapex_image") + module := ctx.ModuleForTests("myapex", "android_common_myapex") rule := module.Output("file_contexts") ensureContains(t, rule.RuleParams.Command, "cat product_specific_file_contexts") } @@ -6086,7 +6086,7 @@ func TestApexWithTests(t *testing.T) { } `) - apexRule := ctx.ModuleForTests("myapex", "android_common_myapex_image").Rule("apexRule") + apexRule := ctx.ModuleForTests("myapex", "android_common_myapex").Rule("apexRule") copyCmds := apexRule.Args["copy_commands"] // Ensure that test dep (and their transitive dependencies) are copied into apex. @@ -6103,7 +6103,7 @@ func TestApexWithTests(t *testing.T) { ensureContains(t, copyCmds, "image.apex/bin/test/mytest3") // Ensure the module is correctly translated. - bundle := ctx.ModuleForTests("myapex", "android_common_myapex_image").Module().(*apexBundle) + bundle := ctx.ModuleForTests("myapex", "android_common_myapex").Module().(*apexBundle) data := android.AndroidMkDataForTest(t, ctx, bundle) name := bundle.BaseModuleName() prefix := "TARGET_" @@ -6186,7 +6186,7 @@ func TestApexWithJavaImport(t *testing.T) { } `) - module := ctx.ModuleForTests("myapex", "android_common_myapex_image") + module := ctx.ModuleForTests("myapex", "android_common_myapex") apexRule := module.Rule("apexRule") copyCmds := apexRule.Args["copy_commands"] ensureContains(t, copyCmds, "image.apex/javalib/myjavaimport.jar") @@ -6250,7 +6250,7 @@ func TestApexWithApps(t *testing.T) { } `) - module := ctx.ModuleForTests("myapex", "android_common_myapex_image") + module := ctx.ModuleForTests("myapex", "android_common_myapex") apexRule := module.Rule("apexRule") copyCmds := apexRule.Args["copy_commands"] @@ -6356,7 +6356,7 @@ func TestApexWithAppImports(t *testing.T) { } `) - module := ctx.ModuleForTests("myapex", "android_common_myapex_image") + module := ctx.ModuleForTests("myapex", "android_common_myapex") apexRule := module.Rule("apexRule") copyCmds := apexRule.Args["copy_commands"] @@ -6401,7 +6401,7 @@ func TestApexWithAppImportsPrefer(t *testing.T) { "AppFooPrebuilt.apk": nil, })) - ensureExactContents(t, ctx, "myapex", "android_common_myapex_image", []string{ + ensureExactContents(t, ctx, "myapex", "android_common_myapex", []string{ "app/AppFoo@TEST.BUILD_ID/AppFooPrebuilt.apk", }) } @@ -6431,7 +6431,7 @@ func TestApexWithTestHelperApp(t *testing.T) { `) - module := ctx.ModuleForTests("myapex", "android_common_myapex_image") + module := ctx.ModuleForTests("myapex", "android_common_myapex") apexRule := module.Rule("apexRule") copyCmds := apexRule.Args["copy_commands"] @@ -6754,14 +6754,14 @@ func TestApexAvailable_ApexAvailableNameWithVersionCode(t *testing.T) { } `) - fooManifestRule := result.ModuleForTests("foo", "android_common_foo_image").Rule("apexManifestRule") + fooManifestRule := result.ModuleForTests("foo", "android_common_foo").Rule("apexManifestRule") fooExpectedDefaultVersion := android.DefaultUpdatableModuleVersion fooActualDefaultVersion := fooManifestRule.Args["default_version"] if fooActualDefaultVersion != fooExpectedDefaultVersion { t.Errorf("expected to find defaultVersion %q; got %q", fooExpectedDefaultVersion, fooActualDefaultVersion) } - barManifestRule := result.ModuleForTests("bar", "android_common_bar_image").Rule("apexManifestRule") + barManifestRule := result.ModuleForTests("bar", "android_common_bar").Rule("apexManifestRule") defaultVersionInt, _ := strconv.Atoi(android.DefaultUpdatableModuleVersion) barExpectedDefaultVersion := fmt.Sprint(defaultVersionInt + 3) barActualDefaultVersion := barManifestRule.Args["default_version"] @@ -6769,7 +6769,7 @@ func TestApexAvailable_ApexAvailableNameWithVersionCode(t *testing.T) { t.Errorf("expected to find defaultVersion %q; got %q", barExpectedDefaultVersion, barActualDefaultVersion) } - overrideBarManifestRule := result.ModuleForTests("bar", "android_common_myoverrideapex_bar_image").Rule("apexManifestRule") + overrideBarManifestRule := result.ModuleForTests("bar", "android_common_myoverrideapex_bar").Rule("apexManifestRule") overrideBarActualDefaultVersion := overrideBarManifestRule.Args["default_version"] if overrideBarActualDefaultVersion != barExpectedDefaultVersion { t.Errorf("expected to find defaultVersion %q; got %q", barExpectedDefaultVersion, barActualDefaultVersion) @@ -7129,8 +7129,8 @@ func TestOverrideApex(t *testing.T) { } `, withManifestPackageNameOverrides([]string{"myapex:com.android.myapex"})) - originalVariant := ctx.ModuleForTests("myapex", "android_common_myapex_image").Module().(android.OverridableModule) - overriddenVariant := ctx.ModuleForTests("myapex", "android_common_override_myapex_myapex_image").Module().(android.OverridableModule) + originalVariant := ctx.ModuleForTests("myapex", "android_common_myapex").Module().(android.OverridableModule) + overriddenVariant := ctx.ModuleForTests("myapex", "android_common_override_myapex_myapex").Module().(android.OverridableModule) if originalVariant.GetOverriddenBy() != "" { t.Errorf("GetOverriddenBy should be empty, but was %q", originalVariant.GetOverriddenBy()) } @@ -7138,7 +7138,7 @@ func TestOverrideApex(t *testing.T) { t.Errorf("GetOverriddenBy should be \"override_myapex\", but was %q", overriddenVariant.GetOverriddenBy()) } - module := ctx.ModuleForTests("myapex", "android_common_override_myapex_myapex_image") + module := ctx.ModuleForTests("myapex", "android_common_override_myapex_myapex") apexRule := module.Rule("apexRule") copyCmds := apexRule.Args["copy_commands"] @@ -7228,7 +7228,7 @@ func TestMinSdkVersionOverride(t *testing.T) { `, withApexGlobalMinSdkVersionOverride(&minSdkOverride31)) - apexRule := ctx.ModuleForTests("myapex", "android_common_myapex_image").Rule("apexRule") + apexRule := ctx.ModuleForTests("myapex", "android_common_myapex").Rule("apexRule") copyCmds := apexRule.Args["copy_commands"] // Ensure that direct non-stubs dep is always included @@ -7287,7 +7287,7 @@ func TestMinSdkVersionOverrideToLowerVersionNoOp(t *testing.T) { `, withApexGlobalMinSdkVersionOverride(&minSdkOverride29)) - apexRule := ctx.ModuleForTests("myapex", "android_common_myapex_image").Rule("apexRule") + apexRule := ctx.ModuleForTests("myapex", "android_common_myapex").Rule("apexRule") copyCmds := apexRule.Args["copy_commands"] // Ensure that direct non-stubs dep is always included @@ -7325,7 +7325,7 @@ func TestLegacyAndroid10Support(t *testing.T) { } `, withUnbundledBuild) - module := ctx.ModuleForTests("myapex", "android_common_myapex_image") + module := ctx.ModuleForTests("myapex", "android_common_myapex") args := module.Rule("apexRule").Args ensureContains(t, args["opt_flags"], "--manifest_json "+module.Output("apex_manifest.json").Output.String()) ensureNotContains(t, args["opt_flags"], "--no_hashtree") @@ -7389,7 +7389,7 @@ func TestJavaSDKLibrary(t *testing.T) { `, withFiles(filesForSdkLibrary)) // java_sdk_library installs both impl jar and permission XML - ensureExactContents(t, ctx, "myapex", "android_common_myapex_image", []string{ + ensureExactContents(t, ctx, "myapex", "android_common_myapex", []string{ "javalib/foo.jar", "etc/permissions/foo.xml", }) @@ -7438,7 +7438,7 @@ func TestJavaSDKLibrary_WithinApex(t *testing.T) { `, withFiles(filesForSdkLibrary)) // java_sdk_library installs both impl jar and permission XML - ensureExactContents(t, ctx, "myapex", "android_common_myapex_image", []string{ + ensureExactContents(t, ctx, "myapex", "android_common_myapex", []string{ "javalib/bar.jar", "javalib/foo.jar", "etc/permissions/foo.xml", @@ -7490,7 +7490,7 @@ func TestJavaSDKLibrary_CrossBoundary(t *testing.T) { `, withFiles(filesForSdkLibrary)) // java_sdk_library installs both impl jar and permission XML - ensureExactContents(t, ctx, "myapex", "android_common_myapex_image", []string{ + ensureExactContents(t, ctx, "myapex", "android_common_myapex", []string{ "javalib/foo.jar", "etc/permissions/foo.xml", }) @@ -7579,7 +7579,7 @@ func TestJavaSDKLibrary_ImportPreferred(t *testing.T) { ) // java_sdk_library installs both impl jar and permission XML - ensureExactContents(t, ctx, "myapex", "android_common_myapex_image", []string{ + ensureExactContents(t, ctx, "myapex", "android_common_myapex", []string{ "javalib/bar.jar", "javalib/foo.jar", "etc/permissions/foo.xml", @@ -7659,7 +7659,7 @@ func TestCompatConfig(t *testing.T) { } `) ctx := result.TestContext - ensureExactContents(t, ctx, "myapex", "android_common_myapex_image", []string{ + ensureExactContents(t, ctx, "myapex", "android_common_myapex", []string{ "etc/compatconfig/myjar-platform-compat-config.xml", "javalib/myjar.jar", }) @@ -7754,7 +7754,7 @@ func TestCarryRequiredModuleNames(t *testing.T) { } `) - apexBundle := ctx.ModuleForTests("myapex", "android_common_myapex_image").Module().(*apexBundle) + apexBundle := ctx.ModuleForTests("myapex", "android_common_myapex").Module().(*apexBundle) data := android.AndroidMkDataForTest(t, ctx, apexBundle) name := apexBundle.BaseModuleName() prefix := "TARGET_" @@ -7893,13 +7893,13 @@ func TestSymlinksFromApexToSystem(t *testing.T) { // For unbundled build, symlink shouldn't exist regardless of whether an APEX // is updatable or not ctx := testApex(t, bp, withUnbundledBuild) - files := getFiles(t, ctx, "myapex", "android_common_myapex_image") + files := getFiles(t, ctx, "myapex", "android_common_myapex") ensureRealfileExists(t, files, "javalib/myjar.jar") ensureRealfileExists(t, files, "lib64/mylib.so") ensureRealfileExists(t, files, "lib64/myotherlib.so") ensureRealfileExists(t, files, "lib64/myotherlib_ext.so") - files = getFiles(t, ctx, "myapex.updatable", "android_common_myapex.updatable_image") + files = getFiles(t, ctx, "myapex.updatable", "android_common_myapex.updatable") ensureRealfileExists(t, files, "javalib/myjar.jar") ensureRealfileExists(t, files, "lib64/mylib.so") ensureRealfileExists(t, files, "lib64/myotherlib.so") @@ -7907,13 +7907,13 @@ func TestSymlinksFromApexToSystem(t *testing.T) { // For bundled build, symlink to the system for the non-updatable APEXes only ctx = testApex(t, bp) - files = getFiles(t, ctx, "myapex", "android_common_myapex_image") + files = getFiles(t, ctx, "myapex", "android_common_myapex") ensureRealfileExists(t, files, "javalib/myjar.jar") ensureRealfileExists(t, files, "lib64/mylib.so") ensureSymlinkExists(t, files, "lib64/myotherlib.so", "/system/lib64/myotherlib.so") // this is symlink ensureSymlinkExists(t, files, "lib64/myotherlib_ext.so", "/system_ext/lib64/myotherlib_ext.so") // this is symlink - files = getFiles(t, ctx, "myapex.updatable", "android_common_myapex.updatable_image") + files = getFiles(t, ctx, "myapex.updatable", "android_common_myapex.updatable") ensureRealfileExists(t, files, "javalib/myjar.jar") ensureRealfileExists(t, files, "lib64/mylib.so") ensureRealfileExists(t, files, "lib64/myotherlib.so") // this is a real file @@ -7959,7 +7959,7 @@ func TestSymlinksFromApexToSystemRequiredModuleNames(t *testing.T) { } `) - apexBundle := ctx.ModuleForTests("myapex", "android_common_myapex_image").Module().(*apexBundle) + apexBundle := ctx.ModuleForTests("myapex", "android_common_myapex").Module().(*apexBundle) data := android.AndroidMkDataForTest(t, ctx, apexBundle) var builder strings.Builder data.Custom(&builder, apexBundle.BaseModuleName(), "TARGET_", "", data) @@ -8025,10 +8025,10 @@ func TestApexWithJniLibs(t *testing.T) { `) - rule := ctx.ModuleForTests("myapex", "android_common_myapex_image").Rule("apexManifestRule") + rule := ctx.ModuleForTests("myapex", "android_common_myapex").Rule("apexManifestRule") // Notice mylib2.so (transitive dep) is not added as a jni_lib ensureEquals(t, rule.Args["opt"], "-a jniLibs libfoo.rust.so mylib.so") - ensureExactContents(t, ctx, "myapex", "android_common_myapex_image", []string{ + ensureExactContents(t, ctx, "myapex", "android_common_myapex", []string{ "lib64/mylib.so", "lib64/mylib2.so", "lib64/libfoo.rust.so", @@ -8088,7 +8088,7 @@ func TestAppBundle(t *testing.T) { } `, withManifestPackageNameOverrides([]string{"AppFoo:com.android.foo"})) - bundleConfigRule := ctx.ModuleForTests("myapex", "android_common_myapex_image").Output("bundle_config.json") + bundleConfigRule := ctx.ModuleForTests("myapex", "android_common_myapex").Output("bundle_config.json") content := bundleConfigRule.Args["content"] ensureContains(t, content, `"compression":{"uncompressed_glob":["apex_payload.img","apex_manifest.*"]}`) @@ -8114,7 +8114,7 @@ func TestAppSetBundle(t *testing.T) { name: "AppSet", set: "AppSet.apks", }`) - mod := ctx.ModuleForTests("myapex", "android_common_myapex_image") + mod := ctx.ModuleForTests("myapex", "android_common_myapex") bundleConfigRule := mod.Output("bundle_config.json") content := bundleConfigRule.Args["content"] ensureContains(t, content, `"compression":{"uncompressed_glob":["apex_payload.img","apex_manifest.*"]}`) @@ -9152,12 +9152,12 @@ func TestAllowedFiles(t *testing.T) { `), })) - rule := ctx.ModuleForTests("myapex", "android_common_myapex_image").Rule("diffApexContentRule") + rule := ctx.ModuleForTests("myapex", "android_common_myapex").Rule("diffApexContentRule") if expected, actual := "allowed.txt", rule.Args["allowed_files_file"]; expected != actual { t.Errorf("allowed_files_file: expected %q but got %q", expected, actual) } - rule2 := ctx.ModuleForTests("myapex", "android_common_override_myapex_myapex_image").Rule("diffApexContentRule") + rule2 := ctx.ModuleForTests("myapex", "android_common_override_myapex_myapex").Rule("diffApexContentRule") if expected, actual := "sub/allowed.txt", rule2.Args["allowed_files_file"]; expected != actual { t.Errorf("allowed_files_file: expected %q but got %q", expected, actual) } @@ -9218,14 +9218,14 @@ func TestCompressedApex(t *testing.T) { }), ) - compressRule := ctx.ModuleForTests("myapex", "android_common_myapex_image").Rule("compressRule") + compressRule := ctx.ModuleForTests("myapex", "android_common_myapex").Rule("compressRule") ensureContains(t, compressRule.Output.String(), "myapex.capex.unsigned") - signApkRule := ctx.ModuleForTests("myapex", "android_common_myapex_image").Description("sign compressedApex") + signApkRule := ctx.ModuleForTests("myapex", "android_common_myapex").Description("sign compressedApex") ensureEquals(t, signApkRule.Input.String(), compressRule.Output.String()) // Make sure output of bundle is .capex - ab := ctx.ModuleForTests("myapex", "android_common_myapex_image").Module().(*apexBundle) + ab := ctx.ModuleForTests("myapex", "android_common_myapex").Module().(*apexBundle) ensureContains(t, ab.outputFile.String(), "myapex.capex") // Verify android.mk rules @@ -9277,7 +9277,7 @@ func TestPreferredPrebuiltSharedLibDep(t *testing.T) { } `) - ab := ctx.ModuleForTests("myapex", "android_common_myapex_image").Module().(*apexBundle) + ab := ctx.ModuleForTests("myapex", "android_common_myapex").Module().(*apexBundle) data := android.AndroidMkDataForTest(t, ctx, ab) var builder strings.Builder data.Custom(&builder, ab.BaseModuleName(), "TARGET_", "", data) @@ -9334,7 +9334,7 @@ func TestExcludeDependency(t *testing.T) { ensureNotContains(t, ldFlags, "mylib2/android_arm64_armv8-a_shared_apex10000/mylib2.so") // It shouldn't appear in the copy cmd as well. - copyCmds := ctx.ModuleForTests("myapex", "android_common_myapex_image").Rule("apexRule").Args["copy_commands"] + copyCmds := ctx.ModuleForTests("myapex", "android_common_myapex").Rule("apexRule").Args["copy_commands"] ensureNotContains(t, copyCmds, "image.apex/lib64/mylib2.so") } @@ -9652,7 +9652,7 @@ func TestAndroidMk_DexpreoptBuiltInstalledForApex(t *testing.T) { dexpreopt.FixtureSetApexSystemServerJars("myapex:foo"), ) - apexBundle := ctx.ModuleForTests("myapex", "android_common_myapex_image").Module().(*apexBundle) + apexBundle := ctx.ModuleForTests("myapex", "android_common_myapex").Module().(*apexBundle) data := android.AndroidMkDataForTest(t, ctx, apexBundle) var builder strings.Builder data.Custom(&builder, apexBundle.BaseModuleName(), "TARGET_", "", data) @@ -9728,7 +9728,7 @@ func TestAndroidMk_RequiredModules(t *testing.T) { } `) - apexBundle := ctx.ModuleForTests("myapex", "android_common_myapex_image").Module().(*apexBundle) + apexBundle := ctx.ModuleForTests("myapex", "android_common_myapex").Module().(*apexBundle) data := android.AndroidMkDataForTest(t, ctx, apexBundle) var builder strings.Builder data.Custom(&builder, apexBundle.BaseModuleName(), "TARGET_", "", data) @@ -9751,7 +9751,7 @@ func TestAndroidMk_RequiredDeps(t *testing.T) { } `) - bundle := ctx.ModuleForTests("myapex", "android_common_myapex_image").Module().(*apexBundle) + bundle := ctx.ModuleForTests("myapex", "android_common_myapex").Module().(*apexBundle) bundle.makeModulesToInstall = append(bundle.makeModulesToInstall, "foo") data := android.AndroidMkDataForTest(t, ctx, bundle) var builder strings.Builder @@ -9769,12 +9769,12 @@ func TestApexOutputFileProducer(t *testing.T) { { name: "test_using_output", ref: ":myapex", - expected_data: []string{"out/soong/.intermediates/myapex/android_common_myapex_image/myapex.capex:myapex.capex"}, + expected_data: []string{"out/soong/.intermediates/myapex/android_common_myapex/myapex.capex:myapex.capex"}, }, { name: "test_using_apex", ref: ":myapex{.apex}", - expected_data: []string{"out/soong/.intermediates/myapex/android_common_myapex_image/myapex.apex:myapex.apex"}, + expected_data: []string{"out/soong/.intermediates/myapex/android_common_myapex/myapex.apex:myapex.apex"}, }, } { t.Run(tc.name, func(t *testing.T) { @@ -10510,14 +10510,14 @@ func TestTrimmedApex(t *testing.T) { } ` ctx := testApex(t, bp) - module := ctx.ModuleForTests("myapex", "android_common_myapex_image") + module := ctx.ModuleForTests("myapex", "android_common_myapex") apexRule := module.MaybeRule("apexRule") if apexRule.Rule == nil { t.Errorf("Expecting regular apex rule but a non regular apex rule found") } ctx = testApex(t, bp, android.FixtureModifyConfig(android.SetTrimmedApexEnabledForTests)) - trimmedApexRule := ctx.ModuleForTests("myapex", "android_common_myapex_image").Rule("TrimmedApexRule") + trimmedApexRule := ctx.ModuleForTests("myapex", "android_common_myapex").Rule("TrimmedApexRule") libs_to_trim := trimmedApexRule.Args["libs_to_trim"] android.AssertStringDoesContain(t, "missing lib to trim", libs_to_trim, "libfoo") android.AssertStringDoesContain(t, "missing lib to trim", libs_to_trim, "libbar") @@ -10537,7 +10537,7 @@ func TestCannedFsConfig(t *testing.T) { public_key: "testkey.avbpubkey", private_key: "testkey.pem", }`) - mod := ctx.ModuleForTests("myapex", "android_common_myapex_image") + mod := ctx.ModuleForTests("myapex", "android_common_myapex") generateFsRule := mod.Rule("generateFsConfig") cmd := generateFsRule.RuleParams.Command @@ -10558,7 +10558,7 @@ func TestCannedFsConfig_HasCustomConfig(t *testing.T) { public_key: "testkey.avbpubkey", private_key: "testkey.pem", }`) - mod := ctx.ModuleForTests("myapex", "android_common_myapex_image") + mod := ctx.ModuleForTests("myapex", "android_common_myapex") generateFsRule := mod.Rule("generateFsConfig") cmd := generateFsRule.RuleParams.Command diff --git a/apex/bootclasspath_fragment_test.go b/apex/bootclasspath_fragment_test.go index f30f7f666..89ea004b3 100644 --- a/apex/bootclasspath_fragment_test.go +++ b/apex/bootclasspath_fragment_test.go @@ -302,14 +302,14 @@ func TestBootclasspathFragmentInArtApex(t *testing.T) { java.FixtureSetBootImageInstallDirOnDevice("art", "apex/com.android.art/javalib"), ).RunTest(t) - ensureExactContents(t, result.TestContext, "com.android.art", "android_common_com.android.art_image", []string{ + ensureExactContents(t, result.TestContext, "com.android.art", "android_common_com.android.art", []string{ "etc/boot-image.prof", "etc/classpaths/bootclasspath.pb", "javalib/bar.jar", "javalib/foo.jar", }) - java.CheckModuleDependencies(t, result.TestContext, "com.android.art", "android_common_com.android.art_image", []string{ + java.CheckModuleDependencies(t, result.TestContext, "com.android.art", "android_common_com.android.art", []string{ `art-bootclasspath-fragment`, `com.android.art.key`, }) @@ -332,7 +332,7 @@ func TestBootclasspathFragmentInArtApex(t *testing.T) { dexpreopt.FixtureDisableDexpreoptBootImages(true), ).RunTest(t) - ensureExactContents(t, result.TestContext, "com.android.art", "android_common_com.android.art_image", []string{ + ensureExactContents(t, result.TestContext, "com.android.art", "android_common_com.android.art", []string{ "etc/boot-image.prof", "etc/classpaths/bootclasspath.pb", "javalib/bar.jar", @@ -351,7 +351,7 @@ func TestBootclasspathFragmentInArtApex(t *testing.T) { dexpreopt.FixtureDisableGenerateProfile(true), ).RunTest(t) - files := getFiles(t, result.TestContext, "com.android.art", "android_common_com.android.art_image") + files := getFiles(t, result.TestContext, "com.android.art", "android_common_com.android.art") for _, file := range files { matched, _ := path.Match("etc/boot-image.prof", file.path) android.AssertBoolEquals(t, "\"etc/boot-image.prof\" should not be in the APEX", matched, false) @@ -380,7 +380,7 @@ func TestBootclasspathFragmentInArtApex(t *testing.T) { "javalib/foo.jar", }) - java.CheckModuleDependencies(t, result.TestContext, "com.android.art", "android_common_com.android.art_image", []string{ + java.CheckModuleDependencies(t, result.TestContext, "com.android.art", "android_common_com.android.art", []string{ `art-bootclasspath-fragment`, `com.android.art.key`, `prebuilt_com.android.art`, @@ -635,7 +635,7 @@ func TestBootclasspathFragmentContentsNoName(t *testing.T) { } `) - ensureExactContents(t, result.TestContext, "myapex", "android_common_myapex_image", []string{ + ensureExactContents(t, result.TestContext, "myapex", "android_common_myapex", []string{ // This does not include art, oat or vdex files as they are only included for the art boot // image. "etc/classpaths/bootclasspath.pb", @@ -643,12 +643,12 @@ func TestBootclasspathFragmentContentsNoName(t *testing.T) { "javalib/foo.jar", }) - java.CheckModuleDependencies(t, result.TestContext, "myapex", "android_common_myapex_image", []string{ + java.CheckModuleDependencies(t, result.TestContext, "myapex", "android_common_myapex", []string{ `myapex.key`, `mybootclasspathfragment`, }) - apex := result.ModuleForTests("myapex", "android_common_myapex_image") + apex := result.ModuleForTests("myapex", "android_common_myapex") apexRule := apex.Rule("apexRule") copyCommands := apexRule.Args["copy_commands"] @@ -665,7 +665,7 @@ func TestBootclasspathFragmentContentsNoName(t *testing.T) { } android.AssertPathRelativeToTopEquals(t, name+" dex", expectedDexJar, dexJar) - expectedCopyCommand := fmt.Sprintf("&& cp -f %s out/soong/.intermediates/myapex/android_common_myapex_image/image.apex/javalib/%s.jar", expectedDexJar, name) + expectedCopyCommand := fmt.Sprintf("&& cp -f %s out/soong/.intermediates/myapex/android_common_myapex/image.apex/javalib/%s.jar", expectedDexJar, name) android.AssertStringDoesContain(t, name+" apex copy command", copyCommands, expectedCopyCommand) } diff --git a/apex/bp2build_test.go b/apex/bp2build_test.go index b1b6a75e8..6bab67dbe 100644 --- a/apex/bp2build_test.go +++ b/apex/bp2build_test.go @@ -80,7 +80,7 @@ apex { }), ).RunTestWithBp(t, bp) - m := result.ModuleForTests("foo", "android_common_foo_image").Module() + m := result.ModuleForTests("foo", "android_common_foo").Module() ab, ok := m.(*apexBundle) if !ok { @@ -206,7 +206,7 @@ apex { }), ).RunTestWithBp(t, bp) - m := result.ModuleForTests("foo", "android_common_foo_image").Module() + m := result.ModuleForTests("foo", "android_common_foo").Module() ab, ok := m.(*apexBundle) if !ok { @@ -299,7 +299,7 @@ apex { }), ).RunTestWithBp(t, bp) - m := result.ModuleForTests("foo", "android_common_foo_image").Module() + m := result.ModuleForTests("foo", "android_common_foo").Module() ab, ok := m.(*apexBundle) if !ok { t.Fatalf("Expected module to be an apexBundle, was not") @@ -483,7 +483,7 @@ override_apex { }), ).RunTest(t) - m := result.ModuleForTests("foo", "android_common_override_foo_foo_image").Module() + m := result.ModuleForTests("foo", "android_common_override_foo_foo").Module() ab, ok := m.(*apexBundle) if !ok { t.Fatalf("Expected module to be an apexBundle, was not") diff --git a/apex/systemserver_classpath_fragment_test.go b/apex/systemserver_classpath_fragment_test.go index f94e50f4f..40d05814e 100644 --- a/apex/systemserver_classpath_fragment_test.go +++ b/apex/systemserver_classpath_fragment_test.go @@ -97,7 +97,7 @@ func TestSystemserverclasspathFragmentContents(t *testing.T) { ctx := result.TestContext - ensureExactContents(t, ctx, "myapex", "android_common_myapex_image", []string{ + ensureExactContents(t, ctx, "myapex", "android_common_myapex", []string{ "etc/classpaths/systemserverclasspath.pb", "javalib/foo.jar", "javalib/bar.jar", @@ -105,7 +105,7 @@ func TestSystemserverclasspathFragmentContents(t *testing.T) { "javalib/baz.jar", }) - java.CheckModuleDependencies(t, ctx, "myapex", "android_common_myapex_image", []string{ + java.CheckModuleDependencies(t, ctx, "myapex", "android_common_myapex", []string{ `myapex.key`, `mysystemserverclasspathfragment`, }) @@ -157,11 +157,11 @@ func TestSystemserverclasspathFragmentNoGeneratedProto(t *testing.T) { } `) - ensureExactContents(t, result.TestContext, "myapex", "android_common_myapex_image", []string{ + ensureExactContents(t, result.TestContext, "myapex", "android_common_myapex", []string{ "javalib/foo.jar", }) - java.CheckModuleDependencies(t, result.TestContext, "myapex", "android_common_myapex_image", []string{ + java.CheckModuleDependencies(t, result.TestContext, "myapex", "android_common_myapex", []string{ `myapex.key`, `mysystemserverclasspathfragment`, }) @@ -361,7 +361,7 @@ func TestSystemserverclasspathFragmentStandaloneContents(t *testing.T) { ctx := result.TestContext - ensureExactContents(t, ctx, "myapex", "android_common_myapex_image", []string{ + ensureExactContents(t, ctx, "myapex", "android_common_myapex", []string{ "etc/classpaths/systemserverclasspath.pb", "javalib/foo.jar", "javalib/bar.jar", diff --git a/apex/vndk_test.go b/apex/vndk_test.go index 4327a61f8..2b86e5347 100644 --- a/apex/vndk_test.go +++ b/apex/vndk_test.go @@ -55,7 +55,7 @@ func TestVndkApexForVndkLite(t *testing.T) { }), ) // VNDK-Lite contains only core variants of VNDK-Sp libraries - ensureExactContents(t, ctx, "com.android.vndk.current", "android_common_image", []string{ + ensureExactContents(t, ctx, "com.android.vndk.current", "android_common", []string{ "lib/libvndksp.so", "lib/libc++.so", "lib64/libvndksp.so", @@ -110,7 +110,7 @@ func TestVndkApexUsesVendorVariant(t *testing.T) { } // VNDK APEX doesn't create apex variant - files := getFiles(t, ctx, "com.android.vndk.current", "android_common_image") + files := getFiles(t, ctx, "com.android.vndk.current", "android_common") ensureFileSrc(t, files, "lib/libfoo.so", "libfoo/android_vendor.29_arm_armv7-a-neon_shared/libfoo.so") }) @@ -122,7 +122,7 @@ func TestVndkApexUsesVendorVariant(t *testing.T) { }), ) - files := getFiles(t, ctx, "com.android.vndk.current", "android_common_image") + files := getFiles(t, ctx, "com.android.vndk.current", "android_common") ensureFileSrc(t, files, "lib/libfoo.so", "libfoo/android_vendor.29_arm_armv7-a-neon_shared/libfoo.so") }) @@ -134,10 +134,10 @@ func TestVndkApexUsesVendorVariant(t *testing.T) { }), ) - files := getFiles(t, ctx, "com.android.vndk.current", "android_common_image") + files := getFiles(t, ctx, "com.android.vndk.current", "android_common") ensureFileSrc(t, files, "lib/libfoo.so", "libfoo/android_vendor.29_arm_armv7-a-neon_shared/libfoo.so") - files = getFiles(t, ctx, "com.android.vndk.current", "android_common_cov_image") + files = getFiles(t, ctx, "com.android.vndk.current", "android_common_cov") ensureFileSrc(t, files, "lib/libfoo.so", "libfoo/android_vendor.29_arm_armv7-a-neon_shared_cov/libfoo.so") }) } From 8d4a1f03b01cb42a6962efe100ae705b1b2f5979 Mon Sep 17 00:00:00 2001 From: Jooyung Han Date: Wed, 23 Aug 2023 13:54:08 +0900 Subject: [PATCH 3/3] apex: Remove host support Since we no longer support "zip" APEX, we don't need "host" support. For example, we don't need go/python binary support. Bug: 279835185 Test: m Change-Id: I6e8d2b205e42662f31866dc9ac7507524effd144 --- apex/androidmk.go | 31 ++------ apex/apex.go | 102 +++++---------------------- apex/builder.go | 5 -- apex/key.go | 2 +- apex/prebuilt.go | 7 +- bp2build/apex_key_conversion_test.go | 15 ++-- 6 files changed, 31 insertions(+), 131 deletions(-) diff --git a/apex/androidmk.go b/apex/androidmk.go index 6b2126e5e..4c20b50b8 100644 --- a/apex/androidmk.go +++ b/apex/androidmk.go @@ -42,7 +42,7 @@ func (class apexFileClass) nameInMake() string { return "ETC" case nativeSharedLib: return "SHARED_LIBRARIES" - case nativeExecutable, shBinary, pyBinary, goBinary: + case nativeExecutable, shBinary: return "EXECUTABLES" case javaSharedLib: return "JAVA_LIBRARIES" @@ -135,32 +135,9 @@ func (a *apexBundle) androidMkForFiles(w io.Writer, apexBundleName, moduleDir st fmt.Fprintln(w, "LOCAL_MODULE_CLASS :=", fi.class.nameInMake()) if fi.module != nil { // This apexFile's module comes from Soong - archStr := fi.module.Target().Arch.ArchType.String() - host := false - switch fi.module.Target().Os.Class { - case android.Host: - if fi.module.Target().HostCross { - if fi.module.Target().Arch.ArchType != android.Common { - fmt.Fprintln(w, "LOCAL_MODULE_HOST_CROSS_ARCH :=", archStr) - } - } else { - if fi.module.Target().Arch.ArchType != android.Common { - fmt.Fprintln(w, "LOCAL_MODULE_HOST_ARCH :=", archStr) - } - } - host = true - case android.Device: - if fi.module.Target().Arch.ArchType != android.Common { - fmt.Fprintln(w, "LOCAL_MODULE_TARGET_ARCH :=", archStr) - } - } - if host { - makeOs := fi.module.Target().Os.String() - if fi.module.Target().Os == android.Linux || fi.module.Target().Os == android.LinuxBionic || fi.module.Target().Os == android.LinuxMusl { - makeOs = "linux" - } - fmt.Fprintln(w, "LOCAL_MODULE_HOST_OS :=", makeOs) - fmt.Fprintln(w, "LOCAL_IS_HOST_MODULE := true") + if fi.module.Target().Arch.ArchType != android.Common { + archStr := fi.module.Target().Arch.ArchType.String() + fmt.Fprintln(w, "LOCAL_MODULE_TARGET_ARCH :=", archStr) } } else if fi.isBazelPrebuilt && fi.arch != "" { // This apexFile comes from Bazel diff --git a/apex/apex.go b/apex/apex.go index e35805f6b..52a5e206c 100644 --- a/apex/apex.go +++ b/apex/apex.go @@ -26,7 +26,6 @@ import ( "android/soong/bazel/cquery" "github.com/google/blueprint" - "github.com/google/blueprint/bootstrap" "github.com/google/blueprint/proptools" "android/soong/android" @@ -37,7 +36,6 @@ import ( "android/soong/filesystem" "android/soong/java" "android/soong/multitree" - "android/soong/python" "android/soong/rust" "android/soong/sh" ) @@ -487,12 +485,10 @@ const ( app apexFileClass = iota appSet etc - goBinary javaSharedLib nativeExecutable nativeSharedLib nativeTest - pyBinary shBinary ) @@ -501,12 +497,10 @@ var ( "app": app, "appSet": appSet, "etc": etc, - "goBinary": goBinary, "javaSharedLib": javaSharedLib, "nativeExecutable": nativeExecutable, "nativeSharedLib": nativeSharedLib, "nativeTest": nativeTest, - "pyBinary": pyBinary, "shBinary": shBinary, } ) @@ -697,11 +691,10 @@ func addDependenciesForNativeModules(ctx android.BottomUpMutatorContext, nativeM libVariations := append(target.Variations(), blueprint.Variation{Mutator: "link", Variation: "shared"}) rustLibVariations := append(target.Variations(), blueprint.Variation{Mutator: "rust_libraries", Variation: "dylib"}) - if ctx.Device() { - binVariations = append(binVariations, blueprint.Variation{Mutator: "image", Variation: imageVariation}) - libVariations = append(libVariations, blueprint.Variation{Mutator: "image", Variation: imageVariation}) - rustLibVariations = append(rustLibVariations, blueprint.Variation{Mutator: "image", Variation: imageVariation}) - } + // Append "image" variation + binVariations = append(binVariations, blueprint.Variation{Mutator: "image", Variation: imageVariation}) + libVariations = append(libVariations, blueprint.Variation{Mutator: "image", Variation: imageVariation}) + rustLibVariations = append(rustLibVariations, blueprint.Variation{Mutator: "image", Variation: imageVariation}) // Use *FarVariation* to be able to depend on modules having conflicting variations with // this module. This is required since arch variant of an APEX bundle is 'common' but it is @@ -721,16 +714,7 @@ func addDependenciesForNativeModules(ctx android.BottomUpMutatorContext, nativeM } func (a *apexBundle) combineProperties(ctx android.BottomUpMutatorContext) { - if ctx.Device() { - proptools.AppendProperties(&a.properties.Multilib, &a.targetProperties.Target.Android.Multilib, nil) - } else { - proptools.AppendProperties(&a.properties.Multilib, &a.targetProperties.Target.Host.Multilib, nil) - if ctx.Os().Bionic() { - proptools.AppendProperties(&a.properties.Multilib, &a.targetProperties.Target.Linux_bionic.Multilib, nil) - } else { - proptools.AppendProperties(&a.properties.Multilib, &a.targetProperties.Target.Linux_glibc.Multilib, nil) - } - } + proptools.AppendProperties(&a.properties.Multilib, &a.targetProperties.Target.Android.Multilib, nil) } // getImageVariationPair returns a pair for the image variation name as its @@ -788,12 +772,6 @@ func (a *apexBundle) DepsMutator(ctx android.BottomUpMutatorContext) { } } for i, target := range targets { - // Don't include artifacts for the host cross targets because there is no way for us - // to run those artifacts natively on host - if target.HostCross { - continue - } - var deps ApexNativeDependencies // Add native modules targeting both ABIs. When multilib.* is omitted for @@ -1230,8 +1208,8 @@ func apexTestForMutator(mctx android.BottomUpMutatorContext) { // be) available to platform // TODO(jiyong): move this to android/apex.go? func markPlatformAvailability(mctx android.BottomUpMutatorContext) { - // Host and recovery are not considered as platform - if mctx.Host() || mctx.Module().InstallInRecovery() { + // Recovery is not considered as platform + if mctx.Module().InstallInRecovery() { return } @@ -1391,7 +1369,7 @@ var _ cc.Coverage = (*apexBundle)(nil) // Implements cc.Coverage func (a *apexBundle) IsNativeCoverageNeeded(ctx android.BaseModuleContext) bool { - return ctx.Device() && ctx.DeviceConfig().NativeCoverageEnabled() + return ctx.DeviceConfig().NativeCoverageEnabled() } // Implements cc.Coverage @@ -1502,13 +1480,9 @@ func (a *apexBundle) IsSanitizerEnabled(config android.Config, sanitizerName str // Then follow the global setting var globalSanitizerNames []string - if a.Host() { - globalSanitizerNames = config.SanitizeHost() - } else { - arches := config.SanitizeDeviceArch() - if len(arches) == 0 || android.InList(a.Arch().ArchType.Name, arches) { - globalSanitizerNames = config.SanitizeDevice() - } + arches := config.SanitizeDeviceArch() + if len(arches) == 0 || android.InList(a.Arch().ArchType.Name, arches) { + globalSanitizerNames = config.SanitizeDevice() } return android.InList(sanitizerName, globalSanitizerNames) } @@ -1516,7 +1490,7 @@ func (a *apexBundle) IsSanitizerEnabled(config android.Config, sanitizerName str func (a *apexBundle) AddSanitizerDependencies(ctx android.BottomUpMutatorContext, sanitizerName string) { // TODO(jiyong): move this info (the sanitizer name, the lib name, etc.) to cc/sanitize.go // Keep only the mechanism here. - if ctx.Device() && sanitizerName == "hwaddress" && strings.HasPrefix(a.Name(), "com.android.runtime") { + if sanitizerName == "hwaddress" && strings.HasPrefix(a.Name(), "com.android.runtime") { imageVariation := a.getImageVariation(ctx) for _, target := range ctx.MultiTargets() { if target.Arch.ArchType.Multilib == "lib64" { @@ -1616,22 +1590,6 @@ func apexFileForRustLibrary(ctx android.BaseModuleContext, rustm *rust.Module) a return newApexFile(ctx, fileToCopy, androidMkModuleName, dirInApex, nativeSharedLib, rustm) } -func apexFileForPyBinary(ctx android.BaseModuleContext, py *python.PythonBinaryModule) apexFile { - dirInApex := "bin" - fileToCopy := py.HostToolPath().Path() - return newApexFile(ctx, fileToCopy, py.BaseModuleName(), dirInApex, pyBinary, py) -} - -func apexFileForGoBinary(ctx android.BaseModuleContext, depName string, gb bootstrap.GoBinaryTool) apexFile { - dirInApex := "bin" - fileToCopy := android.PathForGoBinary(ctx, gb) - // NB: Since go binaries are static we don't need the module for anything here, which is - // good since the go tool is a blueprint.Module not an android.Module like we would - // normally use. - // - return newApexFile(ctx, fileToCopy, depName, dirInApex, goBinary, nil) -} - func apexFileForShBinary(ctx android.BaseModuleContext, sh *sh.ShBinary) apexFile { dirInApex := filepath.Join("bin", sh.SubDir()) if sh.Target().NativeBridge == android.NativeBridgeEnabled { @@ -1989,11 +1947,6 @@ func (a *apexBundle) setSystemLibLink(ctx android.ModuleContext) { if !forced && updatable { a.linkToSystemLib = false } - - // We also don't want the optimization for host APEXes, because it doesn't make sense. - if ctx.Host() { - a.linkToSystemLib = false - } } func (a *apexBundle) setPayloadFsType(ctx android.ModuleContext) { @@ -2111,14 +2064,6 @@ func (a *apexBundle) depVisitor(vctx *visitorContext, ctx android.ModuleContext, case *cc.Module: vctx.filesInfo = append(vctx.filesInfo, apexFileForExecutable(ctx, ch)) return true // track transitive dependencies - case *python.PythonBinaryModule: - if ch.HostToolPath().Valid() { - vctx.filesInfo = append(vctx.filesInfo, apexFileForPyBinary(ctx, ch)) - } - case bootstrap.GoBinaryTool: - if a.Host() { - vctx.filesInfo = append(vctx.filesInfo, apexFileForGoBinary(ctx, depName, ch)) - } case *rust.Module: vctx.filesInfo = append(vctx.filesInfo, apexFileForRustExecutable(ctx, ch)) return true // track transitive dependencies @@ -2280,12 +2225,6 @@ func (a *apexBundle) depVisitor(vctx *visitorContext, ctx android.ModuleContext, af := apexFileForNativeLibrary(ctx, ch, vctx.handleSpecialLibs) af.transitiveDep = true - // Always track transitive dependencies for host. - if a.Host() { - vctx.filesInfo = append(vctx.filesInfo, af) - return true - } - abInfo := ctx.Provider(ApexBundleInfoProvider).(ApexBundleInfo) if !abInfo.Contents.DirectlyInApex(depName) && (ch.IsStubs() || ch.HasStubsVariants()) { // If the dependency is a stubs lib, don't include it in this APEX, @@ -2416,11 +2355,7 @@ func (a *apexBundle) shouldCheckDuplicate(ctx android.ModuleContext) bool { if a.testApex { return false } - // TODO(b/263309864) remove this - if a.Host() { - return false - } - if a.Device() && ctx.DeviceConfig().DeviceArch() == "" { + if ctx.DeviceConfig().DeviceArch() == "" { return false } return true @@ -2601,7 +2536,7 @@ func newApexBundle() *apexBundle { module.AddProperties(&module.archProperties) module.AddProperties(&module.overridableProperties) - android.InitAndroidMultiTargetsArchModule(module, android.HostAndDeviceSupported, android.MultilibCommon) + android.InitAndroidMultiTargetsArchModule(module, android.DeviceSupported, android.MultilibCommon) android.InitDefaultableModule(module) android.InitOverridableModule(module, &module.overridableProperties.Overrides) android.InitBazelModule(module) @@ -2832,7 +2767,7 @@ func minSdkVersionFromValue(ctx android.EarlyModuleContext, value string) androi // Ensures that a lib providing stub isn't statically linked func (a *apexBundle) checkStaticLinkingToStubLibraries(ctx android.ModuleContext) { // Practically, we only care about regular APEXes on the device. - if ctx.Host() || a.testApex || a.vndkApex { + if a.testApex || a.vndkApex { return } @@ -2927,7 +2862,7 @@ func (a *apexBundle) checkJavaStableSdkVersion(ctx android.ModuleContext) { // checkApexAvailability ensures that the all the dependencies are marked as available for this APEX. func (a *apexBundle) checkApexAvailability(ctx android.ModuleContext) { // Let's be practical. Availability for test, host, and the VNDK apex isn't important - if ctx.Host() || a.testApex || a.vndkApex { + if a.testApex || a.vndkApex { return } @@ -2985,11 +2920,6 @@ func (a *apexBundle) checkApexAvailability(ctx android.ModuleContext) { // checkStaticExecutable ensures that executables in an APEX are not static. func (a *apexBundle) checkStaticExecutables(ctx android.ModuleContext) { - // No need to run this for host APEXes - if ctx.Host() { - return - } - ctx.VisitDirectDepsBlueprint(func(module blueprint.Module) { if ctx.OtherModuleDependencyTag(module) != executableTag { return diff --git a/apex/builder.go b/apex/builder.go index ec5b3398e..4b42b7428 100644 --- a/apex/builder.go +++ b/apex/builder.go @@ -958,11 +958,6 @@ func (a *apexBundle) buildApexDependencyInfo(ctx android.ModuleContext) { return } - if ctx.Host() { - // No need to generate dependency info for host variant - return - } - depInfos := android.DepNameToDepInfoMap{} a.WalkPayloadDeps(ctx, func(ctx android.ModuleContext, from blueprint.Module, to android.ApexModule, externalDep bool) bool { if from.Name() == to.Name() { diff --git a/apex/key.go b/apex/key.go index 3010d76be..65e739a90 100644 --- a/apex/key.go +++ b/apex/key.go @@ -60,7 +60,7 @@ type apexKeyProperties struct { func ApexKeyFactory() android.Module { module := &apexKey{} module.AddProperties(&module.properties) - android.InitAndroidArchModule(module, android.HostAndDeviceDefault, android.MultilibCommon) + android.InitAndroidArchModule(module, android.DeviceSupported, android.MultilibCommon) android.InitBazelModule(module) return module } diff --git a/apex/prebuilt.go b/apex/prebuilt.go index 784196a09..192255b8a 100644 --- a/apex/prebuilt.go +++ b/apex/prebuilt.go @@ -876,12 +876,7 @@ func (e *ApexExtractorProperties) prebuiltSrcs(ctx android.BaseModuleContext) [] srcs = append(srcs, *e.Set) } - var sanitizers []string - if ctx.Host() { - sanitizers = ctx.Config().SanitizeHost() - } else { - sanitizers = ctx.Config().SanitizeDevice() - } + sanitizers := ctx.Config().SanitizeDevice() if android.InList("address", sanitizers) && e.Sanitized.Address.Set != nil { srcs = append(srcs, *e.Sanitized.Address.Set) diff --git a/bp2build/apex_key_conversion_test.go b/bp2build/apex_key_conversion_test.go index f9a68c918..1230a480b 100644 --- a/bp2build/apex_key_conversion_test.go +++ b/bp2build/apex_key_conversion_test.go @@ -47,8 +47,9 @@ apex_key { } `, ExpectedBazelTargets: []string{MakeBazelTargetNoRestrictions("apex_key", "com.android.apogee.key", AttrNameToString{ - "private_key": `"com.android.apogee.pem"`, - "public_key": `"com.android.apogee.avbpubkey"`, + "private_key": `"com.android.apogee.pem"`, + "public_key": `"com.android.apogee.avbpubkey"`, + "target_compatible_with": `["//build/bazel/platforms/os:android"]`, }), }}) } @@ -69,8 +70,9 @@ apex_key { } `, ExpectedBazelTargets: []string{MakeBazelTargetNoRestrictions("apex_key", "com.android.apogee.key", AttrNameToString{ - "private_key_name": `"com.android.apogee.pem"`, - "public_key_name": `"com.android.apogee.avbpubkey"`, + "private_key_name": `"com.android.apogee.pem"`, + "public_key_name": `"com.android.apogee.avbpubkey"`, + "target_compatible_with": `["//build/bazel/platforms/os:android"]`, }), }}) } @@ -90,8 +92,9 @@ apex_key { ` + simpleModuleDoNotConvertBp2build("filegroup", "com.android.apogee.avbpubkey") + simpleModuleDoNotConvertBp2build("filegroup", "com.android.apogee.pem"), ExpectedBazelTargets: []string{MakeBazelTargetNoRestrictions("apex_key", "com.android.apogee.key", AttrNameToString{ - "private_key": `":com.android.apogee.pem"`, - "public_key": `":com.android.apogee.avbpubkey"`, + "private_key": `":com.android.apogee.pem"`, + "public_key": `":com.android.apogee.avbpubkey"`, + "target_compatible_with": `["//build/bazel/platforms/os:android"]`, }), }}) }