2024. 01. 24. 15:01 keltezéssel, Steve Sakoman írta:
From: Joshua Watt <[email protected]>

The state directory must be correctly specified as under /run because
RequiresMountsFor doesn't follow symbolic links which means the unit may
run before /run is mounted if the default of /var/run/rpcbind is kept

Signed-off-by: Joshua Watt <[email protected]>
Signed-off-by: Richard Purdie <[email protected]>
(cherry picked from commit 561e853e97e2cfa325ed310233577a5e124d9049)
Signed-off-by: Steve Sakoman <[email protected]>
---
  meta/recipes-extended/rpcbind/rpcbind_1.2.6.bb | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/meta/recipes-extended/rpcbind/rpcbind_1.2.6.bb 
b/meta/recipes-extended/rpcbind/rpcbind_1.2.6.bb
index dd89726afc..dbd4d32e0a 100644
--- a/meta/recipes-extended/rpcbind/rpcbind_1.2.6.bb
+++ b/meta/recipes-extended/rpcbind/rpcbind_1.2.6.bb
@@ -40,7 +40,7 @@ PACKAGECONFIG[systemd] = 
"--with-systemdsystemunitdir=${systemd_system_unitdir}/
                            systemd \
  "
-EXTRA_OECONF += " --enable-warmstarts --with-rpcuser=rpc"
+EXTRA_OECONF += " --enable-warmstarts --with-rpcuser=rpc 
--with-statedir=${runtimedir}/rpcbind"

This backport didn't fix the rpcbind.service failure that
I can also reproduce in scarthgap.

The change requires "runtimedir" to be set, but it's empty.
rpcbind.service ends up with:

RequiresMountsFor=/rpcbind

instead of

RequiresMountsFor=/run/rpcbind

When editing the service manually or leaving it as,
rpcbind.service fails during boot with:

rpcbind[455]: rpcbind: /var/run/rpcbind.lock: Read-only file system

FWIW, the "runtimedir" variable in bitbake.conf was introduced
in scarthgap

commit 90bc18108230f6d41a50cebc8348444e119e95bf
Author: Joshua Watt <[email protected]>
Date:   Mon Dec 18 08:38:02 2023 -0700

    bitbake.conf: Add runtimedir

    Adds the path to the runtime state directory (/run). In particular,
    systemd units need to have the correct path to the runtime directory
    because RequiresMountsFor doesn't follow symbolic links. This means that
    if a unit calls out a directory in /var/run (a symbolic link to /run),
    it may actually start before /run is mounted. The fix is to have the
    unit specify a directory in /run instead.

    Signed-off-by: Joshua Watt <[email protected]>
    Signed-off-by: Richard Purdie <[email protected]>
diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf
index e7826e7af9..83b12cbc15 100644
--- a/meta/conf/bitbake.conf
+++ b/meta/conf/bitbake.conf
@@ -31,6 +31,7 @@ export sysconfdir = "${base_prefix}/etc"
 export servicedir = "${base_prefix}/srv"
 export sharedstatedir = "${base_prefix}/com"
 export localstatedir = "${base_prefix}/var"
+runtimedir = "${base_prefix}/run"
 export datadir = "${prefix}/share"
 export infodir = "${datadir}/info"
 export mandir = "${datadir}/man"

This commit (with or without the export that other variables have around it)
applied to nanbield does not fix the rpcbind.service failure.

I just sent the hopefully proper fix for master that will also need
to be backported to scarthgap and nanbield, plus the runtimedir
commit to nanbield.

do_install:append () {
        install -d ${D}${sysconfdir}/init.d




-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#202525): 
https://lists.openembedded.org/g/openembedded-core/message/202525
Mute This Topic: https://lists.openembedded.org/mt/103931999/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to