Merge "Collect file delta metrics for java and kotlin compiles" into main
diff --git a/android/container_violations.go b/android/container_violations.go
index 4251484..cfee562 100644
--- a/android/container_violations.go
+++ b/android/container_violations.go
@@ -827,6 +827,13 @@
"framework-connectivity-pre-jarjar", // apex [com.android.tethering] -> system
},
+ // TODO(b/382743602): Remove "app-compat-annotations" and depend on the stub version jar
+ // TODO(b/382301972): Remove the violations and use jarjar_rename or jarjar_prefix
+ "framework-connectivity-b.impl": {
+ "app-compat-annotations", // apex [com.android.tethering] -> system
+ "framework-connectivity-pre-jarjar", // apex [com.android.tethering] -> system
+ },
+
"framework-connectivity.impl": {
"app-compat-annotations", // apex [com.android.tethering] -> system
},
@@ -1029,6 +1036,13 @@
"framework-connectivity-t-pre-jarjar", // apex [com.android.tethering] -> system
},
+ // TODO(b/382301972): Remove the violations and use jarjar_rename or jarjar_prefix
+ "service-connectivity-b-pre-jarjar": {
+ "framework-connectivity-pre-jarjar", // apex [com.android.tethering] -> system
+ "framework-connectivity-b-pre-jarjar", // apex [com.android.tethering] -> system
+ "framework-connectivity-t-pre-jarjar", // apex [com.android.tethering] -> system
+ },
+
"service-entitlement": {
"auto_value_annotations", // apex [com.android.wifi, test_com.android.wifi] -> apex [com.android.adservices, com.android.extservices, com.android.extservices_tplus]
},
diff --git a/android/logtags.go b/android/logtags.go
index 7929057..1e92dad 100644
--- a/android/logtags.go
+++ b/android/logtags.go
@@ -16,41 +16,8 @@
import "github.com/google/blueprint"
-func init() {
- RegisterParallelSingletonType("logtags", LogtagsSingleton)
-}
-
type LogtagsInfo struct {
Logtags Paths
}
var LogtagsProviderKey = blueprint.NewProvider[*LogtagsInfo]()
-
-func LogtagsSingleton() Singleton {
- return &logtagsSingleton{}
-}
-
-type logtagsSingleton struct{}
-
-func MergedLogtagsPath(ctx PathContext) OutputPath {
- return PathForIntermediates(ctx, "all-event-log-tags.txt")
-}
-
-func (l *logtagsSingleton) GenerateBuildActions(ctx SingletonContext) {
- var allLogtags Paths
- ctx.VisitAllModules(func(module Module) {
- if !module.ExportedToMake() {
- return
- }
- if logtagsInfo, ok := OtherModuleProvider(ctx, module, LogtagsProviderKey); ok {
- allLogtags = append(allLogtags, logtagsInfo.Logtags...)
- }
- })
-
- builder := NewRuleBuilder(pctx, ctx)
- builder.Command().
- BuiltTool("merge-event-log-tags").
- FlagWithOutput("-o ", MergedLogtagsPath(ctx)).
- Inputs(SortedUniquePaths(allLogtags))
- builder.Build("all-event-log-tags.txt", "merge logtags")
-}
diff --git a/filesystem/filesystem.go b/filesystem/filesystem.go
index 81afd02..1d32b8f 100644
--- a/filesystem/filesystem.go
+++ b/filesystem/filesystem.go
@@ -98,6 +98,14 @@
Name *string
}
+// CopyWithNamePrefix returns a new [SymlinkDefinition] with prefix added to Name.
+func (s *SymlinkDefinition) CopyWithNamePrefix(prefix string) SymlinkDefinition {
+ return SymlinkDefinition{
+ Target: s.Target,
+ Name: proptools.StringPtr(filepath.Join(prefix, proptools.String(s.Name))),
+ }
+}
+
type FilesystemProperties struct {
// When set to true, sign the image with avbtool. Default is false.
Use_avb *bool
@@ -457,7 +465,7 @@
}
func (f *filesystem) appendToEntry(ctx android.ModuleContext, installedFile android.Path) {
- partitionBaseDir := android.PathForModuleOut(ctx, f.rootDirString(), proptools.String(f.properties.Base_dir)).String() + "/"
+ partitionBaseDir := android.PathForModuleOut(ctx, "root", proptools.String(f.properties.Base_dir)).String() + "/"
relPath, inTargetPartition := strings.CutPrefix(installedFile.String(), partitionBaseDir)
if inTargetPartition {
@@ -547,12 +555,8 @@
builder.Command().Textf("cp -prf %s/* %s", rebasedDir, installPath)
}
-func (f *filesystem) rootDirString() string {
- return f.partitionName()
-}
-
func (f *filesystem) buildImageUsingBuildImage(ctx android.ModuleContext) android.Path {
- rootDir := android.PathForModuleOut(ctx, f.rootDirString()).OutputPath
+ rootDir := android.PathForModuleOut(ctx, "root").OutputPath
rebasedDir := rootDir
if f.properties.Base_dir != nil {
rebasedDir = rootDir.Join(ctx, *f.properties.Base_dir)
@@ -779,7 +783,7 @@
ctx.PropertyErrorf("include_make_built_files", "include_make_built_files is not supported for compressed cpio image.")
}
- rootDir := android.PathForModuleOut(ctx, f.rootDirString()).OutputPath
+ rootDir := android.PathForModuleOut(ctx, "root").OutputPath
rebasedDir := rootDir
if f.properties.Base_dir != nil {
rebasedDir = rootDir.Join(ctx, *f.properties.Base_dir)
@@ -882,8 +886,7 @@
eventLogtagsPath := etcPath.Join(ctx, "event-log-tags")
builder.Command().Text("mkdir").Flag("-p").Text(etcPath.String())
cmd := builder.Command().BuiltTool("merge-event-log-tags").
- FlagWithArg("-o ", eventLogtagsPath.String()).
- FlagWithInput("-m ", android.MergedLogtagsPath(ctx))
+ FlagWithArg("-o ", eventLogtagsPath.String())
for _, path := range android.SortedKeys(logtagsFilePaths) {
cmd.Text(path)
diff --git a/filesystem/filesystem_test.go b/filesystem/filesystem_test.go
index 2dcb23d..0ed3870 100644
--- a/filesystem/filesystem_test.go
+++ b/filesystem/filesystem_test.go
@@ -181,7 +181,7 @@
`)
module := result.ModuleForTests("myfilesystem", "android_common")
- output := module.Output("out/soong/.intermediates/myfilesystem/android_common/myfilesystem/system/etc/linker.config.pb")
+ output := module.Output("out/soong/.intermediates/myfilesystem/android_common/root/system/etc/linker.config.pb")
fullCommand := output.RuleParams.Command
startIndex := strings.Index(fullCommand, "conv_linker_config")
diff --git a/filesystem/fsverity_metadata.go b/filesystem/fsverity_metadata.go
index 91b8c57..6372c5e 100644
--- a/filesystem/fsverity_metadata.go
+++ b/filesystem/fsverity_metadata.go
@@ -85,18 +85,6 @@
f.appendToEntry(ctx, destPath)
}
- fsVerityBaseDir := rootDir.String()
- if f.PartitionType() == "system_ext" {
- // Use the equivalent of $PRODUCT_OUT as the base dir.
- // This ensures that the paths in build_manifest.pb contain on-device paths
- // e.g. system_ext/framework/javalib.jar
- // and not framework/javalib.jar.
- //
- // Although base-dir is outside the rootdir provided for packaging, this action
- // is hermetic since it uses `manifestGeneratorListPath` to filter the files to be written to build_manifest.pb
- fsVerityBaseDir = filepath.Dir(rootDir.String())
- }
-
// STEP 2: generate signed BuildManifest.apk
// STEP 2-1: generate build_manifest.pb
manifestGeneratorListPath := android.PathForModuleOut(ctx, "fsverity_manifest.list")
@@ -108,7 +96,7 @@
builder.Command().
BuiltTool("fsverity_manifest_generator").
FlagWithInput("--fsverity-path ", fsverityPath).
- FlagWithArg("--base-dir ", fsVerityBaseDir).
+ FlagWithArg("--base-dir ", rootDir.String()).
FlagWithArg("--output ", manifestPbPath.String()).
FlagWithInput("@", manifestGeneratorListPath)
diff --git a/fsgen/Android.bp b/fsgen/Android.bp
index 365d954..1b828c5 100644
--- a/fsgen/Android.bp
+++ b/fsgen/Android.bp
@@ -14,6 +14,7 @@
],
srcs: [
"boot_imgs.go",
+ "config.go",
"filesystem_creator.go",
"fsgen_mutators.go",
"prebuilt_etc_modules_gen.go",
diff --git a/fsgen/config.go b/fsgen/config.go
new file mode 100644
index 0000000..31f721b
--- /dev/null
+++ b/fsgen/config.go
@@ -0,0 +1,142 @@
+// Copyright (C) 2024 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package fsgen
+
+import (
+ "android/soong/filesystem"
+
+ "github.com/google/blueprint/proptools"
+)
+
+var (
+ // Most of the symlinks and directories listed here originate from create_root_structure.mk,
+ // but the handwritten generic system image also recreates them:
+ // https://cs.android.com/android/platform/superproject/main/+/main:build/make/target/product/generic/Android.bp;l=33;drc=db08311f1b6ef6cb0a4fbcc6263b89849360ce04
+ // TODO(b/377734331): only generate the symlinks if the relevant partitions exist
+ commonSymlinksFromRoot = []filesystem.SymlinkDefinition{
+ {
+ Target: proptools.StringPtr("/system/bin/init"),
+ Name: proptools.StringPtr("init"),
+ },
+ {
+ Target: proptools.StringPtr("/system/etc"),
+ Name: proptools.StringPtr("etc"),
+ },
+ {
+ Target: proptools.StringPtr("/system/bin"),
+ Name: proptools.StringPtr("bin"),
+ },
+ {
+ Target: proptools.StringPtr("/data/user_de/0/com.android.shell/files/bugreports"),
+ Name: proptools.StringPtr("bugreports"),
+ },
+ {
+ Target: proptools.StringPtr("/sys/kernel/debug"),
+ Name: proptools.StringPtr("d"),
+ },
+ {
+ Target: proptools.StringPtr("/product/etc/security/adb_keys"),
+ Name: proptools.StringPtr("adb_keys"),
+ },
+ {
+ Target: proptools.StringPtr("/vendor/odm/app"),
+ Name: proptools.StringPtr("odm/app"),
+ },
+ {
+ Target: proptools.StringPtr("/vendor/odm/bin"),
+ Name: proptools.StringPtr("odm/bin"),
+ },
+ {
+ Target: proptools.StringPtr("/vendor/odm/etc"),
+ Name: proptools.StringPtr("odm/etc"),
+ },
+ {
+ Target: proptools.StringPtr("/vendor/odm/firmware"),
+ Name: proptools.StringPtr("odm/firmware"),
+ },
+ {
+ Target: proptools.StringPtr("/vendor/odm/framework"),
+ Name: proptools.StringPtr("odm/framework"),
+ },
+ {
+ Target: proptools.StringPtr("/vendor/odm/lib"),
+ Name: proptools.StringPtr("odm/lib"),
+ },
+ {
+ Target: proptools.StringPtr("/vendor/odm/lib64"),
+ Name: proptools.StringPtr("odm/lib64"),
+ },
+ {
+ Target: proptools.StringPtr("/vendor/odm/overlay"),
+ Name: proptools.StringPtr("odm/overlay"),
+ },
+ {
+ Target: proptools.StringPtr("/vendor/odm/priv-app"),
+ Name: proptools.StringPtr("odm/priv-app"),
+ },
+ {
+ Target: proptools.StringPtr("/vendor/odm/usr"),
+ Name: proptools.StringPtr("odm/usr"),
+ },
+ // For Treble Generic System Image (GSI), system-as-root GSI needs to work on
+ // both devices with and without /odm_dlkm partition. Those symlinks are for
+ // devices without /odm_dlkm partition. For devices with /odm_dlkm
+ // partition, mount odm_dlkm.img under /odm_dlkm will hide those symlinks.
+ // Note that /odm_dlkm/lib is omitted because odm DLKMs should be accessed
+ // via /odm/lib/modules directly. All of this also applies to the vendor_dlkm symlink
+ {
+ Target: proptools.StringPtr("/odm/odm_dlkm/etc"),
+ Name: proptools.StringPtr("odm_dlkm/etc"),
+ },
+ {
+ Target: proptools.StringPtr("/vendor/vendor_dlkm/etc"),
+ Name: proptools.StringPtr("vendor_dlkm/etc"),
+ },
+ }
+
+ // Common directories between partitions that may be listed as `Dirs` property in the
+ // filesystem module.
+ commonPartitionDirs = []string{
+ // From generic_rootdirs in build/make/target/product/generic/Android.bp
+ "acct",
+ "apex",
+ "bootstrap-apex",
+ "config",
+ "data",
+ "data_mirror",
+ "debug_ramdisk",
+ "dev",
+ "linkerconfig",
+ "metadata",
+ "mnt",
+ "odm",
+ "odm_dlkm",
+ "oem",
+ "postinstall",
+ "proc",
+ "second_stage_resources",
+ "storage",
+ "sys",
+ "system",
+ "system_dlkm",
+ "tmp",
+ "vendor",
+ "vendor_dlkm",
+
+ // from android_rootdirs in build/make/target/product/generic/Android.bp
+ "system_ext",
+ "product",
+ }
+)
diff --git a/fsgen/filesystem_creator.go b/fsgen/filesystem_creator.go
index 1378513..b9fddca 100644
--- a/fsgen/filesystem_creator.go
+++ b/fsgen/filesystem_creator.go
@@ -235,146 +235,37 @@
}
fsProps.Fsverity.Libs = []string{":framework-res{.export-package.apk}"}
}
- // Most of the symlinks and directories listed here originate from create_root_structure.mk,
- // but the handwritten generic system image also recreates them:
- // https://cs.android.com/android/platform/superproject/main/+/main:build/make/target/product/generic/Android.bp;l=33;drc=db08311f1b6ef6cb0a4fbcc6263b89849360ce04
- // TODO(b/377734331): only generate the symlinks if the relevant partitions exist
- fsProps.Symlinks = []filesystem.SymlinkDefinition{
- filesystem.SymlinkDefinition{
- Target: proptools.StringPtr("/system/bin/init"),
- Name: proptools.StringPtr("init"),
- },
- filesystem.SymlinkDefinition{
- Target: proptools.StringPtr("/system/etc"),
- Name: proptools.StringPtr("etc"),
- },
- filesystem.SymlinkDefinition{
- Target: proptools.StringPtr("/system/bin"),
- Name: proptools.StringPtr("bin"),
- },
- filesystem.SymlinkDefinition{
- Target: proptools.StringPtr("/data/user_de/0/com.android.shell/files/bugreports"),
- Name: proptools.StringPtr("bugreports"),
- },
- filesystem.SymlinkDefinition{
- Target: proptools.StringPtr("/sys/kernel/debug"),
- Name: proptools.StringPtr("d"),
- },
- filesystem.SymlinkDefinition{
- Target: proptools.StringPtr("/storage/self/primary"),
- Name: proptools.StringPtr("sdcard"),
- },
- filesystem.SymlinkDefinition{
- Target: proptools.StringPtr("/product/etc/security/adb_keys"),
- Name: proptools.StringPtr("adb_keys"),
- },
- filesystem.SymlinkDefinition{
- Target: proptools.StringPtr("/vendor/odm/app"),
- Name: proptools.StringPtr("odm/app"),
- },
- filesystem.SymlinkDefinition{
- Target: proptools.StringPtr("/vendor/odm/bin"),
- Name: proptools.StringPtr("odm/bin"),
- },
- filesystem.SymlinkDefinition{
- Target: proptools.StringPtr("/vendor/odm/etc"),
- Name: proptools.StringPtr("odm/etc"),
- },
- filesystem.SymlinkDefinition{
- Target: proptools.StringPtr("/vendor/odm/firmware"),
- Name: proptools.StringPtr("odm/firmware"),
- },
- filesystem.SymlinkDefinition{
- Target: proptools.StringPtr("/vendor/odm/framework"),
- Name: proptools.StringPtr("odm/framework"),
- },
- filesystem.SymlinkDefinition{
- Target: proptools.StringPtr("/vendor/odm/lib"),
- Name: proptools.StringPtr("odm/lib"),
- },
- filesystem.SymlinkDefinition{
- Target: proptools.StringPtr("/vendor/odm/lib64"),
- Name: proptools.StringPtr("odm/lib64"),
- },
- filesystem.SymlinkDefinition{
- Target: proptools.StringPtr("/vendor/odm/overlay"),
- Name: proptools.StringPtr("odm/overlay"),
- },
- filesystem.SymlinkDefinition{
- Target: proptools.StringPtr("/vendor/odm/priv-app"),
- Name: proptools.StringPtr("odm/priv-app"),
- },
- filesystem.SymlinkDefinition{
- Target: proptools.StringPtr("/vendor/odm/usr"),
- Name: proptools.StringPtr("odm/usr"),
- },
- filesystem.SymlinkDefinition{
- Target: proptools.StringPtr("/product"),
- Name: proptools.StringPtr("system/product"),
- },
- filesystem.SymlinkDefinition{
- Target: proptools.StringPtr("/system_ext"),
- Name: proptools.StringPtr("system/system_ext"),
- },
- filesystem.SymlinkDefinition{
- Target: proptools.StringPtr("/vendor"),
- Name: proptools.StringPtr("system/vendor"),
- },
- filesystem.SymlinkDefinition{
- Target: proptools.StringPtr("/system_dlkm/lib/modules"),
- Name: proptools.StringPtr("system/lib/modules"),
- },
- filesystem.SymlinkDefinition{
- Target: proptools.StringPtr("/data/cache"),
- Name: proptools.StringPtr("cache"),
- },
- // For Treble Generic System Image (GSI), system-as-root GSI needs to work on
- // both devices with and without /odm_dlkm partition. Those symlinks are for
- // devices without /odm_dlkm partition. For devices with /odm_dlkm
- // partition, mount odm_dlkm.img under /odm_dlkm will hide those symlinks.
- // Note that /odm_dlkm/lib is omitted because odm DLKMs should be accessed
- // via /odm/lib/modules directly. All of this also applies to the vendor_dlkm symlink
- filesystem.SymlinkDefinition{
- Target: proptools.StringPtr("/odm/odm_dlkm/etc"),
- Name: proptools.StringPtr("odm_dlkm/etc"),
- },
- filesystem.SymlinkDefinition{
- Target: proptools.StringPtr("/vendor/vendor_dlkm/etc"),
- Name: proptools.StringPtr("vendor_dlkm/etc"),
- },
- }
+ fsProps.Symlinks = commonSymlinksFromRoot
+ fsProps.Symlinks = append(fsProps.Symlinks,
+ []filesystem.SymlinkDefinition{
+ {
+ Target: proptools.StringPtr("/data/cache"),
+ Name: proptools.StringPtr("cache"),
+ },
+ {
+ Target: proptools.StringPtr("/storage/self/primary"),
+ Name: proptools.StringPtr("sdcard"),
+ },
+ {
+ Target: proptools.StringPtr("/system_dlkm/lib/modules"),
+ Name: proptools.StringPtr("system/lib/modules"),
+ },
+ {
+ Target: proptools.StringPtr("/product"),
+ Name: proptools.StringPtr("system/product"),
+ },
+ {
+ Target: proptools.StringPtr("/system_ext"),
+ Name: proptools.StringPtr("system/system_ext"),
+ },
+ {
+ Target: proptools.StringPtr("/vendor"),
+ Name: proptools.StringPtr("system/vendor"),
+ },
+ }...,
+ )
fsProps.Base_dir = proptools.StringPtr("system")
- fsProps.Dirs = proptools.NewSimpleConfigurable([]string{
- // From generic_rootdirs in build/make/target/product/generic/Android.bp
- "acct",
- "apex",
- "bootstrap-apex",
- "config",
- "data",
- "data_mirror",
- "debug_ramdisk",
- "dev",
- "linkerconfig",
- "metadata",
- "mnt",
- "odm",
- "odm_dlkm",
- "oem",
- "postinstall",
- "proc",
- "second_stage_resources",
- "storage",
- "sys",
- "system",
- "system_dlkm",
- "tmp",
- "vendor",
- "vendor_dlkm",
-
- // from android_rootdirs in build/make/target/product/generic/Android.bp
- "system_ext",
- "product",
- })
+ fsProps.Dirs = proptools.NewSimpleConfigurable(commonPartitionDirs)
case "system_ext":
if partitionVars.ProductFsverityGenerateMetadata {
fsProps.Fsverity.Inputs = []string{
@@ -438,22 +329,35 @@
})
}
case "recovery":
- // Following https://cs.android.com/android/platform/superproject/main/+/main:build/make/core/Makefile;l=2826;drc=ad7cfb56010cb22c3aa0e70cf71c804352553526
- fsProps.Dirs = android.NewSimpleConfigurable([]string{
+ dirs := append(commonPartitionDirs, []string{
+ "odm_file_contexts",
+ "odm_property_contexts",
+ "plat_file_contexts",
+ "plat_property_contexts",
+ "plat_service_contexts",
+ "product_file_contexts",
+ "product_property_contexts",
+ "product_service_contexts",
"sdcard",
- "tmp",
- })
- fsProps.Symlinks = []filesystem.SymlinkDefinition{
- {
- Target: proptools.StringPtr("/system/bin/init"),
- Name: proptools.StringPtr("init"),
- },
- {
- Target: proptools.StringPtr("prop.default"),
- Name: proptools.StringPtr("default.prop"),
- },
+ "sepolicy",
+ "system_ext_file_contexts",
+ "system_ext_property_contexts",
+ "system_ext_service_contexts",
+ "vendor_file_contexts",
+ "vendor_property_contexts",
+ "vendor_service_contexts",
+ }...)
+
+ dirsWithRoot := make([]string, len(dirs))
+ for i, dir := range dirs {
+ dirsWithRoot[i] = filepath.Join("root", dir)
}
- fsProps.Base_dir = proptools.StringPtr("recovery")
+
+ fsProps.Dirs = proptools.NewSimpleConfigurable(dirsWithRoot)
+ fsProps.Symlinks = symlinksWithNamePrefix(append(commonSymlinksFromRoot, filesystem.SymlinkDefinition{
+ Target: proptools.StringPtr("prop.default"),
+ Name: proptools.StringPtr("default.prop"),
+ }), "root")
}
}
@@ -586,6 +490,7 @@
Load_by_default *bool
Blocklist_file *string
Options_file *string
+ Strip_debug_symbols *bool
}{
Name: proptools.StringPtr(name),
}
@@ -601,6 +506,7 @@
if blocklistFile := ctx.Config().ProductVariables().PartitionVarsForSoongMigrationOnlyDoNotUse.SystemKernelBlocklistFile; blocklistFile != "" {
props.Blocklist_file = proptools.StringPtr(blocklistFile)
}
+ props.Strip_debug_symbols = proptools.BoolPtr(false)
case "vendor_dlkm":
props.Srcs = android.ExistentPathsForSources(ctx, ctx.Config().ProductVariables().PartitionVarsForSoongMigrationOnlyDoNotUse.VendorKernelModules).Strings()
if len(ctx.Config().ProductVariables().PartitionVarsForSoongMigrationOnlyDoNotUse.SystemKernelModules) > 0 {
@@ -610,12 +516,14 @@
if blocklistFile := ctx.Config().ProductVariables().PartitionVarsForSoongMigrationOnlyDoNotUse.VendorKernelBlocklistFile; blocklistFile != "" {
props.Blocklist_file = proptools.StringPtr(blocklistFile)
}
+ props.Strip_debug_symbols = proptools.BoolPtr(false)
case "odm_dlkm":
props.Srcs = android.ExistentPathsForSources(ctx, ctx.Config().ProductVariables().PartitionVarsForSoongMigrationOnlyDoNotUse.OdmKernelModules).Strings()
props.Odm_dlkm_specific = proptools.BoolPtr(true)
if blocklistFile := ctx.Config().ProductVariables().PartitionVarsForSoongMigrationOnlyDoNotUse.OdmKernelBlocklistFile; blocklistFile != "" {
props.Blocklist_file = proptools.StringPtr(blocklistFile)
}
+ props.Strip_debug_symbols = proptools.BoolPtr(false)
case "vendor_ramdisk":
props.Srcs = android.ExistentPathsForSources(ctx, ctx.Config().ProductVariables().PartitionVarsForSoongMigrationOnlyDoNotUse.VendorRamdiskKernelModules).Strings()
props.Vendor_ramdisk = proptools.BoolPtr(true)
diff --git a/fsgen/fsgen_mutators.go b/fsgen/fsgen_mutators.go
index f0a54db..20e4c3e 100644
--- a/fsgen/fsgen_mutators.go
+++ b/fsgen/fsgen_mutators.go
@@ -164,6 +164,7 @@
// Add common resources `prebuilt_res` module as dep of recovery partition
(*fsGenState.fsDeps["recovery"])[fmt.Sprintf("recovery-resources-common-%s", getDpi(ctx))] = defaultDepCandidateProps(ctx.Config())
+ (*fsGenState.fsDeps["recovery"])[getRecoveryFontModuleName(ctx)] = defaultDepCandidateProps(ctx.Config())
return &fsGenState
}).(*FsGenState)
diff --git a/fsgen/util.go b/fsgen/util.go
index 9ab3ad8..008f9fe 100644
--- a/fsgen/util.go
+++ b/fsgen/util.go
@@ -16,6 +16,7 @@
import (
"android/soong/android"
+ "android/soong/filesystem"
"fmt"
"strconv"
"strings"
@@ -58,3 +59,21 @@
return recoveryDensity
}
+
+// Returns the name of the appropriate prebuilt module for installing font.png file.
+// https://cs.android.com/android/platform/superproject/main/+/main:build/make/core/Makefile;l=2536;drc=a6af369e71ded123734523ea640b97b70a557cb9
+func getRecoveryFontModuleName(ctx android.LoadHookContext) string {
+ if android.InList(getDpi(ctx), []string{"xxxhdpi", "xxhdpi", "xhdpi"}) {
+ return "recovery-fonts-18"
+ }
+ return "recovery-fonts-12"
+}
+
+// Returns a new list of symlinks with prefix added to the dest directory for all symlinks
+func symlinksWithNamePrefix(symlinks []filesystem.SymlinkDefinition, prefix string) []filesystem.SymlinkDefinition {
+ ret := make([]filesystem.SymlinkDefinition, len(symlinks))
+ for i, symlink := range symlinks {
+ ret[i] = symlink.CopyWithNamePrefix(prefix)
+ }
+ return ret
+}
diff --git a/java/gen.go b/java/gen.go
index 1b4f4c7..aab8418 100644
--- a/java/gen.go
+++ b/java/gen.go
@@ -26,15 +26,14 @@
)
func init() {
- pctx.SourcePathVariable("logtagsCmd", "build/make/tools/java-event-log-tags.py")
- pctx.SourcePathVariable("logtagsLib", "build/make/tools/event_log_tags.py")
+ pctx.HostBinToolVariable("logtagsCmd", "java-event-log-tags")
}
var (
logtags = pctx.AndroidStaticRule("logtags",
blueprint.RuleParams{
Command: "$logtagsCmd -o $out $in",
- CommandDeps: []string{"$logtagsCmd", "$logtagsLib"},
+ CommandDeps: []string{"$logtagsCmd"},
})
)
diff --git a/kernel/prebuilt_kernel_modules.go b/kernel/prebuilt_kernel_modules.go
index 001a1e7..ec7a971 100644
--- a/kernel/prebuilt_kernel_modules.go
+++ b/kernel/prebuilt_kernel_modules.go
@@ -67,6 +67,10 @@
// Whether this module is directly installable to one of the partitions. Default is true
Installable *bool
+
+ // Whether debug symbols should be stripped from the *.ko files.
+ // Defaults to true.
+ Strip_debug_symbols *bool
}
// prebuilt_kernel_modules installs a set of prebuilt kernel module files to the correct directory.
@@ -100,7 +104,9 @@
systemModules := android.PathsForModuleSrc(ctx, pkm.properties.System_deps)
depmodOut := pkm.runDepmod(ctx, modules, systemModules)
- strippedModules := stripDebugSymbols(ctx, modules)
+ if proptools.BoolDefault(pkm.properties.Strip_debug_symbols, true) {
+ modules = stripDebugSymbols(ctx, modules)
+ }
installDir := android.PathForModuleInstall(ctx, "lib", "modules")
// Kernel module is installed to vendor_ramdisk/lib/modules regardless of product
@@ -114,7 +120,7 @@
installDir = installDir.Join(ctx, pkm.KernelVersion())
}
- for _, m := range strippedModules {
+ for _, m := range modules {
ctx.InstallFile(installDir, filepath.Base(m.String()), m)
}
ctx.InstallFile(installDir, "modules.load", depmodOut.modulesLoad)
@@ -165,9 +171,9 @@
}, "stripCmd")
)
-func stripDebugSymbols(ctx android.ModuleContext, modules android.Paths) android.OutputPaths {
+func stripDebugSymbols(ctx android.ModuleContext, modules android.Paths) android.Paths {
dir := android.PathForModuleOut(ctx, "stripped").OutputPath
- var outputs android.OutputPaths
+ var outputs android.Paths
for _, m := range modules {
stripped := dir.Join(ctx, filepath.Base(m.String()))
@@ -305,7 +311,7 @@
finalModulesDep := modulesDep
// Add a leading slash to paths in modules.dep of android dlkm
if ctx.InstallInSystemDlkm() || ctx.InstallInVendorDlkm() || ctx.InstallInOdmDlkm() {
- finalModulesDep := modulesDep.ReplaceExtension(ctx, "intermediates")
+ finalModulesDep = modulesDep.ReplaceExtension(ctx, "intermediates")
ctx.Build(pctx, android.BuildParams{
Rule: addLeadingSlashToPaths,
Input: modulesDep,