diff mbox series

[v3] rpcbind: Fix boot time start failure

Message ID 20240728142906.1297662-1-zboszor@gmail.com
State Accepted, archived
Commit 53fb871f84c99a66485979da2588c1d11d8749e7
Headers show
Series [v3] rpcbind: Fix boot time start failure | expand

Commit Message

Zoltán Böszörményi July 28, 2024, 2:29 p.m. UTC
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 <zboszor@gmail.com>
---
 meta/recipes-extended/rpcbind/rpcbind/rpcbind.systemd  |  3 +++
 meta/recipes-extended/rpcbind/rpcbind/rpcbind.tmpfiles |  1 +
 meta/recipes-extended/rpcbind/rpcbind_1.2.6.bb         | 10 ++++++++++
 3 files changed, 14 insertions(+)
 create mode 100644 meta/recipes-extended/rpcbind/rpcbind/rpcbind.systemd
 create mode 100644 meta/recipes-extended/rpcbind/rpcbind/rpcbind.tmpfiles
diff mbox series

Patch

diff --git a/meta/recipes-extended/rpcbind/rpcbind/rpcbind.systemd b/meta/recipes-extended/rpcbind/rpcbind/rpcbind.systemd
new file mode 100644
index 0000000000..5765751326
--- /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 0000000000..fecee72c09
--- /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 e751eb631c..aeca86e564 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"