Always drop deps from java_library with no srcs
This is the follow up from aosp/2750763 Test: CI and added unit test Bug: 285952385 Change-Id: I64703ee4fa742b718ffb43f2af1b6ab43ddeb606
This commit is contained in:
@@ -15,7 +15,6 @@
|
||||
package bp2build
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"testing"
|
||||
|
||||
"android/soong/android"
|
||||
@@ -143,26 +142,6 @@ java_library {
|
||||
})
|
||||
}
|
||||
|
||||
func TestJavaLibraryFailsToConvertLibsWithNoSrcs(t *testing.T) {
|
||||
runJavaLibraryTestCase(t, Bp2buildTestCase{
|
||||
ExpectedErr: fmt.Errorf("Module has direct dependencies but no sources. Bazel will not allow this."),
|
||||
Blueprint: `java_library {
|
||||
name: "java-lib-1",
|
||||
libs: ["java-lib-2"],
|
||||
sdk_version: "current",
|
||||
bazel_module: { bp2build_available: true },
|
||||
}
|
||||
|
||||
java_library {
|
||||
name: "java-lib-2",
|
||||
srcs: ["a.java"],
|
||||
sdk_version: "current",
|
||||
bazel_module: { bp2build_available: false },
|
||||
}`,
|
||||
ExpectedBazelTargets: []string{},
|
||||
})
|
||||
}
|
||||
|
||||
func TestJavaLibraryPlugins(t *testing.T) {
|
||||
runJavaLibraryTestCaseWithRegistrationCtxFunc(t, Bp2buildTestCase{
|
||||
Blueprint: `java_library {
|
||||
@@ -869,6 +848,30 @@ func TestJavaLibraryKotlinCommonSrcs(t *testing.T) {
|
||||
})
|
||||
}
|
||||
|
||||
func TestJavaLibraryLibsWithNoSrcs(t *testing.T) {
|
||||
runJavaLibraryTestCase(t, Bp2buildTestCase{
|
||||
Description: "java_library that has libs but no srcs",
|
||||
Blueprint: `java_library {
|
||||
name: "java-lib-1",
|
||||
libs: ["java-lib-2"],
|
||||
sdk_version: "current",
|
||||
bazel_module: { bp2build_available: true },
|
||||
}
|
||||
|
||||
java_library{
|
||||
name: "java-lib-2",
|
||||
bazel_module: { bp2build_available: false },
|
||||
}
|
||||
`,
|
||||
ExpectedBazelTargets: []string{
|
||||
MakeBazelTarget("java_library", "java-lib-1", AttrNameToString{
|
||||
"sdk_version": `"current"`,
|
||||
}),
|
||||
MakeNeverlinkDuplicateTarget("java_library", "java-lib-1"),
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
func TestJavaLibraryArchVariantDeps(t *testing.T) {
|
||||
runJavaLibraryTestCase(t, Bp2buildTestCase{
|
||||
Description: "java_library with arch variant libs",
|
||||
|
16
java/java.go
16
java/java.go
@@ -2888,7 +2888,6 @@ type bp2BuildJavaInfo struct {
|
||||
// separates dependencies into dynamic dependencies and static dependencies.
|
||||
DepLabels *javaDependencyLabels
|
||||
hasKotlin bool
|
||||
onlyProtoInSrcs bool
|
||||
}
|
||||
|
||||
func javaXsdTargetName(xsd android.XsdConfigBp2buildTargets) string {
|
||||
@@ -2951,9 +2950,6 @@ func (m *Library) convertLibraryAttrsBp2Build(ctx android.TopDownMutatorContext)
|
||||
|
||||
staticDeps.Append(srcPartitions[xsdSrcPartition])
|
||||
|
||||
_, protoInSrcs := srcPartitions[protoSrcPartition]
|
||||
onlyProtoInSrcs := protoInSrcs && len(srcPartitions) == 1
|
||||
|
||||
if !srcPartitions[logtagSrcPartition].IsEmpty() {
|
||||
logtagsLibName := m.Name() + "_logtags"
|
||||
ctx.CreateBazelTargetModule(
|
||||
@@ -3093,7 +3089,6 @@ func (m *Library) convertLibraryAttrsBp2Build(ctx android.TopDownMutatorContext)
|
||||
bp2BuildInfo := &bp2BuildJavaInfo{
|
||||
DepLabels: depLabels,
|
||||
hasKotlin: hasKotlin,
|
||||
onlyProtoInSrcs: onlyProtoInSrcs,
|
||||
}
|
||||
|
||||
return commonAttrs, bp2BuildInfo, true
|
||||
@@ -3137,17 +3132,12 @@ func javaLibraryBp2Build(ctx android.TopDownMutatorContext, m *Library) {
|
||||
if !commonAttrs.Srcs.IsEmpty() {
|
||||
deps.Append(exports) // we should only append these if there are sources to use them
|
||||
} else if !deps.IsEmpty() {
|
||||
if bp2BuildInfo.onlyProtoInSrcs {
|
||||
// java_library does not accept deps when there are no srcs because
|
||||
// there is no compilation happening, but it accepts exports.
|
||||
// bp2build converts this module to 2 java_libraries + java_xx_proto_library + proto_library
|
||||
// the non-empty deps here are not necessary for compiling the protos, in which case
|
||||
// they're unnecessary as deps on the java_library as well since they aren't
|
||||
// being propagated to any dependencies. So we can drop deps here.
|
||||
// The non-empty deps here are unnecessary as deps on the java_library
|
||||
// since they aren't being propagated to any dependencies.
|
||||
// So we can drop deps here.
|
||||
deps = bazel.LabelListAttribute{}
|
||||
} else {
|
||||
ctx.ModuleErrorf("Module has direct dependencies but no sources. Bazel will not allow this.")
|
||||
}
|
||||
}
|
||||
var props bazel.BazelTargetModuleProperties
|
||||
attrs := &javaLibraryAttributes{
|
||||
|
Reference in New Issue
Block a user