Merge branch 'no-hard-coded-tmpdir' into 'main'

build: Don't use build-time TMPDIR, TEMP, TMP as socket directory

Closes #551

See merge request dbus/dbus!522
This commit is contained in:
Simon McVittie 2025-05-16 10:22:18 +00:00
commit 5035f4bda6
4 changed files with 34 additions and 40 deletions

View file

@ -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()
if(UNIX AND NOT DBUS_SESSION_SOCKET_DIR)
set(DBUS_SESSION_SOCKET_DIR /tmp)
endif()
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)

View file

@ -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

View file

@ -1070,28 +1070,28 @@ 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')
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 = default_socket_dir
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
if test_socket_dir == ''
test_socket_dir = session_socket_dir
endif
config.set_quoted('DBUS_SESSION_SOCKET_DIR', session_socket_dir)
config.set_quoted('DBUS_TEST_SOCKET_DIR', test_socket_dir)
test_listen = 'unix:tmpdir=' + test_socket_dir
else
test_listen = 'tcp:host=localhost'
endif
config.set_quoted('TEST_LISTEN', test_listen)
data_config.set('TEST_LISTEN', test_listen)
# 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
@ -1395,8 +1395,13 @@ summary_dict += {
'System bus user': dbus_user,
'Session bus services dir':
get_option('prefix') / get_option('datadir') / 'dbus-1' / 'services',
}
if platform_unix
summary_dict += {
'Tests socket dir': test_socket_dir,
}
endif
if host_os.contains('solaris')
summary_dict += {

View file

@ -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(