Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 03a471a8 authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "Refine error messages in case of missing api files"

parents dd346af2 8098faad
Loading
Loading
Loading
Loading
+28 −0
Original line number Diff line number Diff line
@@ -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)
+33 −0
Original line number Diff line number Diff line
#!/bin/bash -e

# Copyright (C) 2019 The Android Open Source Project
#
# 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.
# See the License for the specific language governing permissions and
# limitations under the License.

if [[ -z "$1" ]]; then
  echo "usage: $0 <modulePath>" >&2
  exit 1
fi

api_dir=$1/api

mkdir -p "$api_dir"

scopes=("" system- test-)
apis=(current removed)

for scope in "${scopes[@]}"; do
  for api in "${apis[@]}"; do
    touch "${api_dir}/${scope}${api}.txt"
  done
done