Merge "Linktype check error message becomes more correct" am: 4941e4b9d1
am: 4de1a5651f
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1593811 MUST ONLY BE SUBMITTED BY AUTOMERGER Change-Id: I3f9b8a7add946d82ea2adecc53ffc44176aea01f
This commit is contained in:
commit
605bc52821
|
@ -2039,7 +2039,7 @@ func TestJavaStableSdkVersion(t *testing.T) {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Updatable apex with non-stable transitive dep",
|
name: "Updatable apex with non-stable transitive dep",
|
||||||
expectedError: "compiles against Android API, but dependency \"transitive-jar\" is compiling against non-public Android API.",
|
expectedError: "compiles against Android API, but dependency \"transitive-jar\" is compiling against private API.",
|
||||||
bp: `
|
bp: `
|
||||||
apex {
|
apex {
|
||||||
name: "myapex",
|
name: "myapex",
|
||||||
|
|
51
java/java.go
51
java/java.go
|
@ -1022,6 +1022,25 @@ const (
|
||||||
javaPlatform
|
javaPlatform
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func (lt linkType) String() string {
|
||||||
|
switch lt {
|
||||||
|
case javaCore:
|
||||||
|
return "core Java API"
|
||||||
|
case javaSdk:
|
||||||
|
return "Android API"
|
||||||
|
case javaSystem:
|
||||||
|
return "system API"
|
||||||
|
case javaModule:
|
||||||
|
return "module API"
|
||||||
|
case javaSystemServer:
|
||||||
|
return "system server API"
|
||||||
|
case javaPlatform:
|
||||||
|
return "private API"
|
||||||
|
default:
|
||||||
|
panic(fmt.Errorf("unrecognized linktype: %v", lt))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
type linkTypeContext interface {
|
type linkTypeContext interface {
|
||||||
android.Module
|
android.Module
|
||||||
getLinkType(name string) (ret linkType, stubs bool)
|
getLinkType(name string) (ret linkType, stubs bool)
|
||||||
|
@ -1081,45 +1100,41 @@ func checkLinkType(ctx android.ModuleContext, from *Module, to linkTypeContext,
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
otherLinkType, _ := to.getLinkType(ctx.OtherModuleName(to))
|
otherLinkType, _ := to.getLinkType(ctx.OtherModuleName(to))
|
||||||
commonMessage := " In order to fix this, consider adjusting sdk_version: OR platform_apis: " +
|
|
||||||
"property of the source or target module so that target module is built with the same " +
|
|
||||||
"or smaller API set when compared to the source."
|
|
||||||
|
|
||||||
|
violation := false
|
||||||
switch myLinkType {
|
switch myLinkType {
|
||||||
case javaCore:
|
case javaCore:
|
||||||
if otherLinkType != javaCore {
|
if otherLinkType != javaCore {
|
||||||
ctx.ModuleErrorf("compiles against core Java API, but dependency %q is compiling against non-core Java APIs."+commonMessage,
|
violation = true
|
||||||
ctx.OtherModuleName(to))
|
|
||||||
}
|
}
|
||||||
break
|
|
||||||
case javaSdk:
|
case javaSdk:
|
||||||
if otherLinkType != javaCore && otherLinkType != javaSdk {
|
if otherLinkType != javaCore && otherLinkType != javaSdk {
|
||||||
ctx.ModuleErrorf("compiles against Android API, but dependency %q is compiling against non-public Android API."+commonMessage,
|
violation = true
|
||||||
ctx.OtherModuleName(to))
|
|
||||||
}
|
}
|
||||||
break
|
|
||||||
case javaSystem:
|
case javaSystem:
|
||||||
if otherLinkType == javaPlatform || otherLinkType == javaModule || otherLinkType == javaSystemServer {
|
if otherLinkType == javaPlatform || otherLinkType == javaModule || otherLinkType == javaSystemServer {
|
||||||
ctx.ModuleErrorf("compiles against system API, but dependency %q is compiling against private API."+commonMessage,
|
violation = true
|
||||||
ctx.OtherModuleName(to))
|
|
||||||
}
|
}
|
||||||
break
|
|
||||||
case javaModule:
|
case javaModule:
|
||||||
if otherLinkType == javaPlatform || otherLinkType == javaSystemServer {
|
if otherLinkType == javaPlatform || otherLinkType == javaSystemServer {
|
||||||
ctx.ModuleErrorf("compiles against module API, but dependency %q is compiling against private API."+commonMessage,
|
violation = true
|
||||||
ctx.OtherModuleName(to))
|
|
||||||
}
|
}
|
||||||
break
|
|
||||||
case javaSystemServer:
|
case javaSystemServer:
|
||||||
if otherLinkType == javaPlatform {
|
if otherLinkType == javaPlatform {
|
||||||
ctx.ModuleErrorf("compiles against system server API, but dependency %q is compiling against private API."+commonMessage,
|
violation = true
|
||||||
ctx.OtherModuleName(to))
|
|
||||||
}
|
}
|
||||||
break
|
|
||||||
case javaPlatform:
|
case javaPlatform:
|
||||||
// no restriction on link-type
|
// no restriction on link-type
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if violation {
|
||||||
|
ctx.ModuleErrorf("compiles against %v, but dependency %q is compiling against %v. "+
|
||||||
|
"In order to fix this, consider adjusting sdk_version: OR platform_apis: "+
|
||||||
|
"property of the source or target module so that target module is built "+
|
||||||
|
"with the same or smaller API set when compared to the source.",
|
||||||
|
myLinkType, ctx.OtherModuleName(to), otherLinkType)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (j *Module) collectDeps(ctx android.ModuleContext) deps {
|
func (j *Module) collectDeps(ctx android.ModuleContext) deps {
|
||||||
|
|
Loading…
Reference in New Issue