Merge "Remove create_stubs and checkapi from droiddoc" am: 4297552423
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1401388 Change-Id: I12acc0ca9dfdd4fa1d7000cd1ee3dd9ca3559a5d
This commit is contained in:
commit
8e97d6caa0
3 changed files with 60 additions and 260 deletions
|
@ -507,53 +507,14 @@ func (jd *Javadoc) AndroidMkEntries() []android.AndroidMkEntries {
|
||||||
func (ddoc *Droiddoc) AndroidMkEntries() []android.AndroidMkEntries {
|
func (ddoc *Droiddoc) AndroidMkEntries() []android.AndroidMkEntries {
|
||||||
return []android.AndroidMkEntries{android.AndroidMkEntries{
|
return []android.AndroidMkEntries{android.AndroidMkEntries{
|
||||||
Class: "JAVA_LIBRARIES",
|
Class: "JAVA_LIBRARIES",
|
||||||
OutputFile: android.OptionalPathForPath(ddoc.stubsSrcJar),
|
OutputFile: android.OptionalPathForPath(ddoc.Javadoc.docZip),
|
||||||
Include: "$(BUILD_SYSTEM)/soong_droiddoc_prebuilt.mk",
|
Include: "$(BUILD_SYSTEM)/soong_droiddoc_prebuilt.mk",
|
||||||
ExtraEntries: []android.AndroidMkExtraEntriesFunc{
|
ExtraEntries: []android.AndroidMkExtraEntriesFunc{
|
||||||
func(entries *android.AndroidMkEntries) {
|
func(entries *android.AndroidMkEntries) {
|
||||||
if BoolDefault(ddoc.Javadoc.properties.Installable, true) && ddoc.Javadoc.docZip != nil {
|
if ddoc.Javadoc.docZip != nil {
|
||||||
entries.SetPath("LOCAL_DROIDDOC_DOC_ZIP", ddoc.Javadoc.docZip)
|
entries.SetPath("LOCAL_DROIDDOC_DOC_ZIP", ddoc.Javadoc.docZip)
|
||||||
}
|
}
|
||||||
if ddoc.Javadoc.stubsSrcJar != nil {
|
entries.SetBoolIfTrue("LOCAL_UNINSTALLABLE_MODULE", !BoolDefault(ddoc.Javadoc.properties.Installable, true))
|
||||||
entries.SetPath("LOCAL_DROIDDOC_STUBS_SRCJAR", ddoc.Javadoc.stubsSrcJar)
|
|
||||||
}
|
|
||||||
},
|
|
||||||
},
|
|
||||||
ExtraFooters: []android.AndroidMkExtraFootersFunc{
|
|
||||||
func(w io.Writer, name, prefix, moduleDir string, entries *android.AndroidMkEntries) {
|
|
||||||
if ddoc.checkCurrentApiTimestamp != nil {
|
|
||||||
fmt.Fprintln(w, ".PHONY:", ddoc.Name()+"-check-current-api")
|
|
||||||
fmt.Fprintln(w, ddoc.Name()+"-check-current-api:",
|
|
||||||
ddoc.checkCurrentApiTimestamp.String())
|
|
||||||
|
|
||||||
fmt.Fprintln(w, ".PHONY: checkapi")
|
|
||||||
fmt.Fprintln(w, "checkapi:",
|
|
||||||
ddoc.checkCurrentApiTimestamp.String())
|
|
||||||
|
|
||||||
fmt.Fprintln(w, ".PHONY: droidcore")
|
|
||||||
fmt.Fprintln(w, "droidcore: checkapi")
|
|
||||||
}
|
|
||||||
if ddoc.updateCurrentApiTimestamp != nil {
|
|
||||||
fmt.Fprintln(w, ".PHONY:", ddoc.Name()+"-update-current-api")
|
|
||||||
fmt.Fprintln(w, ddoc.Name()+"-update-current-api:",
|
|
||||||
ddoc.updateCurrentApiTimestamp.String())
|
|
||||||
|
|
||||||
fmt.Fprintln(w, ".PHONY: update-api")
|
|
||||||
fmt.Fprintln(w, "update-api:",
|
|
||||||
ddoc.updateCurrentApiTimestamp.String())
|
|
||||||
}
|
|
||||||
if ddoc.checkLastReleasedApiTimestamp != nil {
|
|
||||||
fmt.Fprintln(w, ".PHONY:", ddoc.Name()+"-check-last-released-api")
|
|
||||||
fmt.Fprintln(w, ddoc.Name()+"-check-last-released-api:",
|
|
||||||
ddoc.checkLastReleasedApiTimestamp.String())
|
|
||||||
|
|
||||||
fmt.Fprintln(w, ".PHONY: checkapi")
|
|
||||||
fmt.Fprintln(w, "checkapi:",
|
|
||||||
ddoc.checkLastReleasedApiTimestamp.String())
|
|
||||||
|
|
||||||
fmt.Fprintln(w, ".PHONY: droidcore")
|
|
||||||
fmt.Fprintln(w, "droidcore: checkapi")
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}}
|
}}
|
||||||
|
|
205
java/droiddoc.go
205
java/droiddoc.go
|
@ -70,10 +70,6 @@ type JavadocProperties struct {
|
||||||
// or .aidl files.
|
// or .aidl files.
|
||||||
Srcs []string `android:"path,arch_variant"`
|
Srcs []string `android:"path,arch_variant"`
|
||||||
|
|
||||||
// list of directories rooted at the Android.bp file that will
|
|
||||||
// be added to the search paths for finding source files when passing package names.
|
|
||||||
Local_sourcepaths []string
|
|
||||||
|
|
||||||
// list of source files that should not be used to build the Java module.
|
// list of source files that should not be used to build the Java module.
|
||||||
// This is most useful in the arch/multilib variants to remove non-common files
|
// This is most useful in the arch/multilib variants to remove non-common files
|
||||||
// filegroup or genrule can be included within this property.
|
// filegroup or genrule can be included within this property.
|
||||||
|
@ -175,10 +171,6 @@ type DroiddocProperties struct {
|
||||||
// resources output directory under out/soong/.intermediates.
|
// resources output directory under out/soong/.intermediates.
|
||||||
Resourcesoutdir *string
|
Resourcesoutdir *string
|
||||||
|
|
||||||
// if set to true, collect the values used by the Dev tools and
|
|
||||||
// write them in files packaged with the SDK. Defaults to false.
|
|
||||||
Write_sdk_values *bool
|
|
||||||
|
|
||||||
// index.html under current module will be copied to docs out dir, if not null.
|
// index.html under current module will be copied to docs out dir, if not null.
|
||||||
Static_doc_index_redirect *string `android:"path"`
|
Static_doc_index_redirect *string `android:"path"`
|
||||||
|
|
||||||
|
@ -195,22 +187,6 @@ type DroiddocProperties struct {
|
||||||
// the generated removed API filename by Doclava.
|
// the generated removed API filename by Doclava.
|
||||||
Removed_api_filename *string
|
Removed_api_filename *string
|
||||||
|
|
||||||
// the generated removed Dex API filename by Doclava.
|
|
||||||
Removed_dex_api_filename *string
|
|
||||||
|
|
||||||
// if set to false, don't allow droiddoc to generate stubs source files. Defaults to false.
|
|
||||||
Create_stubs *bool
|
|
||||||
|
|
||||||
Check_api struct {
|
|
||||||
Last_released ApiToCheck
|
|
||||||
|
|
||||||
Current ApiToCheck
|
|
||||||
|
|
||||||
// do not perform API check against Last_released, in the case that both two specified API
|
|
||||||
// files by Last_released are modules which don't exist.
|
|
||||||
Ignore_missing_latest_api *bool `blueprint:"mutated"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// if set to true, generate docs through Dokka instead of Doclava.
|
// if set to true, generate docs through Dokka instead of Doclava.
|
||||||
Dokka_enabled *bool
|
Dokka_enabled *bool
|
||||||
|
|
||||||
|
@ -639,10 +615,9 @@ func (j *Javadoc) collectDeps(ctx android.ModuleContext) deps {
|
||||||
j.srcFiles = srcFiles.FilterOutByExt(".srcjar")
|
j.srcFiles = srcFiles.FilterOutByExt(".srcjar")
|
||||||
j.srcFiles = append(j.srcFiles, deps.srcs...)
|
j.srcFiles = append(j.srcFiles, deps.srcs...)
|
||||||
|
|
||||||
if j.properties.Local_sourcepaths == nil && len(j.srcFiles) > 0 {
|
if len(j.srcFiles) > 0 {
|
||||||
j.properties.Local_sourcepaths = append(j.properties.Local_sourcepaths, ".")
|
j.sourcepaths = android.PathsForModuleSrc(ctx, []string{"."})
|
||||||
}
|
}
|
||||||
j.sourcepaths = android.PathsForModuleSrc(ctx, j.properties.Local_sourcepaths)
|
|
||||||
|
|
||||||
j.argFiles = android.PathsForModuleSrc(ctx, j.properties.Arg_files)
|
j.argFiles = android.PathsForModuleSrc(ctx, j.properties.Arg_files)
|
||||||
argFilesMap := map[string]string{}
|
argFilesMap := map[string]string{}
|
||||||
|
@ -749,16 +724,6 @@ type Droiddoc struct {
|
||||||
Javadoc
|
Javadoc
|
||||||
|
|
||||||
properties DroiddocProperties
|
properties DroiddocProperties
|
||||||
apiFile android.WritablePath
|
|
||||||
privateApiFile android.WritablePath
|
|
||||||
removedApiFile android.WritablePath
|
|
||||||
removedDexApiFile android.WritablePath
|
|
||||||
|
|
||||||
checkCurrentApiTimestamp android.WritablePath
|
|
||||||
updateCurrentApiTimestamp android.WritablePath
|
|
||||||
checkLastReleasedApiTimestamp android.WritablePath
|
|
||||||
|
|
||||||
apiFilePath android.Path
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// droiddoc converts .java source files to documentation using doclava or dokka.
|
// droiddoc converts .java source files to documentation using doclava or dokka.
|
||||||
|
@ -783,17 +748,18 @@ func DroiddocHostFactory() android.Module {
|
||||||
return module
|
return module
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *Droiddoc) ApiFilePath() android.Path {
|
func (d *Droiddoc) OutputFiles(tag string) (android.Paths, error) {
|
||||||
return d.apiFilePath
|
switch tag {
|
||||||
|
case "", ".docs.zip":
|
||||||
|
return android.Paths{d.Javadoc.docZip}, nil
|
||||||
|
default:
|
||||||
|
return nil, fmt.Errorf("unsupported module reference tag %q", tag)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *Droiddoc) DepsMutator(ctx android.BottomUpMutatorContext) {
|
func (d *Droiddoc) DepsMutator(ctx android.BottomUpMutatorContext) {
|
||||||
d.Javadoc.addDeps(ctx)
|
d.Javadoc.addDeps(ctx)
|
||||||
|
|
||||||
if Bool(d.properties.Check_api.Ignore_missing_latest_api) {
|
|
||||||
ignoreMissingModules(ctx, &d.properties.Check_api.Last_released)
|
|
||||||
}
|
|
||||||
|
|
||||||
if String(d.properties.Custom_template) != "" {
|
if String(d.properties.Custom_template) != "" {
|
||||||
ctx.AddDependency(ctx.Module(), droiddocTemplateTag, String(d.properties.Custom_template))
|
ctx.AddDependency(ctx.Module(), droiddocTemplateTag, String(d.properties.Custom_template))
|
||||||
}
|
}
|
||||||
|
@ -873,41 +839,6 @@ func (d *Droiddoc) doclavaDocsFlags(ctx android.ModuleContext, cmd *android.Rule
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *Droiddoc) createStubs() bool {
|
|
||||||
return BoolDefault(d.properties.Create_stubs, false)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (d *Droiddoc) stubsFlags(ctx android.ModuleContext, cmd *android.RuleBuilderCommand, stubsDir android.WritablePath) {
|
|
||||||
if apiCheckEnabled(ctx, d.properties.Check_api.Current, "current") ||
|
|
||||||
apiCheckEnabled(ctx, d.properties.Check_api.Last_released, "last_released") ||
|
|
||||||
String(d.properties.Api_filename) != "" {
|
|
||||||
|
|
||||||
d.apiFile = android.PathForModuleOut(ctx, ctx.ModuleName()+"_api.txt")
|
|
||||||
cmd.FlagWithOutput("-api ", d.apiFile)
|
|
||||||
d.apiFilePath = d.apiFile
|
|
||||||
}
|
|
||||||
|
|
||||||
if apiCheckEnabled(ctx, d.properties.Check_api.Current, "current") ||
|
|
||||||
apiCheckEnabled(ctx, d.properties.Check_api.Last_released, "last_released") ||
|
|
||||||
String(d.properties.Removed_api_filename) != "" {
|
|
||||||
d.removedApiFile = android.PathForModuleOut(ctx, ctx.ModuleName()+"_removed.txt")
|
|
||||||
cmd.FlagWithOutput("-removedApi ", d.removedApiFile)
|
|
||||||
}
|
|
||||||
|
|
||||||
if String(d.properties.Removed_dex_api_filename) != "" {
|
|
||||||
d.removedDexApiFile = android.PathForModuleOut(ctx, String(d.properties.Removed_dex_api_filename))
|
|
||||||
cmd.FlagWithOutput("-removedDexApi ", d.removedDexApiFile)
|
|
||||||
}
|
|
||||||
|
|
||||||
if d.createStubs() {
|
|
||||||
cmd.FlagWithArg("-stubs ", stubsDir.String())
|
|
||||||
}
|
|
||||||
|
|
||||||
if Bool(d.properties.Write_sdk_values) {
|
|
||||||
cmd.FlagWithArg("-sdkvalues ", android.PathForModuleOut(ctx, "out").String())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (d *Droiddoc) postDoclavaCmds(ctx android.ModuleContext, rule *android.RuleBuilder) {
|
func (d *Droiddoc) postDoclavaCmds(ctx android.ModuleContext, rule *android.RuleBuilder) {
|
||||||
if String(d.properties.Static_doc_index_redirect) != "" {
|
if String(d.properties.Static_doc_index_redirect) != "" {
|
||||||
staticDocIndexRedirect := android.PathForModuleSrc(ctx, String(d.properties.Static_doc_index_redirect))
|
staticDocIndexRedirect := android.PathForModuleSrc(ctx, String(d.properties.Static_doc_index_redirect))
|
||||||
|
@ -1010,22 +941,15 @@ func (d *Droiddoc) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
||||||
deps := d.Javadoc.collectDeps(ctx)
|
deps := d.Javadoc.collectDeps(ctx)
|
||||||
|
|
||||||
d.Javadoc.docZip = android.PathForModuleOut(ctx, ctx.ModuleName()+"-"+"docs.zip")
|
d.Javadoc.docZip = android.PathForModuleOut(ctx, ctx.ModuleName()+"-"+"docs.zip")
|
||||||
d.Javadoc.stubsSrcJar = android.PathForModuleOut(ctx, ctx.ModuleName()+"-"+"stubs.srcjar")
|
|
||||||
|
|
||||||
jsilver := android.PathForOutput(ctx, "host", ctx.Config().PrebuiltOS(), "framework", "jsilver.jar")
|
jsilver := android.PathForOutput(ctx, "host", ctx.Config().PrebuiltOS(), "framework", "jsilver.jar")
|
||||||
doclava := android.PathForOutput(ctx, "host", ctx.Config().PrebuiltOS(), "framework", "doclava.jar")
|
doclava := android.PathForOutput(ctx, "host", ctx.Config().PrebuiltOS(), "framework", "doclava.jar")
|
||||||
java8Home := ctx.Config().Getenv("ANDROID_JAVA8_HOME")
|
|
||||||
checkApiClasspath := classpath{jsilver, doclava, android.PathForSource(ctx, java8Home, "lib/tools.jar")}
|
|
||||||
|
|
||||||
outDir := android.PathForModuleOut(ctx, "out")
|
outDir := android.PathForModuleOut(ctx, "out")
|
||||||
srcJarDir := android.PathForModuleOut(ctx, "srcjars")
|
srcJarDir := android.PathForModuleOut(ctx, "srcjars")
|
||||||
stubsDir := android.PathForModuleOut(ctx, "stubsDir")
|
|
||||||
|
|
||||||
rule := android.NewRuleBuilder()
|
rule := android.NewRuleBuilder()
|
||||||
|
|
||||||
rule.Command().Text("rm -rf").Text(outDir.String()).Text(stubsDir.String())
|
|
||||||
rule.Command().Text("mkdir -p").Text(outDir.String()).Text(stubsDir.String())
|
|
||||||
|
|
||||||
srcJarList := zipSyncCmd(ctx, rule, srcJarDir, d.Javadoc.srcJars)
|
srcJarList := zipSyncCmd(ctx, rule, srcJarDir, d.Javadoc.srcJars)
|
||||||
|
|
||||||
var cmd *android.RuleBuilderCommand
|
var cmd *android.RuleBuilderCommand
|
||||||
|
@ -1036,8 +960,6 @@ func (d *Droiddoc) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
||||||
deps.bootClasspath, deps.classpath, d.Javadoc.sourcepaths)
|
deps.bootClasspath, deps.classpath, d.Javadoc.sourcepaths)
|
||||||
}
|
}
|
||||||
|
|
||||||
d.stubsFlags(ctx, cmd, stubsDir)
|
|
||||||
|
|
||||||
cmd.Flag(strings.Join(d.Javadoc.args, " ")).Implicits(d.Javadoc.argFiles)
|
cmd.Flag(strings.Join(d.Javadoc.args, " ")).Implicits(d.Javadoc.argFiles)
|
||||||
|
|
||||||
if d.properties.Compat_config != nil {
|
if d.properties.Compat_config != nil {
|
||||||
|
@ -1067,120 +989,11 @@ func (d *Droiddoc) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
||||||
FlagWithArg("-C ", outDir.String()).
|
FlagWithArg("-C ", outDir.String()).
|
||||||
FlagWithArg("-D ", outDir.String())
|
FlagWithArg("-D ", outDir.String())
|
||||||
|
|
||||||
rule.Command().
|
|
||||||
BuiltTool(ctx, "soong_zip").
|
|
||||||
Flag("-write_if_changed").
|
|
||||||
Flag("-jar").
|
|
||||||
FlagWithOutput("-o ", d.stubsSrcJar).
|
|
||||||
FlagWithArg("-C ", stubsDir.String()).
|
|
||||||
FlagWithArg("-D ", stubsDir.String())
|
|
||||||
|
|
||||||
rule.Restat()
|
rule.Restat()
|
||||||
|
|
||||||
zipSyncCleanupCmd(rule, srcJarDir)
|
zipSyncCleanupCmd(rule, srcJarDir)
|
||||||
|
|
||||||
rule.Build(pctx, ctx, "javadoc", desc)
|
rule.Build(pctx, ctx, "javadoc", desc)
|
||||||
|
|
||||||
if apiCheckEnabled(ctx, d.properties.Check_api.Current, "current") {
|
|
||||||
apiFile := android.PathForModuleSrc(ctx, String(d.properties.Check_api.Current.Api_file))
|
|
||||||
removedApiFile := android.PathForModuleSrc(ctx, String(d.properties.Check_api.Current.Removed_api_file))
|
|
||||||
|
|
||||||
d.checkCurrentApiTimestamp = android.PathForModuleOut(ctx, "check_current_api.timestamp")
|
|
||||||
|
|
||||||
rule := android.NewRuleBuilder()
|
|
||||||
|
|
||||||
rule.Command().Text("( true")
|
|
||||||
|
|
||||||
rule.Command().
|
|
||||||
BuiltTool(ctx, "apicheck").
|
|
||||||
Flag("-JXmx1024m").
|
|
||||||
FlagWithInputList("-Jclasspath\\ ", checkApiClasspath.Paths(), ":").
|
|
||||||
OptionalFlag(d.properties.Check_api.Current.Args).
|
|
||||||
Input(apiFile).
|
|
||||||
Input(d.apiFile).
|
|
||||||
Input(removedApiFile).
|
|
||||||
Input(d.removedApiFile)
|
|
||||||
|
|
||||||
msg := fmt.Sprintf(`\n******************************\n`+
|
|
||||||
`You have tried to change the API from what has been previously approved.\n\n`+
|
|
||||||
`To make these errors go away, you have two choices:\n`+
|
|
||||||
` 1. You can add '@hide' javadoc comments to the methods, etc. listed in the\n`+
|
|
||||||
` errors above.\n\n`+
|
|
||||||
` 2. You can update current.txt by executing the following command:\n`+
|
|
||||||
` make %s-update-current-api\n\n`+
|
|
||||||
` To submit the revised current.txt to the main Android repository,\n`+
|
|
||||||
` you will need approval.\n`+
|
|
||||||
`******************************\n`, ctx.ModuleName())
|
|
||||||
|
|
||||||
rule.Command().
|
|
||||||
Text("touch").Output(d.checkCurrentApiTimestamp).
|
|
||||||
Text(") || (").
|
|
||||||
Text("echo").Flag("-e").Flag(`"` + msg + `"`).
|
|
||||||
Text("; exit 38").
|
|
||||||
Text(")")
|
|
||||||
|
|
||||||
rule.Build(pctx, ctx, "doclavaCurrentApiCheck", "check current API")
|
|
||||||
|
|
||||||
d.updateCurrentApiTimestamp = android.PathForModuleOut(ctx, "update_current_api.timestamp")
|
|
||||||
|
|
||||||
// update API rule
|
|
||||||
rule = android.NewRuleBuilder()
|
|
||||||
|
|
||||||
rule.Command().Text("( true")
|
|
||||||
|
|
||||||
rule.Command().
|
|
||||||
Text("cp").Flag("-f").
|
|
||||||
Input(d.apiFile).Flag(apiFile.String())
|
|
||||||
|
|
||||||
rule.Command().
|
|
||||||
Text("cp").Flag("-f").
|
|
||||||
Input(d.removedApiFile).Flag(removedApiFile.String())
|
|
||||||
|
|
||||||
msg = "failed to update public API"
|
|
||||||
|
|
||||||
rule.Command().
|
|
||||||
Text("touch").Output(d.updateCurrentApiTimestamp).
|
|
||||||
Text(") || (").
|
|
||||||
Text("echo").Flag("-e").Flag(`"` + msg + `"`).
|
|
||||||
Text("; exit 38").
|
|
||||||
Text(")")
|
|
||||||
|
|
||||||
rule.Build(pctx, ctx, "doclavaCurrentApiUpdate", "update current API")
|
|
||||||
}
|
|
||||||
|
|
||||||
if apiCheckEnabled(ctx, d.properties.Check_api.Last_released, "last_released") {
|
|
||||||
apiFile := android.PathForModuleSrc(ctx, String(d.properties.Check_api.Last_released.Api_file))
|
|
||||||
removedApiFile := android.PathForModuleSrc(ctx, String(d.properties.Check_api.Last_released.Removed_api_file))
|
|
||||||
|
|
||||||
d.checkLastReleasedApiTimestamp = android.PathForModuleOut(ctx, "check_last_released_api.timestamp")
|
|
||||||
|
|
||||||
rule := android.NewRuleBuilder()
|
|
||||||
|
|
||||||
rule.Command().
|
|
||||||
Text("(").
|
|
||||||
BuiltTool(ctx, "apicheck").
|
|
||||||
Flag("-JXmx1024m").
|
|
||||||
FlagWithInputList("-Jclasspath\\ ", checkApiClasspath.Paths(), ":").
|
|
||||||
OptionalFlag(d.properties.Check_api.Last_released.Args).
|
|
||||||
Input(apiFile).
|
|
||||||
Input(d.apiFile).
|
|
||||||
Input(removedApiFile).
|
|
||||||
Input(d.removedApiFile)
|
|
||||||
|
|
||||||
msg := `\n******************************\n` +
|
|
||||||
`You have tried to change the API from what has been previously released in\n` +
|
|
||||||
`an SDK. Please fix the errors listed above.\n` +
|
|
||||||
`******************************\n`
|
|
||||||
|
|
||||||
rule.Command().
|
|
||||||
Text("touch").Output(d.checkLastReleasedApiTimestamp).
|
|
||||||
Text(") || (").
|
|
||||||
Text("echo").Flag("-e").Flag(`"` + msg + `"`).
|
|
||||||
Text("; exit 38").
|
|
||||||
Text(")")
|
|
||||||
|
|
||||||
rule.Build(pctx, ctx, "doclavaLastApiCheck", "check last API")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
|
@ -1082,16 +1082,26 @@ func TestDroiddoc(t *testing.T) {
|
||||||
srcs: ["bar-doc/IBar.aidl"],
|
srcs: ["bar-doc/IBar.aidl"],
|
||||||
path: "bar-doc",
|
path: "bar-doc",
|
||||||
}
|
}
|
||||||
droiddoc {
|
droidstubs {
|
||||||
name: "bar-doc",
|
name: "bar-stubs",
|
||||||
srcs: [
|
srcs: [
|
||||||
"bar-doc/a.java",
|
"bar-doc/a.java",
|
||||||
"bar-doc/IFoo.aidl",
|
|
||||||
":bar-doc-aidl-srcs",
|
|
||||||
],
|
],
|
||||||
exclude_srcs: [
|
exclude_srcs: [
|
||||||
"bar-doc/b.java"
|
"bar-doc/b.java"
|
||||||
],
|
],
|
||||||
|
api_levels_annotations_dirs: [
|
||||||
|
"droiddoc-templates-sdk",
|
||||||
|
],
|
||||||
|
api_levels_annotations_enabled: true,
|
||||||
|
}
|
||||||
|
droiddoc {
|
||||||
|
name: "bar-doc",
|
||||||
|
srcs: [
|
||||||
|
":bar-stubs",
|
||||||
|
"bar-doc/IFoo.aidl",
|
||||||
|
":bar-doc-aidl-srcs",
|
||||||
|
],
|
||||||
custom_template: "droiddoc-templates-sdk",
|
custom_template: "droiddoc-templates-sdk",
|
||||||
hdf: [
|
hdf: [
|
||||||
"android.whichdoc offline",
|
"android.whichdoc offline",
|
||||||
|
@ -1108,23 +1118,29 @@ 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,
|
||||||
})
|
})
|
||||||
barDocModule := ctx.ModuleForTests("bar-doc", "android_common")
|
barStubs := ctx.ModuleForTests("bar-stubs", "android_common")
|
||||||
barDoc := barDocModule.Rule("javadoc")
|
barStubsOutputs, err := barStubs.Module().(*Droidstubs).OutputFiles("")
|
||||||
notExpected := " -stubs "
|
if err != nil {
|
||||||
if strings.Contains(barDoc.RuleParams.Command, notExpected) {
|
t.Errorf("Unexpected error %q retrieving \"bar-stubs\" output file", err)
|
||||||
t.Errorf("bar-doc command contains flag %q to create stubs, but should not", notExpected)
|
}
|
||||||
|
if len(barStubsOutputs) != 1 {
|
||||||
|
t.Errorf("Expected one output from \"bar-stubs\" got %s", barStubsOutputs)
|
||||||
}
|
}
|
||||||
|
|
||||||
var javaSrcs []string
|
barStubsOutput := barStubsOutputs[0]
|
||||||
for _, i := range barDoc.Inputs {
|
barDoc := ctx.ModuleForTests("bar-doc", "android_common")
|
||||||
javaSrcs = append(javaSrcs, i.Base())
|
javaDoc := barDoc.Rule("javadoc")
|
||||||
}
|
if g, w := javaDoc.Implicits.Strings(), barStubsOutput.String(); !inList(w, g) {
|
||||||
if len(javaSrcs) != 1 || javaSrcs[0] != "a.java" {
|
t.Errorf("implicits of bar-doc must contain %q, but was %q.", w, g)
|
||||||
t.Errorf("inputs of bar-doc must be []string{\"a.java\"}, but was %#v.", javaSrcs)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
aidl := barDocModule.Rule("aidl")
|
expected := "-sourcepath " + buildDir + "/.intermediates/bar-doc/android_common/srcjars "
|
||||||
if g, w := barDoc.Implicits.Strings(), aidl.Output.String(); !inList(w, g) {
|
if !strings.Contains(javaDoc.RuleParams.Command, expected) {
|
||||||
|
t.Errorf("bar-doc command does not contain flag %q, but should\n%q", expected, javaDoc.RuleParams.Command)
|
||||||
|
}
|
||||||
|
|
||||||
|
aidl := barDoc.Rule("aidl")
|
||||||
|
if g, w := javaDoc.Implicits.Strings(), aidl.Output.String(); !inList(w, g) {
|
||||||
t.Errorf("implicits of bar-doc must contain %q, but was %q.", w, g)
|
t.Errorf("implicits of bar-doc must contain %q, but was %q.", w, g)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1144,16 +1160,26 @@ func TestDroiddocArgsAndFlagsCausesError(t *testing.T) {
|
||||||
srcs: ["bar-doc/IBar.aidl"],
|
srcs: ["bar-doc/IBar.aidl"],
|
||||||
path: "bar-doc",
|
path: "bar-doc",
|
||||||
}
|
}
|
||||||
droiddoc {
|
droidstubs {
|
||||||
name: "bar-doc",
|
name: "bar-stubs",
|
||||||
srcs: [
|
srcs: [
|
||||||
"bar-doc/a.java",
|
"bar-doc/a.java",
|
||||||
"bar-doc/IFoo.aidl",
|
|
||||||
":bar-doc-aidl-srcs",
|
|
||||||
],
|
],
|
||||||
exclude_srcs: [
|
exclude_srcs: [
|
||||||
"bar-doc/b.java"
|
"bar-doc/b.java"
|
||||||
],
|
],
|
||||||
|
api_levels_annotations_dirs: [
|
||||||
|
"droiddoc-templates-sdk",
|
||||||
|
],
|
||||||
|
api_levels_annotations_enabled: true,
|
||||||
|
}
|
||||||
|
droiddoc {
|
||||||
|
name: "bar-doc",
|
||||||
|
srcs: [
|
||||||
|
":bar-stubs",
|
||||||
|
"bar-doc/IFoo.aidl",
|
||||||
|
":bar-doc-aidl-srcs",
|
||||||
|
],
|
||||||
custom_template: "droiddoc-templates-sdk",
|
custom_template: "droiddoc-templates-sdk",
|
||||||
hdf: [
|
hdf: [
|
||||||
"android.whichdoc offline",
|
"android.whichdoc offline",
|
||||||
|
|
Loading…
Reference in a new issue