[libvirt] [PATCH 1/3] Add vapi bindings generation

--- Makefile.am | 2 +- configure.ac | 19 +++++++++++++++++++ vapi/Makefile.am | 37 +++++++++++++++++++++++++++++++++++++ vapi/libvirt-gobject-1.0.deps | 1 + vapi/libvirt-gobject-1.0.metada | 2 ++ 5 files changed, 60 insertions(+), 1 deletions(-) create mode 100644 vapi/Makefile.am create mode 100644 vapi/libvirt-gobject-1.0.deps create mode 100644 vapi/libvirt-gobject-1.0.metada diff --git a/Makefile.am b/Makefile.am index 3df8626..8d082c0 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,5 +1,5 @@ -SUBDIRS = libvirt-glib libvirt-gconfig libvirt-gobject python examples +SUBDIRS = libvirt-glib libvirt-gconfig libvirt-gobject python vapi examples ACLOCAL_AMFLAGS = -I m4 diff --git a/configure.ac b/configure.ac index 0581874..c474f0b 100644 --- a/configure.ac +++ b/configure.ac @@ -198,12 +198,31 @@ if test "x$enable_introspection" != "xno" ; then fi AM_CONDITIONAL([WITH_GOBJECT_INTROSPECTION], [test "x$enable_introspection" = "xyes"]) +AC_ARG_ENABLE([vala], + AS_HELP_STRING([--enable-vala], [enable Vala binding generation]), + [], [enable_vala=check]) +if test "x$enable_introspection" = "xyes" ; then + if test "x$enable_vala" != "xno" ; then + AC_PATH_PROG(VAPIGEN, vapigen, no) + if test "x$VAPIGEN" != "xno"; then + if test "x$enable_vala" == "xcheck" ; then + enable_vala=yes + AC_SUBST(VAPIGEN) + fi + else + AC_MSG_ERROR([Cannot find the "vapigen" binary in your PATH]) + fi + fi +fi +AM_CONDITIONAL([WITH_VALA], [test "x$enable_vala" = "xyes"]) + AC_OUTPUT(Makefile libvirt-glib/Makefile libvirt-gconfig/Makefile libvirt-gobject/Makefile examples/Makefile python/Makefile + vapi/Makefile libvirt-glib-1.0.pc libvirt-gconfig-1.0.pc libvirt-gobject-1.0.pc diff --git a/vapi/Makefile.am b/vapi/Makefile.am new file mode 100644 index 0000000..f844576 --- /dev/null +++ b/vapi/Makefile.am @@ -0,0 +1,37 @@ +NULL = + +if WITH_VALA +vapidir = $(datadir)/vala/vapi +vapi_DATA = \ + libvirt-gconfig-1.0.vapi \ + libvirt-glib-1.0.vapi \ + libvirt-gobject-1.0.vapi \ + $(NULL) + +libvirt-glib-1.0.vapi: $(top_builddir)/libvirt-glib/LibvirtGLib-1.0.gir + $(AM_V_GEN)$(VAPIGEN) \ + --vapidir=. \ + --pkg gobject-2.0 \ + --pkg gio-2.0 \ + --library libvirt-glib-1.0 \ + $< + +libvirt-gobject-1.0.vapi: $(top_builddir)/libvirt-gobject/LibvirtGObject-1.0.gir + $(AM_V_GEN)$(VAPIGEN) \ + --vapidir=. \ + --pkg gobject-2.0 \ + --pkg gio-2.0 \ + --pkg libvirt-glib-1.0 \ + --library libvirt-gobject-1.0 \ + $< + +libvirt-gconfig-1.0.vapi: $(top_builddir)/libvirt-gconfig/LibvirtGConfig-1.0.gir + $(AM_V_GEN)$(VAPIGEN) \ + --vapidir=. \ + --pkg gobject-2.0 \ + --library libvirt-gconfig-1.0 \ + $< + +endif + +CLEANFILES = $(vapi_DATA) diff --git a/vapi/libvirt-gobject-1.0.deps b/vapi/libvirt-gobject-1.0.deps new file mode 100644 index 0000000..899e8e8 --- /dev/null +++ b/vapi/libvirt-gobject-1.0.deps @@ -0,0 +1 @@ +libvirt-gconfig-1.0 diff --git a/vapi/libvirt-gobject-1.0.metada b/vapi/libvirt-gobject-1.0.metada new file mode 100644 index 0000000..90e5197 --- /dev/null +++ b/vapi/libvirt-gobject-1.0.metada @@ -0,0 +1,2 @@ +init_object.argv unowned +init_object_check.argv unowned -- 1.7.6.2

Let's keep the signal and default signal handler name in sync. gobject signals are generally not namespaced this way, removing this prefix makes things look a bit nicer. --- libvirt-gobject/libvirt-gobject-connection.c | 8 ++++---- libvirt-gobject/libvirt-gobject-connection.h | 8 ++++---- libvirt-gobject/libvirt-gobject-domain.c | 10 +++++----- libvirt-gobject/libvirt-gobject-domain.h | 10 +++++----- libvirt-gobject/libvirt-gobject-manager.c | 4 ++-- libvirt-gobject/libvirt-gobject-manager.h | 4 ++-- libvirt-gobject/libvirt-gobject-network.h | 4 ++-- 7 files changed, 24 insertions(+), 24 deletions(-) diff --git a/libvirt-gobject/libvirt-gobject-connection.c b/libvirt-gobject/libvirt-gobject-connection.c index 8813e96..30b7792 100644 --- a/libvirt-gobject/libvirt-gobject-connection.c +++ b/libvirt-gobject/libvirt-gobject-connection.c @@ -173,7 +173,7 @@ static void gvir_connection_class_init(GVirConnectionClass *klass) signals[VIR_CONNECTION_OPENED] = g_signal_new("connection-opened", G_OBJECT_CLASS_TYPE(object_class), G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET(GVirConnectionClass, vir_connection_opened), + G_STRUCT_OFFSET(GVirConnectionClass, connection_opened), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, @@ -182,7 +182,7 @@ static void gvir_connection_class_init(GVirConnectionClass *klass) signals[VIR_CONNECTION_CLOSED] = g_signal_new("connection-closed", G_OBJECT_CLASS_TYPE(object_class), G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET(GVirConnectionClass, vir_connection_closed), + G_STRUCT_OFFSET(GVirConnectionClass, connection_closed), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, @@ -191,7 +191,7 @@ static void gvir_connection_class_init(GVirConnectionClass *klass) signals[VIR_DOMAIN_ADDED] = g_signal_new("domain-added", G_OBJECT_CLASS_TYPE(object_class), G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET(GVirConnectionClass, vir_domain_added), + G_STRUCT_OFFSET(GVirConnectionClass, domain_added), NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, @@ -201,7 +201,7 @@ static void gvir_connection_class_init(GVirConnectionClass *klass) signals[VIR_DOMAIN_REMOVED] = g_signal_new("domain-removed", G_OBJECT_CLASS_TYPE(object_class), G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET(GVirConnectionClass, vir_domain_removed), + G_STRUCT_OFFSET(GVirConnectionClass, domain_removed), NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, diff --git a/libvirt-gobject/libvirt-gobject-connection.h b/libvirt-gobject/libvirt-gobject-connection.h index 2eb58ec..8c1d1a4 100644 --- a/libvirt-gobject/libvirt-gobject-connection.h +++ b/libvirt-gobject/libvirt-gobject-connection.h @@ -56,11 +56,11 @@ struct _GVirConnectionClass GObjectClass parent_class; /* signals */ - void (*vir_connection_opened)(GVirConnection *conn); - void (*vir_connection_closed)(GVirConnection *conn); + void (*connection_opened)(GVirConnection *conn); + void (*connection_closed)(GVirConnection *conn); - void (*vir_domain_added)(GVirConnection *conn, GVirDomain *dom); - void (*vir_domain_removed)(GVirConnection *conn, GVirDomain *dom); + void (*domain_added)(GVirConnection *conn, GVirDomain *dom); + void (*domain_removed)(GVirConnection *conn, GVirDomain *dom); GVirStream *(*stream_new)(GVirConnection *conn, gpointer handle); diff --git a/libvirt-gobject/libvirt-gobject-domain.c b/libvirt-gobject/libvirt-gobject-domain.c index 70d8d6d..5bbd7d1 100644 --- a/libvirt-gobject/libvirt-gobject-domain.c +++ b/libvirt-gobject/libvirt-gobject-domain.c @@ -163,7 +163,7 @@ static void gvir_domain_class_init(GVirDomainClass *klass) G_OBJECT_CLASS_TYPE(object_class), G_SIGNAL_RUN_LAST | G_SIGNAL_NO_RECURSE | G_SIGNAL_NO_HOOKS | G_SIGNAL_DETAILED, - G_STRUCT_OFFSET(GVirDomainClass, vir_domain_started), + G_STRUCT_OFFSET(GVirDomainClass, started), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, @@ -173,7 +173,7 @@ static void gvir_domain_class_init(GVirDomainClass *klass) G_OBJECT_CLASS_TYPE(object_class), G_SIGNAL_RUN_LAST | G_SIGNAL_NO_RECURSE | G_SIGNAL_NO_HOOKS | G_SIGNAL_DETAILED, - G_STRUCT_OFFSET(GVirDomainClass, vir_domain_suspended), + G_STRUCT_OFFSET(GVirDomainClass, suspended), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, @@ -183,7 +183,7 @@ static void gvir_domain_class_init(GVirDomainClass *klass) G_OBJECT_CLASS_TYPE(object_class), G_SIGNAL_RUN_LAST | G_SIGNAL_NO_RECURSE | G_SIGNAL_NO_HOOKS | G_SIGNAL_DETAILED, - G_STRUCT_OFFSET(GVirDomainClass, vir_domain_resumed), + G_STRUCT_OFFSET(GVirDomainClass, resumed), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, @@ -193,7 +193,7 @@ static void gvir_domain_class_init(GVirDomainClass *klass) G_OBJECT_CLASS_TYPE(object_class), G_SIGNAL_RUN_LAST | G_SIGNAL_NO_RECURSE | G_SIGNAL_NO_HOOKS | G_SIGNAL_DETAILED, - G_STRUCT_OFFSET(GVirDomainClass, vir_domain_stopped), + G_STRUCT_OFFSET(GVirDomainClass, stopped), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, @@ -202,7 +202,7 @@ static void gvir_domain_class_init(GVirDomainClass *klass) signals[VIR_UPDATED] = g_signal_new("updated", G_OBJECT_CLASS_TYPE(object_class), G_SIGNAL_RUN_LAST | G_SIGNAL_NO_RECURSE | G_SIGNAL_NO_HOOKS, - G_STRUCT_OFFSET(GVirDomainClass, vir_domain_updated), + G_STRUCT_OFFSET(GVirDomainClass, updated), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, diff --git a/libvirt-gobject/libvirt-gobject-domain.h b/libvirt-gobject/libvirt-gobject-domain.h index 6af2a92..5199f7c 100644 --- a/libvirt-gobject/libvirt-gobject-domain.h +++ b/libvirt-gobject/libvirt-gobject-domain.h @@ -59,11 +59,11 @@ struct _GVirDomainClass GObjectClass parent_class; /* signals */ - void (*vir_domain_started)(GVirDomain *dom); - void (*vir_domain_stopped)(GVirDomain *dom); - void (*vir_domain_resumed)(GVirDomain *dom); - void (*vir_domain_updated)(GVirDomain *dom); - void (*vir_domain_suspended)(GVirDomain *dom); + void (*started)(GVirDomain *dom); + void (*stopped)(GVirDomain *dom); + void (*resumed)(GVirDomain *dom); + void (*updated)(GVirDomain *dom); + void (*suspended)(GVirDomain *dom); gpointer padding[20]; }; diff --git a/libvirt-gobject/libvirt-gobject-manager.c b/libvirt-gobject/libvirt-gobject-manager.c index ae3e4a1..5022216 100644 --- a/libvirt-gobject/libvirt-gobject-manager.c +++ b/libvirt-gobject/libvirt-gobject-manager.c @@ -91,7 +91,7 @@ static void gvir_manager_class_init(GVirManagerClass *klass) g_signal_new("connection-added", G_OBJECT_CLASS_TYPE(object_class), G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET(GVirManagerClass, vir_connection_added), + G_STRUCT_OFFSET(GVirManagerClass, connection_added), NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, @@ -100,7 +100,7 @@ static void gvir_manager_class_init(GVirManagerClass *klass) g_signal_new("connection-removed", G_OBJECT_CLASS_TYPE(object_class), G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET(GVirManagerClass, vir_connection_removed), + G_STRUCT_OFFSET(GVirManagerClass, connection_removed), NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, diff --git a/libvirt-gobject/libvirt-gobject-manager.h b/libvirt-gobject/libvirt-gobject-manager.h index 5fe1e76..88a2dd6 100644 --- a/libvirt-gobject/libvirt-gobject-manager.h +++ b/libvirt-gobject/libvirt-gobject-manager.h @@ -55,8 +55,8 @@ struct _GVirManagerClass GObjectClass parent_class; /* Signals */ - void (*vir_connection_added)(GVirManager *man, GVirConnection *conn); - void (*vir_connection_removed)(GVirManager *man, GVirConnection *conn); + void (*connection_added)(GVirManager *man, GVirConnection *conn); + void (*connection_removed)(GVirManager *man, GVirConnection *conn); gpointer padding[20]; }; diff --git a/libvirt-gobject/libvirt-gobject-network.h b/libvirt-gobject/libvirt-gobject-network.h index 79f37e7..7b3d2dc 100644 --- a/libvirt-gobject/libvirt-gobject-network.h +++ b/libvirt-gobject/libvirt-gobject-network.h @@ -55,8 +55,8 @@ struct _GVirNetworkClass { GObjectClass parent_class; - void (*vir_network_started)(GVirNetwork *net); - void (*vir_network_stopped)(GVirNetwork *net); + void (*started)(GVirNetwork *net); + void (*stopped)(GVirNetwork *net); gpointer padding[20]; }; -- 1.7.6.2

On Wed, Oct 19, 2011 at 11:11:00PM +0200, Marc-André Lureau wrote:
Let's keep the signal and default signal handler name in sync.
gobject signals are generally not namespaced this way, removing this prefix makes things look a bit nicer. --- libvirt-gobject/libvirt-gobject-connection.c | 8 ++++---- libvirt-gobject/libvirt-gobject-connection.h | 8 ++++---- libvirt-gobject/libvirt-gobject-domain.c | 10 +++++----- libvirt-gobject/libvirt-gobject-domain.h | 10 +++++----- libvirt-gobject/libvirt-gobject-manager.c | 4 ++-- libvirt-gobject/libvirt-gobject-manager.h | 4 ++-- libvirt-gobject/libvirt-gobject-network.h | 4 ++-- 7 files changed, 24 insertions(+), 24 deletions(-)
ACK Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|

A binding for virDomainResume(). --- libvirt-gobject/libvirt-gobject-domain.c | 21 +++++++++++++++++++++ libvirt-gobject/libvirt-gobject-domain.h | 2 ++ libvirt-gobject/libvirt-gobject.sym | 1 + 3 files changed, 24 insertions(+), 0 deletions(-) diff --git a/libvirt-gobject/libvirt-gobject-domain.c b/libvirt-gobject/libvirt-gobject-domain.c index 5bbd7d1..bf562ba 100644 --- a/libvirt-gobject/libvirt-gobject-domain.c +++ b/libvirt-gobject/libvirt-gobject-domain.c @@ -329,6 +329,27 @@ gboolean gvir_domain_start(GVirDomain *dom, } /** + * gvir_domain_resume: + * @dom: the domain + * + * Returns: TRUE on success + */ +gboolean gvir_domain_resume(GVirDomain *dom, + GError **err) +{ + GVirDomainPrivate *priv = dom->priv; + + if (virDomainResume(priv->handle) < 0) { + *err = gvir_error_new_literal(GVIR_DOMAIN_ERROR, + 0, + "Unable to resume domain"); + return FALSE; + } + + return TRUE; +} + +/** * gvir_domain_stop: * @dom: the domain * @flags: the flags diff --git a/libvirt-gobject/libvirt-gobject-domain.h b/libvirt-gobject/libvirt-gobject-domain.h index 5199f7c..94bd53e 100644 --- a/libvirt-gobject/libvirt-gobject-domain.h +++ b/libvirt-gobject/libvirt-gobject-domain.h @@ -102,6 +102,8 @@ gint gvir_domain_get_id(GVirDomain *dom, gboolean gvir_domain_start(GVirDomain *dom, guint64 flags, GError **err); +gboolean gvir_domain_resume(GVirDomain *dom, + GError **err); gboolean gvir_domain_stop(GVirDomain *dom, guint64 flags, GError **err); diff --git a/libvirt-gobject/libvirt-gobject.sym b/libvirt-gobject/libvirt-gobject.sym index cd24d83..55a0548 100644 --- a/libvirt-gobject/libvirt-gobject.sym +++ b/libvirt-gobject/libvirt-gobject.sym @@ -34,6 +34,7 @@ LIBVIRT_GOBJECT_0.0.1 { gvir_domain_get_uuid; gvir_domain_get_id; gvir_domain_start; + gvir_domain_resume; gvir_domain_stop; gvir_domain_delete; gvir_domain_shutdown; -- 1.7.6.2

On Wed, Oct 19, 2011 at 11:11:01PM +0200, Marc-André Lureau wrote:
A binding for virDomainResume(). --- libvirt-gobject/libvirt-gobject-domain.c | 21 +++++++++++++++++++++ libvirt-gobject/libvirt-gobject-domain.h | 2 ++ libvirt-gobject/libvirt-gobject.sym | 1 + 3 files changed, 24 insertions(+), 0 deletions(-)
ACK Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|

On Wed, Oct 19, 2011 at 11:10:59PM +0200, Marc-André Lureau wrote:
--- Makefile.am | 2 +- configure.ac | 19 +++++++++++++++++++ vapi/Makefile.am | 37 +++++++++++++++++++++++++++++++++++++ vapi/libvirt-gobject-1.0.deps | 1 + vapi/libvirt-gobject-1.0.metada | 2 ++ 5 files changed, 60 insertions(+), 1 deletions(-) create mode 100644 vapi/Makefile.am create mode 100644 vapi/libvirt-gobject-1.0.deps create mode 100644 vapi/libvirt-gobject-1.0.metada
ACK Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|

04368c60c added vala binding generation to libvirt-glib. To do that, it needs vapigen, so it checks for its presence during configure. However, configure errors out when vapigen is not found unless --disable-vala has been explicitly passed. In particular, vapigen must be available when running autogen.sh/configure without arguments. This commit changes this behaviour to disable building of vala bindings when vapigen can't be found and no arguments were passed to configure. It will still error out when --enable-vala was specified and vapigen is not available. --- configure.ac | 11 ++++++----- 1 files changed, 6 insertions(+), 5 deletions(-) diff --git a/configure.ac b/configure.ac index c474f0b..b3fa808 100644 --- a/configure.ac +++ b/configure.ac @@ -205,12 +205,13 @@ if test "x$enable_introspection" = "xyes" ; then if test "x$enable_vala" != "xno" ; then AC_PATH_PROG(VAPIGEN, vapigen, no) if test "x$VAPIGEN" != "xno"; then - if test "x$enable_vala" == "xcheck" ; then - enable_vala=yes - AC_SUBST(VAPIGEN) - fi + enable_vala=yes else - AC_MSG_ERROR([Cannot find the "vapigen" binary in your PATH]) + if test "x$enable_vala" != "xcheck" ; then + AC_MSG_ERROR([Cannot find the "vapigen" binary in your PATH]) + else + enable_vala=no + fi fi fi fi -- 1.7.6.4

On Fri, Oct 21, 2011 at 10:59:12AM +0200, Christophe Fergeau wrote:
04368c60c added vala binding generation to libvirt-glib. To do that, it needs vapigen, so it checks for its presence during configure. However, configure errors out when vapigen is not found unless --disable-vala has been explicitly passed. In particular, vapigen must be available when running autogen.sh/configure without arguments.
This commit changes this behaviour to disable building of vala bindings when vapigen can't be found and no arguments were passed to configure. It will still error out when --enable-vala was specified and vapigen is not available. --- configure.ac | 11 ++++++----- 1 files changed, 6 insertions(+), 5 deletions(-)
diff --git a/configure.ac b/configure.ac index c474f0b..b3fa808 100644 --- a/configure.ac +++ b/configure.ac @@ -205,12 +205,13 @@ if test "x$enable_introspection" = "xyes" ; then if test "x$enable_vala" != "xno" ; then AC_PATH_PROG(VAPIGEN, vapigen, no) if test "x$VAPIGEN" != "xno"; then - if test "x$enable_vala" == "xcheck" ; then - enable_vala=yes - AC_SUBST(VAPIGEN) - fi + enable_vala=yes else - AC_MSG_ERROR([Cannot find the "vapigen" binary in your PATH]) + if test "x$enable_vala" != "xcheck" ; then + AC_MSG_ERROR([Cannot find the "vapigen" binary in your PATH]) + else + enable_vala=no + fi fi fi fi
ACK Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|
participants (3)
-
Christophe Fergeau
-
Daniel P. Berrange
-
Marc-André Lureau