Add source file provider for genrule/srcs, python libraries and rust libraries.
Ignore-AOSP-First: CPing test_spec rule to udc-mainline-prod to support migration of test targets. Cherry pick of:aosp/2786121
Change-Id: I2d7d4684a10c15aeecc27b8db800ab27a807d2e2
Merged-In: I2d7d4684a10c15aeecc27b8db800ab27a807d2e2
diff --git a/android/Android.bp b/android/Android.bp
index 35d5c19..641c438 100644
--- a/android/Android.bp
+++ b/android/Android.bp
@@ -88,7 +88,6 @@
"singleton.go",
"singleton_module.go",
"soong_config_modules.go",
- "source_file_provider.go",
"test_asserts.go",
"test_suites.go",
"testing.go",
diff --git a/android/filegroup.go b/android/filegroup.go
index 121368d..66aa154 100644
--- a/android/filegroup.go
+++ b/android/filegroup.go
@@ -237,6 +237,7 @@
if fg.properties.Path != nil {
fg.srcs = PathsWithModuleSrcSubDir(ctx, fg.srcs, String(fg.properties.Path))
}
+ ctx.SetProvider(blueprint.SrcsFileProviderKey, blueprint.SrcsFileProviderData{SrcPaths: fg.srcs.Strings()})
}
func (fg *fileGroup) Srcs() Paths {
diff --git a/android/source_file_provider.go b/android/source_file_provider.go
deleted file mode 100644
index 80bde2a..0000000
--- a/android/source_file_provider.go
+++ /dev/null
@@ -1,11 +0,0 @@
-package android
-
-import (
- "github.com/google/blueprint"
-)
-
-type SrcsFileProviderData struct {
- SrcPaths Paths
-}
-
-var SrcsFileProviderKey = blueprint.NewProvider(SrcsFileProviderData{})
diff --git a/bpf/bpf.go b/bpf/bpf.go
index d135d5f..710d9cd 100644
--- a/bpf/bpf.go
+++ b/bpf/bpf.go
@@ -208,6 +208,7 @@
}
}
+ ctx.SetProvider(blueprint.SrcsFileProviderKey, blueprint.SrcsFileProviderData{SrcPaths: srcs.Strings()})
}
func (bpf *bpf) AndroidMk() android.AndroidMkData {
diff --git a/cc/cc.go b/cc/cc.go
index 7c0b0c5..c40c5a6 100644
--- a/cc/cc.go
+++ b/cc/cc.go
@@ -2109,6 +2109,7 @@
if c.testModule {
ctx.SetProvider(testing.TestModuleProviderKey, testing.TestModuleProviderData{})
}
+ ctx.SetProvider(blueprint.SrcsFileProviderKey, blueprint.SrcsFileProviderData{SrcPaths: deps.GeneratedSources.Strings()})
c.maybeInstall(ctx, apexInfo)
}
diff --git a/genrule/genrule.go b/genrule/genrule.go
index 00adb70..f532297 100644
--- a/genrule/genrule.go
+++ b/genrule/genrule.go
@@ -419,6 +419,7 @@
addLocationLabel(in, inputLocation{paths})
}
}
+ ctx.SetProvider(blueprint.SrcsFileProviderKey, blueprint.SrcsFileProviderData{SrcPaths: srcFiles.Strings()})
var copyFrom android.Paths
var outputFiles android.WritablePaths
diff --git a/java/base.go b/java/base.go
index 9911323..025fc7e 100644
--- a/java/base.go
+++ b/java/base.go
@@ -22,6 +22,7 @@
"github.com/google/blueprint/pathtools"
"github.com/google/blueprint/proptools"
+ "github.com/google/blueprint"
"android/soong/android"
"android/soong/dexpreopt"
@@ -1105,6 +1106,7 @@
uniqueSrcFiles = append(uniqueSrcFiles, uniqueJavaFiles...)
uniqueSrcFiles = append(uniqueSrcFiles, uniqueKtFiles...)
j.uniqueSrcFiles = uniqueSrcFiles
+ ctx.SetProvider(blueprint.SrcsFileProviderKey, blueprint.SrcsFileProviderData{SrcPaths: uniqueSrcFiles.Strings()})
// We don't currently run annotation processors in turbine, which means we can't use turbine
// generated header jars when an annotation processor that generates API is enabled. One
diff --git a/java/sdk_library.go b/java/sdk_library.go
index 01e69a2..853792d 100644
--- a/java/sdk_library.go
+++ b/java/sdk_library.go
@@ -1404,7 +1404,6 @@
}
}
ctx.SetProvider(android.AdditionalSdkInfoProvider, android.AdditionalSdkInfo{additionalSdkInfo})
- ctx.SetProvider(android.SrcsFileProviderKey, android.SrcsFileProviderData{SrcPaths: module.uniqueSrcFiles})
}
func (module *SdkLibrary) AndroidMkEntries() []android.AndroidMkEntries {
diff --git a/python/python.go b/python/python.go
index 1a12973..353cc65 100644
--- a/python/python.go
+++ b/python/python.go
@@ -404,6 +404,7 @@
// GenerateAndroidBuildActions performs build actions common to all Python modules
func (p *PythonLibraryModule) GenerateAndroidBuildActions(ctx android.ModuleContext) {
expandedSrcs := android.PathsForModuleSrcExcludes(ctx, p.properties.Srcs, p.properties.Exclude_srcs)
+ ctx.SetProvider(blueprint.SrcsFileProviderKey, blueprint.SrcsFileProviderData{SrcPaths: expandedSrcs.Strings()})
// expand data files from "data" property.
expandedData := android.PathsForModuleSrc(ctx, p.properties.Data)
diff --git a/rust/rust.go b/rust/rust.go
index 77bb8b6..fdc7849 100644
--- a/rust/rust.go
+++ b/rust/rust.go
@@ -958,6 +958,7 @@
sourceLib := sourceMod.(*Module).compiler.(*libraryDecorator)
mod.sourceProvider.setOutputFiles(sourceLib.sourceProvider.Srcs())
}
+ ctx.SetProvider(blueprint.SrcsFileProviderKey, blueprint.SrcsFileProviderData{SrcPaths: mod.sourceProvider.Srcs().Strings()})
}
if mod.compiler != nil && !mod.compiler.Disabled() {
diff --git a/sh/sh_binary.go b/sh/sh_binary.go
index d224fdf..d5e9d42 100644
--- a/sh/sh_binary.go
+++ b/sh/sh_binary.go
@@ -261,6 +261,7 @@
Output: s.outputFilePath,
Input: s.sourceFilePath,
})
+ ctx.SetProvider(blueprint.SrcsFileProviderKey, blueprint.SrcsFileProviderData{SrcPaths: []string{s.sourceFilePath.String()}})
}
func (s *ShBinary) GenerateAndroidBuildActions(ctx android.ModuleContext) {
diff --git a/sysprop/sysprop_library.go b/sysprop/sysprop_library.go
index 0edbb7c..61fabae 100644
--- a/sysprop/sysprop_library.go
+++ b/sysprop/sysprop_library.go
@@ -241,12 +241,13 @@
// generated java_library will depend on these API files.
func (m *syspropLibrary) GenerateAndroidBuildActions(ctx android.ModuleContext) {
baseModuleName := m.BaseModuleName()
-
- for _, syspropFile := range android.PathsForModuleSrc(ctx, m.properties.Srcs) {
+ srcs := android.PathsForModuleSrc(ctx, m.properties.Srcs)
+ for _, syspropFile := range srcs {
if syspropFile.Ext() != ".sysprop" {
ctx.PropertyErrorf("srcs", "srcs contains non-sysprop file %q", syspropFile.String())
}
}
+ ctx.SetProvider(blueprint.SrcsFileProviderKey, blueprint.SrcsFileProviderData{SrcPaths: srcs.Strings()})
if ctx.Failed() {
return
@@ -264,7 +265,7 @@
rule.Command().
BuiltTool("sysprop_api_dump").
Output(m.dumpedApiFile).
- Inputs(android.PathsForModuleSrc(ctx, m.properties.Srcs))
+ Inputs(srcs)
rule.Build(baseModuleName+"_api_dump", baseModuleName+" api dump")
// check API rule
diff --git a/testing/code_metadata.go b/testing/code_metadata.go
index 926324d..4550283 100644
--- a/testing/code_metadata.go
+++ b/testing/code_metadata.go
@@ -95,11 +95,11 @@
for _, m := range ctx.GetDirectDepsWithTag(codeDepTag) {
targetName := m.Name()
- var moduleSrcs android.Paths
- if ctx.OtherModuleHasProvider(m, android.SrcsFileProviderKey) {
+ var moduleSrcs []string
+ if ctx.OtherModuleHasProvider(m, blueprint.SrcsFileProviderKey) {
moduleSrcs = ctx.OtherModuleProvider(
- m, android.SrcsFileProviderKey,
- ).(android.SrcsFileProviderData).SrcPaths
+ m, blueprint.SrcsFileProviderKey,
+ ).(blueprint.SrcsFileProviderData).SrcPaths
}
if module.properties.MultiOwnership {
metadata := &code_metadata_internal_proto.CodeMetadataInternal_TargetOwnership{
@@ -107,7 +107,7 @@
TrendyTeamId: &module.properties.TeamId,
Path: &bpFilePath,
MultiOwnership: &module.properties.MultiOwnership,
- SourceFiles: moduleSrcs.Strings(),
+ SourceFiles: moduleSrcs,
}
metadataList = append(metadataList, metadata)
} else {
@@ -115,7 +115,7 @@
TargetName: &targetName,
TrendyTeamId: &module.properties.TeamId,
Path: &bpFilePath,
- SourceFiles: moduleSrcs.Strings(),
+ SourceFiles: moduleSrcs,
}
metadataList = append(metadataList, metadata)
}