From 1477ca50354a313805690f6c9e581e9d26acefe0 Mon Sep 17 00:00:00 2001 From: Simon McVittie Date: Tue, 20 Jun 2017 13:08:06 +0100 Subject: build: Introduce ${runstatedir} and use it for the pid file By default ${runstatedir} is the same as ${localstatedir}/run, but many Linux distributions configure it to be /run and mount a tmpfs in that location. All other factors being equal, it is preferable to use /run where available because it is guaranteed to be local, whereas traversing /var might involve automounting a networked filesystem (even though /var/run itself is very likely to be a tmpfs). /run or /var/run is currently only used in a few places in dbus, but I plan to make more use of it during the development of . The pid file is not part of the API between dbus and other software (other than distribution init scripts for dbus itself), so we do not need to keep it strictly compatible; so it is OK to move it. We do not yet use /run for the system bus socket, because that is part of the API between D-Bus clients and servers, and has always been "officially" /var/run/dbus/system_bus_socket. tracks the possibility of changing that. Similarly, we do not replace /var/run/console with /run/console, because that path is part of the API between dbus-daemon and the obsolete PAM modules pam_console and pam_foreground that used /var/run/console. tracks the possible future removal of that code path. In the CMake build system, the equivalent of ${runstatedir} remains hard-coded to the equivalent of ${localstatedir}/run for simplicity. For the sort of system-wide installations that would consider redefining ${runstatedir} to /run, the Autotools build system is strongly recommended: in particular this is what Linux distributions are expected to use. Signed-off-by: Simon McVittie Reviewed-by: Philip Withnall Bug: https://bugs.freedesktop.org/show_bug.cgi?id=101569 --- cmake/CMakeLists.txt | 5 +++-- cmake/config.h.cmake | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) (limited to 'cmake') diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index f2bc0e9f..9f41ca74 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -70,6 +70,7 @@ set(DBUS_MACHINE_UUID_FILE ${CMAKE_INSTALL_FULL_LOCALSTATEDIR}/lib/dbus/machin set(DBUS_BINDIR ${CMAKE_INSTALL_FULL_BINDIR}) set(DBUS_DAEMONDIR ${CMAKE_INSTALL_FULL_BINDIR}) set(DBUS_LOCALSTATEDIR ${CMAKE_INSTALL_FULL_LOCALSTATEDIR}) +set(DBUS_RUNSTATEDIR ${CMAKE_INSTALL_FULL_LOCALSTATEDIR}/run) # On Windows this is relative to where we put the bus setup, in # ${datadir}/dbus-1. For simplicity, we only do this if @@ -432,7 +433,7 @@ if(UNIX) endif() # Not used on Windows, where there is no system bus -set (DBUS_SYSTEM_PID_FILE ${DBUS_LOCALSTATEDIR}/run/dbus/pid) +set (DBUS_SYSTEM_PID_FILE ${DBUS_RUNSTATEDIR}/dbus/pid) if (WIN32) set (DBUS_CONSOLE_AUTH_DIR "") @@ -448,7 +449,7 @@ endif (WIN32) # and also to connect to. If this ever changes, it'll need to be split into # two variables, one for the listening address and one for the connecting # address. -set (DBUS_SYSTEM_BUS_DEFAULT_ADDRESS "unix:path=${DBUS_LOCALSTATEDIR}/run/dbus/system_bus_socket" CACHE STRING "system bus default address") +set (DBUS_SYSTEM_BUS_DEFAULT_ADDRESS "unix:path=${DBUS_RUNSTATEDIR}/dbus/system_bus_socket" CACHE STRING "system bus default address") if (WIN32) set (DBUS_SESSION_BUS_LISTEN_ADDRESS "autolaunch:" CACHE STRING "session bus default listening address") diff --git a/cmake/config.h.cmake b/cmake/config.h.cmake index 8305a68a..361d0b0d 100644 --- a/cmake/config.h.cmake +++ b/cmake/config.h.cmake @@ -25,6 +25,7 @@ #cmakedefine DBUS_SESSION_BUS_CONNECT_ADDRESS "@DBUS_SESSION_BUS_CONNECT_ADDRESS@" #cmakedefine DBUS_MACHINE_UUID_FILE "@DBUS_MACHINE_UUID_FILE@" #cmakedefine DBUS_DAEMONDIR "@DBUS_DAEMONDIR@" +#cmakedefine DBUS_RUNSTATEDIR "@DBUS_RUNSTATEDIR@" #cmakedefine DBUS_ENABLE_STATS -- cgit v1.2.3