From a56e4deeae09bdb74bc8fe1fabf798489bfd37de Mon Sep 17 00:00:00 2001 From: Ralf Habacker Date: Tue, 10 Nov 2015 11:23:04 +0100 Subject: [PATCH] Do not require binfmt support for running cross compiled test applications. Bug: https://bugs.freedesktop.org/show_bug.cgi?id=88966 --- cmake/modules/Macros.cmake | 20 ++++++++++++++++---- test/test-utils-glib.c | 4 ++++ 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/cmake/modules/Macros.cmake b/cmake/modules/Macros.cmake index 8d6cf11..be9a6ae 100644 --- a/cmake/modules/Macros.cmake +++ b/cmake/modules/Macros.cmake @@ -5,19 +5,25 @@ if(DBUS_BUILD_TESTS AND CMAKE_CROSSCOMPILING AND CMAKE_SYSTEM_NAME STREQUAL "Win PATHS /usr/bin /usr/local/bin NO_CMAKE_FIND_ROOT_PATH ) - find_file(HAVE_BINFMT_WINE_SUPPORT + find_file(BINFMT_WINE_SUPPORT_FILE NAMES DOSWin wine Wine windows Windows PATHS /proc/sys/fs/binfmt_misc NO_SYSTEM_PATH NO_CMAKE_FIND_ROOT_PATH ) - if(WINE_EXECUTABLE AND HAVE_BINFMT_WINE_SUPPORT) + if(BINFMT_WINE_SUPPORT_FILE) + file(READ ${BINFMT_WINE_SUPPORT_FILE} CONTENT) + if(${CONTENT} MATCHES "enabled") + set(HAVE_BINFMT_WINE_SUPPORT 1) + endif() + endif() + if(WINE_EXECUTABLE) list(APPEND FOOTNOTES "NOTE: The requirements to run cross compiled applications on your host system are achieved. You may run 'make check'.") endif() if(NOT WINE_EXECUTABLE) list(APPEND FOOTNOTES "NOTE: You may install the Windows emulator 'wine' to be able to run cross compiled test applications.") endif() if(NOT HAVE_BINFMT_WINE_SUPPORT) - list(APPEND FOOTNOTES "NOTE: You may activate binfmt_misc support for wine to be able to run cross compiled test applications.") + list(APPEND FOOTNOTES "NOTE: You may activate binfmt_misc support for wine to be able to run cross compiled test applications directly.") endif() else() list(APPEND FOOTNOTES "NOTE: You will not be able to run cross compiled applications on your host system.") @@ -43,7 +49,12 @@ macro(add_test_executable _target _source) # run tests with binfmt_misc set(PREFIX "z:") set(_env "DBUS_TEST_DAEMON=${PREFIX}${CMAKE_BINARY_DIR}/bin/dbus-daemon${EXEEXT}") - add_test(NAME ${_target} COMMAND $ --tap) + if(HAVE_BINFMT_WINE_SUPPORT) + add_test(NAME ${_target} COMMAND $ --tap) + else() + add_test(NAME ${_target} COMMAND ${WINE_EXECUTABLE} ${PREFIX}$ --tap) + list(APPEND _env "DBUS_TEST_DAEMON_WRAPPER=${WINE_EXECUTABLE}") + endif() else() set(PREFIX) set(_env "DBUS_TEST_DAEMON=${CMAKE_BINARY_DIR}/bin/dbus-daemon${EXEEXT}") @@ -53,6 +64,7 @@ macro(add_test_executable _target _source) list(APPEND _env "DBUS_FATAL_WARNINGS=1") list(APPEND _env "DBUS_TEST_DATA=${PREFIX}${CMAKE_BINARY_DIR}/test/data") list(APPEND _env "DBUS_TEST_HOMEDIR=${PREFIX}${CMAKE_BINARY_DIR}/dbus") + list(APPEND _env "DBUS_TEST_EXEC=${PREFIX}${CMAKE_BINARY_DIR}/bin") set_tests_properties(${_target} PROPERTIES ENVIRONMENT "${_env}") endmacro(add_test_executable) diff --git a/test/test-utils-glib.c b/test/test-utils-glib.c index e084977..3942e90 100644 --- a/test/test-utils-glib.c +++ b/test/test-utils-glib.c @@ -159,6 +159,10 @@ spawn_dbus_daemon (const gchar *binary, } argv = g_ptr_array_new_with_free_func (g_free); + if (g_getenv ("DBUS_TEST_DAEMON_WRAPPER") != NULL) + { + g_ptr_array_add (argv, g_strdup (g_getenv ("DBUS_TEST_DAEMON_WRAPPER"))); + } g_ptr_array_add (argv, g_strdup (binary)); g_ptr_array_add (argv, g_strdup (configuration)); g_ptr_array_add (argv, g_strdup ("--nofork")); -- 1.8.4.5