Use fewer OutputPaths
A lot of the time, you really mean android.Path or android.WriteablePath instead of OutputPath. Also, many modules were holding onto OutputPaths/WriteablePaths after the files had already been generated, meaning they should no longer be treated as writable paths and are instead inputs into other actions. Change the type of those paths to just android.Path. Test: verified ninja files were unchanged on aosp_arm64-trunk_staging-userdebug Change-Id: Id773171bef59d855ba33c4b85cef268031cbec39
This commit is contained in:
parent
06540bb808
commit
4e9f5923c0
29 changed files with 161 additions and 149 deletions
|
|
@ -35,7 +35,7 @@ func registerBuildFlagsModuleType(ctx android.RegistrationContext) {
|
|||
type buildFlags struct {
|
||||
android.ModuleBase
|
||||
|
||||
outputPath android.OutputPath
|
||||
outputPath android.Path
|
||||
}
|
||||
|
||||
func buildFlagsFactory() android.Module {
|
||||
|
|
@ -48,7 +48,7 @@ func (m *buildFlags) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
|||
// Read the build_flags_<partition>.json file generated by soong
|
||||
// 'release-config' command.
|
||||
srcPath := android.PathForOutput(ctx, "release-config", fmt.Sprintf("build_flags_%s.json", m.PartitionTag(ctx.DeviceConfig())))
|
||||
m.outputPath = android.PathForModuleOut(ctx, outJsonFileName).OutputPath
|
||||
outputPath := android.PathForModuleOut(ctx, outJsonFileName)
|
||||
|
||||
// The 'release-config' command is called for every build, and generates the
|
||||
// build_flags_<partition>.json file.
|
||||
|
|
@ -56,11 +56,12 @@ func (m *buildFlags) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
|||
ctx.Build(pctx, android.BuildParams{
|
||||
Rule: android.CpIfChanged,
|
||||
Input: srcPath,
|
||||
Output: m.outputPath,
|
||||
Output: outputPath,
|
||||
})
|
||||
|
||||
installPath := android.PathForModuleInstall(ctx, "etc")
|
||||
ctx.InstallFile(installPath, outJsonFileName, m.outputPath)
|
||||
ctx.InstallFile(installPath, outJsonFileName, outputPath)
|
||||
m.outputPath = outputPath
|
||||
}
|
||||
|
||||
func (m *buildFlags) AndroidMkEntries() []android.AndroidMkEntries {
|
||||
|
|
|
|||
|
|
@ -896,8 +896,8 @@ type ApexModuleDepInfo struct {
|
|||
type DepNameToDepInfoMap map[string]ApexModuleDepInfo
|
||||
|
||||
type ApexBundleDepsInfo struct {
|
||||
flatListPath OutputPath
|
||||
fullListPath OutputPath
|
||||
flatListPath Path
|
||||
fullListPath Path
|
||||
}
|
||||
|
||||
type ApexBundleDepsInfoIntf interface {
|
||||
|
|
@ -934,13 +934,15 @@ func (d *ApexBundleDepsInfo) BuildDepsInfoLists(ctx ModuleContext, minSdkVersion
|
|||
fmt.Fprintf(&flatContent, "%s\n", toName)
|
||||
}
|
||||
|
||||
d.fullListPath = PathForModuleOut(ctx, "depsinfo", "fulllist.txt").OutputPath
|
||||
WriteFileRule(ctx, d.fullListPath, fullContent.String())
|
||||
fullListPath := PathForModuleOut(ctx, "depsinfo", "fulllist.txt")
|
||||
WriteFileRule(ctx, fullListPath, fullContent.String())
|
||||
d.fullListPath = fullListPath
|
||||
|
||||
d.flatListPath = PathForModuleOut(ctx, "depsinfo", "flatlist.txt").OutputPath
|
||||
WriteFileRule(ctx, d.flatListPath, flatContent.String())
|
||||
flatListPath := PathForModuleOut(ctx, "depsinfo", "flatlist.txt")
|
||||
WriteFileRule(ctx, flatListPath, flatContent.String())
|
||||
d.flatListPath = flatListPath
|
||||
|
||||
ctx.Phony(fmt.Sprintf("%s-depsinfo", ctx.ModuleName()), d.fullListPath, d.flatListPath)
|
||||
ctx.Phony(fmt.Sprintf("%s-depsinfo", ctx.ModuleName()), fullListPath, flatListPath)
|
||||
}
|
||||
|
||||
// Function called while walking an APEX's payload dependencies.
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ type buildPropModule struct {
|
|||
|
||||
properties buildPropProperties
|
||||
|
||||
outputFilePath OutputPath
|
||||
outputFilePath Path
|
||||
installPath InstallPath
|
||||
}
|
||||
|
||||
|
|
@ -128,7 +128,7 @@ func (p *buildPropModule) GenerateAndroidBuildActions(ctx ModuleContext) {
|
|||
ctx.ModuleErrorf("Android_info cannot be set if build.prop is not installed in vendor partition")
|
||||
}
|
||||
|
||||
p.outputFilePath = PathForModuleOut(ctx, "build.prop").OutputPath
|
||||
outputFilePath := PathForModuleOut(ctx, "build.prop")
|
||||
|
||||
partition := p.partition(ctx.DeviceConfig())
|
||||
|
||||
|
|
@ -157,7 +157,7 @@ func (p *buildPropModule) GenerateAndroidBuildActions(ctx ModuleContext) {
|
|||
cmd.FlagWithInput("--product-config=", PathForModuleSrc(ctx, proptools.String(p.properties.Product_config)))
|
||||
cmd.FlagWithArg("--partition=", partition)
|
||||
cmd.FlagForEachInput("--prop-files=", p.propFiles(ctx))
|
||||
cmd.FlagWithOutput("--out=", p.outputFilePath)
|
||||
cmd.FlagWithOutput("--out=", outputFilePath)
|
||||
|
||||
postProcessCmd := rule.Command().BuiltTool("post_process_props")
|
||||
if ctx.DeviceConfig().BuildBrokenDupSysprop() {
|
||||
|
|
@ -170,17 +170,18 @@ func (p *buildPropModule) GenerateAndroidBuildActions(ctx ModuleContext) {
|
|||
// still need to pass an empty string to kernel-version-file-for-uffd-gc
|
||||
postProcessCmd.FlagWithArg("--kernel-version-file-for-uffd-gc ", `""`)
|
||||
}
|
||||
postProcessCmd.Text(p.outputFilePath.String())
|
||||
postProcessCmd.Text(outputFilePath.String())
|
||||
postProcessCmd.Flags(p.properties.Block_list)
|
||||
|
||||
rule.Command().Text("echo").Text(proptools.NinjaAndShellEscape("# end of file")).FlagWithArg(">> ", p.outputFilePath.String())
|
||||
rule.Command().Text("echo").Text(proptools.NinjaAndShellEscape("# end of file")).FlagWithArg(">> ", outputFilePath.String())
|
||||
|
||||
rule.Build(ctx.ModuleName(), "generating build.prop")
|
||||
|
||||
p.installPath = PathForModuleInstall(ctx, proptools.String(p.properties.Relative_install_path))
|
||||
ctx.InstallFile(p.installPath, p.stem(), p.outputFilePath)
|
||||
ctx.InstallFile(p.installPath, p.stem(), outputFilePath)
|
||||
|
||||
ctx.SetOutputFiles(Paths{p.outputFilePath}, "")
|
||||
ctx.SetOutputFiles(Paths{outputFilePath}, "")
|
||||
p.outputFilePath = outputFilePath
|
||||
}
|
||||
|
||||
func (p *buildPropModule) AndroidMkEntries() []AndroidMkEntries {
|
||||
|
|
|
|||
|
|
@ -30,11 +30,11 @@ type csuiteConfigProperties struct {
|
|||
type CSuiteConfig struct {
|
||||
ModuleBase
|
||||
properties csuiteConfigProperties
|
||||
OutputFilePath OutputPath
|
||||
OutputFilePath Path
|
||||
}
|
||||
|
||||
func (me *CSuiteConfig) GenerateAndroidBuildActions(ctx ModuleContext) {
|
||||
me.OutputFilePath = PathForModuleOut(ctx, me.BaseModuleName()).OutputPath
|
||||
me.OutputFilePath = PathForModuleOut(ctx, me.BaseModuleName())
|
||||
}
|
||||
|
||||
func (me *CSuiteConfig) AndroidMkEntries() []AndroidMkEntries {
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ func (p *productConfigModule) GenerateAndroidBuildActions(ctx ModuleContext) {
|
|||
ctx.ModuleErrorf("There can only be one product_config module in build/soong")
|
||||
return
|
||||
}
|
||||
outputFilePath := PathForModuleOut(ctx, p.Name()+".json").OutputPath
|
||||
outputFilePath := PathForModuleOut(ctx, p.Name()+".json")
|
||||
|
||||
// DeviceProduct can be null so calling ctx.Config().DeviceProduct() may cause null dereference
|
||||
targetProduct := proptools.String(ctx.Config().config.productVariables.DeviceProduct)
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ type vintfDataRule struct {
|
|||
properties vintfDataProperties
|
||||
|
||||
installDirPath InstallPath
|
||||
outputFilePath OutputPath
|
||||
outputFilePath Path
|
||||
noAction bool
|
||||
}
|
||||
|
||||
|
|
@ -148,7 +148,7 @@ func (m *vintfDataRule) GenerateAndroidBuildActions(ctx ModuleContext) {
|
|||
builder.Build("assemble_vintf", "Process vintf data "+gensrc.String())
|
||||
|
||||
m.installDirPath = PathForModuleInstall(ctx, "etc", "vintf")
|
||||
m.outputFilePath = gensrc.OutputPath
|
||||
m.outputFilePath = gensrc
|
||||
|
||||
installFileName := "manifest.xml"
|
||||
if filename := proptools.String(m.properties.Filename); filename != "" {
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ type vintfFragmentModule struct {
|
|||
properties vintfFragmentProperties
|
||||
|
||||
installDirPath InstallPath
|
||||
outputFilePath OutputPath
|
||||
outputFilePath Path
|
||||
}
|
||||
|
||||
func init() {
|
||||
|
|
@ -64,7 +64,7 @@ func (m *vintfFragmentModule) GenerateAndroidBuildActions(ctx ModuleContext) {
|
|||
builder.Build("assemble_vintf", "Process vintf fragment "+processedVintfFragment.String())
|
||||
|
||||
m.installDirPath = PathForModuleInstall(ctx, "etc", "vintf", "manifest")
|
||||
m.outputFilePath = processedVintfFragment.OutputPath
|
||||
m.outputFilePath = processedVintfFragment
|
||||
|
||||
ctx.InstallFile(m.installDirPath, processedVintfFragment.Base(), processedVintfFragment)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -511,7 +511,7 @@ type apexBundle struct {
|
|||
|
||||
// Text file having the list of individual files that are included in this APEX. Used for
|
||||
// debugging purpose.
|
||||
installedFilesFile android.WritablePath
|
||||
installedFilesFile android.Path
|
||||
|
||||
// List of module names that this APEX is including (to be shown via *-deps-info target).
|
||||
// Used for debugging purpose.
|
||||
|
|
|
|||
|
|
@ -388,7 +388,7 @@ func (a *apexBundle) buildManifest(ctx android.ModuleContext, provideNativeLibs,
|
|||
// file for this APEX which is either from /systme/sepolicy/apex/<apexname>-file_contexts or from
|
||||
// the file_contexts property of this APEX. This is to make sure that the manifest file is correctly
|
||||
// labeled as system_file or vendor_apex_metadata_file.
|
||||
func (a *apexBundle) buildFileContexts(ctx android.ModuleContext) android.OutputPath {
|
||||
func (a *apexBundle) buildFileContexts(ctx android.ModuleContext) android.Path {
|
||||
var fileContexts android.Path
|
||||
var fileContextsDir string
|
||||
isFileContextsModule := false
|
||||
|
|
@ -443,13 +443,13 @@ func (a *apexBundle) buildFileContexts(ctx android.ModuleContext) android.Output
|
|||
}
|
||||
|
||||
rule.Build("file_contexts."+a.Name(), "Generate file_contexts")
|
||||
return output.OutputPath
|
||||
return output
|
||||
}
|
||||
|
||||
// buildInstalledFilesFile creates a build rule for the installed-files.txt file where the list of
|
||||
// files included in this APEX is shown. The text file is dist'ed so that people can see what's
|
||||
// included in the APEX without actually downloading and extracting it.
|
||||
func (a *apexBundle) buildInstalledFilesFile(ctx android.ModuleContext, builtApex android.Path, imageDir android.Path) android.OutputPath {
|
||||
func (a *apexBundle) buildInstalledFilesFile(ctx android.ModuleContext, builtApex android.Path, imageDir android.Path) android.Path {
|
||||
output := android.PathForModuleOut(ctx, "installed-files.txt")
|
||||
rule := android.NewRuleBuilder(pctx, ctx)
|
||||
rule.Command().
|
||||
|
|
@ -459,12 +459,12 @@ func (a *apexBundle) buildInstalledFilesFile(ctx android.ModuleContext, builtApe
|
|||
Text(" | sort -nr > ").
|
||||
Output(output)
|
||||
rule.Build("installed-files."+a.Name(), "Installed files")
|
||||
return output.OutputPath
|
||||
return output
|
||||
}
|
||||
|
||||
// buildBundleConfig creates a build rule for the bundle config file that will control the bundle
|
||||
// creation process.
|
||||
func (a *apexBundle) buildBundleConfig(ctx android.ModuleContext) android.OutputPath {
|
||||
func (a *apexBundle) buildBundleConfig(ctx android.ModuleContext) android.Path {
|
||||
output := android.PathForModuleOut(ctx, "bundle_config.json")
|
||||
|
||||
type ApkConfig struct {
|
||||
|
|
@ -509,7 +509,7 @@ func (a *apexBundle) buildBundleConfig(ctx android.ModuleContext) android.Output
|
|||
|
||||
android.WriteFileRule(ctx, output, string(j))
|
||||
|
||||
return output.OutputPath
|
||||
return output
|
||||
}
|
||||
|
||||
func markManifestTestOnly(ctx android.ModuleContext, androidManifestFile android.Path) android.Path {
|
||||
|
|
@ -922,17 +922,17 @@ func (a *apexBundle) buildApex(ctx android.ModuleContext) {
|
|||
args["outCommaList"] = signedOutputFile.String()
|
||||
}
|
||||
var validations android.Paths
|
||||
validations = append(validations, runApexLinkerconfigValidation(ctx, unsignedOutputFile.OutputPath, imageDir.OutputPath))
|
||||
validations = append(validations, runApexLinkerconfigValidation(ctx, unsignedOutputFile, imageDir))
|
||||
// TODO(b/279688635) deapexer supports [ext4]
|
||||
if !a.testApex && suffix == imageApexSuffix && ext4 == a.payloadFsType {
|
||||
validations = append(validations, runApexSepolicyTests(ctx, unsignedOutputFile.OutputPath))
|
||||
validations = append(validations, runApexSepolicyTests(ctx, unsignedOutputFile))
|
||||
}
|
||||
if !a.testApex && len(a.properties.Unwanted_transitive_deps) > 0 {
|
||||
validations = append(validations,
|
||||
runApexElfCheckerUnwanted(ctx, unsignedOutputFile.OutputPath, a.properties.Unwanted_transitive_deps))
|
||||
runApexElfCheckerUnwanted(ctx, unsignedOutputFile, a.properties.Unwanted_transitive_deps))
|
||||
}
|
||||
if !a.testApex && android.InList(a.payloadFsType, []fsType{ext4, erofs}) {
|
||||
validations = append(validations, runApexHostVerifier(ctx, a, unsignedOutputFile.OutputPath))
|
||||
validations = append(validations, runApexHostVerifier(ctx, a, unsignedOutputFile))
|
||||
}
|
||||
ctx.Build(pctx, android.BuildParams{
|
||||
Rule: rule,
|
||||
|
|
@ -1135,7 +1135,7 @@ func (a *apexBundle) buildLintReports(ctx android.ModuleContext) {
|
|||
a.lintReports = java.BuildModuleLintReportZips(ctx, depSets, validations)
|
||||
}
|
||||
|
||||
func (a *apexBundle) buildCannedFsConfig(ctx android.ModuleContext) android.OutputPath {
|
||||
func (a *apexBundle) buildCannedFsConfig(ctx android.ModuleContext) android.Path {
|
||||
var readOnlyPaths = []string{"apex_manifest.json", "apex_manifest.pb"}
|
||||
var executablePaths []string // this also includes dirs
|
||||
var appSetDirs []string
|
||||
|
|
@ -1199,10 +1199,10 @@ func (a *apexBundle) buildCannedFsConfig(ctx android.ModuleContext) android.Outp
|
|||
cmd.Text(")").FlagWithOutput("> ", cannedFsConfig)
|
||||
builder.Build("generateFsConfig", fmt.Sprintf("Generating canned fs config for %s", a.BaseModuleName()))
|
||||
|
||||
return cannedFsConfig.OutputPath
|
||||
return cannedFsConfig
|
||||
}
|
||||
|
||||
func runApexLinkerconfigValidation(ctx android.ModuleContext, apexFile android.OutputPath, imageDir android.OutputPath) android.Path {
|
||||
func runApexLinkerconfigValidation(ctx android.ModuleContext, apexFile android.Path, imageDir android.Path) android.Path {
|
||||
timestamp := android.PathForModuleOut(ctx, "apex_linkerconfig_validation.timestamp")
|
||||
ctx.Build(pctx, android.BuildParams{
|
||||
Rule: apexLinkerconfigValidationRule,
|
||||
|
|
@ -1219,7 +1219,7 @@ func runApexLinkerconfigValidation(ctx android.ModuleContext, apexFile android.O
|
|||
//
|
||||
// $ deapexer list -Z {apex_file} > {file_contexts}
|
||||
// $ apex_sepolicy_tests -f {file_contexts}
|
||||
func runApexSepolicyTests(ctx android.ModuleContext, apexFile android.OutputPath) android.Path {
|
||||
func runApexSepolicyTests(ctx android.ModuleContext, apexFile android.Path) android.Path {
|
||||
timestamp := android.PathForModuleOut(ctx, "sepolicy_tests.timestamp")
|
||||
ctx.Build(pctx, android.BuildParams{
|
||||
Rule: apexSepolicyTestsRule,
|
||||
|
|
@ -1229,7 +1229,7 @@ func runApexSepolicyTests(ctx android.ModuleContext, apexFile android.OutputPath
|
|||
return timestamp
|
||||
}
|
||||
|
||||
func runApexElfCheckerUnwanted(ctx android.ModuleContext, apexFile android.OutputPath, unwanted []string) android.Path {
|
||||
func runApexElfCheckerUnwanted(ctx android.ModuleContext, apexFile android.Path, unwanted []string) android.Path {
|
||||
timestamp := android.PathForModuleOut(ctx, "apex_elf_unwanted.timestamp")
|
||||
ctx.Build(pctx, android.BuildParams{
|
||||
Rule: apexElfCheckerUnwantedRule,
|
||||
|
|
@ -1243,7 +1243,7 @@ func runApexElfCheckerUnwanted(ctx android.ModuleContext, apexFile android.Outpu
|
|||
return timestamp
|
||||
}
|
||||
|
||||
func runApexHostVerifier(ctx android.ModuleContext, a *apexBundle, apexFile android.OutputPath) android.Path {
|
||||
func runApexHostVerifier(ctx android.ModuleContext, a *apexBundle, apexFile android.Path) android.Path {
|
||||
timestamp := android.PathForModuleOut(ctx, "host_apex_verifier.timestamp")
|
||||
ctx.Build(pctx, android.BuildParams{
|
||||
Rule: apexHostVerifierRule,
|
||||
|
|
|
|||
|
|
@ -386,7 +386,7 @@ type Prebuilt struct {
|
|||
|
||||
inputApex android.Path
|
||||
|
||||
provenanceMetaDataFile android.OutputPath
|
||||
provenanceMetaDataFile android.Path
|
||||
}
|
||||
|
||||
type ApexFileProperties struct {
|
||||
|
|
@ -697,7 +697,7 @@ func (p *Prebuilt) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
|||
ctx.SetOutputFiles(android.Paths{p.outputApex}, "")
|
||||
}
|
||||
|
||||
func (p *Prebuilt) ProvenanceMetaDataFile() android.OutputPath {
|
||||
func (p *Prebuilt) ProvenanceMetaDataFile() android.Path {
|
||||
return p.provenanceMetaDataFile
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -484,7 +484,7 @@ func (m *CmakeSnapshot) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
|||
// Packaging all make files into the zip file
|
||||
makefilesRspFile := android.PathForModuleObj(ctx, ctx.ModuleName()+"_makefiles.rsp")
|
||||
zipCmd.
|
||||
FlagWithArg("-C ", android.PathForModuleGen(ctx).OutputPath.String()).
|
||||
FlagWithArg("-C ", android.PathForModuleGen(ctx).String()).
|
||||
FlagWithRspFileInputList("-r ", makefilesRspFile, makefilesList)
|
||||
|
||||
// Packaging all prebuilts into the zip file
|
||||
|
|
|
|||
|
|
@ -1813,7 +1813,7 @@ func memtagStackMakeVarsProvider(ctx android.MakeVarsContext) {
|
|||
type sanitizerLibrariesTxtModule struct {
|
||||
android.ModuleBase
|
||||
|
||||
outputFile android.OutputPath
|
||||
outputFile android.Path
|
||||
}
|
||||
|
||||
var _ etc.PrebuiltEtcModule = (*sanitizerLibrariesTxtModule)(nil)
|
||||
|
|
@ -1896,13 +1896,14 @@ func (txt *sanitizerLibrariesTxtModule) getSanitizerLibs(ctx android.ModuleConte
|
|||
func (txt *sanitizerLibrariesTxtModule) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
||||
filename := txt.Name()
|
||||
|
||||
txt.outputFile = android.PathForModuleOut(ctx, filename).OutputPath
|
||||
android.WriteFileRule(ctx, txt.outputFile, txt.getSanitizerLibs(ctx))
|
||||
outputFile := android.PathForModuleOut(ctx, filename)
|
||||
android.WriteFileRule(ctx, outputFile, txt.getSanitizerLibs(ctx))
|
||||
|
||||
installPath := android.PathForModuleInstall(ctx, "etc")
|
||||
ctx.InstallFile(installPath, filename, txt.outputFile)
|
||||
ctx.InstallFile(installPath, filename, outputFile)
|
||||
|
||||
ctx.SetOutputFiles(android.Paths{txt.outputFile}, "")
|
||||
ctx.SetOutputFiles(android.Paths{outputFile}, "")
|
||||
txt.outputFile = outputFile
|
||||
}
|
||||
|
||||
func (txt *sanitizerLibrariesTxtModule) PrepareAndroidMKProviderInfo(config android.Config) *android.AndroidMkProviderInfo {
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ func init() {
|
|||
|
||||
type AdbKeysModule struct {
|
||||
android.ModuleBase
|
||||
outputPath android.OutputPath
|
||||
outputPath android.Path
|
||||
installPath android.InstallPath
|
||||
}
|
||||
|
||||
|
|
@ -46,15 +46,16 @@ func (m *AdbKeysModule) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
|||
return
|
||||
}
|
||||
|
||||
m.outputPath = android.PathForModuleOut(ctx, "adb_keys").OutputPath
|
||||
outputPath := android.PathForModuleOut(ctx, "adb_keys")
|
||||
input := android.ExistentPathForSource(ctx, android.String(productVariables.AdbKeys))
|
||||
ctx.Build(pctx, android.BuildParams{
|
||||
Rule: android.Cp,
|
||||
Output: m.outputPath,
|
||||
Output: outputPath,
|
||||
Input: input.Path(),
|
||||
})
|
||||
m.installPath = android.PathForModuleInstall(ctx, "etc/security")
|
||||
ctx.InstallFile(m.installPath, "adb_keys", m.outputPath)
|
||||
ctx.InstallFile(m.installPath, "adb_keys", outputPath)
|
||||
m.outputPath = outputPath
|
||||
}
|
||||
|
||||
func (m *AdbKeysModule) AndroidMkEntries() []android.AndroidMkEntries {
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ type otacertsZipModule struct {
|
|||
android.ModuleBase
|
||||
|
||||
properties otacertsZipProperties
|
||||
outputPath android.OutputPath
|
||||
outputPath android.Path
|
||||
}
|
||||
|
||||
// otacerts_zip collects key files defined in PRODUCT_DEFAULT_DEV_CERTIFICATE
|
||||
|
|
@ -117,11 +117,11 @@ func (m *otacertsZipModule) GenerateAndroidBuildActions(ctx android.ModuleContex
|
|||
// Read .x509.pem files listed in PRODUCT_EXTRA_OTA_KEYS or PRODUCT_EXTRA_RECOVERY_KEYS.
|
||||
extras := ctx.Config().ExtraOtaKeys(ctx, m.InRecovery())
|
||||
srcPaths := append([]android.SourcePath{pem}, extras...)
|
||||
m.outputPath = android.PathForModuleOut(ctx, m.outputFileName()).OutputPath
|
||||
outputPath := android.PathForModuleOut(ctx, m.outputFileName())
|
||||
|
||||
rule := android.NewRuleBuilder(pctx, ctx)
|
||||
cmd := rule.Command().BuiltTool("soong_zip").
|
||||
FlagWithOutput("-o ", m.outputPath).
|
||||
FlagWithOutput("-o ", outputPath).
|
||||
Flag("-j ").
|
||||
Flag("-symlinks=false ")
|
||||
for _, src := range srcPaths {
|
||||
|
|
@ -130,7 +130,8 @@ func (m *otacertsZipModule) GenerateAndroidBuildActions(ctx android.ModuleContex
|
|||
rule.Build(ctx.ModuleName(), "Generating the otacerts zip file")
|
||||
|
||||
installPath := android.PathForModuleInstall(ctx, "etc", proptools.String(m.properties.Relative_install_path))
|
||||
ctx.InstallFile(installPath, m.outputFileName(), m.outputPath)
|
||||
ctx.InstallFile(installPath, m.outputFileName(), outputPath)
|
||||
m.outputPath = outputPath
|
||||
}
|
||||
|
||||
func (m *otacertsZipModule) AndroidMkEntries() []android.AndroidMkEntries {
|
||||
|
|
|
|||
|
|
@ -184,7 +184,7 @@ type PrebuiltEtc struct {
|
|||
subdirProperties prebuiltSubdirProperties
|
||||
|
||||
sourceFilePaths android.Paths
|
||||
outputFilePaths android.OutputPaths
|
||||
outputFilePaths android.WritablePaths
|
||||
// The base install location, e.g. "etc" for prebuilt_etc, "usr/share" for prebuilt_usr_share.
|
||||
installDirBase string
|
||||
installDirBase64 string
|
||||
|
|
@ -317,7 +317,7 @@ func (p *PrebuiltEtc) SetAdditionalDependencies(paths android.Paths) {
|
|||
p.additionalDependencies = &paths
|
||||
}
|
||||
|
||||
func (p *PrebuiltEtc) OutputFile() android.OutputPath {
|
||||
func (p *PrebuiltEtc) OutputFile() android.Path {
|
||||
if p.usedSrcsProperty {
|
||||
panic(fmt.Errorf("OutputFile not available on multi-source prebuilt %q", p.Name()))
|
||||
}
|
||||
|
|
@ -410,7 +410,7 @@ func (p *PrebuiltEtc) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
|||
ctx.PropertyErrorf("filename", "filename cannot contain separator '/'")
|
||||
return
|
||||
}
|
||||
p.outputFilePaths = android.OutputPaths{android.PathForModuleOut(ctx, filename).OutputPath}
|
||||
p.outputFilePaths = android.WritablePaths{android.PathForModuleOut(ctx, filename)}
|
||||
|
||||
ip := installProperties{
|
||||
filename: filename,
|
||||
|
|
@ -453,7 +453,7 @@ func (p *PrebuiltEtc) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
|||
filename = src.Base()
|
||||
installDirPath = baseInstallDirPath
|
||||
}
|
||||
output := android.PathForModuleOut(ctx, filename).OutputPath
|
||||
output := android.PathForModuleOut(ctx, filename)
|
||||
ip := installProperties{
|
||||
filename: filename,
|
||||
sourceFilePath: src,
|
||||
|
|
@ -473,7 +473,7 @@ func (p *PrebuiltEtc) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
|||
if filename == "" {
|
||||
filename = ctx.ModuleName()
|
||||
}
|
||||
p.outputFilePaths = android.OutputPaths{android.PathForModuleOut(ctx, filename).OutputPath}
|
||||
p.outputFilePaths = android.WritablePaths{android.PathForModuleOut(ctx, filename)}
|
||||
ip := installProperties{
|
||||
filename: filename,
|
||||
sourceFilePath: p.sourceFilePaths[0],
|
||||
|
|
@ -501,7 +501,7 @@ func (p *PrebuiltEtc) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
|||
type installProperties struct {
|
||||
filename string
|
||||
sourceFilePath android.Path
|
||||
outputFilePath android.OutputPath
|
||||
outputFilePath android.WritablePath
|
||||
installDirPath android.InstallPath
|
||||
symlinks []string
|
||||
}
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ type avbAddHashFooter struct {
|
|||
|
||||
properties avbAddHashFooterProperties
|
||||
|
||||
output android.OutputPath
|
||||
output android.Path
|
||||
installDir android.InstallPath
|
||||
}
|
||||
|
||||
|
|
@ -97,8 +97,8 @@ func (a *avbAddHashFooter) GenerateAndroidBuildActions(ctx android.ModuleContext
|
|||
return
|
||||
}
|
||||
input := android.PathForModuleSrc(ctx, proptools.String(a.properties.Src))
|
||||
a.output = android.PathForModuleOut(ctx, a.installFileName()).OutputPath
|
||||
builder.Command().Text("cp").Input(input).Output(a.output)
|
||||
output := android.PathForModuleOut(ctx, a.installFileName())
|
||||
builder.Command().Text("cp").Input(input).Output(output)
|
||||
|
||||
cmd := builder.Command().BuiltTool("avbtool").Text("add_hash_footer")
|
||||
|
||||
|
|
@ -141,12 +141,13 @@ func (a *avbAddHashFooter) GenerateAndroidBuildActions(ctx android.ModuleContext
|
|||
cmd.Flag(fmt.Sprintf(" --rollback_index %d", rollbackIndex))
|
||||
}
|
||||
|
||||
cmd.FlagWithOutput("--image ", a.output)
|
||||
cmd.FlagWithOutput("--image ", output)
|
||||
|
||||
builder.Build("avbAddHashFooter", fmt.Sprintf("avbAddHashFooter %s", ctx.ModuleName()))
|
||||
|
||||
a.installDir = android.PathForModuleInstall(ctx, "etc")
|
||||
ctx.InstallFile(a.installDir, a.installFileName(), a.output)
|
||||
ctx.InstallFile(a.installDir, a.installFileName(), output)
|
||||
a.output = output
|
||||
}
|
||||
|
||||
func addAvbProp(ctx android.ModuleContext, cmd *android.RuleBuilderCommand, prop avbProp) {
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ type avbGenVbmetaImage struct {
|
|||
|
||||
properties avbGenVbmetaImageProperties
|
||||
|
||||
output android.OutputPath
|
||||
output android.Path
|
||||
installDir android.InstallPath
|
||||
}
|
||||
|
||||
|
|
@ -78,11 +78,12 @@ func (a *avbGenVbmetaImage) GenerateAndroidBuildActions(ctx android.ModuleContex
|
|||
}
|
||||
cmd.FlagWithArg("--salt ", proptools.String(a.properties.Salt))
|
||||
|
||||
a.output = android.PathForModuleOut(ctx, a.installFileName()).OutputPath
|
||||
cmd.FlagWithOutput("--output_vbmeta_image ", a.output)
|
||||
output := android.PathForModuleOut(ctx, a.installFileName())
|
||||
cmd.FlagWithOutput("--output_vbmeta_image ", output)
|
||||
builder.Build("avbGenVbmetaImage", fmt.Sprintf("avbGenVbmetaImage %s", ctx.ModuleName()))
|
||||
|
||||
ctx.SetOutputFiles([]android.Path{a.output}, "")
|
||||
ctx.SetOutputFiles([]android.Path{output}, "")
|
||||
a.output = output
|
||||
}
|
||||
|
||||
var _ android.AndroidMkEntriesProvider = (*avbGenVbmetaImage)(nil)
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ type bootimg struct {
|
|||
|
||||
properties bootimgProperties
|
||||
|
||||
output android.OutputPath
|
||||
output android.Path
|
||||
installDir android.InstallPath
|
||||
}
|
||||
|
||||
|
|
@ -115,20 +115,20 @@ func (b *bootimg) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
|||
vendor := proptools.Bool(b.properties.Vendor_boot)
|
||||
unsignedOutput := b.buildBootImage(ctx, vendor)
|
||||
|
||||
output := unsignedOutput
|
||||
if proptools.Bool(b.properties.Use_avb) {
|
||||
b.output = b.signImage(ctx, unsignedOutput)
|
||||
} else {
|
||||
b.output = unsignedOutput
|
||||
output = b.signImage(ctx, unsignedOutput)
|
||||
}
|
||||
|
||||
b.installDir = android.PathForModuleInstall(ctx, "etc")
|
||||
ctx.InstallFile(b.installDir, b.installFileName(), b.output)
|
||||
ctx.InstallFile(b.installDir, b.installFileName(), output)
|
||||
|
||||
ctx.SetOutputFiles([]android.Path{b.output}, "")
|
||||
ctx.SetOutputFiles([]android.Path{output}, "")
|
||||
b.output = output
|
||||
}
|
||||
|
||||
func (b *bootimg) buildBootImage(ctx android.ModuleContext, vendor bool) android.OutputPath {
|
||||
output := android.PathForModuleOut(ctx, "unsigned", b.installFileName()).OutputPath
|
||||
func (b *bootimg) buildBootImage(ctx android.ModuleContext, vendor bool) android.Path {
|
||||
output := android.PathForModuleOut(ctx, "unsigned", b.installFileName())
|
||||
|
||||
builder := android.NewRuleBuilder(pctx, ctx)
|
||||
cmd := builder.Command().BuiltTool("mkbootimg")
|
||||
|
|
@ -215,10 +215,10 @@ func (b *bootimg) buildBootImage(ctx android.ModuleContext, vendor bool) android
|
|||
return output
|
||||
}
|
||||
|
||||
func (b *bootimg) signImage(ctx android.ModuleContext, unsignedImage android.OutputPath) android.OutputPath {
|
||||
func (b *bootimg) signImage(ctx android.ModuleContext, unsignedImage android.Path) android.Path {
|
||||
propFile, toolDeps := b.buildPropFile(ctx)
|
||||
|
||||
output := android.PathForModuleOut(ctx, b.installFileName()).OutputPath
|
||||
output := android.PathForModuleOut(ctx, b.installFileName())
|
||||
builder := android.NewRuleBuilder(pctx, ctx)
|
||||
builder.Command().Text("cp").Input(unsignedImage).Output(output)
|
||||
builder.Command().BuiltTool("verity_utils").
|
||||
|
|
@ -239,7 +239,7 @@ func (b *bootimg) salt() string {
|
|||
return sha1sum(input)
|
||||
}
|
||||
|
||||
func (b *bootimg) buildPropFile(ctx android.ModuleContext) (propFile android.OutputPath, toolDeps android.Paths) {
|
||||
func (b *bootimg) buildPropFile(ctx android.ModuleContext) (android.Path, android.Paths) {
|
||||
var sb strings.Builder
|
||||
var deps android.Paths
|
||||
addStr := func(name string, value string) {
|
||||
|
|
@ -261,7 +261,7 @@ func (b *bootimg) buildPropFile(ctx android.ModuleContext) (propFile android.Out
|
|||
addStr("partition_name", partitionName)
|
||||
addStr("avb_salt", b.salt())
|
||||
|
||||
propFile = android.PathForModuleOut(ctx, "prop").OutputPath
|
||||
propFile := android.PathForModuleOut(ctx, "prop")
|
||||
android.WriteFileRule(ctx, propFile, sb.String())
|
||||
return propFile, deps
|
||||
}
|
||||
|
|
|
|||
|
|
@ -52,10 +52,10 @@ type filesystem struct {
|
|||
|
||||
properties FilesystemProperties
|
||||
|
||||
output android.OutputPath
|
||||
output android.Path
|
||||
installDir android.InstallPath
|
||||
|
||||
fileListFile android.OutputPath
|
||||
fileListFile android.Path
|
||||
|
||||
// Keeps the entries installed from this filesystem
|
||||
entries []string
|
||||
|
|
@ -340,19 +340,20 @@ func (f *filesystem) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
|||
ctx.InstallFile(f.installDir, f.installFileName(), f.output)
|
||||
ctx.SetOutputFiles([]android.Path{f.output}, "")
|
||||
|
||||
f.fileListFile = android.PathForModuleOut(ctx, "fileList").OutputPath
|
||||
android.WriteFileRule(ctx, f.fileListFile, f.installedFilesList())
|
||||
fileListFile := android.PathForModuleOut(ctx, "fileList")
|
||||
android.WriteFileRule(ctx, fileListFile, f.installedFilesList())
|
||||
|
||||
android.SetProvider(ctx, FilesystemProvider, FilesystemInfo{
|
||||
FileListFile: f.fileListFile,
|
||||
FileListFile: fileListFile,
|
||||
})
|
||||
f.fileListFile = fileListFile
|
||||
|
||||
if proptools.Bool(f.properties.Unchecked_module) {
|
||||
ctx.UncheckedModule()
|
||||
}
|
||||
}
|
||||
|
||||
func (f *filesystem) appendToEntry(ctx android.ModuleContext, installedFile android.OutputPath) {
|
||||
func (f *filesystem) appendToEntry(ctx android.ModuleContext, installedFile android.Path) {
|
||||
partitionBaseDir := android.PathForModuleOut(ctx, "root", f.partitionName()).String() + "/"
|
||||
|
||||
relPath, inTargetPartition := strings.CutPrefix(installedFile.String(), partitionBaseDir)
|
||||
|
|
@ -443,7 +444,7 @@ func (f *filesystem) copyFilesToProductOut(ctx android.ModuleContext, builder *a
|
|||
builder.Command().Textf("cp -prf %s/* %s", rebasedDir, installPath)
|
||||
}
|
||||
|
||||
func (f *filesystem) buildImageUsingBuildImage(ctx android.ModuleContext) android.OutputPath {
|
||||
func (f *filesystem) buildImageUsingBuildImage(ctx android.ModuleContext) android.Path {
|
||||
rootDir := android.PathForModuleOut(ctx, "root").OutputPath
|
||||
rebasedDir := rootDir
|
||||
if f.properties.Base_dir != nil {
|
||||
|
|
@ -472,7 +473,7 @@ func (f *filesystem) buildImageUsingBuildImage(ctx android.ModuleContext) androi
|
|||
FlagWithArg("--out_system=", rootDir.String()+"/system")
|
||||
|
||||
propFile, toolDeps := f.buildPropFile(ctx)
|
||||
output := android.PathForModuleOut(ctx, f.installFileName()).OutputPath
|
||||
output := android.PathForModuleOut(ctx, f.installFileName())
|
||||
builder.Command().BuiltTool("build_image").
|
||||
Text(rootDir.String()). // input directory
|
||||
Input(propFile).
|
||||
|
|
@ -486,14 +487,14 @@ func (f *filesystem) buildImageUsingBuildImage(ctx android.ModuleContext) androi
|
|||
return output
|
||||
}
|
||||
|
||||
func (f *filesystem) buildFileContexts(ctx android.ModuleContext) android.OutputPath {
|
||||
func (f *filesystem) buildFileContexts(ctx android.ModuleContext) android.Path {
|
||||
builder := android.NewRuleBuilder(pctx, ctx)
|
||||
fcBin := android.PathForModuleOut(ctx, "file_contexts.bin")
|
||||
builder.Command().BuiltTool("sefcontext_compile").
|
||||
FlagWithOutput("-o ", fcBin).
|
||||
Input(android.PathForModuleSrc(ctx, proptools.String(f.properties.File_contexts)))
|
||||
builder.Build("build_filesystem_file_contexts", fmt.Sprintf("Creating filesystem file contexts for %s", f.BaseModuleName()))
|
||||
return fcBin.OutputPath
|
||||
return fcBin
|
||||
}
|
||||
|
||||
// Calculates avb_salt from entry list (sorted) for deterministic output.
|
||||
|
|
@ -501,7 +502,7 @@ func (f *filesystem) salt() string {
|
|||
return sha1sum(f.entries)
|
||||
}
|
||||
|
||||
func (f *filesystem) buildPropFile(ctx android.ModuleContext) (propFile android.OutputPath, toolDeps android.Paths) {
|
||||
func (f *filesystem) buildPropFile(ctx android.ModuleContext) (android.Path, android.Paths) {
|
||||
var deps android.Paths
|
||||
var propFileString strings.Builder
|
||||
addStr := func(name string, value string) {
|
||||
|
|
@ -597,7 +598,7 @@ func (f *filesystem) buildPropFile(ctx android.ModuleContext) (propFile android.
|
|||
}
|
||||
f.checkFsTypePropertyError(ctx, fst, fsTypeStr(fst))
|
||||
|
||||
propFile = android.PathForModuleOut(ctx, "prop").OutputPath
|
||||
propFile := android.PathForModuleOut(ctx, "prop")
|
||||
android.WriteFileRuleVerbatim(ctx, propFile, propFileString.String())
|
||||
return propFile, deps
|
||||
}
|
||||
|
|
@ -622,7 +623,7 @@ func (f *filesystem) checkFsTypePropertyError(ctx android.ModuleContext, t fsTyp
|
|||
}
|
||||
}
|
||||
|
||||
func (f *filesystem) buildCpioImage(ctx android.ModuleContext, compressed bool) android.OutputPath {
|
||||
func (f *filesystem) buildCpioImage(ctx android.ModuleContext, compressed bool) android.Path {
|
||||
if proptools.Bool(f.properties.Use_avb) {
|
||||
ctx.PropertyErrorf("use_avb", "signing compresed cpio image using avbtool is not supported."+
|
||||
"Consider adding this to bootimg module and signing the entire boot image.")
|
||||
|
|
@ -654,7 +655,7 @@ func (f *filesystem) buildCpioImage(ctx android.ModuleContext, compressed bool)
|
|||
f.filesystemBuilder.BuildLinkerConfigFile(ctx, builder, rebasedDir)
|
||||
f.copyFilesToProductOut(ctx, builder, rebasedDir)
|
||||
|
||||
output := android.PathForModuleOut(ctx, f.installFileName()).OutputPath
|
||||
output := android.PathForModuleOut(ctx, f.installFileName())
|
||||
cmd := builder.Command().
|
||||
BuiltTool("mkbootfs").
|
||||
Text(rootDir.String()) // input directory
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ type fsverityProperties struct {
|
|||
Libs []string `android:"path"`
|
||||
}
|
||||
|
||||
func (f *filesystem) writeManifestGeneratorListFile(ctx android.ModuleContext, outputPath android.OutputPath, matchedSpecs []android.PackagingSpec, rebasedDir android.OutputPath) {
|
||||
func (f *filesystem) writeManifestGeneratorListFile(ctx android.ModuleContext, outputPath android.WritablePath, matchedSpecs []android.PackagingSpec, rebasedDir android.OutputPath) {
|
||||
var buf strings.Builder
|
||||
for _, spec := range matchedSpecs {
|
||||
buf.WriteString(rebasedDir.Join(ctx, spec.RelPathInPackage()).String())
|
||||
|
|
@ -113,12 +113,12 @@ func (f *filesystem) buildFsverityMetadataFiles(ctx android.ModuleContext, build
|
|||
f.appendToEntry(ctx, manifestPbPath)
|
||||
|
||||
manifestGeneratorListPath := android.PathForModuleOut(ctx, "fsverity_manifest.list")
|
||||
f.writeManifestGeneratorListFile(ctx, manifestGeneratorListPath.OutputPath, matchedSpecs, rebasedDir)
|
||||
f.writeManifestGeneratorListFile(ctx, manifestGeneratorListPath, matchedSpecs, rebasedDir)
|
||||
sb.WriteRune('@')
|
||||
sb.WriteString(manifestGeneratorListPath.String())
|
||||
sb.WriteRune('\n')
|
||||
cmd.Implicit(manifestGeneratorListPath)
|
||||
f.appendToEntry(ctx, manifestGeneratorListPath.OutputPath)
|
||||
f.appendToEntry(ctx, manifestGeneratorListPath)
|
||||
|
||||
// STEP 2-2: generate BuildManifest.apk (unsigned)
|
||||
aapt2Path := ctx.Config().HostToolPath(ctx, "aapt2")
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ type logicalPartition struct {
|
|||
|
||||
properties logicalPartitionProperties
|
||||
|
||||
output android.OutputPath
|
||||
output android.Path
|
||||
installDir android.InstallPath
|
||||
}
|
||||
|
||||
|
|
@ -95,11 +95,14 @@ func (l *logicalPartition) GenerateAndroidBuildActions(ctx android.ModuleContext
|
|||
builder := android.NewRuleBuilder(pctx, ctx)
|
||||
|
||||
// Sparse the filesystem images and calculate their sizes
|
||||
sparseImages := make(map[string]android.OutputPath)
|
||||
sparseImageSizes := make(map[string]android.OutputPath)
|
||||
sparseImages := make(map[string]android.Path)
|
||||
sparseImageSizes := make(map[string]android.Path)
|
||||
|
||||
sparsePartitions := func(partitions []partitionProperties) {
|
||||
for _, part := range partitions {
|
||||
if part.Filesystem == nil {
|
||||
continue
|
||||
}
|
||||
sparseImg, sizeTxt := sparseFilesystem(ctx, part, builder)
|
||||
pName := proptools.String(part.Name)
|
||||
sparseImages[pName] = sparseImg
|
||||
|
|
@ -185,31 +188,29 @@ func (l *logicalPartition) GenerateAndroidBuildActions(ctx android.ModuleContext
|
|||
addPartitionsToGroup(group.Partitions, gName)
|
||||
}
|
||||
|
||||
l.output = android.PathForModuleOut(ctx, l.installFileName()).OutputPath
|
||||
cmd.FlagWithOutput("--output=", l.output)
|
||||
output := android.PathForModuleOut(ctx, l.installFileName())
|
||||
cmd.FlagWithOutput("--output=", output)
|
||||
|
||||
builder.Build("build_logical_partition", fmt.Sprintf("Creating %s", l.BaseModuleName()))
|
||||
|
||||
l.installDir = android.PathForModuleInstall(ctx, "etc")
|
||||
ctx.InstallFile(l.installDir, l.installFileName(), l.output)
|
||||
ctx.InstallFile(l.installDir, l.installFileName(), output)
|
||||
|
||||
ctx.SetOutputFiles([]android.Path{l.output}, "")
|
||||
ctx.SetOutputFiles([]android.Path{output}, "")
|
||||
l.output = output
|
||||
}
|
||||
|
||||
// Add a rule that converts the filesystem for the given partition to the given rule builder. The
|
||||
// path to the sparse file and the text file having the size of the partition are returned.
|
||||
func sparseFilesystem(ctx android.ModuleContext, p partitionProperties, builder *android.RuleBuilder) (sparseImg android.OutputPath, sizeTxt android.OutputPath) {
|
||||
if p.Filesystem == nil {
|
||||
return
|
||||
}
|
||||
img := android.PathForModuleSrc(ctx, proptools.String(p.Filesystem))
|
||||
func sparseFilesystem(ctx android.ModuleContext, p partitionProperties, builder *android.RuleBuilder) (android.Path, android.Path) {
|
||||
img := android.PathForModuleSrc(ctx, *p.Filesystem)
|
||||
name := proptools.String(p.Name)
|
||||
sparseImg = android.PathForModuleOut(ctx, name+".img").OutputPath
|
||||
|
||||
sparseImg := android.PathForModuleOut(ctx, name+".img")
|
||||
builder.Temporary(sparseImg)
|
||||
builder.Command().BuiltTool("img2simg").Input(img).Output(sparseImg)
|
||||
|
||||
sizeTxt = android.PathForModuleOut(ctx, name+"-size.txt").OutputPath
|
||||
sizeTxt := android.PathForModuleOut(ctx, name+"-size.txt")
|
||||
builder.Temporary(sizeTxt)
|
||||
builder.Command().BuiltTool("sparse_img").Flag("--get_partition_size").Input(sparseImg).
|
||||
Text("| ").Text("tr").FlagWithArg("-d ", "'\n'").
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ type rawBinary struct {
|
|||
|
||||
properties rawBinaryProperties
|
||||
|
||||
output android.OutputPath
|
||||
output android.Path
|
||||
installDir android.InstallPath
|
||||
}
|
||||
|
||||
|
|
@ -71,7 +71,7 @@ func (r *rawBinary) installFileName() string {
|
|||
|
||||
func (r *rawBinary) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
||||
inputFile := android.PathForModuleSrc(ctx, proptools.String(r.properties.Src))
|
||||
outputFile := android.PathForModuleOut(ctx, r.installFileName()).OutputPath
|
||||
outputFile := android.PathForModuleOut(ctx, r.installFileName())
|
||||
|
||||
ctx.Build(pctx, android.BuildParams{
|
||||
Rule: toRawBinary,
|
||||
|
|
@ -83,11 +83,11 @@ func (r *rawBinary) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
|||
},
|
||||
})
|
||||
|
||||
r.output = outputFile
|
||||
r.installDir = android.PathForModuleInstall(ctx, "etc")
|
||||
ctx.InstallFile(r.installDir, r.installFileName(), r.output)
|
||||
ctx.InstallFile(r.installDir, r.installFileName(), outputFile)
|
||||
|
||||
ctx.SetOutputFiles([]android.Path{r.output}, "")
|
||||
ctx.SetOutputFiles([]android.Path{outputFile}, "")
|
||||
r.output = outputFile
|
||||
}
|
||||
|
||||
var _ android.AndroidMkEntriesProvider = (*rawBinary)(nil)
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ type vbmeta struct {
|
|||
|
||||
properties VbmetaProperties
|
||||
|
||||
output android.OutputPath
|
||||
output android.Path
|
||||
installDir android.InstallPath
|
||||
}
|
||||
|
||||
|
|
@ -161,8 +161,6 @@ func (v *vbmeta) partitionName() string {
|
|||
const vbmetaMaxSize = 64 * 1024
|
||||
|
||||
func (v *vbmeta) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
||||
v.output = android.PathForModuleOut(ctx, v.installFileName()).OutputPath
|
||||
|
||||
builder := android.NewRuleBuilder(pctx, ctx)
|
||||
cmd := builder.Command().BuiltTool("avbtool").Text("make_vbmeta_image")
|
||||
|
||||
|
|
@ -274,18 +272,19 @@ func (v *vbmeta) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
|||
cmd.Implicit(publicKey)
|
||||
}
|
||||
|
||||
cmd.FlagWithOutput("--output ", v.output)
|
||||
output := android.PathForModuleOut(ctx, v.installFileName())
|
||||
cmd.FlagWithOutput("--output ", output)
|
||||
|
||||
// libavb expects to be able to read the maximum vbmeta size, so we must provide a partition
|
||||
// which matches this or the read will fail.
|
||||
builder.Command().Text("truncate").
|
||||
FlagWithArg("-s ", strconv.Itoa(vbmetaMaxSize)).
|
||||
Output(v.output)
|
||||
Output(output)
|
||||
|
||||
builder.Build("vbmeta", fmt.Sprintf("vbmeta %s", ctx.ModuleName()))
|
||||
|
||||
v.installDir = android.PathForModuleInstall(ctx, "etc")
|
||||
ctx.InstallFile(v.installDir, v.installFileName(), v.output)
|
||||
ctx.InstallFile(v.installDir, v.installFileName(), output)
|
||||
|
||||
extractedPublicKey := android.PathForModuleOut(ctx, v.partitionName()+".avbpubkey")
|
||||
ctx.Build(pctx, android.BuildParams{
|
||||
|
|
@ -300,7 +299,8 @@ func (v *vbmeta) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
|||
PublicKey: extractedPublicKey,
|
||||
})
|
||||
|
||||
ctx.SetOutputFiles([]android.Path{v.output}, "")
|
||||
ctx.SetOutputFiles([]android.Path{output}, "")
|
||||
v.output = output
|
||||
}
|
||||
|
||||
// Returns the embedded shell command that prints the rollback index
|
||||
|
|
|
|||
|
|
@ -848,7 +848,7 @@ func (a *AndroidApp) createPrivappAllowlist(ctx android.ModuleContext) android.P
|
|||
|
||||
packageName := packageNameProp.Get()
|
||||
fileName := "privapp_allowlist_" + packageName + ".xml"
|
||||
outPath := android.PathForModuleOut(ctx, fileName).OutputPath
|
||||
outPath := android.PathForModuleOut(ctx, fileName)
|
||||
ctx.Build(pctx, android.BuildParams{
|
||||
Rule: modifyAllowlist,
|
||||
Input: android.PathForModuleSrc(ctx, *a.appProperties.Privapp_allowlist),
|
||||
|
|
@ -857,7 +857,7 @@ func (a *AndroidApp) createPrivappAllowlist(ctx android.ModuleContext) android.P
|
|||
"packageName": packageName,
|
||||
},
|
||||
})
|
||||
return &outPath
|
||||
return outPath
|
||||
}
|
||||
|
||||
func (a *AndroidApp) generateAndroidBuildActions(ctx android.ModuleContext) {
|
||||
|
|
|
|||
|
|
@ -88,7 +88,7 @@ type AndroidAppImport struct {
|
|||
|
||||
hideApexVariantFromMake bool
|
||||
|
||||
provenanceMetaDataFile android.OutputPath
|
||||
provenanceMetaDataFile android.Path
|
||||
}
|
||||
|
||||
type AndroidAppImportProperties struct {
|
||||
|
|
@ -259,7 +259,7 @@ func (a *AndroidAppImport) DepsMutator(ctx android.BottomUpMutatorContext) {
|
|||
}
|
||||
|
||||
func (a *AndroidAppImport) uncompressEmbeddedJniLibs(
|
||||
ctx android.ModuleContext, inputPath android.Path, outputPath android.OutputPath) {
|
||||
ctx android.ModuleContext, inputPath android.Path, outputPath android.WritablePath) {
|
||||
// Test apps don't need their JNI libraries stored uncompressed. As a matter of fact, messing
|
||||
// with them may invalidate pre-existing signature data.
|
||||
if ctx.InstallInTestcases() && (Bool(a.properties.Presigned) || Bool(a.properties.Preprocessed)) {
|
||||
|
|
@ -345,7 +345,7 @@ func (a *AndroidAppImport) generateAndroidBuildActions(ctx android.ModuleContext
|
|||
|
||||
// Uncompress JNI libraries in the apk
|
||||
jnisUncompressed := android.PathForModuleOut(ctx, "jnis-uncompressed", ctx.ModuleName()+".apk")
|
||||
a.uncompressEmbeddedJniLibs(ctx, srcApk, jnisUncompressed.OutputPath)
|
||||
a.uncompressEmbeddedJniLibs(ctx, srcApk, jnisUncompressed)
|
||||
|
||||
var pathFragments []string
|
||||
relInstallPath := String(a.properties.Relative_install_path)
|
||||
|
|
@ -493,7 +493,7 @@ func (a *AndroidAppImport) Certificate() Certificate {
|
|||
return a.certificate
|
||||
}
|
||||
|
||||
func (a *AndroidAppImport) ProvenanceMetaDataFile() android.OutputPath {
|
||||
func (a *AndroidAppImport) ProvenanceMetaDataFile() android.Path {
|
||||
return a.provenanceMetaDataFile
|
||||
}
|
||||
|
||||
|
|
|
|||
21
java/dex.go
21
java/dex.go
|
|
@ -428,17 +428,18 @@ type compileDexParams struct {
|
|||
// Adds --art-profile to r8/d8 command.
|
||||
// r8/d8 will output a generated profile file to match the optimized dex code.
|
||||
func (d *dexer) addArtProfile(ctx android.ModuleContext, dexParams *compileDexParams) (flags []string, deps android.Paths, artProfileOutputPath *android.OutputPath) {
|
||||
if dexParams.artProfileInput != nil {
|
||||
artProfileInputPath := android.PathForModuleSrc(ctx, *dexParams.artProfileInput)
|
||||
artProfileOutputPathValue := android.PathForModuleOut(ctx, "profile.prof.txt").OutputPath
|
||||
artProfileOutputPath = &artProfileOutputPathValue
|
||||
flags = []string{
|
||||
"--art-profile",
|
||||
artProfileInputPath.String(),
|
||||
artProfileOutputPath.String(),
|
||||
}
|
||||
deps = append(deps, artProfileInputPath)
|
||||
if dexParams.artProfileInput == nil {
|
||||
return nil, nil, nil
|
||||
}
|
||||
artProfileInputPath := android.PathForModuleSrc(ctx, *dexParams.artProfileInput)
|
||||
artProfileOutputPathValue := android.PathForModuleOut(ctx, "profile.prof.txt").OutputPath
|
||||
artProfileOutputPath = &artProfileOutputPathValue
|
||||
flags = []string{
|
||||
"--art-profile",
|
||||
artProfileInputPath.String(),
|
||||
artProfileOutputPath.String(),
|
||||
}
|
||||
deps = append(deps, artProfileInputPath)
|
||||
return flags, deps, artProfileOutputPath
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -184,7 +184,7 @@ func (b *platformBootclasspathModule) GenerateAndroidBuildActions(ctx android.Mo
|
|||
}
|
||||
jarArgs := resourcePathsToJarArgs(transitiveSrcFiles)
|
||||
jarArgs = append(jarArgs, "-srcjar") // Move srcfiles to the right package
|
||||
srcjar := android.PathForModuleOut(ctx, ctx.ModuleName()+"-transitive.srcjar").OutputPath
|
||||
srcjar := android.PathForModuleOut(ctx, ctx.ModuleName()+"-transitive.srcjar")
|
||||
TransformResourcesToJar(ctx, srcjar, jarArgs, transitiveSrcFiles)
|
||||
|
||||
// Gather all the fragments dependencies.
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ var (
|
|||
)
|
||||
|
||||
type ProvenanceMetadata interface {
|
||||
ProvenanceMetaDataFile() android.OutputPath
|
||||
ProvenanceMetaDataFile() android.Path
|
||||
}
|
||||
|
||||
func init() {
|
||||
|
|
@ -74,7 +74,7 @@ func (p *provenanceInfoSingleton) GenerateBuildActions(context android.Singleton
|
|||
return false
|
||||
}
|
||||
if p, ok := module.(ProvenanceMetadata); ok {
|
||||
return p.ProvenanceMetaDataFile().String() != ""
|
||||
return p.ProvenanceMetaDataFile() != nil
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
|
@ -101,7 +101,7 @@ func (p *provenanceInfoSingleton) GenerateBuildActions(context android.Singleton
|
|||
context.Phony("droidcore", android.PathForPhony(context, "provenance_metadata"))
|
||||
}
|
||||
|
||||
func GenerateArtifactProvenanceMetaData(ctx android.ModuleContext, artifactPath android.Path, installedFile android.InstallPath) android.OutputPath {
|
||||
func GenerateArtifactProvenanceMetaData(ctx android.ModuleContext, artifactPath android.Path, installedFile android.InstallPath) android.Path {
|
||||
onDevicePathOfInstalledFile := android.InstallPathToOnDevicePath(ctx, installedFile)
|
||||
artifactMetaDataFile := android.PathForIntermediates(ctx, "provenance_metadata", ctx.ModuleDir(), ctx.ModuleName(), "provenance_metadata.textproto")
|
||||
ctx.Build(pctx, android.BuildParams{
|
||||
|
|
|
|||
|
|
@ -204,7 +204,7 @@ func (s *ShBinary) HostToolPath() android.OptionalPath {
|
|||
func (s *ShBinary) DepsMutator(ctx android.BottomUpMutatorContext) {
|
||||
}
|
||||
|
||||
func (s *ShBinary) OutputFile() android.OutputPath {
|
||||
func (s *ShBinary) OutputFile() android.Path {
|
||||
return s.outputFilePath
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue