mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-05-07 11:58:12 +02:00
build: merge branch 'th/workaround-glib-atomic-pointer-get'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/667 (cherry picked from commitb57198a7bc) (cherry picked from commit90a36d5efe) (cherry picked from commitdec74df554) (cherry picked from commit3f3397abca) (cherry picked from commit3f13d4d50f) (cherry picked from commit39012584e1)
This commit is contained in:
commit
e2fdbc2b74
11 changed files with 119 additions and 26 deletions
19
Makefile.am
19
Makefile.am
|
|
@ -84,6 +84,8 @@ completiondir = $(datadir)/bash-completion/completions
|
||||||
|
|
||||||
nmlocaledir = $(datadir)/locale
|
nmlocaledir = $(datadir)/locale
|
||||||
|
|
||||||
|
INTROSPECTION_EXTRA_CFLAGS = -Wno-incompatible-pointer-types-discards-qualifiers
|
||||||
|
|
||||||
GLIB_MKENUMS_H_FLAGS = --identifier-prefix NM
|
GLIB_MKENUMS_H_FLAGS = --identifier-prefix NM
|
||||||
GLIB_MKENUMS_C_FLAGS = --identifier-prefix NM
|
GLIB_MKENUMS_C_FLAGS = --identifier-prefix NM
|
||||||
|
|
||||||
|
|
@ -493,7 +495,10 @@ shared_nm_utils_tests_test_shared_general_LDADD = \
|
||||||
noinst_LTLIBRARIES += \
|
noinst_LTLIBRARIES += \
|
||||||
introspection/libnmdbus.la
|
introspection/libnmdbus.la
|
||||||
|
|
||||||
introspection_libnmdbus_la_CPPFLAGS = $(GLIB_CFLAGS)
|
introspection_libnmdbus_la_CPPFLAGS = \
|
||||||
|
$(GLIB_CFLAGS) \
|
||||||
|
$(INTROSPECTION_EXTRA_CFLAGS) \
|
||||||
|
$(NULL)
|
||||||
|
|
||||||
introspection_sources = \
|
introspection_sources = \
|
||||||
introspection/org.freedesktop.NetworkManager.AccessPoint.c \
|
introspection/org.freedesktop.NetworkManager.AccessPoint.c \
|
||||||
|
|
@ -715,8 +720,6 @@ dbusinterfaces_DATA = \
|
||||||
CLEANFILES += $(introspection_sources)
|
CLEANFILES += $(introspection_sources)
|
||||||
CLEANFILES += $(DBUS_INTERFACE_DOCS)
|
CLEANFILES += $(DBUS_INTERFACE_DOCS)
|
||||||
|
|
||||||
$(dispatcher_libnm_dispatcher_core_la_OBJECTS): $(introspection_sources)
|
|
||||||
$(dispatcher_nm_dispatcher_OBJECTS): $(introspection_sources)
|
|
||||||
$(libnm_libnm_la_OBJECTS): $(introspection_sources)
|
$(libnm_libnm_la_OBJECTS): $(introspection_sources)
|
||||||
|
|
||||||
EXTRA_DIST += \
|
EXTRA_DIST += \
|
||||||
|
|
@ -1030,6 +1033,7 @@ GLIB_GENERATED += \
|
||||||
libnm-core/tests/nm-core-tests-enum-types.h \
|
libnm-core/tests/nm-core-tests-enum-types.h \
|
||||||
libnm-core/tests/nm-core-tests-enum-types.c
|
libnm-core/tests/nm-core-tests-enum-types.c
|
||||||
nm_core_tests_enum_types_sources = libnm-core/tests/test-general-enums.h
|
nm_core_tests_enum_types_sources = libnm-core/tests/test-general-enums.h
|
||||||
|
nm_core_tests_enum_types_MKENUMS_C_FLAGS = --fhead '\#include "nm-default.h"\n'
|
||||||
|
|
||||||
libnm-core/tests/nm-core-tests-enum-types.h.stamp: libnm-core/tests/.dirstamp
|
libnm-core/tests/nm-core-tests-enum-types.h.stamp: libnm-core/tests/.dirstamp
|
||||||
libnm-core/tests/nm-core-tests-enum-types.c.stamp: libnm-core/tests/.dirstamp
|
libnm-core/tests/nm-core-tests-enum-types.c.stamp: libnm-core/tests/.dirstamp
|
||||||
|
|
@ -2794,7 +2798,10 @@ nodist_src_settings_plugins_ifcfg_rh_libnmdbus_ifcfg_rh_la_SOURCES = \
|
||||||
src/settings/plugins/ifcfg-rh/nmdbus-ifcfg-rh.c \
|
src/settings/plugins/ifcfg-rh/nmdbus-ifcfg-rh.c \
|
||||||
src/settings/plugins/ifcfg-rh/nmdbus-ifcfg-rh.h
|
src/settings/plugins/ifcfg-rh/nmdbus-ifcfg-rh.h
|
||||||
|
|
||||||
src_settings_plugins_ifcfg_rh_libnmdbus_ifcfg_rh_la_CPPFLAGS = $(filter-out -DGLIB_VERSION_MAX_ALLOWED%,$(src_cppflags_base))
|
src_settings_plugins_ifcfg_rh_libnmdbus_ifcfg_rh_la_CPPFLAGS = \
|
||||||
|
$(filter-out -DGLIB_VERSION_MAX_ALLOWED%,$(src_cppflags_base)) \
|
||||||
|
$(INTROSPECTION_EXTRA_CFLAGS) \
|
||||||
|
$(NULL)
|
||||||
|
|
||||||
CLEANFILES += $(nodist_src_settings_plugins_ifcfg_rh_libnmdbus_ifcfg_rh_la_SOURCES)
|
CLEANFILES += $(nodist_src_settings_plugins_ifcfg_rh_libnmdbus_ifcfg_rh_la_SOURCES)
|
||||||
|
|
||||||
|
|
@ -3966,6 +3973,7 @@ dispatcher_tests_test_dispatcher_envp_CPPFLAGS = \
|
||||||
-DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_CLIENT \
|
-DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_CLIENT \
|
||||||
$(GLIB_CFLAGS) \
|
$(GLIB_CFLAGS) \
|
||||||
$(SANITIZER_EXEC_CFLAGS) \
|
$(SANITIZER_EXEC_CFLAGS) \
|
||||||
|
$(INTROSPECTION_EXTRA_CFLAGS) \
|
||||||
$(NULL)
|
$(NULL)
|
||||||
|
|
||||||
dispatcher_tests_test_dispatcher_envp_LDFLAGS = \
|
dispatcher_tests_test_dispatcher_envp_LDFLAGS = \
|
||||||
|
|
@ -4642,6 +4650,7 @@ GLIB_GENERATED += \
|
||||||
$(libnm_util_lib_h_pub_mkenums) \
|
$(libnm_util_lib_h_pub_mkenums) \
|
||||||
$(libnm_util_lib_c_mkenums)
|
$(libnm_util_lib_c_mkenums)
|
||||||
nm_utils_enum_types_sources = $(filter-out libnm-util/NetworkManager%,$(libnm_util_lib_h_pub_real))
|
nm_utils_enum_types_sources = $(filter-out libnm-util/NetworkManager%,$(libnm_util_lib_h_pub_real))
|
||||||
|
nm_utils_enum_types_MKENUMS_C_FLAGS = --identifier-prefix NM --fhead '\#include "nm-default.h"\n'
|
||||||
|
|
||||||
$(libnm_util_libnm_util_la_OBJECTS): $(libnm_util_lib_h_pub_mkenums)
|
$(libnm_util_libnm_util_la_OBJECTS): $(libnm_util_lib_h_pub_mkenums)
|
||||||
|
|
||||||
|
|
@ -4980,6 +4989,7 @@ GLIB_GENERATED += \
|
||||||
$(libnm_glib_lib_h_pub_mkenums) \
|
$(libnm_glib_lib_h_pub_mkenums) \
|
||||||
$(libnm_glib_lib_c_mkenums)
|
$(libnm_glib_lib_c_mkenums)
|
||||||
nm_glib_enum_types_sources = $(libnm_glib_lib_h_pub_real)
|
nm_glib_enum_types_sources = $(libnm_glib_lib_h_pub_real)
|
||||||
|
nm_glib_enum_types_MKENUMS_C_FLAGS = --identifier-prefix NM --fhead '\#include "nm-default.h"\n'
|
||||||
|
|
||||||
$(libnm_glib_libnm_glib_la_OBJECTS): $(libnm_glib_lib_h_pub_mkenums)
|
$(libnm_glib_libnm_glib_la_OBJECTS): $(libnm_glib_lib_h_pub_mkenums)
|
||||||
|
|
||||||
|
|
@ -5020,6 +5030,7 @@ GLIB_GENERATED += \
|
||||||
$(libnm_glib_vpn_h_mkenums) \
|
$(libnm_glib_vpn_h_mkenums) \
|
||||||
$(libnm_glib_vpn_c_mkenums)
|
$(libnm_glib_vpn_c_mkenums)
|
||||||
nm_vpn_enum_types_sources = $(libnm_glib_vpn_h_real)
|
nm_vpn_enum_types_sources = $(libnm_glib_vpn_h_real)
|
||||||
|
nm_vpn_enum_types_MKENUMS_C_FLAGS = --identifier-prefix NM --fhead '\#include "nm-default.h"\n'
|
||||||
|
|
||||||
$(libnm_glib_libnm_glib_vpn_la_OBJECTS): $(libnm_glib_vpn_h_mkenums)
|
$(libnm_glib_libnm_glib_vpn_la_OBJECTS): $(libnm_glib_vpn_h_mkenums)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ exe = executable(
|
||||||
c_args: [
|
c_args: [
|
||||||
'-DNETWORKMANAGER_COMPILATION_TEST',
|
'-DNETWORKMANAGER_COMPILATION_TEST',
|
||||||
'-DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_CLIENT',
|
'-DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_CLIENT',
|
||||||
],
|
] + introspection_extra_cflags,
|
||||||
link_with: libnm_dispatcher_core,
|
link_with: libnm_dispatcher_core,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -99,6 +99,7 @@ libnmdbus = static_library(
|
||||||
sources: sources,
|
sources: sources,
|
||||||
include_directories: top_inc,
|
include_directories: top_inc,
|
||||||
dependencies: glib_dep,
|
dependencies: glib_dep,
|
||||||
|
c_args: introspection_extra_cflags,
|
||||||
)
|
)
|
||||||
|
|
||||||
libnmdbus_dep = declare_dependency(
|
libnmdbus_dep = declare_dependency(
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/*** BEGIN file-header ***/
|
/*** BEGIN file-header ***/
|
||||||
#include "config.h"
|
#include "nm-default.h"
|
||||||
|
|
||||||
#include "nm-core-enum-types.h"
|
#include "nm-core-enum-types.h"
|
||||||
#include "nm-default.h"
|
#include "nm-default.h"
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/*** BEGIN file-header ***/
|
/*** BEGIN file-header ***/
|
||||||
#include "config.h"
|
#include "nm-default.h"
|
||||||
|
|
||||||
#include "nm-core-tests-enum-types.h"
|
#include "nm-core-tests-enum-types.h"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -54,6 +54,8 @@ nm_pkgstatedir = join_paths(nm_localstatedir, 'lib', nm_name)
|
||||||
nm_vpndir = join_paths(nm_libdir, nm_name)
|
nm_vpndir = join_paths(nm_libdir, nm_name)
|
||||||
nm_plugindir = join_paths(nm_libdir, nm_name, dist_version)
|
nm_plugindir = join_paths(nm_libdir, nm_name, dist_version)
|
||||||
|
|
||||||
|
introspection_extra_cflags = ['-Wno-incompatible-pointer-types-discards-qualifiers']
|
||||||
|
|
||||||
libnm_name = 'libnm'
|
libnm_name = 'libnm'
|
||||||
|
|
||||||
current = 1
|
current = 1
|
||||||
|
|
|
||||||
|
|
@ -104,8 +104,6 @@
|
||||||
#else
|
#else
|
||||||
#error Need to define G_LOG_DOMAIN
|
#error Need to define G_LOG_DOMAIN
|
||||||
#endif
|
#endif
|
||||||
#elif defined (NETWORKMANAGER_COMPILATION_TEST) || (NETWORKMANAGER_COMPILATION & NM_NETWORKMANAGER_COMPILATION_WITH_DAEMON)
|
|
||||||
#error Do not define G_LOG_DOMAIN with NM_NETWORKMANAGER_COMPILATION_WITH_DAEMON
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
|
||||||
|
|
@ -578,6 +578,49 @@ _nm_g_value_unset (GValue *value)
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
/* g_atomic_pointer_get() is implemented as a macro, and it is also used for
|
||||||
|
* (gsize *) arguments. However, that leads to compiler warnings in certain
|
||||||
|
* configurations. Work around it, by redefining the macro. */
|
||||||
|
static inline gpointer
|
||||||
|
_g_atomic_pointer_get (void **atomic)
|
||||||
|
{
|
||||||
|
return g_atomic_pointer_get (atomic);
|
||||||
|
}
|
||||||
|
#undef g_atomic_pointer_get
|
||||||
|
#define g_atomic_pointer_get(atomic) \
|
||||||
|
({ \
|
||||||
|
typeof (*atomic) *const _atomic = (atomic); \
|
||||||
|
\
|
||||||
|
/* g_atomic_pointer_get() is used by glib also for (gsize *) pointers,
|
||||||
|
* not only pointers to pointers. We thus don't enforce that (*atomic)
|
||||||
|
* is a pointer, but of suitable size/alignment. */ \
|
||||||
|
\
|
||||||
|
G_STATIC_ASSERT (sizeof (*_atomic) == sizeof (gpointer)); \
|
||||||
|
G_STATIC_ASSERT (_nm_alignof (*_atomic) == _nm_alignof (gpointer)); \
|
||||||
|
(void) (0 ? (gpointer) * (_atomic) : NULL); \
|
||||||
|
\
|
||||||
|
(typeof (*_atomic)) _g_atomic_pointer_get ((void **) _atomic); \
|
||||||
|
})
|
||||||
|
|
||||||
|
/* Reimplement g_atomic_pointer_set() macro too. Our variant does more type
|
||||||
|
* checks. */
|
||||||
|
static inline void
|
||||||
|
_g_atomic_pointer_set (void **atomic, void *newval)
|
||||||
|
{
|
||||||
|
return g_atomic_pointer_set (atomic, newval);
|
||||||
|
}
|
||||||
|
#undef g_atomic_pointer_set
|
||||||
|
#define g_atomic_pointer_set(atomic, newval) \
|
||||||
|
({ \
|
||||||
|
typeof (*atomic) *const _atomic = (atomic); \
|
||||||
|
typeof (*_atomic) const _newval = (newval); \
|
||||||
|
_nm_unused gconstpointer const _val_type_check = _newval; \
|
||||||
|
\
|
||||||
|
(void) (0 ? (gpointer) * (_atomic) : NULL); \
|
||||||
|
\
|
||||||
|
_g_atomic_pointer_set ((void **) _atomic, (void *) _newval); \
|
||||||
|
})
|
||||||
|
|
||||||
/* Glib implements g_atomic_pointer_compare_and_exchange() as a macro.
|
/* Glib implements g_atomic_pointer_compare_and_exchange() as a macro.
|
||||||
* For one, to inline the atomic operation and also to perform some type checks
|
* For one, to inline the atomic operation and also to perform some type checks
|
||||||
* on the arguments.
|
* on the arguments.
|
||||||
|
|
@ -586,20 +629,25 @@ _nm_g_value_unset (GValue *value)
|
||||||
* pointers there. Reimplement the macro to get that right, but with stronger
|
* pointers there. Reimplement the macro to get that right, but with stronger
|
||||||
* type checks (as we use typeof()). Had one job. */
|
* type checks (as we use typeof()). Had one job. */
|
||||||
static inline gboolean
|
static inline gboolean
|
||||||
_g_atomic_pointer_compare_and_exchange (volatile void *atomic,
|
_g_atomic_pointer_compare_and_exchange (void **atomic,
|
||||||
gconstpointer oldval,
|
void *oldval,
|
||||||
gconstpointer newval)
|
void *newval)
|
||||||
{
|
{
|
||||||
return g_atomic_pointer_compare_and_exchange ((void **) atomic, (void *) oldval, (void *) newval);
|
return g_atomic_pointer_compare_and_exchange (atomic, oldval, newval);
|
||||||
}
|
}
|
||||||
#undef g_atomic_pointer_compare_and_exchange
|
#undef g_atomic_pointer_compare_and_exchange
|
||||||
#define g_atomic_pointer_compare_and_exchange(atomic, oldval, newval) \
|
#define g_atomic_pointer_compare_and_exchange(atomic, oldval, newval) \
|
||||||
({ \
|
({ \
|
||||||
typeof (atomic) const _atomic = (atomic); \
|
typeof (*atomic) *const _atomic = (atomic); \
|
||||||
typeof (*_atomic) const _oldval = (oldval); \
|
typeof (*_atomic) const _oldval = (oldval); \
|
||||||
typeof (*_atomic) const _newval = (newval); \
|
typeof (*_atomic) const _newval = (newval); \
|
||||||
|
_nm_unused gconstpointer const _val_type_check = _oldval; \
|
||||||
\
|
\
|
||||||
_g_atomic_pointer_compare_and_exchange (_atomic, _oldval, _newval); \
|
(void) (0 ? (gpointer) * (_atomic) : NULL); \
|
||||||
|
\
|
||||||
|
_g_atomic_pointer_compare_and_exchange ((void **) _atomic, \
|
||||||
|
(void *) _oldval, \
|
||||||
|
(void *) _newval); \
|
||||||
})
|
})
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
|
||||||
|
|
@ -247,7 +247,10 @@ again_wait:
|
||||||
g_assert (ret == info->pid);
|
g_assert (ret == info->pid);
|
||||||
}
|
}
|
||||||
|
|
||||||
g_assert (!name_exists (info->bus, "org.freedesktop.NetworkManager"));
|
nmtst_main_context_iterate_until_assert_full (NULL,
|
||||||
|
1000,
|
||||||
|
80,
|
||||||
|
(!name_exists (info->bus, "org.freedesktop.NetworkManager")));
|
||||||
|
|
||||||
g_clear_object (&info->bus);
|
g_clear_object (&info->bus);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1001,6 +1001,13 @@ nmtst_g_source_set_boolean_true (gpointer user_data)
|
||||||
return G_SOURCE_CONTINUE;
|
return G_SOURCE_CONTINUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline gboolean
|
||||||
|
nmtst_g_source_nop (gpointer user_data)
|
||||||
|
{
|
||||||
|
g_assert (!user_data);
|
||||||
|
return G_SOURCE_CONTINUE;
|
||||||
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static inline gboolean
|
static inline gboolean
|
||||||
|
|
@ -1046,19 +1053,32 @@ _nmtst_main_loop_quit_on_notify (GObject *object, GParamSpec *pspec, gpointer us
|
||||||
}
|
}
|
||||||
#define nmtst_main_loop_quit_on_notify ((GCallback) _nmtst_main_loop_quit_on_notify)
|
#define nmtst_main_loop_quit_on_notify ((GCallback) _nmtst_main_loop_quit_on_notify)
|
||||||
|
|
||||||
#define nmtst_main_context_iterate_until(context, timeout_msec, condition) \
|
#define nmtst_main_context_iterate_until_full(context, timeout_msec, poll_msec, condition) \
|
||||||
({ \
|
({ \
|
||||||
nm_auto_destroy_and_unref_gsource GSource *_source = NULL; \
|
nm_auto_destroy_and_unref_gsource GSource *_source_timeout = NULL; \
|
||||||
|
nm_auto_destroy_and_unref_gsource GSource *_source_poll = NULL; \
|
||||||
GMainContext *_context = (context); \
|
GMainContext *_context = (context); \
|
||||||
gboolean _had_timeout = FALSE; \
|
gboolean _had_timeout = FALSE; \
|
||||||
typeof(timeout_msec) _timeout_msec0 = (timeout_msec); \
|
typeof (timeout_msec) _timeout_msec0 = (timeout_msec); \
|
||||||
|
typeof (poll_msec) _poll_msec0 = (poll_msec); \
|
||||||
gint64 _timeout_msec = _timeout_msec0; \
|
gint64 _timeout_msec = _timeout_msec0; \
|
||||||
|
guint _poll_msec = _poll_msec0; \
|
||||||
\
|
\
|
||||||
g_assert_cmpint(_timeout_msec0, ==, _timeout_msec); \
|
g_assert_cmpint (_timeout_msec0, ==, _timeout_msec); \
|
||||||
|
g_assert_cmpint (_poll_msec0, ==, _poll_msec); \
|
||||||
\
|
\
|
||||||
_source = g_timeout_source_new (NM_CLAMP (_timeout_msec, 0, (gint64) G_MAXUINT)); \
|
_source_timeout = g_timeout_source_new (NM_CLAMP (_timeout_msec, 0, (gint64) G_MAXUINT)); \
|
||||||
g_source_set_callback (_source, nmtst_g_source_set_boolean_true, &_had_timeout, NULL); \
|
g_source_set_callback (_source_timeout, \
|
||||||
g_source_attach (_source, _context); \
|
nmtst_g_source_set_boolean_true, \
|
||||||
|
&_had_timeout, \
|
||||||
|
NULL); \
|
||||||
|
g_source_attach (_source_timeout, _context); \
|
||||||
|
\
|
||||||
|
if (_poll_msec > 0) { \
|
||||||
|
_source_poll = g_timeout_source_new (_poll_msec); \
|
||||||
|
g_source_set_callback (_source_poll, nmtst_g_source_nop, NULL, NULL); \
|
||||||
|
g_source_attach (_source_poll, _context); \
|
||||||
|
} \
|
||||||
\
|
\
|
||||||
while (TRUE) { \
|
while (TRUE) { \
|
||||||
if (condition) \
|
if (condition) \
|
||||||
|
|
@ -1071,12 +1091,21 @@ _nmtst_main_loop_quit_on_notify (GObject *object, GParamSpec *pspec, gpointer us
|
||||||
!_had_timeout; \
|
!_had_timeout; \
|
||||||
})
|
})
|
||||||
|
|
||||||
#define nmtst_main_context_iterate_until_assert(context, timeout_msec, condition) \
|
#define nmtst_main_context_iterate_until(context, timeout_msec, condition) \
|
||||||
|
nmtst_main_context_iterate_until_full ((context), (timeout_msec), 0, condition)
|
||||||
|
|
||||||
|
#define nmtst_main_context_iterate_until_assert_full(context, timeout_msec, poll_msec, condition) \
|
||||||
G_STMT_START { \
|
G_STMT_START { \
|
||||||
if (!nmtst_main_context_iterate_until (context, timeout_msec, condition)) \
|
if (!nmtst_main_context_iterate_until_full ((context), \
|
||||||
g_assert (FALSE && #condition); \
|
(timeout_msec), \
|
||||||
|
(poll_msec), \
|
||||||
|
condition)) \
|
||||||
|
g_assert (FALSE &&#condition); \
|
||||||
} G_STMT_END
|
} G_STMT_END
|
||||||
|
|
||||||
|
#define nmtst_main_context_iterate_until_assert(context, timeout_msec, condition) \
|
||||||
|
nmtst_main_context_iterate_until_assert_full ((context), (timeout_msec), 0, condition)
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static inline const char *
|
static inline const char *
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@ libnmdbus_ifcfg_rh = static_library(
|
||||||
name,
|
name,
|
||||||
sources: dbus_sources,
|
sources: dbus_sources,
|
||||||
dependencies: glib_dep,
|
dependencies: glib_dep,
|
||||||
|
c_args: introspection_extra_cflags,
|
||||||
)
|
)
|
||||||
|
|
||||||
core_sources = files(
|
core_sources = files(
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue