diff mbox series

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

Message ID 20240306162737.1722284-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 6, 2024, 4:27 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_20230802.1.bb       | 23 +++++++++++++++++++
 1 file changed, 23 insertions(+)
diff mbox series

Patch

diff --git a/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp_20230802.1.bb b/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp_20230802.1.bb
index 667693a4c..17db7b2e4 100644
--- a/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp_20230802.1.bb
+++ b/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp_20230802.1.bb
@@ -28,4 +28,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"