diff --git a/CMakeLists.txt b/CMakeLists.txt index 49ae125b..acda9752 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -562,24 +562,10 @@ if(MSVC_IDE) file(REMOVE ${PROJECT_BINARY_DIR}/data/dbus-1/services) endif() -#### Find socket directories -set(DBUS_SESSION_SOCKET_DIR "" CACHE STRING "Default directory for session socket") -if(UNIX) - if (CMAKE_CROSSCOMPILING) - if (NOT DBUS_SESSION_SOCKET_DIR) - message(FATAL_ERROR "cannot autodetect session socket directory " - "when crosscompiling, pass -DDBUS_SESSION_SOCKET_DIR=...") - endif() - elseif(NOT $ENV{TMPDIR} STREQUAL "") - set(DBUS_SESSION_SOCKET_DIR $ENV{TMPDIR}) - elseif(NOT $ENV{TEMP} STREQUAL "") - set(DBUS_SESSION_SOCKET_DIR $ENV{TEMP}) - elseif(NOT $ENV{TMP} STREQUAL "") - set(DBUS_SESSION_SOCKET_DIR $ENV{TMP}) - else() - set(DBUS_SESSION_SOCKET_DIR /tmp) - endif() +if(UNIX AND NOT DBUS_SESSION_SOCKET_DIR) + set(DBUS_SESSION_SOCKET_DIR /tmp) endif() +set(DBUS_SESSION_SOCKET_DIR "${DBUS_SESSION_SOCKET_DIR}" CACHE STRING "Default directory for session socket on Unix") # Not used on Windows, where there is no system bus set(DBUS_SYSTEM_PID_FILE ${DBUS_RUNSTATEDIR}/dbus/pid) diff --git a/cmake/config.h.cmake b/cmake/config.h.cmake index 54625bdc..eaa3ee85 100644 --- a/cmake/config.h.cmake +++ b/cmake/config.h.cmake @@ -32,7 +32,6 @@ #cmakedefine DBUS_PREFIX "@DBUS_PREFIX@" #cmakedefine DBUS_SYSTEM_CONFIG_FILE "@DBUS_SYSTEM_CONFIG_FILE@" #cmakedefine DBUS_SESSION_CONFIG_FILE "@DBUS_SESSION_CONFIG_FILE@" -#cmakedefine DBUS_SESSION_SOCKET_DIR "@DBUS_SESSION_SOCKET_DIR@" #cmakedefine DBUS_DAEMON_NAME "@DBUS_DAEMON_NAME@" #cmakedefine DBUS_SYSTEM_BUS_DEFAULT_ADDRESS "@DBUS_SYSTEM_BUS_DEFAULT_ADDRESS@" #cmakedefine DBUS_SESSION_BUS_CONNECT_ADDRESS "@DBUS_SESSION_BUS_CONNECT_ADDRESS@" @@ -227,8 +226,6 @@ #cmakedefine DBUS_USER "@DBUS_USER@" #cmakedefine DBUS_TEST_USER "@DBUS_TEST_USER@" #cmakedefine DBUS_TEST_EXEC "@DBUS_TEST_EXEC@" -/* Where to put test sockets */ -#define DBUS_TEST_SOCKET_DIR "@TEST_SOCKET_DIR@" // system type defines #if defined(_WIN32) || defined(_WIN64) || defined (_WIN32_WCE) @@ -244,6 +241,12 @@ # define DBUS_UNIX #endif +#ifdef DBUS_UNIX +#cmakedefine DBUS_SESSION_SOCKET_DIR "@DBUS_SESSION_SOCKET_DIR@" +/* Where to put test sockets */ +#define DBUS_TEST_SOCKET_DIR "@TEST_SOCKET_DIR@" +#endif + #if defined(_WIN32) || defined(_WIN64) // mingw mode_t # ifdef HAVE_STDIO_H diff --git a/meson.build b/meson.build index 7a4067a0..451da911 100644 --- a/meson.build +++ b/meson.build @@ -1070,29 +1070,29 @@ endif data_config.set('SYSCONFDIR_FROM_PKGDATADIR', sysconfdir_from_pkgdatadir) data_config.set('DATADIR_FROM_PKGSYSCONFDIR', datadir_from_pkgsysconfdir) -#### Find socket directories -values = run_command(python, '-c', - 'import os; [print(os.getenv(e, "")) for e in ["TMPDIR", "TEMP", "TMP"]]', - check: true, -).stdout() -values += '/tmp' -default_socket_dir = values.strip().split('\n')[0] +if platform_unix + session_socket_dir = get_option('session_socket_dir') -test_socket_dir = get_option('test_socket_dir') -if test_socket_dir == '' - test_socket_dir = default_socket_dir + if session_socket_dir == '' + session_socket_dir = '/tmp' + endif + + config.set_quoted('DBUS_SESSION_SOCKET_DIR', session_socket_dir) + + test_socket_dir = get_option('test_socket_dir') + + if test_socket_dir == '' + test_socket_dir = session_socket_dir + endif + + config.set_quoted('DBUS_TEST_SOCKET_DIR', test_socket_dir) + test_listen = 'unix:tmpdir=' + test_socket_dir +else + test_listen = 'tcp:host=localhost' endif -test_listen = platform_unix ? 'unix:tmpdir=' + test_socket_dir : 'tcp:host=localhost' config.set_quoted('TEST_LISTEN', test_listen) -config.set_quoted('DBUS_TEST_SOCKET_DIR', test_socket_dir) data_config.set('TEST_LISTEN', test_listen) -session_socket_dir = get_option('session_socket_dir') -if session_socket_dir == '' - session_socket_dir = default_socket_dir -endif -config.set_quoted('DBUS_SESSION_SOCKET_DIR', session_socket_dir) - # This must be a listening address. It doesn't necessarily need to be an # address you can connect to - it can be something vague like # "nonce-tcp:". @@ -1395,9 +1395,14 @@ summary_dict += { 'System bus user': dbus_user, 'Session bus services dir': get_option('prefix') / get_option('datadir') / 'dbus-1' / 'services', - 'Tests socket dir': test_socket_dir, } +if platform_unix + summary_dict += { + 'Tests socket dir': test_socket_dir, + } +endif + if host_os.contains('solaris') summary_dict += { 'Console owner file': console_owner_file, diff --git a/meson_options.txt b/meson_options.txt index 1bd00579..079b04da 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -247,7 +247,7 @@ option( option( 'test_socket_dir', type: 'string', - description: 'Where to put sockets for make check' + description: 'Where to put sockets for automated tests' ) option(