diff --git a/configure.ac b/configure.ac index d705f570..14907fa2 100644 --- a/configure.ac +++ b/configure.ac @@ -285,6 +285,10 @@ AC_EXPAND_DIR(tmpfiles_path, "$libdir/tmpfiles.d") AC_SUBST(tmpfiles_path) AC_DEFINE_UNQUOTED(TMPFILES_PATH, "$tmpfiles_path", [Main tmpfiles.d/, override in /etc]) +AC_EXPAND_DIR(finit_tmpfiles, "$pkglibdir/tmpfiles.d") +AC_SUBST(finit_tmpfiles) +AC_DEFINE_UNQUOTED(FINIT_TMPFILES, "$finit_tmpfiles", [Finit tmpfiles.d/ .conf path]) + AC_EXPAND_DIR(rescue_conf, "$pkglibdir/rescue.conf") AC_DEFINE_UNQUOTED(RESCUE_CONF, "$rescue_conf", [Finit rescue mode .conf]) AC_EXPAND_DIR(sample_conf, "$pkglibdir/sample.conf") diff --git a/plugins/bootmisc.c b/plugins/bootmisc.c index 2e084949..c996b4a6 100644 --- a/plugins/bootmisc.c +++ b/plugins/bootmisc.c @@ -159,15 +159,6 @@ static void setup(void *arg) prev = umask(0); - /* - * REQUIRED for compatibility with, e.g. _PATH_VARRUN! - * Should be set up by OS/dist, this is a fallback. - */ - if (fismnt("/run")) { - rmdir("/var/run"); - ln("../run", "/var/run"); - } - /* Kernel symlinks, e.g. /proc/self/fd -> /dev/fd */ kernel_links(); diff --git a/src/tmpfiles.c b/src/tmpfiles.c index 1e10b122..7909c3d7 100644 --- a/src/tmpfiles.c +++ b/src/tmpfiles.c @@ -439,11 +439,18 @@ static void tmpfiles(char *line) warn("Failed %s operation on path %s", type, path); } +/* + * Only the three last tmpfiles.d/ directories are defined in + * tmpfiles.d(5) as system search paths. Finit adds two more + * before that to have Finit specific ones sorted first, and + * a configure prefix specific one after that for user needs. + */ void tmpfilesd(void) { /* in priority order */ char *dir[] = { - TMPFILES_PATH "/*.conf", /* Finit specific, not in tmpfiles.d(5) */ + FINIT_TMPFILES "/*.conf", + TMPFILES_PATH "/*.conf", "/usr/lib/tmpfiles.d/*.conf", "/run/tmpfiles.d/*.conf", "/etc/tmpfiles.d/*.conf", /* local admin overrides */ @@ -477,6 +484,7 @@ void tmpfilesd(void) if (!fp) continue; +// info("Parsing %s ...", fn); while (!feof(fp)) { char *line; diff --git a/tmpfiles.d/Makefile.am b/tmpfiles.d/Makefile.am index bb6487c3..0ab60a8a 100644 --- a/tmpfiles.d/Makefile.am +++ b/tmpfiles.d/Makefile.am @@ -1,3 +1,6 @@ +finitdir = $(finit_tmpfiles) +dist_finit_DATA = finit.conf + tmpfilesdir = $(tmpfiles_path) dist_tmpfiles_DATA = etc.conf legacy.conf var.conf x11.conf dist_tmpfiles_DATA += dnsmasq.conf frr.conf lldpd.conf openswan.conf \ diff --git a/tmpfiles.d/finit.conf b/tmpfiles.d/finit.conf new file mode 100644 index 00000000..dc5988fb --- /dev/null +++ b/tmpfiles.d/finit.conf @@ -0,0 +1,14 @@ +# Finit expects to run on a Linux FHS compatible system. +# Preferably one where /run is used and is a RAM disk. + +# This should be set up but OS/dist but is sometimes missing +# Note: l+ == only if ../run exists, if so, rm -rf /var/run +l+ /var/run - - - - ../run + +# Finit directories +d /run/finit 0755 - - - +d /run/finit/cond 0755 - - - +d /run/finit/cond/pid 0755 - - - +d /run/finit/cond/sys 0755 - - - +d /run/finit/cond/usr 0755 - - - +