summaryrefslogtreecommitdiff
path: root/java/sdk_library.go
diff options
context:
space:
mode:
author Inseob Kim <inseob@google.com> 2019-03-18 10:19:51 +0900
committer Inseob Kim <inseob@google.com> 2019-03-20 15:33:06 +0900
commit8098faad9f1c4bdead1aa0d6800c2253776b9ca3 (patch)
tree74893330d452c523808ab109ca4896ba786cb20e /java/sdk_library.go
parent66184450d5765889a5fb71d14c1a44959ebaefbe (diff)
Refine error messages in case of missing api files
Some non-interpretable error messages has been shown in case of missing current api files. Instead of that messy errors, This clearly tells users what is the problem and how to fix it. Bug: 126259114 Test: 1) try to build a sysprop_library and a java_sdk_library without creating txt files under api/, and see it fails. Test: 2) Copy and paste the emitted command, and try to build again. Change-Id: I986781cc710475647c2b996b0f1c51a6f50c0ba2
Diffstat (limited to 'java/sdk_library.go')
-rw-r--r--java/sdk_library.go28
1 files changed, 28 insertions, 0 deletions
diff --git a/java/sdk_library.go b/java/sdk_library.go
index 6441c6334..18866d57e 100644
--- a/java/sdk_library.go
+++ b/java/sdk_library.go
@@ -675,6 +675,34 @@ func (module *SdkLibrary) createInternalModules(mctx android.TopDownMutatorConte
if module.sdkLibraryProperties.Api_packages == nil {
mctx.PropertyErrorf("api_packages", "java_sdk_library must specify api_packages")
}
+
+ missing_current_api := false
+
+ for _, scope := range []string{"", "system-", "test-"} {
+ for _, api := range []string{"current.txt", "removed.txt"} {
+ path := path.Join(mctx.ModuleDir(), "api", scope+api)
+ p := android.ExistentPathForSource(mctx, path)
+ if !p.Valid() {
+ mctx.ModuleErrorf("Current api file %#v doesn't exist", path)
+ missing_current_api = true
+ }
+ }
+ }
+
+ if missing_current_api {
+ script := "build/soong/scripts/gen-java-current-api-files.sh"
+ p := android.ExistentPathForSource(mctx, script)
+
+ if !p.Valid() {
+ panic(fmt.Sprintf("script file %s doesn't exist", script))
+ }
+
+ mctx.ModuleErrorf("One or more current api files are missing. "+
+ "You can update them by:\n"+
+ "%s %q && m update-api", script, mctx.ModuleDir())
+ return
+ }
+
// for public API stubs
module.createStubsLibrary(mctx, apiScopePublic)
module.createDocs(mctx, apiScopePublic)