Merge "Merge 24Q4 into AOSP main" into main
diff --git a/filesystem/filesystem.go b/filesystem/filesystem.go
index bff0a10..eb39a78 100644
--- a/filesystem/filesystem.go
+++ b/filesystem/filesystem.go
@@ -886,8 +886,10 @@
}
provideModules, _ := f.getLibsForLinkerConfig(ctx)
+ intermediateOutput := android.PathForModuleOut(ctx, "linker.config.pb")
+ linkerconfig.BuildLinkerConfig(ctx, android.PathsForModuleSrc(ctx, f.properties.Linker_config.Linker_config_srcs), provideModules, nil, intermediateOutput)
output := rebasedDir.Join(ctx, "etc", "linker.config.pb")
- linkerconfig.BuildLinkerConfig(ctx, builder, android.PathsForModuleSrc(ctx, f.properties.Linker_config.Linker_config_srcs), provideModules, nil, output)
+ builder.Command().Text("cp").Input(intermediateOutput).Output(output)
f.appendToEntry(ctx, output)
}
diff --git a/filesystem/filesystem_test.go b/filesystem/filesystem_test.go
index 2dcb23d..33cddf8 100644
--- a/filesystem/filesystem_test.go
+++ b/filesystem/filesystem_test.go
@@ -16,7 +16,6 @@
import (
"os"
- "strings"
"testing"
"android/soong/android"
@@ -181,11 +180,9 @@
`)
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/linker.config.pb")
- fullCommand := output.RuleParams.Command
- startIndex := strings.Index(fullCommand, "conv_linker_config")
- linkerConfigCommand := fullCommand[startIndex:]
+ linkerConfigCommand := output.RuleParams.Command
android.AssertStringDoesContain(t, "linker.config.pb should have libfoo",
linkerConfigCommand, "libfoo.so")
@@ -735,7 +732,7 @@
}
`)
- linkerConfigCmd := result.ModuleForTests("myfilesystem", "android_common").Rule("build_filesystem_image").RuleParams.Command
+ linkerConfigCmd := result.ModuleForTests("myfilesystem", "android_common").Output("out/soong/.intermediates/myfilesystem/android_common/linker.config.pb").RuleParams.Command
android.AssertStringDoesContain(t, "Could not find linker.config.json file in cmd", linkerConfigCmd, "conv_linker_config proto --force -s linker.config.json")
android.AssertStringDoesContain(t, "Could not find stub in `provideLibs`", linkerConfigCmd, "--key provideLibs --value libfoo_has_stubs.so")
}
diff --git a/filesystem/system_image.go b/filesystem/system_image.go
index 60a5133..57ce10f 100644
--- a/filesystem/system_image.go
+++ b/filesystem/system_image.go
@@ -49,8 +49,10 @@
}
provideModules, requireModules := s.getLibsForLinkerConfig(ctx)
+ intermediateOutput := android.PathForModuleOut(ctx, "linker.config.pb")
+ linkerconfig.BuildLinkerConfig(ctx, android.PathsForModuleSrc(ctx, s.filesystem.properties.Linker_config.Linker_config_srcs), provideModules, requireModules, intermediateOutput)
output := rebasedDir.Join(ctx, "etc", "linker.config.pb")
- linkerconfig.BuildLinkerConfig(ctx, builder, android.PathsForModuleSrc(ctx, s.filesystem.properties.Linker_config.Linker_config_srcs), provideModules, requireModules, output)
+ builder.Command().Text("cp").Input(intermediateOutput).Output(output)
s.appendToEntry(ctx, output)
}
diff --git a/fsgen/filesystem_creator.go b/fsgen/filesystem_creator.go
index 765b28f..4f1a34f 100644
--- a/fsgen/filesystem_creator.go
+++ b/fsgen/filesystem_creator.go
@@ -573,9 +573,11 @@
Name *string
Board_info_files []string
Bootloader_board_name *string
+ Stem *string
}{
- Name: proptools.StringPtr(generatedModuleName(ctx.Config(), "android-info.prop")),
+ Name: proptools.StringPtr(generatedModuleName(ctx.Config(), "android_info.prop")),
Board_info_files: partitionVars.BoardInfoFiles,
+ Stem: proptools.StringPtr("android_info.txt"),
}
if len(androidInfoProps.Board_info_files) == 0 {
androidInfoProps.Bootloader_board_name = proptools.StringPtr(partitionVars.BootLoaderBoardName)
diff --git a/linkerconfig/linkerconfig.go b/linkerconfig/linkerconfig.go
index d422871..7684db2 100644
--- a/linkerconfig/linkerconfig.go
+++ b/linkerconfig/linkerconfig.go
@@ -76,9 +76,7 @@
input := android.PathForModuleSrc(ctx, android.String(l.properties.Src))
output := android.PathForModuleOut(ctx, "linker.config.pb").OutputPath
- builder := android.NewRuleBuilder(pctx, ctx)
- BuildLinkerConfig(ctx, builder, android.Paths{input}, nil, nil, output)
- builder.Build("conv_linker_config", "Generate linker config protobuf "+output.String())
+ BuildLinkerConfig(ctx, android.Paths{input}, nil, nil, output)
l.outputFilePath = output
l.installDirPath = android.PathForModuleInstall(ctx, "etc")
@@ -90,10 +88,15 @@
ctx.SetOutputFiles(android.Paths{l.outputFilePath}, "")
}
-func BuildLinkerConfig(ctx android.ModuleContext, builder *android.RuleBuilder,
- inputs android.Paths, provideModules []android.Module, requireModules []android.Module, output android.OutputPath) {
-
+func BuildLinkerConfig(
+ ctx android.ModuleContext,
+ inputs android.Paths,
+ provideModules []android.Module,
+ requireModules []android.Module,
+ output android.WritablePath,
+) {
// First, convert the input json to protobuf format
+ builder := android.NewRuleBuilder(pctx, ctx)
interimOutput := android.PathForModuleOut(ctx, "temp.pb")
cmd := builder.Command().
BuiltTool("conv_linker_config").
@@ -157,6 +160,7 @@
builder.Temporary(interimOutput)
builder.DeleteTemporaryFiles()
+ builder.Build("conv_linker_config_"+output.String(), "Generate linker config protobuf "+output.String())
}
// linker_config generates protobuf file from json file. This protobuf file will be used from
diff --git a/scripts/gen_build_prop.py b/scripts/gen_build_prop.py
index 47bbf59..430e613 100644
--- a/scripts/gen_build_prop.py
+++ b/scripts/gen_build_prop.py
@@ -108,7 +108,7 @@
def generate_common_build_props(args):
print("####################################")
- print("# from generate_common_build_props")
+ print("# from generate-common-build-props")
print("# These properties identify this partition image.")
print("####################################")
@@ -243,9 +243,15 @@
print(f"# end build properties")
def write_properties_from_file(file):
+ # Make and Soong use different intermediate files to build vendor/build.prop.
+ # Although the sysprop contents are same, the absolute paths of these
+ # intermediate files are different.
+ # Print the filename for the intermediate files (files in OUT_DIR).
+ # This helps with validating mk->soong migration of android partitions.
+ filename = os.path.basename(file.name) if file.name.startswith(os.environ.get("OUT_DIR")) else file.name
print()
print("####################################")
- print(f"# from {file.name}")
+ print(f"# from {filename}")
print("####################################")
print(file.read(), end="")