[libvirt] [PATCH] Fix build --without-network

Martin Kletzander mkletzan at redhat.com
Tue May 12 13:07:53 UTC 2015


On Mon, Apr 27, 2015 at 03:49:35PM +0200, Martin Kletzander wrote:
>In order not to bring in any link dependencies, bridge driver doesn't
>use the usual stubs as other conditionally-built code does.  However,
>having the function as a macro imposes a problem with possibly unused
>variables if just defined as "0".  This was worked around by using
>(dom=dom, iface=iface, 0) which should act like a 0 if used in a
>condition.  However, gcc still bugs about that, so I came up with
>another way how to fix that.
>
>Using static inline functions in the header won't collide with anything,
>it fixes the bug and does one thing that the macro didn't do.  It checks
>whenther passed variables are pointers of compatible type.  It has only
>one downside, and that is that we need to either a) define it with
>ATTRIBUTE_UNUSED, which needs an exception in cfg.mk or b) do something
>like ignore_value(variable); in the function body.  I went with the
>first variant.
>
>Signed-off-by: Martin Kletzander <mkletzan at redhat.com>
>---
>
>Notes:
>    I can go with the version (b) if that's the preferred one.
>

Ping, should I send the second variant instead?  Or change the whole
build to compile it unconditionally with stubs added?

> cfg.mk                      |  4 ++--
> src/network/bridge_driver.h | 19 ++++++++++++++++---
> 2 files changed, 18 insertions(+), 5 deletions(-)
>
>diff --git a/cfg.mk b/cfg.mk
>index 9ba2134..796ed80 100644
>--- a/cfg.mk
>+++ b/cfg.mk
>@@ -1,5 +1,5 @@
> # Customize Makefile.maint.                           -*- makefile -*-
>-# Copyright (C) 2008-2014 Red Hat, Inc.
>+# Copyright (C) 2008-2015 Red Hat, Inc.
> # Copyright (C) 2003-2008 Free Software Foundation, Inc.
>
> # This program is free software: you can redistribute it and/or modify
>@@ -1184,7 +1184,7 @@ exclude_file_name_regexp--sc_prohibit_getenv = \
>   ^tests/.*\.[ch]$$
>
> exclude_file_name_regexp--sc_avoid_attribute_unused_in_header = \
>-  ^src/util/virlog\.h$$
>+  ^(src/util/virlog\.h|src/network/bridge_driver\.h)$$
>
> exclude_file_name_regexp--sc_prohibit_mixed_case_abbreviations = \
>   ^src/(vbox/vbox_CAPI.*.h|esx/esx_vi.(c|h)|esx/esx_storage_backend_iscsi.c)$$
>diff --git a/src/network/bridge_driver.h b/src/network/bridge_driver.h
>index 2f801ee..513ccf7 100644
>--- a/src/network/bridge_driver.h
>+++ b/src/network/bridge_driver.h
>@@ -1,7 +1,7 @@
> /*
>  * bridge_driver.h: core driver methods for managing networks
>  *
>- * Copyright (C) 2006-2013 Red Hat, Inc.
>+ * Copyright (C) 2006-2015 Red Hat, Inc.
>  * Copyright (C) 2006 Daniel P. Berrange
>  *
>  * This library is free software; you can redistribute it and/or
>@@ -55,11 +55,24 @@ int networkDnsmasqConfContents(virNetworkObjPtr network,
> # else
> /* Define no-op replacements that don't drag in any link dependencies.  */
> #  define networkAllocateActualDevice(dom, iface) 0
>-#  define networkNotifyActualDevice(dom, iface) (dom=dom, iface=iface, 0)
>-#  define networkReleaseActualDevice(dom, iface) (dom=dom, iface=iface, 0)
> #  define networkGetNetworkAddress(netname, netaddr) (-2)
> #  define networkDnsmasqConfContents(network, pidfile, configstr, \
>                     dctx, caps) 0
>+
>+static inline int
>+networkNotifyActualDevice(virDomainDefPtr dom ATTRIBUTE_UNUSED,
>+                          virDomainNetDefPtr iface ATTRIBUTE_UNUSED)
>+{
>+    return 0;
>+}
>+
>+static inline int
>+networkReleaseActualDevice(virDomainDefPtr dom ATTRIBUTE_UNUSED,
>+                          virDomainNetDefPtr iface ATTRIBUTE_UNUSED)
>+{
>+    return 0;
>+}
>+
> # endif
>
> typedef char *(*networkDnsmasqLeaseFileNameFunc)(const char *netname);
>--
>2.3.6
>
>--
>libvir-list mailing list
>libvir-list at redhat.com
>https://www.redhat.com/mailman/listinfo/libvir-list
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20150512/e2659a75/attachment-0001.sig>


More information about the libvir-list mailing list