summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon McVittie <smcv@collabora.com>2023-01-04 14:26:56 +0000
committerSimon McVittie <smcv@collabora.com>2023-01-04 14:26:56 +0000
commit255f103b5cf2710cd9e7eddb4d289201a2ccaa12 (patch)
treeeb485cd564ad4344427b17f8049714309236a438
parenta33ce73f1fe1a460ad59053a0578b9fafae81343 (diff)
parentafb5bbaba40c5ba8d99c276ed42f2a043574f694 (diff)
Merge branch 'meson-declare-dependency' into 'master'
meson: Declare dependency for use as a subproject See merge request dbus/dbus!368
-rw-r--r--dbus/meson.build6
-rw-r--r--meson.build62
-rw-r--r--meson_options.txt14
-rw-r--r--test/data/meson.build13
-rw-r--r--test/meson.build63
-rw-r--r--tools/meson.build33
6 files changed, 131 insertions, 60 deletions
diff --git a/dbus/meson.build b/dbus/meson.build
index 5273eb83..6bdb649e 100644
--- a/dbus/meson.build
+++ b/dbus/meson.build
@@ -203,6 +203,12 @@ libdbus = library('dbus-1',
install: true,
)
+libdbus_dep = declare_dependency(
+ include_directories: root_include,
+ dependencies: dbus_dependencies,
+ link_with: libdbus,
+)
+
libdbus_internal = static_library('dbus-internal',
dbus_util_sources,
diff --git a/meson.build b/meson.build
index 33294e2e..fdb54e77 100644
--- a/meson.build
+++ b/meson.build
@@ -333,25 +333,44 @@ config.set(
and cc.has_header_symbol('time.h', 'clock_getres', args: compile_args_c),
)
-glib = dependency(
- 'glib-2.0', version: '>=2.40',
- required: get_option('modular_tests'),
- fallback: ['glib', 'libglib_dep'],
- default_options: [
- 'tests=false',
- ],
-)
-if platform_windows
- gio = dependency('gio-windows-2.0', required: glib.found())
- have_gio_unix = false
+# Controls whether message bus daemon is built. Tests which depend on
+# a running dbus-daemon will be disabled if message_bus is not set.
+message_bus = get_option('message_bus')
+
+if get_option('modular_tests').disabled()
+ glib = dependency('', required: false)
+else
+ glib = dependency(
+ 'glib-2.0', version: '>=2.40',
+ required: get_option('modular_tests'),
+ fallback: ['glib', 'libglib_dep'],
+ default_options: [
+ 'tests=false',
+ ],
+ )
+endif
+
+if glib.found()
+ if platform_windows
+ gio = dependency('gio-windows-2.0', required: glib.found())
+ have_gio_unix = false
+ else
+ gio = dependency('gio-unix-2.0', required: glib.found())
+ have_gio_unix = gio.found()
+ endif
else
- gio = dependency('gio-unix-2.0', required: glib.found())
- have_gio_unix = gio.found()
+ gio = dependency('', required: false)
+ have_gio_unix = false
endif
use_glib = glib.found() and gio.found()
config.set('DBUS_WITH_GLIB', use_glib)
-expat = dependency('expat')
+if message_bus
+ expat = dependency('expat')
+else
+ expat = dependency('', required: false)
+endif
+
if expat.type_name() == 'internal'
# Configure-time checks can't act on subprojects that haven't been
# built yet, but we know that subprojects/expat.wrap is a new enough
@@ -473,7 +492,7 @@ data_config.set('SYSTEMCTL', systemctl)
-use_traditional_activation = get_option('traditional_activation')
+use_traditional_activation = message_bus and get_option('traditional_activation')
config.set('ENABLE_TRADITIONAL_ACTIVATION', use_traditional_activation)
if not (use_systemd or use_traditional_activation)
@@ -761,6 +780,9 @@ config.set('GLIB_VERSION_MAX_ALLOWED', 'G_ENCODE_VERSION(2,44)')
windows_output_debug = get_option('windows_output_debug_string')
config.set('DBUS_USE_OUTPUT_DEBUG_STRING', windows_output_debug)
+# Controls whether the tools are built.
+tools = get_option('tools')
+
# DBUS_ENABLE_EMBEDDED_TESTS controls unit tests built in to .c files
# and some stuff in the test/ subdir.
embedded_tests = get_option('embedded_tests')
@@ -1115,8 +1137,12 @@ if platform_unix
endif
subdir('dbus')
-subdir('bus')
-subdir('tools')
+if message_bus
+ subdir('bus')
+endif
+if tools
+ subdir('tools')
+endif
subdir('test')
subdir('doc')
subdir('cmake')
@@ -1242,6 +1268,8 @@ summary_dict += {
'Building Ducktype docs': ducktype.found(),
'Building XML docs': build_xml_docs,
'Building launchd support': use_launchd,
+ 'Building dbus-daemon': message_bus,
+ 'Building tools': tools,
'System bus socket': data_config.get('DBUS_SYSTEM_SOCKET'),
'System bus address': config.get('DBUS_SYSTEM_BUS_DEFAULT_ADDRESS'),
'System bus PID file': data_config.get('DBUS_SYSTEM_PID_FILE'),
diff --git a/meson_options.txt b/meson_options.txt
index 68f91f19..83c1c921 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -144,6 +144,13 @@ option(
)
option(
+ 'message_bus',
+ type: 'boolean',
+ value: 'true',
+ description: 'Enable dbus-daemon'
+)
+
+option(
'modular_tests',
type: 'feature',
value: 'auto',
@@ -251,6 +258,13 @@ option(
)
option(
+ 'tools',
+ type: 'boolean',
+ value: 'true',
+ description: 'Enable CLI tools such as dbus-send and dbus-monitor'
+)
+
+option(
'traditional_activation',
type: 'boolean',
value: true,
diff --git a/test/data/meson.build b/test/data/meson.build
index e3646c9f..ef570492 100644
--- a/test/data/meson.build
+++ b/test/data/meson.build
@@ -198,15 +198,16 @@ foreach file : data_in_to_install
files += dst
endforeach
-files += meson.project_build_root() / 'bus' / 'session.conf'
-files += meson.current_build_dir() / 'valid-config-files/session.conf'
+if message_bus
+ files += meson.project_build_root() / 'bus' / 'session.conf'
+ files += meson.current_build_dir() / 'valid-config-files/session.conf'
-if platform_unix
- files += meson.project_build_root() / 'bus' / 'system.conf'
- files += meson.current_build_dir() / 'valid-config-files-system/system.conf'
+ if platform_unix
+ files += meson.project_build_root() / 'bus' / 'system.conf'
+ files += meson.current_build_dir() / 'valid-config-files-system/system.conf'
+ endif
endif
-
run_result = run_command(find_program('copy_data_for_tests.py'), files, check: true)
files_not_found = run_result.stdout().split()
diff --git a/test/meson.build b/test/meson.build
index 2a3c346d..966e8ab7 100644
--- a/test/meson.build
+++ b/test/meson.build
@@ -54,13 +54,21 @@ test_env.set('G_TEST_BUILDDIR', meson.current_build_dir())
test_env.set('DBUS_TEST_EXEC', meson.current_build_dir())
test_env.set('DBUS_TEST_DATA', meson.current_build_dir() / 'data')
-test_env.set('DBUS_TEST_DAEMON', dbus_daemon.full_path())
-test_env.set('DBUS_TEST_DBUS_LAUNCH', dbus_launch.full_path())
-test_env.set('DBUS_TEST_DBUS_MONITOR', dbus_monitor.full_path())
-test_env.set('DBUS_TEST_DBUS_SEND', dbus_send.full_path())
+if message_bus
+ test_env.set('DBUS_TEST_DAEMON', dbus_daemon.full_path())
+endif
+
+if tools
+ test_env.set('DBUS_TEST_DBUS_MONITOR', dbus_monitor.full_path())
+ test_env.set('DBUS_TEST_DBUS_SEND', dbus_send.full_path())
+endif
+
+if message_bus and tools
+ test_env.set('DBUS_TEST_DBUS_LAUNCH', dbus_launch.full_path())
+endif
-if platform_unix
- test_env.set('DBUS_TEST_DBUS_UUIDGEN', dbus_uuidgen.full_path())
+if platform_unix and tools
+ test_env.set('DBUS_TEST_DBUS_UUIDGEN', dbus_uuidgen.full_path())
endif
if platform_windows
@@ -204,7 +212,7 @@ else
test_data_config.set('TEST_LAUNCH_HELPER_BINARY', '/bin/false')
endif
-if platform_unix and use_glib
+if message_bus and tools and platform_unix and use_glib
test_apparmor_activation = executable('test-apparmor-activation',
'sd-activation.c',
include_directories: root_include,
@@ -226,7 +234,9 @@ subdir('data')
# the "name-test" subdir in fact contains a bunch of tests now that need a
# temporary bus to be running to do stuff with. The directory should be renamed.
-subdir('name-test')
+if message_bus and tools
+ subdir('name-test')
+endif
tests = []
@@ -234,19 +244,6 @@ if embedded_tests
tests += [
{
- 'name': 'bus',
- 'srcs': [ 'bus/main.c', 'bus/common.c' ],
- 'link': [ libdbus_testutils, libdbus_daemon_internal, ],
- 'install': false,
- },
- {
- 'name': 'bus-dispatch-sha1',
- 'srcs': [ 'bus/dispatch-sha1.c', 'bus/common.c' ],
- 'link': [ libdbus_testutils, libdbus_daemon_internal, ],
- 'install': false,
- 'suite': ['slow'],
- },
- {
'name': 'marshal-recursive',
'srcs': [
'internals/dbus-marshal-recursive-util.c',
@@ -270,6 +267,24 @@ if embedded_tests
},
]
+ if message_bus
+ tests += [
+ {
+ 'name': 'bus',
+ 'srcs': [ 'bus/main.c', 'bus/common.c' ],
+ 'link': [ libdbus_testutils, libdbus_daemon_internal, ],
+ 'install': false,
+ },
+ {
+ 'name': 'bus-dispatch-sha1',
+ 'srcs': [ 'bus/dispatch-sha1.c', 'bus/common.c' ],
+ 'link': [ libdbus_testutils, libdbus_daemon_internal, ],
+ 'install': false,
+ 'suite': ['slow'],
+ },
+ ]
+ endif
+
if use_traditional_activation
tests += [
{
@@ -575,6 +590,10 @@ foreach test: tests
suites = test.get('suite', ['dbus'])
install = test.get('install', true)
+ if suites.contains('runs-dbus-daemon') and not (message_bus and tools)
+ continue
+ endif
+
if test.get('test', true)
exe_name = 'test-' + name
else
@@ -626,7 +645,7 @@ endforeach
scripts = []
-if platform_unix and use_glib
+if message_bus and tools and platform_unix and use_glib
scripts += [
{ 'name': 'test-dbus-daemon-fork.sh', },
{ 'name': 'transient-services.sh',
diff --git a/tools/meson.build b/tools/meson.build
index 4c3d9d22..5d78d93a 100644
--- a/tools/meson.build
+++ b/tools/meson.build
@@ -39,14 +39,15 @@ else
]
endif
-dbus_launch = executable('dbus-launch',
- dbus_launch_sources,
- include_directories: root_include,
- link_with: libdbus,
- dependencies: [ x11, ],
- install: true,
-)
-
+if message_bus
+ dbus_launch = executable('dbus-launch',
+ dbus_launch_sources,
+ include_directories: root_include,
+ link_with: libdbus,
+ dependencies: [ x11, ],
+ install: true,
+ )
+endif
dbus_monitor = executable('dbus-monitor',
'dbus-print-message.c',
@@ -57,13 +58,15 @@ dbus_monitor = executable('dbus-monitor',
install: true,
)
-dbus_run_session = executable('dbus-run-session',
- 'dbus-run-session.c',
- 'tool-common.c',
- include_directories: root_include,
- link_with: libdbus_internal,
- install: true,
-)
+if message_bus
+ dbus_run_session = executable('dbus-run-session',
+ 'dbus-run-session.c',
+ 'tool-common.c',
+ include_directories: root_include,
+ link_with: libdbus_internal,
+ install: true,
+ )
+endif
dbus_send = executable('dbus-send',
'dbus-print-message.c',