diff mbox series

[meta-oe,2/2] abseil-cpp: Split so-files into separate packages

Message ID 20240311130322.1867704-2-pkj@axis.com
State Accepted
Headers show
Series [meta-oe,1/2] abseil-cpp: A little clean-up | expand

Commit Message

Peter Kjellerstedt March 11, 2024, 1:03 p.m. UTC
From: Ola x Nilsson <olani@axis.com>

Use PACKAGES_DYNAMIC and PACKAGESPLITFUNCS to put each shared object
into its own package named libabsl-*.
The shared objects depend on each other which means you still get a
lot of them if you link against a single one.

The main package abseil-cpp RDEPENDS on all of the libabsl-* packages.

Signed-off-by: Ola x Nilsson <olani@axis.com>
Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
---
 .../abseil-cpp/abseil-cpp_20240116.1.bb       | 23 +++++++++++++++++++
 1 file changed, 23 insertions(+)
diff mbox series

Patch

diff --git a/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp_20240116.1.bb b/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp_20240116.1.bb
index 9cb325870..e6c65d306 100644
--- a/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp_20240116.1.bb
+++ b/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp_20240116.1.bb
@@ -27,4 +27,27 @@  EXTRA_OECMAKE = "-DBUILD_SHARED_LIBS=ON \
 
 SYSROOT_DIRS:append:class-nativesdk:mingw32 = " ${bindir}"
 
+PACKAGES_DYNAMIC = "^libabsl-*"
+PACKAGES_DYNAMIC:class-native = ""
+
+PACKAGESPLITFUNCS =+ "split_dynamic_packages"
+
+python split_dynamic_packages() {
+    libdir = d.getVar('libdir')
+
+    libpackages = do_split_packages(
+        d,
+        root=libdir,
+        file_regex=r'^libabsl_(.*)\.so\..*$',
+        output_pattern='libabsl-%s',
+        description="abseil shared library %s",
+        prepend=True,
+        extra_depends='',
+    )
+    if libpackages:
+        d.appendVar('RDEPENDS:' + d.getVar('PN'), ' ' + ' '.join(libpackages))
+}
+
+ALLOW_EMPTY:${PN} = "1"
+
 BBCLASSEXTEND = "native nativesdk"