Merge "Move test data installation to Soong" into main
This commit is contained in:
@@ -175,15 +175,6 @@ func androidMkWriteExtraTestConfigs(extraTestConfigs android.Paths, entries *and
|
||||
}
|
||||
}
|
||||
|
||||
func AndroidMkWriteTestData(data []android.DataPath, entries *android.AndroidMkEntries) {
|
||||
testFiles := android.AndroidMkDataPaths(data)
|
||||
if len(testFiles) > 0 {
|
||||
entries.ExtraEntries = append(entries.ExtraEntries, func(ctx android.AndroidMkExtraEntriesContext, entries *android.AndroidMkEntries) {
|
||||
entries.AddStrings("LOCAL_TEST_DATA", testFiles...)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func makeOverrideModuleNames(ctx AndroidMkContext, overrides []string) []string {
|
||||
if ctx.Target().NativeBridge == android.NativeBridgeEnabled {
|
||||
var result []string
|
||||
@@ -379,11 +370,6 @@ func (benchmark *benchmarkDecorator) AndroidMkEntries(ctx AndroidMkContext, entr
|
||||
entries.SetBool("LOCAL_DISABLE_AUTO_GENERATE_TEST_CONFIG", true)
|
||||
}
|
||||
})
|
||||
dataPaths := []android.DataPath{}
|
||||
for _, srcPath := range benchmark.data {
|
||||
dataPaths = append(dataPaths, android.DataPath{SrcPath: srcPath})
|
||||
}
|
||||
AndroidMkWriteTestData(dataPaths, entries)
|
||||
}
|
||||
|
||||
func (test *testBinary) AndroidMkEntries(ctx AndroidMkContext, entries *android.AndroidMkEntries) {
|
||||
@@ -411,40 +397,16 @@ func (test *testBinary) AndroidMkEntries(ctx AndroidMkContext, entries *android.
|
||||
test.Properties.Test_options.CommonTestOptions.SetAndroidMkEntries(entries)
|
||||
})
|
||||
|
||||
AndroidMkWriteTestData(test.data, entries)
|
||||
androidMkWriteExtraTestConfigs(test.extraTestConfigs, entries)
|
||||
}
|
||||
|
||||
func (fuzz *fuzzBinary) AndroidMkEntries(ctx AndroidMkContext, entries *android.AndroidMkEntries) {
|
||||
ctx.subAndroidMk(entries, fuzz.binaryDecorator)
|
||||
|
||||
var fuzzFiles []string
|
||||
for _, d := range fuzz.fuzzPackagedModule.Corpus {
|
||||
fuzzFiles = append(fuzzFiles,
|
||||
filepath.Dir(fuzz.fuzzPackagedModule.CorpusIntermediateDir.String())+":corpus/"+d.Base())
|
||||
}
|
||||
|
||||
for _, d := range fuzz.fuzzPackagedModule.Data {
|
||||
fuzzFiles = append(fuzzFiles,
|
||||
filepath.Dir(fuzz.fuzzPackagedModule.DataIntermediateDir.String())+":data/"+d.Rel())
|
||||
}
|
||||
|
||||
if fuzz.fuzzPackagedModule.Dictionary != nil {
|
||||
fuzzFiles = append(fuzzFiles,
|
||||
filepath.Dir(fuzz.fuzzPackagedModule.Dictionary.String())+":"+fuzz.fuzzPackagedModule.Dictionary.Base())
|
||||
}
|
||||
|
||||
if fuzz.fuzzPackagedModule.Config != nil {
|
||||
fuzzFiles = append(fuzzFiles,
|
||||
filepath.Dir(fuzz.fuzzPackagedModule.Config.String())+":config.json")
|
||||
}
|
||||
|
||||
entries.ExtraEntries = append(entries.ExtraEntries, func(ctx android.AndroidMkExtraEntriesContext, entries *android.AndroidMkEntries) {
|
||||
entries.SetBool("LOCAL_IS_FUZZ_TARGET", true)
|
||||
if len(fuzzFiles) > 0 {
|
||||
entries.AddStrings("LOCAL_TEST_DATA", fuzzFiles...)
|
||||
}
|
||||
if fuzz.installedSharedDeps != nil {
|
||||
// TOOD: move to install dep
|
||||
entries.AddStrings("LOCAL_FUZZ_INSTALLED_SHARED_DEPS", fuzz.installedSharedDeps...)
|
||||
}
|
||||
})
|
||||
|
56
cc/fuzz.go
56
cc/fuzz.go
@@ -106,6 +106,7 @@ type fuzzBinary struct {
|
||||
fuzzPackagedModule fuzz.FuzzPackagedModule
|
||||
installedSharedDeps []string
|
||||
sharedLibraries android.RuleBuilderInstalls
|
||||
data []android.DataPath
|
||||
}
|
||||
|
||||
func (fuzz *fuzzBinary) fuzzBinary() bool {
|
||||
@@ -231,16 +232,10 @@ func SharedLibrarySymbolsInstallLocation(libraryBase string, fuzzDir string, arc
|
||||
}
|
||||
|
||||
func (fuzzBin *fuzzBinary) install(ctx ModuleContext, file android.Path) {
|
||||
installBase := "fuzz"
|
||||
|
||||
fuzzBin.binaryDecorator.baseInstaller.dir = filepath.Join(
|
||||
installBase, ctx.Target().Arch.ArchType.String(), ctx.ModuleName())
|
||||
fuzzBin.binaryDecorator.baseInstaller.dir64 = filepath.Join(
|
||||
installBase, ctx.Target().Arch.ArchType.String(), ctx.ModuleName())
|
||||
fuzzBin.binaryDecorator.baseInstaller.install(ctx, file)
|
||||
|
||||
fuzzBin.fuzzPackagedModule = PackageFuzzModule(ctx, fuzzBin.fuzzPackagedModule, pctx)
|
||||
|
||||
installBase := "fuzz"
|
||||
|
||||
// Grab the list of required shared libraries.
|
||||
fuzzBin.sharedLibraries, _ = CollectAllSharedDependencies(ctx)
|
||||
|
||||
@@ -256,34 +251,35 @@ func (fuzzBin *fuzzBinary) install(ctx ModuleContext, file android.Path) {
|
||||
SharedLibrarySymbolsInstallLocation(install, installBase, ctx.Arch().ArchType.String()))
|
||||
}
|
||||
}
|
||||
|
||||
for _, d := range fuzzBin.fuzzPackagedModule.Corpus {
|
||||
fuzzBin.data = append(fuzzBin.data, android.DataPath{SrcPath: d, RelativeInstallPath: "corpus", WithoutRel: true})
|
||||
}
|
||||
|
||||
for _, d := range fuzzBin.fuzzPackagedModule.Data {
|
||||
fuzzBin.data = append(fuzzBin.data, android.DataPath{SrcPath: d, RelativeInstallPath: "data"})
|
||||
}
|
||||
|
||||
if d := fuzzBin.fuzzPackagedModule.Dictionary; d != nil {
|
||||
fuzzBin.data = append(fuzzBin.data, android.DataPath{SrcPath: d, WithoutRel: true})
|
||||
}
|
||||
|
||||
if d := fuzzBin.fuzzPackagedModule.Config; d != nil {
|
||||
fuzzBin.data = append(fuzzBin.data, android.DataPath{SrcPath: d, WithoutRel: true})
|
||||
}
|
||||
|
||||
fuzzBin.binaryDecorator.baseInstaller.dir = filepath.Join(
|
||||
installBase, ctx.Target().Arch.ArchType.String(), ctx.ModuleName())
|
||||
fuzzBin.binaryDecorator.baseInstaller.dir64 = filepath.Join(
|
||||
installBase, ctx.Target().Arch.ArchType.String(), ctx.ModuleName())
|
||||
fuzzBin.binaryDecorator.baseInstaller.installTestData(ctx, fuzzBin.data)
|
||||
fuzzBin.binaryDecorator.baseInstaller.install(ctx, file)
|
||||
}
|
||||
|
||||
func PackageFuzzModule(ctx android.ModuleContext, fuzzPackagedModule fuzz.FuzzPackagedModule, pctx android.PackageContext) fuzz.FuzzPackagedModule {
|
||||
fuzzPackagedModule.Corpus = android.PathsForModuleSrc(ctx, fuzzPackagedModule.FuzzProperties.Corpus)
|
||||
intermediateDir := android.PathForModuleOut(ctx, "corpus")
|
||||
|
||||
// Create one rule per file to avoid MAX_ARG_STRLEN hardlimit.
|
||||
for _, entry := range fuzzPackagedModule.Corpus {
|
||||
ctx.Build(pctx, android.BuildParams{
|
||||
Rule: android.Cp,
|
||||
Output: intermediateDir.Join(ctx, entry.Base()),
|
||||
Input: entry,
|
||||
})
|
||||
}
|
||||
fuzzPackagedModule.CorpusIntermediateDir = intermediateDir
|
||||
|
||||
fuzzPackagedModule.Data = android.PathsForModuleSrc(ctx, fuzzPackagedModule.FuzzProperties.Data)
|
||||
intermediateDir = android.PathForModuleOut(ctx, "data")
|
||||
|
||||
// Create one rule per file to avoid MAX_ARG_STRLEN hardlimit.
|
||||
for _, entry := range fuzzPackagedModule.Data {
|
||||
ctx.Build(pctx, android.BuildParams{
|
||||
Rule: android.Cp,
|
||||
Output: intermediateDir.Join(ctx, entry.Rel()),
|
||||
Input: entry,
|
||||
})
|
||||
}
|
||||
fuzzPackagedModule.DataIntermediateDir = intermediateDir
|
||||
|
||||
if fuzzPackagedModule.FuzzProperties.Dictionary != nil {
|
||||
fuzzPackagedModule.Dictionary = android.PathForModuleSrc(ctx, *fuzzPackagedModule.FuzzProperties.Dictionary)
|
||||
|
@@ -59,6 +59,8 @@ type baseInstaller struct {
|
||||
relative string
|
||||
location installLocation
|
||||
|
||||
installDeps android.InstallPaths
|
||||
|
||||
path android.InstallPath
|
||||
}
|
||||
|
||||
@@ -97,7 +99,12 @@ func (installer *baseInstaller) installDir(ctx ModuleContext) android.InstallPat
|
||||
}
|
||||
|
||||
func (installer *baseInstaller) install(ctx ModuleContext, file android.Path) {
|
||||
installer.path = ctx.InstallFile(installer.installDir(ctx), file.Base(), file)
|
||||
installer.path = ctx.InstallFile(installer.installDir(ctx), file.Base(), file, installer.installDeps...)
|
||||
}
|
||||
|
||||
func (installer *baseInstaller) installTestData(ctx ModuleContext, data []android.DataPath) {
|
||||
installedData := ctx.InstallTestData(installer.installDir(ctx), data)
|
||||
installer.installDeps = append(installer.installDeps, installedData...)
|
||||
}
|
||||
|
||||
func (installer *baseInstaller) everInstallable() bool {
|
||||
|
@@ -424,6 +424,8 @@ func (test *testBinary) install(ctx ModuleContext, file android.Path) {
|
||||
if ctx.Host() && test.gtest() && test.Properties.Test_options.Unit_test == nil {
|
||||
test.Properties.Test_options.Unit_test = proptools.BoolPtr(true)
|
||||
}
|
||||
|
||||
test.binaryDecorator.baseInstaller.installTestData(ctx, test.data)
|
||||
test.binaryDecorator.baseInstaller.install(ctx, file)
|
||||
}
|
||||
|
||||
@@ -584,7 +586,7 @@ type BenchmarkProperties struct {
|
||||
type benchmarkDecorator struct {
|
||||
*binaryDecorator
|
||||
Properties BenchmarkProperties
|
||||
data android.Paths
|
||||
data []android.DataPath
|
||||
testConfig android.Path
|
||||
}
|
||||
|
||||
@@ -605,7 +607,9 @@ func (benchmark *benchmarkDecorator) linkerDeps(ctx DepsContext, deps Deps) Deps
|
||||
}
|
||||
|
||||
func (benchmark *benchmarkDecorator) install(ctx ModuleContext, file android.Path) {
|
||||
benchmark.data = android.PathsForModuleSrc(ctx, benchmark.Properties.Data)
|
||||
for _, d := range android.PathsForModuleSrc(ctx, benchmark.Properties.Data) {
|
||||
benchmark.data = append(benchmark.data, android.DataPath{SrcPath: d})
|
||||
}
|
||||
|
||||
var configs []tradefed.Config
|
||||
if Bool(benchmark.Properties.Require_root) {
|
||||
@@ -623,6 +627,7 @@ func (benchmark *benchmarkDecorator) install(ctx ModuleContext, file android.Pat
|
||||
|
||||
benchmark.binaryDecorator.baseInstaller.dir = filepath.Join("benchmarktest", ctx.ModuleName())
|
||||
benchmark.binaryDecorator.baseInstaller.dir64 = filepath.Join("benchmarktest64", ctx.ModuleName())
|
||||
benchmark.binaryDecorator.baseInstaller.installTestData(ctx, benchmark.data)
|
||||
benchmark.binaryDecorator.baseInstaller.install(ctx, file)
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user