xref: /aosp_15_r20/external/libwebsockets/lib/roles/dbus/README.md (revision 1c60b9aca93fdbc9b5f19b2d2194c91294b22281)
1*1c60b9acSAndroid Build Coastguard Worker# DBUS Role Support
2*1c60b9acSAndroid Build Coastguard Worker
3*1c60b9acSAndroid Build Coastguard Worker## DBUS-related distro packages
4*1c60b9acSAndroid Build Coastguard Worker
5*1c60b9acSAndroid Build Coastguard WorkerFedora: dbus-devel
6*1c60b9acSAndroid Build Coastguard WorkerDebian / Ubuntu: libdbus-1-dev
7*1c60b9acSAndroid Build Coastguard Worker
8*1c60b9acSAndroid Build Coastguard Worker## Enabling for build at cmake
9*1c60b9acSAndroid Build Coastguard Worker
10*1c60b9acSAndroid Build Coastguard WorkerFedora example:
11*1c60b9acSAndroid Build Coastguard Worker```
12*1c60b9acSAndroid Build Coastguard Worker$ cmake .. -DLWS_ROLE_DBUS=1 -DLWS_DBUS_INCLUDE2="/usr/lib64/dbus-1.0/include"
13*1c60b9acSAndroid Build Coastguard Worker```
14*1c60b9acSAndroid Build Coastguard Worker
15*1c60b9acSAndroid Build Coastguard WorkerUbuntu example:
16*1c60b9acSAndroid Build Coastguard Worker```
17*1c60b9acSAndroid Build Coastguard Worker$ cmake .. -DLWS_ROLE_DBUS=1 -DLWS_DBUS_INCLUDE2="/usr/lib/x86_64-linux-gnu/dbus-1.0/include"
18*1c60b9acSAndroid Build Coastguard Worker```
19*1c60b9acSAndroid Build Coastguard Worker
20*1c60b9acSAndroid Build Coastguard WorkerDbus requires two include paths, which you can force by setting `LWS_DBUS_INCLUDE1`
21*1c60b9acSAndroid Build Coastguard Workerand `LWS_DBUS_INCLUDE2`.  Although INCLUDE1 is usually guessable, both can be
22*1c60b9acSAndroid Build Coastguard Workerforced to allow cross-build.
23*1c60b9acSAndroid Build Coastguard Worker
24*1c60b9acSAndroid Build Coastguard WorkerIf these are not forced, then lws cmake will try to check some popular places,
25*1c60b9acSAndroid Build Coastguard Workerfor `LWS_DBUS_INCLUDE1`, on both Fedora and Debian / Ubuntu, this is
26*1c60b9acSAndroid Build Coastguard Worker`/usr/include/dbus-1.0`... if the directory exists, it is used.
27*1c60b9acSAndroid Build Coastguard Worker
28*1c60b9acSAndroid Build Coastguard WorkerFor `LWS_DBUS_INCLUDE2`, it is the arch-specific dbus header which may be
29*1c60b9acSAndroid Build Coastguard Workerpackaged separately than the main dbus headers.  On Fedora, this is in
30*1c60b9acSAndroid Build Coastguard Worker`/usr/lib[64]/dbus-1.0/include`... if not given externally, lws cmake will
31*1c60b9acSAndroid Build Coastguard Workertry `/usr/lib64/dbus-1.0/include`.  On Debian / Ubuntu, the package installs
32*1c60b9acSAndroid Build Coastguard Workerit in an arch-specific dir like `/usr/lib/x86_64-linux-gnu/dbus-1.0/include`,
33*1c60b9acSAndroid Build Coastguard Workeryou should force the path.
34*1c60b9acSAndroid Build Coastguard Worker
35*1c60b9acSAndroid Build Coastguard WorkerThe library path is usually \[lib\] "dbus-1", but this can also be forced if
36*1c60b9acSAndroid Build Coastguard Workeryou want to build cross or use a special build, via `LWS_DBUS_LIB`.
37*1c60b9acSAndroid Build Coastguard Worker
38*1c60b9acSAndroid Build Coastguard Worker## Building against local dbus build
39*1c60b9acSAndroid Build Coastguard Worker
40*1c60b9acSAndroid Build Coastguard WorkerIf you built your own local dbus and installed it in /usr/local, then
41*1c60b9acSAndroid Build Coastguard Workerthis is the incantation to direct lws to use the local version of dbus:
42*1c60b9acSAndroid Build Coastguard Worker
43*1c60b9acSAndroid Build Coastguard Worker```
44*1c60b9acSAndroid Build Coastguard Workercmake .. -DLWS_ROLE_DBUS=1 -DLWS_DBUS_INCLUDE1="/usr/local/include/dbus-1.0" -DLWS_DBUS_INCLUDE2="/usr/local/lib/dbus-1.0/include" -DLWS_DBUS_LIB="/usr/local/lib/libdbus-1.so"
45*1c60b9acSAndroid Build Coastguard Worker```
46*1c60b9acSAndroid Build Coastguard Worker
47*1c60b9acSAndroid Build Coastguard WorkerYou'll also need to give the loader a helping hand to do what you want if
48*1c60b9acSAndroid Build Coastguard Workerthere's a perfectly good dbus lib already in `/usr/lib[64]` using `LD_PRELOAD`
49*1c60b9acSAndroid Build Coastguard Workerlike this
50*1c60b9acSAndroid Build Coastguard Worker
51*1c60b9acSAndroid Build Coastguard Worker```
52*1c60b9acSAndroid Build Coastguard WorkerLD_PRELOAD=/usr/local/lib/libdbus-1.so.3.24.0 myapp
53*1c60b9acSAndroid Build Coastguard Worker```
54*1c60b9acSAndroid Build Coastguard Worker
55*1c60b9acSAndroid Build Coastguard Worker## Lws dbus api exports
56*1c60b9acSAndroid Build Coastguard Worker
57*1c60b9acSAndroid Build Coastguard WorkerBecause of the irregular situation with libdbus includes, if lws exports the
58*1c60b9acSAndroid Build Coastguard Workerdbus helpers, which use dbus types, as usual from `#include <libwebsockets.h>`
59*1c60b9acSAndroid Build Coastguard Workerthen if lws was compiled with dbus role support it forces all users to take
60*1c60b9acSAndroid Build Coastguard Workercare about the dbus include path mess whether they use dbus themselves or not.
61*1c60b9acSAndroid Build Coastguard Worker
62*1c60b9acSAndroid Build Coastguard WorkerFor that reason, if you need access to the lws dbus apis, you must explicitly
63*1c60b9acSAndroid Build Coastguard Workerinclude them by
64*1c60b9acSAndroid Build Coastguard Worker
65*1c60b9acSAndroid Build Coastguard Worker```
66*1c60b9acSAndroid Build Coastguard Worker#include <libwebsockets/lws-dbus.h>
67*1c60b9acSAndroid Build Coastguard Worker```
68*1c60b9acSAndroid Build Coastguard Worker
69*1c60b9acSAndroid Build Coastguard WorkerThis includes `<dbus/dbus.h>` and so requires the include paths set up.  But
70*1c60b9acSAndroid Build Coastguard Workerotherwise non-dbus users that don't include `libwebsockets/lws-dbus.h` don't
71*1c60b9acSAndroid Build Coastguard Workerhave to care about it.
72*1c60b9acSAndroid Build Coastguard Worker
73*1c60b9acSAndroid Build Coastguard Worker## DBUS and valgrind
74*1c60b9acSAndroid Build Coastguard Worker
75*1c60b9acSAndroid Build Coastguard Workerhttps://cgit.freedesktop.org/dbus/dbus/tree/README.valgrind
76*1c60b9acSAndroid Build Coastguard Worker
77*1c60b9acSAndroid Build Coastguard Worker1) One-time 6KiB "Still reachable" caused by abstract unix domain socket + libc
78*1c60b9acSAndroid Build Coastguard Worker`getgrouplist()` via nss... bug since 2004(!)
79*1c60b9acSAndroid Build Coastguard Worker
80*1c60b9acSAndroid Build Coastguard Workerhttps://bugs.debian.org/cgi-bin/bugreport.cgi?bug=273051
81*1c60b9acSAndroid Build Coastguard Worker
82*1c60b9acSAndroid Build Coastguard Worker
83*1c60b9acSAndroid Build Coastguard Worker
84