2013-06-06 01:53:30 +02:00
|
|
|
################################################################################
|
2007-01-14 04:45:06 +01:00
|
|
|
#
|
|
|
|
# dbus
|
|
|
|
#
|
2013-06-06 01:53:30 +02:00
|
|
|
################################################################################
|
2013-05-08 08:12:38 +02:00
|
|
|
|
package/dbus-broker: new package
dbus-broker is an alternate implementation of a dbus daemon. It can be
used as a drop-in replacement for the system bus daemon, as well as the
session bus daemon.
dbus-broker is (basically, and as far as we're concerned in Buildroot)
split in two components:
- the actual message bus daemon, that relays messages across clients
- a launcher, which is responsible for setting various aspects of the
bus, like setting the policy et al. and opening the socket(s) the
message bus daemon will have to listen on...
The launcher can only be used in a systemd setup (it makes heavy use of
systemd facilities), while the message bus is generic. However, the
message bus daemon is useless without a launcher. There does not exist a
non-systemd launcher, which makes dbus-broker actually a systemd-only
package; this can be revisited when/if a non-systemd launcher appears.
Note, however, that libdbus is not provided by dbus-broker. People who
want to use dbus-broker as the bus daemon, and need libdbus, will have
to enable both.
If only original dbus is enabled, things stay as they are now. This is
for the moment still the default, though we should change that once
dbus-broker has proven to work.
If only dbus-broker is enabled, it installs the necessary socket
activation units and dbus configuration files. The daemon is not
launched at boot time; instead it is socket-activated when a client
connects to the bus the first time.
If both original dbus and dbus-broker are enabled, we have a conflict
with the configuration files, the socket activation file. Also, original
dbus activates the daemon as a service in multi-user.target.wants, so it
is not socket-activated and dbus-broker would never get the opportunity
to start.
Therefore, original dbus is updated to remove the conflicting files and
the activation of dbus-daemon. Since dbus-broker installs some of the
same file that original dbus removes, we have to add a dependency to
make sure that the ones installed by dbus-broker aren't removed.
If both are installed, it is still possible to revert back to using
original dbus as system bus:
- at build-time: by calling systemctl enable/disable from a
post-build script (preferred), or by providing drop-in units
or presets in an overlay (less preferred) or custom skeleton
(as a last resort),
- at runtime (on a RW filesystem): by calling systemctl
enable/disable
Note about the user: the path to the system bus socket is a so-called
"well-known location": it is expected to be there, by spec. Moving it
elsewhere is going to break existing programs. So, the user running the
system bus daemon must be able to create that socket.
As we may have two packages providing a system bus daemon, they have to
be both able to create the socket, and thus must both be able to write
in the directory containing the socket. And since they can be switched
at runtime, they must be running as the same user.
We can't just reference the original dbus user, so we duplicate the
entry. What is important, is that the user be named 'dbus', as that's
what we use in both cases.
If both original dbus and dbus-broker are selected, the dbus user is
included twice, but the specifications are identical so that's fine.
mkusers will create the user only once.
Finally, the licensing terms are pretty trivial for dbus-broker itself,
but it makes use of third-party code that it inherits as git submodules
(that are bundled in the release archive). Thus the licensing is a bit
convoluted... The third-party codes claim to be licensed as "Apache-2.0
and LGP-2.1+" in their AUTHORS files, but at the same time claim
"**Apache-2.0** OR **LGPL-2.1-or-later**" in their README files. The
individual source files (that are used) do not seem to have any
licensing header to clarify the situation. So we represent the situation
with "Apache-2.0 and/or LGPL-2.1+".
Signed-off-by: Norbert Lange <nolange79@gmail.com>
[yann.morin.1998@free.fr:
- don't select systemd; depend on it instead
- only install config files and systemd units without original dbus
- install a user to run the message bus as
- fix licensing info
- entirely reword and extend the commit log
- add myself to DEVELOPERS as well
]
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
[Arnout:
- Use dbus-broker as system bus if both are selected.
- Remove conflicting files from dbus installation.
- Simplify symbolic link creation.
- Add comment to remind update of session.conf and system.conf.
]
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
2022-01-09 23:16:47 +01:00
|
|
|
# When updating dbus, check if there are changes in session.conf and
|
|
|
|
# system.conf, and update the versions in the dbus-broker package accordingly.
|
2022-10-15 00:20:51 +02:00
|
|
|
DBUS_VERSION = 1.12.24
|
2017-07-06 20:16:30 +02:00
|
|
|
DBUS_SITE = https://dbus.freedesktop.org/releases/dbus
|
2017-03-30 15:43:45 +02:00
|
|
|
DBUS_LICENSE = AFL-2.1 or GPL-2.0+ (library, tools), GPL-2.0+ (tools)
|
2013-05-08 08:12:38 +02:00
|
|
|
DBUS_LICENSE_FILES = COPYING
|
2020-12-04 16:46:01 +01:00
|
|
|
DBUS_CPE_ID_VENDOR = d-bus_project
|
2021-01-18 18:41:51 +01:00
|
|
|
DBUS_CPE_ID_PRODUCT = d-bus
|
2009-02-22 21:12:50 +01:00
|
|
|
DBUS_INSTALL_STAGING = YES
|
|
|
|
|
2013-08-29 23:30:55 +02:00
|
|
|
define DBUS_PERMISSIONS
|
2020-06-06 00:52:45 +02:00
|
|
|
/usr/libexec/dbus-daemon-launch-helper f 4750 0 dbus - - - - -
|
2013-08-29 23:30:55 +02:00
|
|
|
endef
|
|
|
|
|
2014-10-27 19:18:54 +01:00
|
|
|
define DBUS_USERS
|
2020-07-17 23:55:20 +02:00
|
|
|
dbus -1 dbus -1 * /run/dbus - dbus DBus messagebus user
|
2014-10-27 19:18:54 +01:00
|
|
|
endef
|
|
|
|
|
2014-06-16 17:11:10 +02:00
|
|
|
DBUS_DEPENDENCIES = host-pkgconf expat
|
2007-01-14 04:45:06 +01:00
|
|
|
|
2020-07-31 12:10:32 +02:00
|
|
|
DBUS_SELINUX_MODULES = dbus
|
|
|
|
|
2014-12-24 08:54:24 +01:00
|
|
|
DBUS_CONF_OPTS = \
|
|
|
|
--with-dbus-user=dbus \
|
|
|
|
--disable-tests \
|
|
|
|
--disable-asserts \
|
|
|
|
--disable-xml-docs \
|
|
|
|
--disable-doxygen-docs \
|
2020-07-17 23:55:20 +02:00
|
|
|
--with-system-socket=/run/dbus/system_bus_socket \
|
|
|
|
--with-system-pid-file=/run/messagebus.pid
|
2007-01-14 04:45:06 +01:00
|
|
|
|
2014-12-03 22:41:29 +01:00
|
|
|
ifeq ($(BR2_STATIC_LIBS),y)
|
2014-09-27 21:32:44 +02:00
|
|
|
DBUS_CONF_OPTS += LIBS='-pthread'
|
2013-10-06 01:39:55 +02:00
|
|
|
endif
|
|
|
|
|
2012-12-14 01:23:34 +01:00
|
|
|
ifeq ($(BR2_microblaze),y)
|
|
|
|
# microblaze toolchain doesn't provide inotify_rm_* but does have sys/inotify.h
|
2014-09-27 21:32:44 +02:00
|
|
|
DBUS_CONF_OPTS += --disable-inotify
|
2012-12-14 01:23:34 +01:00
|
|
|
endif
|
|
|
|
|
2015-07-14 22:20:21 +02:00
|
|
|
ifeq ($(BR2_PACKAGE_LIBSELINUX),y)
|
|
|
|
DBUS_CONF_OPTS += --enable-selinux
|
|
|
|
DBUS_DEPENDENCIES += libselinux
|
|
|
|
else
|
|
|
|
DBUS_CONF_OPTS += --disable-selinux
|
|
|
|
endif
|
|
|
|
|
2015-12-30 17:27:59 +01:00
|
|
|
ifeq ($(BR2_PACKAGE_AUDIT)$(BR2_PACKAGE_LIBCAP_NG),yy)
|
2015-07-14 22:20:21 +02:00
|
|
|
DBUS_CONF_OPTS += --enable-libaudit
|
|
|
|
DBUS_DEPENDENCIES += audit libcap-ng
|
|
|
|
else
|
|
|
|
DBUS_CONF_OPTS += --disable-libaudit
|
|
|
|
endif
|
|
|
|
|
2009-03-16 21:57:56 +01:00
|
|
|
ifeq ($(BR2_PACKAGE_XLIB_LIBX11),y)
|
2014-09-27 21:32:44 +02:00
|
|
|
DBUS_CONF_OPTS += --with-x
|
2009-03-16 21:57:56 +01:00
|
|
|
DBUS_DEPENDENCIES += xlib_libX11
|
2015-10-12 21:21:03 +02:00
|
|
|
ifeq ($(BR2_PACKAGE_XLIB_LIBSM),y)
|
|
|
|
DBUS_DEPENDENCIES += xlib_libSM
|
|
|
|
endif
|
2009-03-16 21:57:56 +01:00
|
|
|
else
|
2014-09-27 21:32:44 +02:00
|
|
|
DBUS_CONF_OPTS += --without-x
|
2009-03-16 21:57:56 +01:00
|
|
|
endif
|
|
|
|
|
2014-07-03 18:57:34 +02:00
|
|
|
ifeq ($(BR2_INIT_SYSTEMD),y)
|
2014-09-27 21:32:44 +02:00
|
|
|
DBUS_CONF_OPTS += \
|
2014-07-03 18:57:34 +02:00
|
|
|
--enable-systemd \
|
2015-03-20 20:13:57 +01:00
|
|
|
--with-systemdsystemunitdir=/usr/lib/systemd/system
|
2014-07-03 18:57:34 +02:00
|
|
|
DBUS_DEPENDENCIES += systemd
|
|
|
|
else
|
2014-09-27 21:32:44 +02:00
|
|
|
DBUS_CONF_OPTS += --disable-systemd
|
2012-03-23 16:49:52 +01:00
|
|
|
endif
|
|
|
|
|
2010-09-01 23:58:12 +02:00
|
|
|
# fix rebuild (dbus makefile errors out if /var/lib/dbus is a symlink)
|
|
|
|
define DBUS_REMOVE_VAR_LIB_DBUS
|
|
|
|
rm -rf $(TARGET_DIR)/var/lib/dbus
|
|
|
|
endef
|
|
|
|
|
2017-05-06 02:51:18 +02:00
|
|
|
DBUS_PRE_INSTALL_TARGET_HOOKS += DBUS_REMOVE_VAR_LIB_DBUS
|
2010-09-01 23:58:12 +02:00
|
|
|
|
|
|
|
define DBUS_REMOVE_DEVFILES
|
|
|
|
rm -rf $(TARGET_DIR)/usr/lib/dbus-1.0
|
|
|
|
endef
|
|
|
|
|
|
|
|
DBUS_POST_INSTALL_TARGET_HOOKS += DBUS_REMOVE_DEVFILES
|
|
|
|
|
2015-01-19 17:14:03 +01:00
|
|
|
define DBUS_INSTALL_INIT_SYSV
|
|
|
|
$(INSTALL) -m 0755 -D package/dbus/S30dbus \
|
|
|
|
$(TARGET_DIR)/etc/init.d/S30dbus
|
|
|
|
|
2013-06-29 15:27:04 +02:00
|
|
|
mkdir -p $(TARGET_DIR)/var/lib
|
2010-09-01 23:58:12 +02:00
|
|
|
rm -rf $(TARGET_DIR)/var/lib/dbus
|
|
|
|
ln -sf /tmp/dbus $(TARGET_DIR)/var/lib/dbus
|
|
|
|
endef
|
|
|
|
|
package/dbus-broker: new package
dbus-broker is an alternate implementation of a dbus daemon. It can be
used as a drop-in replacement for the system bus daemon, as well as the
session bus daemon.
dbus-broker is (basically, and as far as we're concerned in Buildroot)
split in two components:
- the actual message bus daemon, that relays messages across clients
- a launcher, which is responsible for setting various aspects of the
bus, like setting the policy et al. and opening the socket(s) the
message bus daemon will have to listen on...
The launcher can only be used in a systemd setup (it makes heavy use of
systemd facilities), while the message bus is generic. However, the
message bus daemon is useless without a launcher. There does not exist a
non-systemd launcher, which makes dbus-broker actually a systemd-only
package; this can be revisited when/if a non-systemd launcher appears.
Note, however, that libdbus is not provided by dbus-broker. People who
want to use dbus-broker as the bus daemon, and need libdbus, will have
to enable both.
If only original dbus is enabled, things stay as they are now. This is
for the moment still the default, though we should change that once
dbus-broker has proven to work.
If only dbus-broker is enabled, it installs the necessary socket
activation units and dbus configuration files. The daemon is not
launched at boot time; instead it is socket-activated when a client
connects to the bus the first time.
If both original dbus and dbus-broker are enabled, we have a conflict
with the configuration files, the socket activation file. Also, original
dbus activates the daemon as a service in multi-user.target.wants, so it
is not socket-activated and dbus-broker would never get the opportunity
to start.
Therefore, original dbus is updated to remove the conflicting files and
the activation of dbus-daemon. Since dbus-broker installs some of the
same file that original dbus removes, we have to add a dependency to
make sure that the ones installed by dbus-broker aren't removed.
If both are installed, it is still possible to revert back to using
original dbus as system bus:
- at build-time: by calling systemctl enable/disable from a
post-build script (preferred), or by providing drop-in units
or presets in an overlay (less preferred) or custom skeleton
(as a last resort),
- at runtime (on a RW filesystem): by calling systemctl
enable/disable
Note about the user: the path to the system bus socket is a so-called
"well-known location": it is expected to be there, by spec. Moving it
elsewhere is going to break existing programs. So, the user running the
system bus daemon must be able to create that socket.
As we may have two packages providing a system bus daemon, they have to
be both able to create the socket, and thus must both be able to write
in the directory containing the socket. And since they can be switched
at runtime, they must be running as the same user.
We can't just reference the original dbus user, so we duplicate the
entry. What is important, is that the user be named 'dbus', as that's
what we use in both cases.
If both original dbus and dbus-broker are selected, the dbus user is
included twice, but the specifications are identical so that's fine.
mkusers will create the user only once.
Finally, the licensing terms are pretty trivial for dbus-broker itself,
but it makes use of third-party code that it inherits as git submodules
(that are bundled in the release archive). Thus the licensing is a bit
convoluted... The third-party codes claim to be licensed as "Apache-2.0
and LGP-2.1+" in their AUTHORS files, but at the same time claim
"**Apache-2.0** OR **LGPL-2.1-or-later**" in their README files. The
individual source files (that are used) do not seem to have any
licensing header to clarify the situation. So we represent the situation
with "Apache-2.0 and/or LGPL-2.1+".
Signed-off-by: Norbert Lange <nolange79@gmail.com>
[yann.morin.1998@free.fr:
- don't select systemd; depend on it instead
- only install config files and systemd units without original dbus
- install a user to run the message bus as
- fix licensing info
- entirely reword and extend the commit log
- add myself to DEVELOPERS as well
]
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
[Arnout:
- Use dbus-broker as system bus if both are selected.
- Remove conflicting files from dbus installation.
- Simplify symbolic link creation.
- Add comment to remind update of session.conf and system.conf.
]
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
2022-01-09 23:16:47 +01:00
|
|
|
# If dbus-broker is installed, don't install the activation links for
|
|
|
|
# dbus itself, not the configuration files. They will be overwritten
|
|
|
|
# by dbus-broker
|
|
|
|
ifeq ($(BR2_PACKAGE_DBUS_BROKER),y)
|
|
|
|
define DBUS_REMOVE_SYSTEMD_ACTIVATION_LINKS
|
|
|
|
rm -f $(TARGET_DIR)/usr/lib/systemd/system/multi-user.target.wants/dbus.service
|
|
|
|
rm -f $(TARGET_DIR)/usr/lib/systemd/system/sockets.target.wants/dbus.socket
|
|
|
|
rm -f $(TARGET_DIR)/usr/lib/systemd/system/dbus.socket
|
|
|
|
rm -f $(TARGET_DIR)/usr/share/dbus-1/session.conf
|
|
|
|
rm -f $(TARGET_DIR)/usr/share/dbus-1/system.conf
|
|
|
|
endef
|
|
|
|
DBUS_POST_INSTALL_TARGET_HOOKS += DBUS_REMOVE_SYSTEMD_ACTIVATION_LINKS
|
|
|
|
endif
|
|
|
|
|
2015-01-19 17:14:03 +01:00
|
|
|
define DBUS_INSTALL_INIT_SYSTEMD
|
|
|
|
mkdir -p $(TARGET_DIR)/var/lib/dbus
|
|
|
|
ln -sf /etc/machine-id $(TARGET_DIR)/var/lib/dbus/machine-id
|
2013-11-19 14:02:03 +01:00
|
|
|
endef
|
|
|
|
|
2012-10-22 17:47:52 +02:00
|
|
|
HOST_DBUS_DEPENDENCIES = host-pkgconf host-expat
|
2014-09-27 21:32:44 +02:00
|
|
|
HOST_DBUS_CONF_OPTS = \
|
2014-12-22 09:12:05 +01:00
|
|
|
--with-dbus-user=dbus \
|
|
|
|
--disable-tests \
|
|
|
|
--disable-asserts \
|
|
|
|
--disable-selinux \
|
|
|
|
--disable-xml-docs \
|
|
|
|
--disable-doxygen-docs \
|
2020-07-28 12:45:19 +02:00
|
|
|
--disable-systemd \
|
2020-09-20 12:50:04 +02:00
|
|
|
--without-x
|
2009-03-16 21:58:15 +01:00
|
|
|
|
2009-11-03 00:09:13 +01:00
|
|
|
# dbus for the host
|
.mk files: bulk aligment and whitespace cleanup of assignments
The Buildroot coding style defines one space around make assignments and
does not align the assignment symbols.
This patch does a bulk fix of offending packages. The package
infrastructures (or more in general assignments to calculated variable
names, like $(2)_FOO) are not touched.
Alignment of line continuation characters (\) is kept as-is.
The sed command used to do this replacement is:
find * -name "*.mk" | xargs sed -i \
-e 's#^\([A-Z0-9a-z_]\+\)\s*\([?:+]\?=\)\s*$#\1 \2#'
-e 's#^\([A-Z0-9a-z_]\+\)\s*\([?:+]\?=\)\s*\([^\\]\+\)$#\1 \2 \3#'
-e 's#^\([A-Z0-9a-z_]\+\)\s*\([?:+]\?=\)\s*\([^\\ \t]\+\s*\\\)\s*$#\1 \2 \3#'
-e 's#^\([A-Z0-9a-z_]\+\)\s*\([?:+]\?=\)\(\s*\\\)#\1 \2\3#'
Brief explanation of this command:
^\([A-Z0-9a-z_]\+\) a regular variable at the beginning of the line
\([?:+]\?=\) any assignment character =, :=, ?=, +=
\([^\\]\+\) any string not containing a line continuation
\([^\\ \t]\+\s*\\\) string, optional whitespace, followed by a
line continuation character
\(\s*\\\) optional whitespace, followed by a line
continuation character
Hence, the first subexpression handles empty assignments, the second
handles regular assignments, the third handles regular assignments with
line continuation, and the fourth empty assignments with line
continuation.
This expression was tested on following test text: (initial tab not
included)
FOO = spaces before
FOO = spaces before and after
FOO = tab before
FOO = tab and spaces before
FOO = tab after
FOO = tab and spaces after
FOO = spaces and tab after
FOO = \
FOO = bar \
FOO = bar space \
FOO = \
GENIMAGE_DEPENDENCIES = host-pkgconf libconfuse
FOO += spaces before
FOO ?= spaces before and after
FOO :=
FOO =
FOO =
FOO =
FOO =
$(MAKE1) CROSS_COMPILE=$(TARGET_CROSS) -C
AT91BOOTSTRAP3_DEFCONFIG = \
AXEL_DISABLE_I18N=--i18n=0
After this bulk change, following manual fixups were done:
- fix line continuation alignment in cegui06 and spice (the sed
expression leaves the number of whitespace between the value and line
continuation character intact, but the whitespace before that could have
changed, causing misalignment.
- qt5base was reverted, as this package uses extensive alignment which
actually makes the code more readable.
Finally, the end result was manually reviewed.
Signed-off-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
Cc: Yann E. Morin <yann.morin.1998@free.fr>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2014-10-07 09:06:03 +02:00
|
|
|
DBUS_HOST_INTROSPECT = $(HOST_DBUS_DIR)/introspect.xml
|
2009-03-16 21:58:15 +01:00
|
|
|
|
2009-11-03 00:09:13 +01:00
|
|
|
HOST_DBUS_GEN_INTROSPECT = \
|
2017-07-05 13:14:19 +02:00
|
|
|
$(HOST_DIR)/bin/dbus-daemon --introspect > $(DBUS_HOST_INTROSPECT)
|
2009-03-17 14:48:15 +01:00
|
|
|
|
2009-11-03 00:09:13 +01:00
|
|
|
HOST_DBUS_POST_INSTALL_HOOKS += HOST_DBUS_GEN_INTROSPECT
|
2009-03-16 21:58:15 +01:00
|
|
|
|
2012-07-03 00:07:32 +02:00
|
|
|
$(eval $(autotools-package))
|
2012-07-03 00:06:54 +02:00
|
|
|
$(eval $(host-autotools-package))
|