From f79334d95cd2fd770db1d7ad5a88d1756758b15b Mon Sep 17 00:00:00 2001 From: Jiyong Park Date: Fri, 16 Aug 2019 21:12:10 +0900 Subject: [PATCH] Remove srcs_lib_whitelist_dirs This change removes srcs_lib_whitelist_dirs which was used to let droiddoc to know the base directories for the AIDL/Java source files. Instead, the base directories are given via the path property of the filegroup modules. This change also includes a fix that the base directories from all filegroup modules listed in srcs are used as the import paths for the AIDL compiler. This removes the need to have aidl.[local_]include_dirs. Bug: 70046217 Test: m Change-Id: I62ff2a7dd3943d9a3d95d91c36a30fd44ea467d2 --- java/droiddoc.go | 29 +++++++---------------------- java/gen.go | 21 ++++++++++++++++----- java/sdk_library.go | 12 +++--------- 3 files changed, 26 insertions(+), 36 deletions(-) diff --git a/java/droiddoc.go b/java/droiddoc.go index 118b62c21..aaba285dd 100644 --- a/java/droiddoc.go +++ b/java/droiddoc.go @@ -64,10 +64,7 @@ type JavadocProperties struct { // the java library (in classpath) for documentation that provides java srcs and srcjars. Srcs_lib *string - // the base dirs under srcs_lib will be scanned for java srcs. - Srcs_lib_whitelist_dirs []string - - // the sub dirs under srcs_lib_whitelist_dirs will be scanned for java srcs. + // List of packages to document from srcs_lib Srcs_lib_whitelist_pkgs []string // If set to false, don't allow this module(-docs.zip) to be exported. Defaults to true. @@ -428,19 +425,6 @@ func (j *Javadoc) addDeps(ctx android.BottomUpMutatorContext) { } } -func (j *Javadoc) genWhitelistPathPrefixes(whitelistPathPrefixes map[string]bool) { - for _, dir := range j.properties.Srcs_lib_whitelist_dirs { - for _, pkg := range j.properties.Srcs_lib_whitelist_pkgs { - // convert foo.bar.baz to foo/bar/baz - pkgAsPath := filepath.Join(strings.Split(pkg, ".")...) - prefix := filepath.Join(dir, pkgAsPath) - if _, found := whitelistPathPrefixes[prefix]; !found { - whitelistPathPrefixes[prefix] = true - } - } - } -} - func (j *Javadoc) collectAidlFlags(ctx android.ModuleContext, deps deps) droiddocBuilderFlags { var flags droiddocBuilderFlags @@ -480,10 +464,12 @@ func (j *Javadoc) genSources(ctx android.ModuleContext, srcFiles android.Paths, outSrcFiles := make(android.Paths, 0, len(srcFiles)) + aidlIncludeFlags := genAidlIncludeFlags(srcFiles) + for _, srcFile := range srcFiles { switch srcFile.Ext() { case ".aidl": - javaFile := genAidl(ctx, srcFile, flags.aidlFlags, flags.aidlDeps) + javaFile := genAidl(ctx, srcFile, flags.aidlFlags+aidlIncludeFlags, flags.aidlDeps) outSrcFiles = append(outSrcFiles, javaFile) case ".logtags": javaFile := genLogtags(ctx, srcFile) @@ -534,14 +520,13 @@ func (j *Javadoc) collectDeps(ctx android.ModuleContext) deps { switch dep := module.(type) { case Dependency: srcs := dep.(SrcDependency).CompiledSrcs() - whitelistPathPrefixes := make(map[string]bool) - j.genWhitelistPathPrefixes(whitelistPathPrefixes) for _, src := range srcs { if _, ok := src.(android.WritablePath); ok { // generated sources deps.srcs = append(deps.srcs, src) } else { // select source path for documentation based on whitelist path prefixs. - for k := range whitelistPathPrefixes { - if strings.HasPrefix(src.Rel(), k) { + for _, pkg := range j.properties.Srcs_lib_whitelist_pkgs { + pkgAsPath := filepath.Join(strings.Split(pkg, ".")...) + if strings.HasPrefix(src.Rel(), pkgAsPath) { deps.srcs = append(deps.srcs, src) break } diff --git a/java/gen.go b/java/gen.go index 81fc3417f..532a22c8c 100644 --- a/java/gen.go +++ b/java/gen.go @@ -65,10 +65,6 @@ var ( func genAidl(ctx android.ModuleContext, aidlFile android.Path, aidlFlags string, deps android.Paths) android.Path { javaFile := android.GenPathWithExt(ctx, "aidl", aidlFile, "java") depFile := javaFile.String() + ".d" - baseDir := strings.TrimSuffix(aidlFile.String(), aidlFile.Rel()) - if baseDir != "" { - aidlFlags += " -I" + baseDir - } ctx.Build(pctx, android.BuildParams{ Rule: aidl, @@ -114,15 +110,30 @@ func genSysprop(ctx android.ModuleContext, syspropFile android.Path, scope strin return srcJarFile } +func genAidlIncludeFlags(srcFiles android.Paths) string { + var baseDirs []string + for _, srcFile := range srcFiles { + if srcFile.Ext() == ".aidl" { + baseDir := strings.TrimSuffix(srcFile.String(), srcFile.Rel()) + if baseDir != "" && !android.InList(baseDir, baseDirs) { + baseDirs = append(baseDirs, baseDir) + } + } + } + return android.JoinWithPrefix(baseDirs, " -I") +} + func (j *Module) genSources(ctx android.ModuleContext, srcFiles android.Paths, flags javaBuilderFlags) android.Paths { outSrcFiles := make(android.Paths, 0, len(srcFiles)) + aidlIncludeFlags := genAidlIncludeFlags(srcFiles) + for _, srcFile := range srcFiles { switch srcFile.Ext() { case ".aidl": - javaFile := genAidl(ctx, srcFile, flags.aidlFlags, flags.aidlDeps) + javaFile := genAidl(ctx, srcFile, flags.aidlFlags+aidlIncludeFlags, flags.aidlDeps) outSrcFiles = append(outSrcFiles, javaFile) case ".logtags": j.logtagsSrcs = append(j.logtagsSrcs, srcFile) diff --git a/java/sdk_library.go b/java/sdk_library.go index d38088d74..56b30b2cf 100644 --- a/java/sdk_library.go +++ b/java/sdk_library.go @@ -103,11 +103,7 @@ type sdkLibraryProperties struct { // the java library (in classpath) for documentation that provides java srcs and srcjars. Srcs_lib *string - // the base dirs under srcs_lib will be scanned for java srcs. - Srcs_lib_whitelist_dirs []string - - // the sub dirs under srcs_lib_whitelist_dirs will be scanned for java srcs. - // Defaults to "android.annotation". + // list of packages to document from srcs_lib. Defaults to "android.annotation". Srcs_lib_whitelist_pkgs []string // a list of top-level directories containing files to merge qualifier annotations @@ -443,7 +439,6 @@ func (module *SdkLibrary) createDocs(mctx android.LoadHookContext, apiScope apiS Srcs []string Installable *bool Srcs_lib *string - Srcs_lib_whitelist_dirs []string Srcs_lib_whitelist_pkgs []string Sdk_version *string Libs []string @@ -535,7 +530,6 @@ func (module *SdkLibrary) createDocs(mctx android.LoadHookContext, apiScope apiS module.latestRemovedApiFilegroupName(apiScope)) props.Check_api.Ignore_missing_latest_api = proptools.BoolPtr(true) props.Srcs_lib = module.sdkLibraryProperties.Srcs_lib - props.Srcs_lib_whitelist_dirs = module.sdkLibraryProperties.Srcs_lib_whitelist_dirs props.Srcs_lib_whitelist_pkgs = module.sdkLibraryProperties.Srcs_lib_whitelist_pkgs mctx.CreateModule(android.ModuleFactoryAdaptor(DroidstubsFactory), &props) @@ -550,9 +544,9 @@ func (module *SdkLibrary) createXmlFile(mctx android.LoadHookContext) { Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at - + http://www.apache.org/licenses/LICENSE-2.0 - + Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.