Use OutputFilesProvider on droidstubs
In the context of incremental soong, the output files inter-module-communication will be through OutputFilesProvider. The OutputFileProducer interface will be deprecated. Test: CI Bug: 339477385 Change-Id: I8ea7463cfc3881d800255aa99147897eeba85b04
This commit is contained in:
@@ -69,11 +69,7 @@ func TestDroiddoc(t *testing.T) {
|
|||||||
"bar-doc/a.java": nil,
|
"bar-doc/a.java": nil,
|
||||||
"bar-doc/b.java": nil,
|
"bar-doc/b.java": nil,
|
||||||
})
|
})
|
||||||
barStubs := ctx.ModuleForTests("bar-stubs", "android_common")
|
barStubsOutputs := ctx.ModuleForTests("bar-stubs", "android_common").OutputFiles(t, "")
|
||||||
barStubsOutputs, err := barStubs.Module().(*Droidstubs).OutputFiles("")
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("Unexpected error %q retrieving \"bar-stubs\" output file", err)
|
|
||||||
}
|
|
||||||
if len(barStubsOutputs) != 1 {
|
if len(barStubsOutputs) != 1 {
|
||||||
t.Errorf("Expected one output from \"bar-stubs\" got %s", barStubsOutputs)
|
t.Errorf("Expected one output from \"bar-stubs\" got %s", barStubsOutputs)
|
||||||
}
|
}
|
||||||
|
@@ -283,66 +283,6 @@ func DroidstubsHostFactory() android.Module {
|
|||||||
return module
|
return module
|
||||||
}
|
}
|
||||||
|
|
||||||
func getStubsTypeAndTag(tag string) (StubsType, string, error) {
|
|
||||||
if len(tag) == 0 {
|
|
||||||
return Everything, "", nil
|
|
||||||
}
|
|
||||||
if tag[0] != '.' {
|
|
||||||
return Unavailable, "", fmt.Errorf("tag must begin with \".\"")
|
|
||||||
}
|
|
||||||
|
|
||||||
stubsType := Everything
|
|
||||||
// Check if the tag has a stubs type prefix (e.g. ".exportable")
|
|
||||||
for st := Everything; st <= Exportable; st++ {
|
|
||||||
if strings.HasPrefix(tag, "."+st.String()) {
|
|
||||||
stubsType = st
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return stubsType, strings.TrimPrefix(tag, "."+stubsType.String()), nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// Droidstubs' tag supports specifying with the stubs type.
|
|
||||||
// While supporting the pre-existing tags, it also supports tags with
|
|
||||||
// the stubs type prefix. Some examples are shown below:
|
|
||||||
// {.annotations.zip} - pre-existing behavior. Returns the path to the
|
|
||||||
// annotation zip.
|
|
||||||
// {.exportable} - Returns the path to the exportable stubs src jar.
|
|
||||||
// {.exportable.annotations.zip} - Returns the path to the exportable
|
|
||||||
// annotations zip file.
|
|
||||||
// {.runtime.api_versions.xml} - Runtime stubs does not generate api versions
|
|
||||||
// xml file. For unsupported combinations, the default everything output file
|
|
||||||
// is returned.
|
|
||||||
func (d *Droidstubs) OutputFiles(tag string) (android.Paths, error) {
|
|
||||||
stubsType, prefixRemovedTag, err := getStubsTypeAndTag(tag)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
switch prefixRemovedTag {
|
|
||||||
case "":
|
|
||||||
stubsSrcJar, err := d.StubsSrcJar(stubsType)
|
|
||||||
return android.Paths{stubsSrcJar}, err
|
|
||||||
case ".docs.zip":
|
|
||||||
docZip, err := d.DocZip(stubsType)
|
|
||||||
return android.Paths{docZip}, err
|
|
||||||
case ".api.txt", android.DefaultDistTag:
|
|
||||||
// This is the default dist path for dist properties that have no tag property.
|
|
||||||
apiFilePath, err := d.ApiFilePath(stubsType)
|
|
||||||
return android.Paths{apiFilePath}, err
|
|
||||||
case ".removed-api.txt":
|
|
||||||
removedApiFilePath, err := d.RemovedApiFilePath(stubsType)
|
|
||||||
return android.Paths{removedApiFilePath}, err
|
|
||||||
case ".annotations.zip":
|
|
||||||
annotationsZip, err := d.AnnotationsZip(stubsType)
|
|
||||||
return android.Paths{annotationsZip}, err
|
|
||||||
case ".api_versions.xml":
|
|
||||||
apiVersionsXmlFilePath, err := d.ApiVersionsXmlFilePath(stubsType)
|
|
||||||
return android.Paths{apiVersionsXmlFilePath}, err
|
|
||||||
default:
|
|
||||||
return nil, fmt.Errorf("unsupported module reference tag %q", tag)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (d *Droidstubs) AnnotationsZip(stubsType StubsType) (ret android.Path, err error) {
|
func (d *Droidstubs) AnnotationsZip(stubsType StubsType) (ret android.Path, err error) {
|
||||||
switch stubsType {
|
switch stubsType {
|
||||||
case Everything:
|
case Everything:
|
||||||
@@ -1363,6 +1303,46 @@ func (d *Droidstubs) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
|||||||
|
|
||||||
rule.Build("nullabilityWarningsCheck", "nullability warnings check")
|
rule.Build("nullabilityWarningsCheck", "nullability warnings check")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
d.setOutputFiles(ctx)
|
||||||
|
}
|
||||||
|
|
||||||
|
// This method sets the outputFiles property, which is used to set the
|
||||||
|
// OutputFilesProvider later.
|
||||||
|
// Droidstubs' tag supports specifying with the stubs type.
|
||||||
|
// While supporting the pre-existing tags, it also supports tags with
|
||||||
|
// the stubs type prefix. Some examples are shown below:
|
||||||
|
// {.annotations.zip} - pre-existing behavior. Returns the path to the
|
||||||
|
// annotation zip.
|
||||||
|
// {.exportable} - Returns the path to the exportable stubs src jar.
|
||||||
|
// {.exportable.annotations.zip} - Returns the path to the exportable
|
||||||
|
// annotations zip file.
|
||||||
|
// {.runtime.api_versions.xml} - Runtime stubs does not generate api versions
|
||||||
|
// xml file. For unsupported combinations, the default everything output file
|
||||||
|
// is returned.
|
||||||
|
func (d *Droidstubs) setOutputFiles(ctx android.ModuleContext) {
|
||||||
|
tagToOutputFileFunc := map[string]func(StubsType) (android.Path, error){
|
||||||
|
"": d.StubsSrcJar,
|
||||||
|
".docs.zip": d.DocZip,
|
||||||
|
".api.txt": d.ApiFilePath,
|
||||||
|
android.DefaultDistTag: d.ApiFilePath,
|
||||||
|
".removed-api.txt": d.RemovedApiFilePath,
|
||||||
|
".annotations.zip": d.AnnotationsZip,
|
||||||
|
".api_versions.xml": d.ApiVersionsXmlFilePath,
|
||||||
|
}
|
||||||
|
stubsTypeToPrefix := map[StubsType]string{
|
||||||
|
Everything: "",
|
||||||
|
Exportable: ".exportable",
|
||||||
|
}
|
||||||
|
for _, tag := range android.SortedKeys(tagToOutputFileFunc) {
|
||||||
|
for _, stubType := range android.SortedKeys(stubsTypeToPrefix) {
|
||||||
|
tagWithPrefix := stubsTypeToPrefix[stubType] + tag
|
||||||
|
outputFile, err := tagToOutputFileFunc[tag](stubType)
|
||||||
|
if err == nil {
|
||||||
|
ctx.SetOutputFiles(android.Paths{outputFile}, tagWithPrefix)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *Droidstubs) createApiContribution(ctx android.DefaultableHookContext) {
|
func (d *Droidstubs) createApiContribution(ctx android.DefaultableHookContext) {
|
||||||
|
Reference in New Issue
Block a user