Merge "Improve messages for VNDK dependency errors."

am: c325edce18

Change-Id: I825ac5a438b13eb4c1edff75acfeafe317d2d72a
This commit is contained in:
Martin Stjernholm
2018-10-17 05:10:03 -07:00
committed by android-build-merger

View File

@@ -15,6 +15,7 @@
package cc package cc
import ( import (
"errors"
"sort" "sort"
"strings" "strings"
"sync" "sync"
@@ -151,38 +152,42 @@ func (vndk *vndkdep) vndkCheckLinkType(ctx android.ModuleContext, to *Module, ta
} }
// Check the dependencies of VNDK shared libraries. // Check the dependencies of VNDK shared libraries.
if !vndkIsVndkDepAllowed(vndk, to.vndkdep) { if err := vndkIsVndkDepAllowed(vndk, to.vndkdep); err != nil {
ctx.ModuleErrorf("(%s) should not link to %q (%s)", ctx.ModuleErrorf("(%s) should not link to %q (%s): %v",
vndk.typeName(), to.Name(), to.vndkdep.typeName()) vndk.typeName(), to.Name(), to.vndkdep.typeName(), err)
return return
} }
} }
func vndkIsVndkDepAllowed(from *vndkdep, to *vndkdep) bool { func vndkIsVndkDepAllowed(from *vndkdep, to *vndkdep) error {
// Check the dependencies of VNDK, VNDK-Ext, VNDK-SP, VNDK-SP-Ext and vendor modules. // Check the dependencies of VNDK, VNDK-Ext, VNDK-SP, VNDK-SP-Ext and vendor modules.
if from.isVndkExt() { if from.isVndkExt() {
if from.isVndkSp() { if from.isVndkSp() {
// VNDK-SP-Ext may depend on VNDK-SP, VNDK-SP-Ext, or vendor libs (excluding if to.isVndk() && !to.isVndkSp() {
// VNDK and VNDK-Ext). return errors.New("VNDK-SP extensions must not depend on VNDK or VNDK extensions")
return to.isVndkSp() || !to.isVndk() }
return nil
} }
// VNDK-Ext may depend on VNDK, VNDK-Ext, VNDK-SP, VNDK-SP-Ext, or vendor libs. // VNDK-Ext may depend on VNDK, VNDK-Ext, VNDK-SP, VNDK-SP-Ext, or vendor libs.
return true return nil
} }
if from.isVndk() { if from.isVndk() {
if to.isVndkExt() { if to.isVndkExt() {
// VNDK-core and VNDK-SP must not depend on VNDK extensions. return errors.New("VNDK-core and VNDK-SP must not depend on VNDK extensions")
return false
} }
if from.isVndkSp() { if from.isVndkSp() {
// VNDK-SP must only depend on VNDK-SP. if !to.isVndkSp() {
return to.isVndkSp() return errors.New("VNDK-SP must only depend on VNDK-SP")
}
return nil
} }
// VNDK-core may depend on VNDK-core or VNDK-SP. if !to.isVndk() {
return to.isVndk() return errors.New("VNDK-core must only depend on VNDK-core or VNDK-SP")
}
return nil
} }
// Vendor modules may depend on VNDK, VNDK-Ext, VNDK-SP, VNDK-SP-Ext, or vendor libs. // Vendor modules may depend on VNDK, VNDK-Ext, VNDK-SP, VNDK-SP-Ext, or vendor libs.
return true return nil
} }
var ( var (