From 07a607dd52b15ba0b00250d8fd6c0eb364e56a9f Mon Sep 17 00:00:00 2001 From: Simon McVittie Date: Thu, 1 Oct 2015 19:17:49 +0100 Subject: [PATCH] On Windows, load local configuration relative to bus setup This makes an installed tree with /some-prefix/ etc/ dbus-1/ session-local.conf share/ dbus-1/ session.conf relocatable to any location. Bug: https://bugs.freedesktop.org/show_bug.cgi?id=92028 --- bus/legacy-config/session.conf.in | 11 +++++------ bus/legacy-config/system.conf.in | 11 +++++------ bus/session.conf.in | 6 +++--- bus/system.conf.in | 6 +++--- cmake/CMakeLists.txt | 15 ++++++++++++++- configure.ac | 18 +++++++++++++++--- 6 files changed, 45 insertions(+), 22 deletions(-) diff --git a/bus/legacy-config/session.conf.in b/bus/legacy-config/session.conf.in index aaea910..b35024e 100644 --- a/bus/legacy-config/session.conf.in +++ b/bus/legacy-config/session.conf.in @@ -3,17 +3,16 @@ This configuration file is no longer required and may be removed. In older versions of dbus, this file defined the behaviour of the well-known session bus. That behaviour is now determined by -@DBUS_DATADIR@/dbus-1/session.conf, which should not be edited. +@DATADIR_FROM_PKGSYSCONFDIR@/dbus-1/session.conf, which should not be edited. For local configuration changes, create a file -@DBUS_SYSCONFDIR@/dbus-1/session-local.conf or files matching -@DBUS_SYSCONFDIR@/dbus-1/session.d/*.conf, with a -element containing configuration directives. These directives can -override D-Bus or OS defaults. +session-local.conf or files matching session.d/*.conf in the same directory +as this one, with a element containing configuration directives. +These directives can override D-Bus or OS defaults. For upstream or distribution-wide defaults that can be overridden by a local sysadmin, create files matching -@DBUS_DATADIR@/dbus-1/session.d/*.conf instead. +@DATADIR_FROM_PKGSYSCONFDIR@/dbus-1/session.d/*.conf instead. --> diff --git a/bus/legacy-config/system.conf.in b/bus/legacy-config/system.conf.in index 84ed296..17aba08 100644 --- a/bus/legacy-config/system.conf.in +++ b/bus/legacy-config/system.conf.in @@ -3,17 +3,16 @@ This configuration file is no longer required and may be removed. In older versions of dbus, this file defined the behaviour of the well-known system bus. That behaviour is now determined by -@DBUS_DATADIR@/dbus-1/system.conf, which should not be edited. +@DATADIR_FROM_PKGSYSCONFDIR@/dbus-1/system.conf, which should not be edited. For local configuration changes, create a file -@DBUS_SYSCONFDIR@/dbus-1/system-local.conf or files matching -@DBUS_SYSCONFDIR@/dbus-1/system.d/*.conf, with a -element containing configuration directives. These directives can -override D-Bus or OS defaults. +system-local.conf or files matching system.d/*.conf in the same directory +as this one, with a element containing configuration directives. +These directives can override D-Bus or OS defaults. For upstream or distribution-wide defaults that can be overridden by a local sysadmin, create files matching -@DBUS_DATADIR@/dbus-1/system.d/*.conf instead. +@DATADIR_FROM_PKGSYSCONFDIR@/dbus-1/system.d/*.conf instead. --> diff --git a/bus/session.conf.in b/bus/session.conf.in index 97e1f67..affa7f1 100644 --- a/bus/session.conf.in +++ b/bus/session.conf.in @@ -36,17 +36,17 @@ - @DBUS_SYSCONFDIR@/dbus-1/session.conf + @SYSCONFDIR_FROM_PKGDATADIR@/dbus-1/session.conf session.d - @DBUS_SYSCONFDIR@/dbus-1/session.d + @SYSCONFDIR_FROM_PKGDATADIR@/dbus-1/session.d - @DBUS_SYSCONFDIR@/dbus-1/session-local.conf + @SYSCONFDIR_FROM_PKGDATADIR@/dbus-1/session-local.conf contexts/dbus_contexts diff --git a/bus/system.conf.in b/bus/system.conf.in index 3679115..014f67e 100644 --- a/bus/system.conf.in +++ b/bus/system.conf.in @@ -98,17 +98,17 @@ - @DBUS_SYSCONFDIR@/dbus-1/system.conf + @SYSCONFDIR_FROM_PKGDATADIR@/dbus-1/system.conf system.d - @DBUS_SYSCONFDIR@/dbus-1/system.d + @SYSCONFDIR_FROM_PKGDATADIR@/dbus-1/system.d - @DBUS_SYSCONFDIR@/dbus-1/system-local.conf + @SYSCONFDIR_FROM_PKGDATADIR@/dbus-1/system-local.conf contexts/dbus_contexts diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index e072dfa..4db9c67 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -92,7 +92,20 @@ set(DBUS_MACHINE_UUID_FILE ${DBUS_INSTALL_DIR}/lib/dbus/machine-id) set(DBUS_BINDIR ${EXPANDED_BINDIR}) set(DBUS_DAEMONDIR ${EXPANDED_BINDIR}) set(DBUS_LOCALSTATEDIR ${EXPANDED_LOCALSTATEDIR}) -set(DBUS_SYSCONFDIR ${EXPANDED_SYSCONFDIR}) + +# On Windows this is relative to where we put the bus setup, in +# ${datadir}/dbus-1. For simplicity, we only do this if +# ${sysconfdir} = ${prefix}/etc and ${datadir} = ${prefix}/share. +# +# On Unix, or on Windows with weird install layouts, it's the absolute path. +if(WIN32 AND ${EXPANDED_SYSCONFDIR} STREQUAL ${prefix}/etc AND ${EXPANDED_DATADIR} STREQUAL ${prefix}/share) +set(SYSCONFDIR_FROM_PKGDATADIR ../../etc) +set(DATADIR_FROM_PKGSYSCONFDIR ../../share) +else() +set(SYSCONFDIR_FROM_PKGDATADIR ${EXPANDED_SYSCONFDIR}) +set(DATADIR_FROM_PKGSYSCONFDIR ${EXPANDED_DATADIR}) +endif() + set(DBUS_LIBEXECDIR ${EXPANDED_LIBDIR}) set(DBUS_DATADIR ${EXPANDED_DATADIR}) diff --git a/configure.ac b/configure.ac index b41b221..6078ce7 100644 --- a/configure.ac +++ b/configure.ac @@ -1651,9 +1651,21 @@ AC_SUBST(DBUS_LIBEXECDIR) AC_DEFINE_UNQUOTED(DBUS_LIBEXECDIR,"$DBUS_LIBEXECDIR", [Directory for installing the libexec binaries]) #### Directory to source sysconfdir configuration from -DBUS_SYSCONFDIR="$EXPANDED_SYSCONFDIR" -AC_SUBST(DBUS_SYSCONFDIR) -AC_DEFINE_UNQUOTED(DBUS_SYSCONFDIR,"$DBUS_SYSCONFDIR", [Directory to source sysconfdir configuration from]) + +# On Windows this is relative to where we put the bus setup, in +# ${datadir}/dbus-1. For simplicity, we only do this if +# ${sysconfdir} = ${prefix}/etc and ${datadir} = ${prefix}/share. +# +# On Unix, or on Windows with weird install layouts, it's the absolute path. +AS_IF([test "${dbus_win}" = yes && \ + test "$EXPANDED_SYSCONFDIR" = "$EXPANDED_PREFIX/etc" && \ + test "$EXPANDED_DATADIR" = "$EXPANDED_PREFIX/share"], + [SYSCONFDIR_FROM_PKGDATADIR="../../etc" + DATADIR_FROM_PKGSYSCONFDIR="../../share"], + [SYSCONFDIR_FROM_PKGDATADIR="$EXPANDED_SYSCONFDIR" + DATADIR_FROM_PKGSYSCONFDIR="$EXPANDED_DATADIR"]) +AC_SUBST([SYSCONFDIR_FROM_PKGDATADIR]) +AC_SUBST([DATADIR_FROM_PKGSYSCONFDIR]) #### Tell tests where to find certain stuff in builddir -- 2.6.0