diff mbox series

systemd: Point to target binary paths for loadkeys and setfont

Message ID 20230803043937.45082-1-raj.khem@gmail.com
State Accepted, archived
Commit 94ccc7acc4a871f5bb7ab8e135e70b5519eff6ad
Headers show
Series systemd: Point to target binary paths for loadkeys and setfont | expand

Commit Message

Khem Raj Aug. 3, 2023, 4:39 a.m. UTC
with newer systemd, if not specified, these paths are searched on build
host /usr dir

log.do_configure.2373278:Program /usr/sbin/loadkeys found: YES (/usr/sbin/loadkeys)
log.do_configure.2373278:Program /usr/sbin/setfont found: YES (/usr/sbin/setfont)

and if build host happens to have kbd installed then it
uses those locations, this would work fine if the assumption between OE
distro and host distro matches but fail otherwise e.g. on archlinux
these binaries are in /usr/sbin but in OE they are in ${base_bindir}

This results in
qemux86-64 systemd-vconsole-setup[211]: /usr/sbin/loadkeys failed with exit status 1.

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Cc: Luca Boccassi <luca.boccassi@microsoft.com>
---
 meta/recipes-core/systemd/systemd_254.bb | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

Comments

Luca Boccassi Aug. 3, 2023, 9:24 a.m. UTC | #1
Acked-by: Luca Boccassi <bluca@debian.org>

(please don't send to my microsoft email account, it's absolutely rubbish for mailing lists and can't use plain text mode)
Ross Burton Aug. 4, 2023, 3:27 p.m. UTC | #2
On 3 Aug 2023, at 05:39, Khem Raj via lists.openembedded.org <raj.khem=gmail.com@lists.openembedded.org> wrote:
> +                  -Dloadkeys-path=${base_bindir}/loadkeys \
> +                  -Dsetfont-path=${base_bindir}/setfont”


From systemctl status systemd-vconsole-setup:

Aug 04 15:12:21 qemu-generic-arm64 systemd-vconsole-setup[290]: /bin/loadkeys failed with exit status 1.

root@qemu-generic-arm64:~# which loadkeys
/usr/bin/loadkeys

$ oe-pkgdata-util find-path */loadkeys
kbd: /usr/bin/loadkeys

Patch incoming.

Ross
Khem Raj Aug. 4, 2023, 3:37 p.m. UTC | #3
On 8/4/23 8:27 AM, Ross Burton wrote:
> On 3 Aug 2023, at 05:39, Khem Raj via lists.openembedded.org <raj.khem=gmail.com@lists.openembedded.org> wrote:
>> +                  -Dloadkeys-path=${base_bindir}/loadkeys \
>> +                  -Dsetfont-path=${base_bindir}/setfont”
> 
> 
>  From systemctl status systemd-vconsole-setup:
> 
> Aug 04 15:12:21 qemu-generic-arm64 systemd-vconsole-setup[290]: /bin/loadkeys failed with exit status 1.
> 
> root@qemu-generic-arm64:~# which loadkeys
> /usr/bin/loadkeys
> 
> $ oe-pkgdata-util find-path */loadkeys
> kbd: /usr/bin/loadkeys


Hmm, my distro uses usrmerge and bindir and base_bindir are same, hence 
I missed it. all distros have different location to put these binaries 
sadly.

> 
> Patch incoming.
> 

Thanks
-Khem

> Ross
diff mbox series

Patch

diff --git a/meta/recipes-core/systemd/systemd_254.bb b/meta/recipes-core/systemd/systemd_254.bb
index a4cfc7b1f44..653fd6910d3 100644
--- a/meta/recipes-core/systemd/systemd_254.bb
+++ b/meta/recipes-core/systemd/systemd_254.bb
@@ -241,7 +241,9 @@  EXTRA_OEMESON += "-Dnobody-user=nobody \
                   -Dsystem-gid-max=999 \
                   "
 
-# Hardcode target binary paths to avoid using paths from sysroot
+# Hardcode target binary paths to avoid using paths from sysroot or worse
+# it pokes for these binaries on build host and encodes that distro assumption
+# into target
 EXTRA_OEMESON += "-Dkexec-path=${sbindir}/kexec \
                   -Dkmod-path=${base_bindir}/kmod \
                   -Dmount-path=${base_bindir}/mount \
@@ -249,7 +251,9 @@  EXTRA_OEMESON += "-Dkexec-path=${sbindir}/kexec \
                   -Dquotaon-path=${sbindir}/quotaon \
                   -Dsulogin-path=${base_sbindir}/sulogin \
                   -Dnologin-path=${base_sbindir}/nologin \
-                  -Dumount-path=${base_bindir}/umount"
+                  -Dumount-path=${base_bindir}/umount \
+                  -Dloadkeys-path=${base_bindir}/loadkeys \
+                  -Dsetfont-path=${base_bindir}/setfont"
 
 # The 60 seconds is watchdog's default vaule.
 WATCHDOG_TIMEOUT ??= "60"