summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon McVittie <simon.mcvittie@collabora.co.uk>2015-10-01 19:17:49 +0100
committerSimon McVittie <simon.mcvittie@collabora.co.uk>2015-10-02 11:24:05 +0100
commitd0f46841380bd55028fcc67bf8b6ef2bdd42f36b (patch)
tree7826b1cf035299e473976687a9ba4dd70526e8e0
parent694d63b679b03d685126b72294adde6fba28aebf (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.in11
-rw-r--r--bus/legacy-config/system.conf.in11
-rw-r--r--bus/session.conf.in6
-rw-r--r--bus/system.conf.in6
-rw-r--r--cmake/CMakeLists.txt15
-rw-r--r--configure.ac18
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