diff options
| author | Ross Burton <ross.burton@arm.com> | 2025-02-07 15:40:58 +0000 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2025-02-10 13:03:58 +0000 |
| commit | 78d0ba12efddac87caed8a32a01ccc015e480d71 (patch) | |
| tree | dc7d7407206ba221ba3c6e006783692ada2cee46 /meta | |
| parent | f555c53c1eb4de2bff1b409f0bdf0479c4aa2c4f (diff) | |
| download | poky-78d0ba12efddac87caed8a32a01ccc015e480d71.tar.gz | |
dbus: explictly set the path to systemctl
The dbus.socket user unit file calls systemctl, and the meson.build uses
find_program() to find the path, falling back to a hardcoded value if it
cannot be found.
On the initial build the sysroot doesn't contain systemctl (as it is not
in the target systemd sysroot), however after the do_package_write_*
tasks have completed there is a systemd-systemctl-native recipe in the
sysroot which will be found and result in host paths being in the target
packages, specifically in /usr/lib/systemd/user/dbus.socket:
ExecStartPost=-/work/ross/build/tmp/work/core2-64-poky-linux/dbus/1.16.0/recipe-sysroot-native/usr/bin/systemctl
This can be replicated by forcing a rebuild after a forced packaging:
$ bitbake dbus -C do_package_write_ipk
$ bitbake dbus -C configure
ERROR: dbus-1.16.0-r0 do_package_qa: QA Issue: File
/usr/lib/systemd/user/dbus.socket in package dbus-common contains
reference to TMPDIR [buildpaths]
We could do the unit mask manually instead of using systemctl (as it's
just a symlink) but the hardcoded path is still wrong, so write a small
Meson cross file to specify where the binary is.
(From OE-Core rev: 2ebfe3d8df809f6cf057ac7b56cdbc265f05b37a)
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta')
| -rw-r--r-- | meta/recipes-core/dbus/dbus_1.16.0.bb | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/meta/recipes-core/dbus/dbus_1.16.0.bb b/meta/recipes-core/dbus/dbus_1.16.0.bb index f516273cc7..80e766f959 100644 --- a/meta/recipes-core/dbus/dbus_1.16.0.bb +++ b/meta/recipes-core/dbus/dbus_1.16.0.bb | |||
| @@ -124,6 +124,16 @@ pkg_postinst:dbus() { | |||
| 124 | fi | 124 | fi |
| 125 | } | 125 | } |
| 126 | 126 | ||
| 127 | # dbus uses find_program() to find systemctl, which results in a build path in the | ||
| 128 | # user dbus.socket | ||
| 129 | EXTRA_OEMESON:append:class-target = " --cross-file=${WORKDIR}/dbus.cross" | ||
| 130 | |||
| 131 | do_configure:prepend:class-target() { | ||
| 132 | cat >${WORKDIR}/dbus.cross <<EOF | ||
| 133 | [binaries] | ||
| 134 | systemctl = '${bindir}/systemctl' | ||
| 135 | EOF | ||
| 136 | } | ||
| 127 | 137 | ||
| 128 | do_install:append:class-target() { | 138 | do_install:append:class-target() { |
| 129 | if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then | 139 | if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then |
