diff options
Diffstat (limited to 'java')
| -rw-r--r-- | java/aar.go | 2 | ||||
| -rwxr-xr-x | java/app.go | 4 | ||||
| -rw-r--r-- | java/droiddoc.go | 71 | ||||
| -rw-r--r-- | java/hiddenapi.go | 2 | ||||
| -rw-r--r-- | java/java_test.go | 38 | ||||
| -rw-r--r-- | java/lint.go | 31 | ||||
| -rw-r--r-- | java/prebuilt_apis.go | 3 |
7 files changed, 113 insertions, 38 deletions
diff --git a/java/aar.go b/java/aar.go index 500788f48..ad9b5e7d2 100644 --- a/java/aar.go +++ b/java/aar.go @@ -641,7 +641,7 @@ func (a *AARImport) DepsMutator(ctx android.BottomUpMutatorContext) { var unzipAAR = pctx.AndroidStaticRule("unzipAAR", blueprint.RuleParams{ Command: `rm -rf $outDir && mkdir -p $outDir && ` + - `unzip -qo -d $outDir $in && rm -rf $outDir/res && touch $out`, + `unzip -qoDD -d $outDir $in && rm -rf $outDir/res && touch $out`, }, "outDir") diff --git a/java/app.go b/java/app.go index 98bce9471..4071c0a7f 100755 --- a/java/app.go +++ b/java/app.go @@ -106,6 +106,10 @@ func (as *AndroidAppSet) MasterFile() string { return as.masterFile } +func (as *AndroidAppSet) APKCertsFile() android.Path { + return as.apkcertsFile +} + var TargetCpuAbi = map[string]string{ "arm": "ARMEABI_V7A", "arm64": "ARM64_V8A", diff --git a/java/droiddoc.go b/java/droiddoc.go index 99bfb6dc3..08865b666 100644 --- a/java/droiddoc.go +++ b/java/droiddoc.go @@ -112,13 +112,20 @@ type JavadocProperties struct { // local files that are used within user customized droiddoc options. Arg_files []string `android:"path"` - // user customized droiddoc args. + // user customized droiddoc args. Deprecated, use flags instead. // Available variables for substitution: // // $(location <label>): the path to the arg_files with name <label> // $$: a literal $ Args *string + // user customized droiddoc args. Not compatible with property args. + // Available variables for substitution: + // + // $(location <label>): the path to the arg_files with name <label> + // $$: a literal $ + Flags []string + // names of the output files used in args that will be generated Out []string @@ -382,7 +389,7 @@ type Javadoc struct { argFiles android.Paths implicits android.Paths - args string + args []string docZip android.WritablePath stubsSrcJar android.WritablePath @@ -619,8 +626,8 @@ func (j *Javadoc) collectDeps(ctx android.ModuleContext) deps { } srcFiles = filterHtml(srcFiles) - flags := j.collectAidlFlags(ctx, deps) - srcFiles = j.genSources(ctx, srcFiles, flags) + aidlFlags := j.collectAidlFlags(ctx, deps) + srcFiles = j.genSources(ctx, srcFiles, aidlFlags) // srcs may depend on some genrule output. j.srcJars = srcFiles.FilterByExt(".srcjar") @@ -649,24 +656,38 @@ func (j *Javadoc) collectDeps(ctx android.ModuleContext) deps { } } - var err error - j.args, err = android.Expand(String(j.properties.Args), func(name string) (string, error) { - if strings.HasPrefix(name, "location ") { - label := strings.TrimSpace(strings.TrimPrefix(name, "location ")) - if paths, ok := argFilesMap[label]; ok { - return paths, nil - } else { - return "", fmt.Errorf("unknown location label %q, expecting one of %q", - label, strings.Join(argFileLabels, ", ")) + var argsPropertyName string + flags := make([]string, 0) + if j.properties.Args != nil && j.properties.Flags != nil { + ctx.PropertyErrorf("args", "flags is set. Cannot set args") + } else if args := proptools.String(j.properties.Args); args != "" { + flags = append(flags, args) + argsPropertyName = "args" + } else { + flags = append(flags, j.properties.Flags...) + argsPropertyName = "flags" + } + + for _, flag := range flags { + args, err := android.Expand(flag, func(name string) (string, error) { + if strings.HasPrefix(name, "location ") { + label := strings.TrimSpace(strings.TrimPrefix(name, "location ")) + if paths, ok := argFilesMap[label]; ok { + return paths, nil + } else { + return "", fmt.Errorf("unknown location label %q, expecting one of %q", + label, strings.Join(argFileLabels, ", ")) + } + } else if name == "genDir" { + return android.PathForModuleGen(ctx).String(), nil } - } else if name == "genDir" { - return android.PathForModuleGen(ctx).String(), nil - } - return "", fmt.Errorf("unknown variable '$(%s)'", name) - }) + return "", fmt.Errorf("unknown variable '$(%s)'", name) + }) - if err != nil { - ctx.PropertyErrorf("args", "%s", err.Error()) + if err != nil { + ctx.PropertyErrorf(argsPropertyName, "%s", err.Error()) + } + j.args = append(j.args, args) } return deps @@ -1010,7 +1031,7 @@ func (d *Droiddoc) GenerateAndroidBuildActions(ctx android.ModuleContext) { d.stubsFlags(ctx, cmd, stubsDir) - cmd.Flag(d.Javadoc.args).Implicits(d.Javadoc.argFiles) + cmd.Flag(strings.Join(d.Javadoc.args, " ")).Implicits(d.Javadoc.argFiles) if d.properties.Compat_config != nil { compatConfig := android.PathForModuleSrc(ctx, String(d.properties.Compat_config)) @@ -1327,7 +1348,7 @@ func (d *Droidstubs) annotationsFlags(ctx android.ModuleContext, cmd *android.Ru cmd.Flag("--include-annotations") validatingNullability := - strings.Contains(d.Javadoc.args, "--validate-nullability-from-merged-stubs") || + android.InList("--validate-nullability-from-merged-stubs", d.Javadoc.args) || String(d.properties.Validate_nullability_from_list) != "" migratingNullability := String(d.properties.Previous_api) != "" @@ -1539,14 +1560,14 @@ func (d *Droidstubs) GenerateAndroidBuildActions(ctx android.ModuleContext) { d.apiLevelsAnnotationsFlags(ctx, cmd) d.apiToXmlFlags(ctx, cmd) - if strings.Contains(d.Javadoc.args, "--generate-documentation") { + if android.InList("--generate-documentation", d.Javadoc.args) { // Currently Metalava have the ability to invoke Javadoc in a seperate process. // Pass "-nodocs" to suppress the Javadoc invocation when Metalava receives // "--generate-documentation" arg. This is not needed when Metalava removes this feature. - d.Javadoc.args = d.Javadoc.args + " -nodocs " + d.Javadoc.args = append(d.Javadoc.args, "-nodocs") } - cmd.Flag(d.Javadoc.args).Implicits(d.Javadoc.argFiles) + cmd.Flag(strings.Join(d.Javadoc.args, " ")).Implicits(d.Javadoc.argFiles) for _, o := range d.Javadoc.properties.Out { cmd.ImplicitOutput(android.PathForModuleGen(ctx, o)) } diff --git a/java/hiddenapi.go b/java/hiddenapi.go index 130b63496..b5a021785 100644 --- a/java/hiddenapi.go +++ b/java/hiddenapi.go @@ -146,7 +146,7 @@ func (h *hiddenAPI) hiddenAPIGenerateCSV(ctx android.ModuleContext, flagsCSV, me var hiddenAPIEncodeDexRule = pctx.AndroidStaticRule("hiddenAPIEncodeDex", blueprint.RuleParams{ Command: `rm -rf $tmpDir && mkdir -p $tmpDir && mkdir $tmpDir/dex-input && mkdir $tmpDir/dex-output && - unzip -o -q $in 'classes*.dex' -d $tmpDir/dex-input && + unzip -qoDD $in 'classes*.dex' -d $tmpDir/dex-input && for INPUT_DEX in $$(find $tmpDir/dex-input -maxdepth 1 -name 'classes*.dex' | sort); do echo "--input-dex=$${INPUT_DEX}"; echo "--output-dex=$tmpDir/dex-output/$$(basename $${INPUT_DEX})"; diff --git a/java/java_test.go b/java/java_test.go index fb003619f..db3f18740 100644 --- a/java/java_test.go +++ b/java/java_test.go @@ -1097,7 +1097,7 @@ func TestDroiddoc(t *testing.T) { ], proofread_file: "libcore-proofread.txt", todo_file: "libcore-docs-todo.html", - args: "-offlinemode -title \"libcore\"", + flags: ["-offlinemode -title \"libcore\""], } `, map[string][]byte{ @@ -1124,6 +1124,42 @@ func TestDroiddoc(t *testing.T) { } } +func TestDroiddocArgsAndFlagsCausesError(t *testing.T) { + testJavaError(t, "flags is set. Cannot set args", ` + droiddoc_exported_dir { + name: "droiddoc-templates-sdk", + path: ".", + } + filegroup { + name: "bar-doc-aidl-srcs", + srcs: ["bar-doc/IBar.aidl"], + path: "bar-doc", + } + droiddoc { + name: "bar-doc", + srcs: [ + "bar-doc/a.java", + "bar-doc/IFoo.aidl", + ":bar-doc-aidl-srcs", + ], + exclude_srcs: [ + "bar-doc/b.java" + ], + custom_template: "droiddoc-templates-sdk", + hdf: [ + "android.whichdoc offline", + ], + knowntags: [ + "bar-doc/known_oj_tags.txt", + ], + proofread_file: "libcore-proofread.txt", + todo_file: "libcore-docs-todo.html", + flags: ["-offlinemode -title \"libcore\""], + args: "-offlinemode -title \"libcore\"", + } + `) +} + func TestDroidstubsWithSystemModules(t *testing.T) { ctx, _ := testJava(t, ` droidstubs { diff --git a/java/lint.go b/java/lint.go index b73d6a51a..6fbef18c7 100644 --- a/java/lint.go +++ b/java/lint.go @@ -220,12 +220,21 @@ func (l *linter) lint(ctx android.ModuleContext) { rule.Command().Text("rm -rf").Flag(cacheDir.String()).Flag(homeDir.String()) rule.Command().Text("mkdir -p").Flag(cacheDir.String()).Flag(homeDir.String()) + var annotationsZipPath, apiVersionsXMLPath android.Path + if ctx.Config().UnbundledBuildUsePrebuiltSdks() { + annotationsZipPath = android.PathForSource(ctx, "prebuilts/sdk/current/public/data/annotations.zip") + apiVersionsXMLPath = android.PathForSource(ctx, "prebuilts/sdk/current/public/data/api-versions.xml") + } else { + annotationsZipPath = copiedAnnotationsZipPath(ctx) + apiVersionsXMLPath = copiedAPIVersionsXmlPath(ctx) + } + rule.Command(). Text("("). Flag("JAVA_OPTS=-Xmx2048m"). FlagWithArg("ANDROID_SDK_HOME=", homeDir.String()). - FlagWithInput("SDK_ANNOTATIONS=", annotationsZipPath(ctx)). - FlagWithInput("LINT_OPTS=-DLINT_API_DATABASE=", apiVersionsXmlPath(ctx)). + FlagWithInput("SDK_ANNOTATIONS=", annotationsZipPath). + FlagWithInput("LINT_OPTS=-DLINT_API_DATABASE=", apiVersionsXMLPath). Tool(android.PathForSource(ctx, "prebuilts/cmdline-tools/tools/bin/lint")). Implicit(android.PathForSource(ctx, "prebuilts/cmdline-tools/tools/lib/lint-classpath.jar")). Flag("--quiet"). @@ -271,7 +280,7 @@ func (l *lintSingleton) GenerateBuildActions(ctx android.SingletonContext) { } func (l *lintSingleton) copyLintDependencies(ctx android.SingletonContext) { - if ctx.Config().UnbundledBuild() { + if ctx.Config().UnbundledBuildUsePrebuiltSdks() { return } @@ -297,25 +306,29 @@ func (l *lintSingleton) copyLintDependencies(ctx android.SingletonContext) { ctx.Build(pctx, android.BuildParams{ Rule: android.Cp, Input: android.OutputFileForModule(ctx, frameworkDocStubs, ".annotations.zip"), - Output: annotationsZipPath(ctx), + Output: copiedAnnotationsZipPath(ctx), }) ctx.Build(pctx, android.BuildParams{ Rule: android.Cp, Input: android.OutputFileForModule(ctx, frameworkDocStubs, ".api_versions.xml"), - Output: apiVersionsXmlPath(ctx), + Output: copiedAPIVersionsXmlPath(ctx), }) } -func annotationsZipPath(ctx android.PathContext) android.WritablePath { +func copiedAnnotationsZipPath(ctx android.PathContext) android.WritablePath { return android.PathForOutput(ctx, "lint", "annotations.zip") } -func apiVersionsXmlPath(ctx android.PathContext) android.WritablePath { +func copiedAPIVersionsXmlPath(ctx android.PathContext) android.WritablePath { return android.PathForOutput(ctx, "lint", "api_versions.xml") } func (l *lintSingleton) generateLintReportZips(ctx android.SingletonContext) { + if ctx.Config().UnbundledBuild() { + return + } + var outputs []*lintOutputs var dirs []string ctx.VisitAllModules(func(m android.Module) { @@ -370,7 +383,9 @@ func (l *lintSingleton) generateLintReportZips(ctx android.SingletonContext) { } func (l *lintSingleton) MakeVars(ctx android.MakeVarsContext) { - ctx.DistForGoal("lint-check", l.htmlZip, l.textZip, l.xmlZip) + if !ctx.Config().UnbundledBuild() { + ctx.DistForGoal("lint-check", l.htmlZip, l.textZip, l.xmlZip) + } } var _ android.SingletonMakeVarsProvider = (*lintSingleton)(nil) diff --git a/java/prebuilt_apis.go b/java/prebuilt_apis.go index 999c72f3c..b10e6c7fe 100644 --- a/java/prebuilt_apis.go +++ b/java/prebuilt_apis.go @@ -83,8 +83,7 @@ func createImport(mctx android.LoadHookContext, module string, scope string, api }{} props.Name = proptools.StringPtr(prebuiltApiModuleName(mctx, module, scope, apiver)) props.Jars = append(props.Jars, path) - // TODO(hansson): change to scope after migration is done. - props.Sdk_version = proptools.StringPtr("current") + props.Sdk_version = proptools.StringPtr(scope) props.Installable = proptools.BoolPtr(false) mctx.CreateModule(ImportFactory, &props) |