On Mon, Feb 14, 2011 at 09:46:01PM +1100, Justin Clift wrote:
On 14/02/2011, at 8:15 PM, Justin Clift wrote:
> On 14/02/2011, at 3:22 PM, Daniel Veillard wrote:
> <snip>
>> it does fix the error messages I had on linux configure,
>> but I'm not sure the issues on Win32 and OS-X are all sorted
>> out yet, so please check.
>
> Still broken on OSX. :(
Found the commit which introduces the breakage, it's this one:
**************************************************************
**************************************************************
commit 2169472ab6cac3bdb1f32578de2b608a61a1d703
Author: Jiri Denemark <jdenemar(a)redhat.com>
Date: Wed Feb 2 16:37:10 2011 +0100
qemu: Add shortcut for HMP pass through
Currently users who want to use virDomainQemuMonitorCommand() API or
it's virsh equivalent has to use the same protocol as libvirt uses for
communication to qemu. Since the protocol is QMP with current qemu and
HMP much more usable for humans, one ends up typing something like the
following:
virsh qemu-monitor-command DOM \
'{"execute":"human-monitor-command","arguments":{"command-line":"info
kvm"}}'
which is not a very convenient way of debugging qemu.
This patch introduces --hmp option to qemu-monitor-command, which says
that the provided command is in HMP. If libvirt uses QMP to talk with
qemu, the command will automatically be converted into QMP. So the
example above is simplified to just
virsh qemu-monitor-command --hmp DOM "info kvm"
Also the result is converted from
{"return":"kvm support: enabled\r\n"}
to just plain HMP:
kvm support: enabled
If libvirt talks to qemu in HMP, --hmp flag is obviously a noop.
**************************************************************
**************************************************************
Now, I just need to understand how this patch causes the error:
ld: duplicate symbol _virDomainQemuMonitorCommandFlags in
./.libs/libvirt_util.a(libvirt_util_la-bitmap.o) and
./.libs/libvirt_util.a(libvirt_util_la-authhelper.o)
Suggestions and pointers welcome. :)
It is a broken enum declaration in the header libvirt-qemu.h:
enum {
VIR_DOMAIN_QEMU_MONITOR_COMMAND_DEFAULT = 0,
VIR_DOMAIN_QEMU_MONITOR_COMMAND_HMP = (1 << 0), /* cmd is in HMP */
} virDomainQemuMonitorCommandFlags;
There is a missing 'typedef' keyword there before 'enum', so instead of
defining a type, it is defining a variable :-(
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 :|