Hi Kieran,
On 27.07.2020 12:42, Kieran Bingham wrote:
Hi Andrey,
On 27/07/2020 10:21, Andrey Konovalov wrote:
libcamera checks if RPATH or RUNPATH dynamic tag is present in
libcamera.so. If it does, it assumes that libcamera binaries are
run directly from the build directory without installing them, and
tries to use resorces like IPA modules from the build directory.
Mainline meson strips RPATH/RUNPATH out at install time (for
meson versions up to 0.54; the things are somewhat changed in 0.55).
But openembedded-core patches meson to disable RPATH/RUNPATH removal.
That's why we need to remove this tag manually in do_install_append().
Uh oh, what's changed... (I'll have to go take a look).
-
https://mesonbuild.com/Release-notes-for-0-55-0.html#rpath-removal-now-more-careful
If we're reliant upon meson behaviour which is no longer consistent,
then we are going to have to do something else in libcamera.
I haven't tried meson 0.55 yet, but my impression was that 0.55 should work
just as before for "usual" (as per libcamera's README) libcamera build. And
starting from 0.55 the patch in openembedded-core to disable RPATH/RUNPATH
removal
*might* be dropped - if all the packages would be able to set RUNPATH to
what they need, and meson would detect that OK in all those cases.
Thanks,
Andrey
/me sighs ...
IPA module is signed (with openssl dgst) after it is built. But
during packaging the OE build system 1) splits out debugging info,
and 2) strips the binaries. So the IPA module *.so file installed
isn't the one which the signature was calculated against. Then
the signature check fails, and libcamera tries to run the IPA
module isolated (in a sandbox), which doesn't work if the IPA
module wasn't designed to run isolated. The easiest way to fix that
is to disable splitting out debug information and stripping the binaries
during packaging with INHIBIT_PACKAGE_DEBUG_SPLIT and
INHIBIT_PACKAGE_STRIP.
This sounds like an effective solution for openembedded, but it needs to
be fixed in libcamera all the same.
I'll try to follow up with the meson guys to see what we can do,.
Signed-off-by: Andrey Konovalov <[email protected]>
---
.../recipes-multimedia/libcamera/libcamera.bb | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/meta-multimedia/recipes-multimedia/libcamera/libcamera.bb
b/meta-multimedia/recipes-multimedia/libcamera/libcamera.bb
index 00a5c480d..573366f08 100644
--- a/meta-multimedia/recipes-multimedia/libcamera/libcamera.bb
+++ b/meta-multimedia/recipes-multimedia/libcamera/libcamera.bb
@@ -18,13 +18,20 @@ PV = "202006+git${SRCPV}"
S = "${WORKDIR}/git"
-DEPENDS = "python3-pyyaml-native udev gnutls boost"
+DEPENDS = "python3-pyyaml-native udev gnutls boost chrpath-native"
DEPENDS += "${@bb.utils.contains('DISTRO_FEATURES', 'qt', 'qtbase qtbase-native',
'', d)}"
RDEPENDS_${PN} = "${@bb.utils.contains('DISTRO_FEATURES', 'wayland qt', 'qtwayland', '', d)}"
inherit meson pkgconfig python3native
+do_install_append() {
+ chrpath -d ${D}${libdir}/libcamera.so
Aha, I didn't know about chrpath, that looks helpful. Perhaps part of
the solution will be handling our own strip/install actions to do this
explicitly in the build.
It will be a pain to have to pull in another external dependency though...
+}
+
FILES_${PN}-dev = "${includedir} ${libdir}/pkgconfig"
FILES_${PN} += " ${libdir}/libcamera.so"
+INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
+INHIBIT_PACKAGE_STRIP = "1"
+
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#85979):
https://lists.openembedded.org/g/openembedded-devel/message/85979
Mute This Topic: https://lists.openembedded.org/mt/75819340/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-