Commit d0f46841 authored by Simon McVittie's avatar Simon McVittie

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=92028Reviewed-by: Ralf Habacker's avatarRalf Habacker <ralf.habacker@freenet.de>
Tested-by: Ralf Habacker's avatarRalf Habacker <ralf.habacker@freenet.de>
parent 694d63b6
......@@ -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">
......
......@@ -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">
......
......@@ -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>
......
......@@ -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>
......
......@@ -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})
......
......@@ -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
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment