diff options
author | Simon McVittie <simon.mcvittie@collabora.co.uk> | 2015-10-01 19:17:49 +0100 |
---|---|---|
committer | Simon McVittie <simon.mcvittie@collabora.co.uk> | 2015-10-02 11:24:05 +0100 |
commit | d0f46841380bd55028fcc67bf8b6ef2bdd42f36b (patch) | |
tree | 7826b1cf035299e473976687a9ba4dd70526e8e0 | |
parent | 694d63b679b03d685126b72294adde6fba28aebf (diff) |
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
Reviewed-by: Ralf Habacker <ralf.habacker@freenet.de>
Tested-by: Ralf Habacker <ralf.habacker@freenet.de>
-rw-r--r-- | bus/legacy-config/session.conf.in | 11 | ||||
-rw-r--r-- | bus/legacy-config/system.conf.in | 11 | ||||
-rw-r--r-- | bus/session.conf.in | 6 | ||||
-rw-r--r-- | bus/system.conf.in | 6 | ||||
-rw-r--r-- | cmake/CMakeLists.txt | 15 | ||||
-rw-r--r-- | 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 aaea9104..b35024e6 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 <busconfig> -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 <busconfig> 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. --> <!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-Bus Bus Configuration 1.0//EN" "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd"> diff --git a/bus/legacy-config/system.conf.in b/bus/legacy-config/system.conf.in index 84ed2967..17aba08b 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 <busconfig> -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 <busconfig> 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. --> <!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-Bus Bus Configuration 1.0//EN" "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd"> diff --git a/bus/session.conf.in b/bus/session.conf.in index 97e1f673..affa7f1d 100644 --- a/bus/session.conf.in +++ b/bus/session.conf.in @@ -36,17 +36,17 @@ </policy> <!-- Include legacy configuration location --> - <include ignore_missing="yes">@DBUS_SYSCONFDIR@/dbus-1/session.conf</include> + <include ignore_missing="yes">@SYSCONFDIR_FROM_PKGDATADIR@/dbus-1/session.conf</include> <!-- Config files are placed here that among other things, further restrict the above policy for specific services. --> <includedir>session.d</includedir> - <includedir>@DBUS_SYSCONFDIR@/dbus-1/session.d</includedir> + <includedir>@SYSCONFDIR_FROM_PKGDATADIR@/dbus-1/session.d</includedir> <!-- This is included last so local configuration can override what's in this standard file --> - <include ignore_missing="yes">@DBUS_SYSCONFDIR@/dbus-1/session-local.conf</include> + <include ignore_missing="yes">@SYSCONFDIR_FROM_PKGDATADIR@/dbus-1/session-local.conf</include> <include if_selinux_enabled="yes" selinux_root_relative="yes">contexts/dbus_contexts</include> diff --git a/bus/system.conf.in b/bus/system.conf.in index 3679115e..014f67ee 100644 --- a/bus/system.conf.in +++ b/bus/system.conf.in @@ -98,17 +98,17 @@ </policy> <!-- Include legacy configuration location --> - <include ignore_missing="yes">@DBUS_SYSCONFDIR@/dbus-1/system.conf</include> + <include ignore_missing="yes">@SYSCONFDIR_FROM_PKGDATADIR@/dbus-1/system.conf</include> <!-- Config files are placed here that among other things, punch holes in the above policy for specific services. --> <includedir>system.d</includedir> - <includedir>@DBUS_SYSCONFDIR@/dbus-1/system.d</includedir> + <includedir>@SYSCONFDIR_FROM_PKGDATADIR@/dbus-1/system.d</includedir> <!-- This is included last so local configuration can override what's in this standard file --> - <include ignore_missing="yes">@DBUS_SYSCONFDIR@/dbus-1/system-local.conf</include> + <include ignore_missing="yes">@SYSCONFDIR_FROM_PKGDATADIR@/dbus-1/system-local.conf</include> <include if_selinux_enabled="yes" selinux_root_relative="yes">contexts/dbus_contexts</include> diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index e072dfa0..4db9c67a 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 529e9601..da14b704 100644 --- a/configure.ac +++ b/configure.ac @@ -1690,9 +1690,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 |