Update runpath for jni libs

To support stem, cc libraries will be generated in
<pacakge_name>/<label.name>. Update RUNPATH of java binaries so that it
can find its jni deps

Test: bp2build
Test: TH
Bug: 240563612
Change-Id: Ia2f70f0424a8526ee35856225c1a8cd1067a8570
This commit is contained in:
Spandan Das
2023-06-01 02:48:09 +00:00
parent 39ccf93c65
commit 5dba0ec98c
2 changed files with 16 additions and 25 deletions

View File

@@ -3104,24 +3104,15 @@ func javaBinaryHostBp2Build(ctx android.TopDownMutatorContext, m *Binary) {
// Attribute jvm_flags
var jvmFlags bazel.StringListAttribute
if m.binaryProperties.Jni_libs != nil {
jniLibPackages := map[string]bool{}
for _, jniLibLabel := range android.BazelLabelForModuleDeps(ctx, m.binaryProperties.Jni_libs).Includes {
jniLibPackage := jniLibLabel.Label
indexOfColon := strings.Index(jniLibLabel.Label, ":")
if indexOfColon > 0 {
// JNI lib from other package
jniLibPackage = jniLibLabel.Label[2:indexOfColon]
} else if indexOfColon == 0 {
// JNI lib in the same package of java_binary
packageOfCurrentModule := m.GetBazelLabel(ctx, m)
jniLibPackage = packageOfCurrentModule[2:strings.Index(packageOfCurrentModule, ":")]
}
if _, inMap := jniLibPackages[jniLibPackage]; !inMap {
jniLibPackages[jniLibPackage] = true
jniLibPackages := []string{}
for _, jniLib := range m.binaryProperties.Jni_libs {
if jniLibModule, exists := ctx.ModuleFromName(jniLib); exists {
otherDir := ctx.OtherModuleDir(jniLibModule)
jniLibPackages = append(jniLibPackages, filepath.Join(otherDir, jniLib))
}
}
jniLibPaths := []string{}
for jniLibPackage, _ := range jniLibPackages {
for _, jniLibPackage := range jniLibPackages {
// See cs/f:.*/third_party/bazel/.*java_stub_template.txt for the use of RUNPATH
jniLibPaths = append(jniLibPaths, "$${RUNPATH}"+jniLibPackage)
}
@@ -3145,9 +3136,9 @@ func javaBinaryHostBp2Build(ctx android.TopDownMutatorContext, m *Binary) {
}
libInfo := libraryCreationInfo{
deps: deps,
attrs: commonAttrs,
baseName: m.Name(),
deps: deps,
attrs: commonAttrs,
baseName: m.Name(),
hasKotlin: bp2BuildInfo.hasKotlin,
}
libName := createLibraryTarget(ctx, libInfo)
@@ -3189,9 +3180,9 @@ func javaTestHostBp2Build(ctx android.TopDownMutatorContext, m *TestHost) {
}
libInfo := libraryCreationInfo{
deps: deps,
attrs: commonAttrs,
baseName: m.Name(),
deps: deps,
attrs: commonAttrs,
baseName: m.Name(),
hasKotlin: bp2BuildInfo.hasKotlin,
}
libName := createLibraryTarget(ctx, libInfo)
@@ -3204,9 +3195,9 @@ func javaTestHostBp2Build(ctx android.TopDownMutatorContext, m *TestHost) {
// libraryCreationInfo encapsulates the info needed to create java_library target from
// java_binary_host or java_test_host.
type libraryCreationInfo struct {
deps bazel.LabelListAttribute
attrs *javaCommonAttributes
baseName string
deps bazel.LabelListAttribute
attrs *javaCommonAttributes
baseName string
hasKotlin bool
}