Re: [PATCH] tests: Compile virgdbusmock.c with GIO_COMPILATION enabled

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Mar 27, 2023 at 02:47:40PM +0200, Michal Privoznik wrote:
There are couple of g_dbus_*() functions we provide an
alternative implementation for in our virgdbusmock.c. However,
these functions are declared in gio/gdbusconnection.h as:

 GIO_AVAILABLE_IN_ALL
 GDBusConnection  *g_bus_get_sync (GBusType            bus_type,
                                   GCancellable       *cancellable,
                                   GError            **error);

where GIO_AVAILABLE_IN_ALL is declared as (in
/gio/gio-visibility.h):

 #if (defined(_WIN32) || defined(__CYGWIN__)) && !defined(GIO_STATIC_COMPILATION)
 #  define _GIO_EXPORT __declspec(dllexport)
 #  define _GIO_IMPORT __declspec(dllimport)
 #elif __GNUC__ >= 4
 #  define _GIO_EXPORT __attribute__((visibility("default")))
 #  define _GIO_IMPORT
 #else
 #  define _GIO_EXPORT
 #  define _GIO_IMPORT
 #endif
 #ifdef GIO_COMPILATION
 #  define _GIO_API _GIO_EXPORT
 #else
 #  define _GIO_API _GIO_IMPORT
 #endif

 #define _GIO_EXTERN _GIO_API extern

 #define GIO_AVAILABLE_IN_ALL _GIO_EXTERN

Now, on mingw the functions we mock are declared with dllimport
attribute which makes the compiler unhappy:

 ../tests/virgdbusmock.c:25:24: error: 'g_bus_get_sync'
 redeclared without dllimport attribute: previous dllimport
 ignored [-Werror=attributes]

The solution is to do what glib does when it compiles the gio
module: set GIO_COMPILATION macro which in turn annotates the
function with dllexport attribute.

Signed-off-by: Michal Privoznik <mprivozn@xxxxxxxxxx>

Reviewed-by: Martin Kletzander <mkletzan@xxxxxxxxxx>

and safe for freeze

---
tests/meson.build | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/tests/meson.build b/tests/meson.build
index 0fd3bc62cf..6be806f4ae 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -65,6 +65,10 @@ else
endif


+virgdbusmock_dep = declare_dependency(
+  compile_args: [ '-DGIO_COMPILATION' ]
+)
+
# mock_libs:
#   each entry is a dictionary with following items:
#   * name - mock library name which is also used as default source file name (required)
@@ -78,7 +82,7 @@ mock_libs = [
  { 'name': 'virdnsmasqmock' },
  { 'name': 'virfilecachemock' },
  { 'name': 'virfirewallmock' },
-  { 'name': 'virgdbusmock' },
+  { 'name': 'virgdbusmock', 'deps': [ virgdbusmock_dep] },
  { 'name': 'virhostcpumock' },
  { 'name': 'virhostdevmock' },
  { 'name': 'virnetdaemonmock' },
--
2.39.2

Attachment: signature.asc
Description: PGP signature


[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux