meson: Introduce message_bus and tools command line option
To make the consume libdbus via Meson's subproject use case more useful, introduce message_bus and tools command line options which control if the D-Bus daemon and/or the tools are build. The idea here is that depending projects are interested only in the library. The strong recommendation is only to build libdbus as static library: libdbus_dep = dependency( 'dbus-1', required: get_option('libdbus'), fallback: ['dbus', 'libdbus_dep'], default_options: [ 'default_library=static', 'embedded_tests=false', 'message_bus=false', 'modular_tests=disabled', 'tools=false', ], ) This ensures that any installed D-Bus infrastructure on the target system is not overwritten. Signed-off-by: Daniel Wagner <dwagner@suse.de>
This commit is contained in:
parent
6a774fbb79
commit
afb5bbaba4
62
meson.build
62
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
|
||||
gio = dependency('gio-unix-2.0', required: glib.found())
|
||||
have_gio_unix = gio.found()
|
||||
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('', 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'),
|
||||
|
|
|
@ -143,6 +143,13 @@ option(
|
|||
description: 'Audit logging support for SELinux and AppArmor'
|
||||
)
|
||||
|
||||
option(
|
||||
'message_bus',
|
||||
type: 'boolean',
|
||||
value: 'true',
|
||||
description: 'Enable dbus-daemon'
|
||||
)
|
||||
|
||||
option(
|
||||
'modular_tests',
|
||||
type: 'feature',
|
||||
|
@ -250,6 +257,13 @@ option(
|
|||
value: 'nobody'
|
||||
)
|
||||
|
||||
option(
|
||||
'tools',
|
||||
type: 'boolean',
|
||||
value: 'true',
|
||||
description: 'Enable CLI tools such as dbus-send and dbus-monitor'
|
||||
)
|
||||
|
||||
option(
|
||||
'traditional_activation',
|
||||
type: 'boolean',
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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 platform_unix
|
||||
test_env.set('DBUS_TEST_DBUS_UUIDGEN', dbus_uuidgen.full_path())
|
||||
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 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,26 +234,15 @@ 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 = []
|
||||
|
||||
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': [
|
||||
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
Loading…
Reference in New Issue