From: Zoltan Boszormenyi Date: Sun, 28 Jul 2024 14:29:06 +0000 (+0200) Subject: rpcbind: Fix boot time start failure X-Git-Tag: yocto-5.2~2189 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=53fb871f84c99a66485979da2588c1d11d8749e7;p=thirdparty%2Fopenembedded%2Fopenembedded-core-contrib.git rpcbind: Fix boot time start failure With commits 90bc1810 ("bitbake.conf: Add runtimedir") and 561e853e ("rpcbind: Specify state directory under /run") rpcbind still can fail during startup with: rpcbind: /var/run/rpcbind.lock: Read-only file system The lockfile is hardcoded as "/var/run/rpcbind.lock". While it should use the same internal define "RPCBIND_STATEDIR" as the paths for rpcbind.xdr and portmap.xdr, it's not necessary to be patched because of the default value of ${runtimedir} and the presence of the /var/run -> /run symlink. Using --with-statedir=/run/rpcbind adds the line RequiresMountsFor=/run/rpcbind to the service but it doesn't guarantee that /run is writable yet when rpcbind.service starts. Add this guarantee by running rpcbind.service with systemd-tmpfiles-setup.service and add the tmpfiles.d entry for /run/rpcbind. Signed-off-by: Zoltán Böszörményi Signed-off-by: Alexandre Belloni Signed-off-by: Richard Purdie --- diff --git a/meta/recipes-extended/rpcbind/rpcbind/rpcbind.systemd b/meta/recipes-extended/rpcbind/rpcbind/rpcbind.systemd new file mode 100644 index 00000000000..5765751326c --- /dev/null +++ b/meta/recipes-extended/rpcbind/rpcbind/rpcbind.systemd @@ -0,0 +1,3 @@ +[Unit] +# Make sure the runtime directory exists +After=systemd-tmpfiles-setup.service diff --git a/meta/recipes-extended/rpcbind/rpcbind/rpcbind.tmpfiles b/meta/recipes-extended/rpcbind/rpcbind/rpcbind.tmpfiles new file mode 100644 index 00000000000..fecee72c09d --- /dev/null +++ b/meta/recipes-extended/rpcbind/rpcbind/rpcbind.tmpfiles @@ -0,0 +1 @@ +d /run/rpcbind 0755 root root - diff --git a/meta/recipes-extended/rpcbind/rpcbind_1.2.6.bb b/meta/recipes-extended/rpcbind/rpcbind_1.2.6.bb index e751eb631cd..aeca86e564a 100644 --- a/meta/recipes-extended/rpcbind/rpcbind_1.2.6.bb +++ b/meta/recipes-extended/rpcbind/rpcbind_1.2.6.bb @@ -13,6 +13,8 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=b46486e4c4a416602693a711bb5bfa39 \ SRC_URI = "${SOURCEFORGE_MIRROR}/rpcbind/rpcbind-${PV}.tar.bz2 \ file://init.d \ file://rpcbind.conf \ + file://rpcbind.tmpfiles \ + file://rpcbind.systemd \ file://rpcbind_add_option_to_fix_port_number.patch \ file://0001-systemd-use-EnvironmentFile.patch \ " @@ -49,7 +51,15 @@ do_install:append () { ${UNPACKDIR}/init.d > ${D}${sysconfdir}/init.d/rpcbind chmod 0755 ${D}${sysconfdir}/init.d/rpcbind install -m 0644 ${UNPACKDIR}/rpcbind.conf ${D}${sysconfdir}/rpcbind.conf + + install -d ${D}${sysconfdir}/tmpfiles.d + install -m 0644 ${UNPACKDIR}/rpcbind.tmpfiles ${D}${sysconfdir}/tmpfiles.d/rpcbind.conf + + install -d ${D}${systemd_system_unitdir}/rpcbind.service.d + install -m 0644 ${UNPACKDIR}/rpcbind.systemd ${D}${systemd_system_unitdir}/rpcbind.service.d/rpcbind.conf } +FILES:${PN} += "${systemd_system_unitdir}/rpcbind.service.d/rpcbind.conf" + ALTERNATIVE:${PN} = "rpcinfo" ALTERNATIVE_LINK_NAME[rpcinfo] = "${bindir}/rpcinfo"