Merge changes from topic "drop_deps_no_srcs" into main am: 5d982b398e

Original change: https://android-review.googlesource.com/c/platform/build/soong/+/2752995

Change-Id: I095b48f0bbe31fdc65df43a81693b7dfb7c60da8
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Zi Wang
2023-09-15 20:59:17 +00:00
committed by Automerger Merge Worker
3 changed files with 35 additions and 47 deletions

View File

@@ -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",

View File

@@ -167,10 +167,7 @@ java_library_static {
"sdk_version": `"current"`,
}),
MakeBazelTarget("java_library", "java-protos", AttrNameToString{
"exports": `[
":java-protos_java_proto_lite",
":java-lib-neverlink",
]`,
"exports": `[":java-protos_java_proto_lite"]`,
"java_version": `"7"`,
"sdk_version": `"current"`,
}),

View File

@@ -2886,9 +2886,8 @@ type javaAidlLibraryAttributes struct {
// depending on the module type.
type bp2BuildJavaInfo struct {
// separates dependencies into dynamic dependencies and static dependencies.
DepLabels *javaDependencyLabels
hasKotlin bool
onlyProtoInSrcs bool
DepLabels *javaDependencyLabels
hasKotlin 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(
@@ -3091,9 +3087,8 @@ func (m *Library) convertLibraryAttrsBp2Build(ctx android.TopDownMutatorContext)
}
bp2BuildInfo := &bp2BuildJavaInfo{
DepLabels: depLabels,
hasKotlin: hasKotlin,
onlyProtoInSrcs: onlyProtoInSrcs,
DepLabels: depLabels,
hasKotlin: hasKotlin,
}
return commonAttrs, bp2BuildInfo, true
@@ -3137,19 +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 put the deps to exports and drop deps here.
exports.Append(deps)
deps = bazel.LabelListAttribute{}
} else {
ctx.ModuleErrorf("Module has direct dependencies but no sources. Bazel will not allow this.")
}
// java_library does not accept deps when there are no srcs because
// there is no compilation happening, but it accepts exports.
// 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{}
}
var props bazel.BazelTargetModuleProperties
attrs := &javaLibraryAttributes{