Merge "Enable api_lint in java_sdk_library" am: c0320878e6
Change-Id: I220f6816c84ae4f412442bfd91a3c2f331ac45d7
This commit is contained in:
@@ -222,8 +222,22 @@ type DroidstubsProperties struct {
|
|||||||
|
|
||||||
Current ApiToCheck
|
Current ApiToCheck
|
||||||
|
|
||||||
// do not perform API check against Last_released, in the case that both two specified API
|
// The java_sdk_library module generates references to modules (i.e. filegroups)
|
||||||
// files by Last_released are modules which don't exist.
|
// from which information about the latest API version can be obtained. As those
|
||||||
|
// modules may not exist (e.g. because a previous version has not been released) it
|
||||||
|
// sets ignore_missing_latest_api=true on the droidstubs modules it creates so
|
||||||
|
// that droidstubs can ignore those references if the modules do not yet exist.
|
||||||
|
//
|
||||||
|
// If true then this will ignore module references for modules that do not exist
|
||||||
|
// in properties that supply the previous version of the API.
|
||||||
|
//
|
||||||
|
// There are two sets of those:
|
||||||
|
// * Api_file, Removed_api_file in check_api.last_released
|
||||||
|
// * New_since in check_api.api_lint.new_since
|
||||||
|
//
|
||||||
|
// The first two must be set as a pair, so either they should both exist or neither
|
||||||
|
// should exist - in which case when this property is true they are ignored. If one
|
||||||
|
// exists and the other does not then it is an error.
|
||||||
Ignore_missing_latest_api *bool `blueprint:"mutated"`
|
Ignore_missing_latest_api *bool `blueprint:"mutated"`
|
||||||
|
|
||||||
Api_lint struct {
|
Api_lint struct {
|
||||||
@@ -1200,8 +1214,18 @@ func (d *Droidstubs) StubsSrcJar() android.Path {
|
|||||||
func (d *Droidstubs) DepsMutator(ctx android.BottomUpMutatorContext) {
|
func (d *Droidstubs) DepsMutator(ctx android.BottomUpMutatorContext) {
|
||||||
d.Javadoc.addDeps(ctx)
|
d.Javadoc.addDeps(ctx)
|
||||||
|
|
||||||
|
// If requested clear any properties that provide information about the latest version
|
||||||
|
// of an API and which reference non-existent modules.
|
||||||
if Bool(d.properties.Check_api.Ignore_missing_latest_api) {
|
if Bool(d.properties.Check_api.Ignore_missing_latest_api) {
|
||||||
ignoreMissingModules(ctx, &d.properties.Check_api.Last_released)
|
ignoreMissingModules(ctx, &d.properties.Check_api.Last_released)
|
||||||
|
|
||||||
|
// If the new_since references a module, e.g. :module-latest-api and the module
|
||||||
|
// does not exist then clear it.
|
||||||
|
newSinceSrc := d.properties.Check_api.Api_lint.New_since
|
||||||
|
newSinceSrcModule := android.SrcIsModule(proptools.String(newSinceSrc))
|
||||||
|
if newSinceSrcModule != "" && !ctx.OtherModuleExists(newSinceSrcModule) {
|
||||||
|
d.properties.Check_api.Api_lint.New_since = nil
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(d.properties.Merge_annotations_dirs) != 0 {
|
if len(d.properties.Merge_annotations_dirs) != 0 {
|
||||||
|
@@ -351,6 +351,12 @@ type sdkLibraryProperties struct {
|
|||||||
// disabled by default.
|
// disabled by default.
|
||||||
Module_lib ApiScopeProperties
|
Module_lib ApiScopeProperties
|
||||||
|
|
||||||
|
// Properties related to api linting.
|
||||||
|
Api_lint struct {
|
||||||
|
// Enable api linting.
|
||||||
|
Enabled *bool
|
||||||
|
}
|
||||||
|
|
||||||
// TODO: determines whether to create HTML doc or not
|
// TODO: determines whether to create HTML doc or not
|
||||||
//Html_doc *bool
|
//Html_doc *bool
|
||||||
}
|
}
|
||||||
@@ -677,6 +683,12 @@ func (module *SdkLibrary) createStubsSourcesAndApi(mctx android.DefaultableHookC
|
|||||||
Current ApiToCheck
|
Current ApiToCheck
|
||||||
Last_released ApiToCheck
|
Last_released ApiToCheck
|
||||||
Ignore_missing_latest_api *bool
|
Ignore_missing_latest_api *bool
|
||||||
|
|
||||||
|
Api_lint struct {
|
||||||
|
Enabled *bool
|
||||||
|
New_since *string
|
||||||
|
Baseline_file *string
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Aidl struct {
|
Aidl struct {
|
||||||
Include_dirs []string
|
Include_dirs []string
|
||||||
@@ -759,11 +771,30 @@ func (module *SdkLibrary) createStubsSourcesAndApi(mctx android.DefaultableHookC
|
|||||||
|
|
||||||
if !apiScope.unstable {
|
if !apiScope.unstable {
|
||||||
// check against the latest released API
|
// check against the latest released API
|
||||||
props.Check_api.Last_released.Api_file = proptools.StringPtr(
|
latestApiFilegroupName := proptools.StringPtr(module.latestApiFilegroupName(apiScope))
|
||||||
module.latestApiFilegroupName(apiScope))
|
props.Check_api.Last_released.Api_file = latestApiFilegroupName
|
||||||
props.Check_api.Last_released.Removed_api_file = proptools.StringPtr(
|
props.Check_api.Last_released.Removed_api_file = proptools.StringPtr(
|
||||||
module.latestRemovedApiFilegroupName(apiScope))
|
module.latestRemovedApiFilegroupName(apiScope))
|
||||||
props.Check_api.Ignore_missing_latest_api = proptools.BoolPtr(true)
|
props.Check_api.Ignore_missing_latest_api = proptools.BoolPtr(true)
|
||||||
|
|
||||||
|
if proptools.Bool(module.sdkLibraryProperties.Api_lint.Enabled) {
|
||||||
|
// Enable api lint.
|
||||||
|
props.Check_api.Api_lint.Enabled = proptools.BoolPtr(true)
|
||||||
|
props.Check_api.Api_lint.New_since = latestApiFilegroupName
|
||||||
|
|
||||||
|
// If it exists then pass a lint-baseline.txt through to droidstubs.
|
||||||
|
baselinePath := path.Join(apiDir, apiScope.apiFilePrefix+"lint-baseline.txt")
|
||||||
|
baselinePathRelativeToRoot := path.Join(mctx.ModuleDir(), baselinePath)
|
||||||
|
paths, err := mctx.GlobWithDeps(baselinePathRelativeToRoot, nil)
|
||||||
|
if err != nil {
|
||||||
|
mctx.ModuleErrorf("error checking for presence of %s: %s", baselinePathRelativeToRoot, err)
|
||||||
|
}
|
||||||
|
if len(paths) == 1 {
|
||||||
|
props.Check_api.Api_lint.Baseline_file = proptools.StringPtr(baselinePath)
|
||||||
|
} else if len(paths) != 0 {
|
||||||
|
mctx.ModuleErrorf("error checking for presence of %s: expected one path, found: %v", baselinePathRelativeToRoot, paths)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Dist the api txt artifact for sdk builds.
|
// Dist the api txt artifact for sdk builds.
|
||||||
|
Reference in New Issue
Block a user