[libvirt] [PATCH 06/10] Qemu Monitor API entry point.
Daniel P. Berrange
berrange at redhat.com
Tue Apr 27 20:25:38 UTC 2010
On Tue, Apr 27, 2010 at 04:16:15PM -0400, Chris Lalancette wrote:
> On 04/22/2010 08:27 AM, Daniel P. Berrange wrote:
> >> --- a/src/Makefile.am
> >> +++ b/src/Makefile.am
> >> @@ -32,7 +32,7 @@ if WITH_NETWORK
> >> UUID=$(shell uuidgen 2>/dev/null)
> >> endif
> >>
> >> -lib_LTLIBRARIES = libvirt.la
> >> +lib_LTLIBRARIES = libvirt.la libvirt-qemu.la
> >>
> >> moddir = $(libdir)/libvirt/drivers
> >> mod_LTLIBRARIES =
> >> @@ -947,6 +947,12 @@ libvirt_test_la_LIBADD = $(libvirt_la_LIBADD)
> >> libvirt_test_la_LDFLAGS = $(test_LDFLAGS)
> >> libvirt_test_la_CFLAGS = $(COVERAGE_CFLAGS)
> >>
> >> +libvirt_qemu_la_SOURCES = libvirt-qemu.c
> >> +libvirt_qemu_la_LDFLAGS = $(CYGWIN_EXTRA_LDFLAGS) $(MINGW_EXTRA_LDFLAGS)
> >> +libvirt_qemu_la_CFLAGS = $(COVERAGE_CFLAGS)
> >> +libvirt_qemu_la_LIBADD = libvirt_util.la libvirt_driver_qemu.la \
> >> + libvirt_driver_remote.la $(CYGWIN_EXTRA_LIBADD) \
> >> + ../gnulib/lib/libgnu.la
> >
> > This is still going to cause duplicate copies of the code to be
> > statically linked in. If you just mention 'libvirt.la', then it
> > should dynamically link to the libvirt.so with no duplication.
> > You may need to export some more private symbols but that's not
> > a big issue.
>
> I actually tried to do this, but I can't get it to work. It certainly
> might be my unfamiliarity with the auto* tools, but doing something like:
>
> diff --git a/src/Makefile.am b/src/Makefile.am
> index 3994f00..04aa203 100644
> --- a/src/Makefile.am
> +++ b/src/Makefile.am
> @@ -989,11 +989,11 @@ libvirt_test_la_LDFLAGS = $(test_LDFLAGS)
> libvirt_test_la_CFLAGS = $(COVERAGE_CFLAGS)
>
> libvirt_qemu_la_SOURCES = libvirt-qemu.c
> -libvirt_qemu_la_LDFLAGS = $(CYGWIN_EXTRA_LDFLAGS) $(MINGW_EXTRA_LDFLAGS)
> +libvirt_qemu_la_LDFLAGS = $(VERSION_SCRIPT_FLAGS)$(LIBVIRT_SYMBOL_FILE) \
> + -version-info $(LIBVIRT_VERSION_INFO) \
> + $(CYGWIN_EXTRA_LDFLAGS) $(MINGW_EXTRA_LDFLAGS)
> libvirt_qemu_la_CFLAGS = $(COVERAGE_CFLAGS)
> -libvirt_qemu_la_LIBADD = libvirt_util.la libvirt_driver_qemu.la \
> - libvirt_driver_remote.la $(CYGWIN_EXTRA_LIBADD) \
> - ../gnulib/lib/libgnu.la
> +libvirt_qemu_la_LIBADD = libvirt.la
>
> libexec_PROGRAMS =
>
> diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
> index 746327d..4b88a74 100644
> --- a/src/libvirt_private.syms
> +++ b/src/libvirt_private.syms
> @@ -706,6 +706,7 @@ virReportSystemErrorFull;
> virReportOOMErrorFull;
> virStrerror;
> virSetError;
> +virDispatchError;
>
>
> # xml.h
> @@ -723,3 +724,11 @@ virXPathLongLong;
> virXPathULongLong;
> virXPathLongHex;
> virXPathULongHex;
> +
> +
> +# remote_driver.h
> +remoteQemuMonitorCommand;
> +
> +
> +# qemu_driver.h
> +qemuMonitorCommand;
> diff --git a/src/libvirt_public.syms b/src/libvirt_public.syms
> index b4db904..22d53f9 100644
> --- a/src/libvirt_public.syms
> +++ b/src/libvirt_public.syms
> @@ -393,5 +393,8 @@ LIBVIRT_0.8.0 {
> virDomainSnapshotFree;
> } LIBVIRT_0.7.7;
>
> -
> +LIBVIRT_0.8.1 {
> + global:
> + virDomainQemuMonitorCommand;
> +} LIBVIRT_0.8.0;
>
> Causes the build to fail when linking virsh:
>
> CCLD virsh
> ../src/.libs/libvirt-qemu.so: undefined reference to `qemuMonitorCommand'
> collect2: ld returned 1 exit status
>
> Indeed, if I nm src/.libs/libvirt-qemu.so:
>
> [clalance at localhost libvirt (qemu_monitor)]$ nm src/.libs/libvirt-qemu.so | grep Monitor
> U qemuMonitorCommand
> U remoteQemuMonitorCommand@@LIBVIRT_PRIVATE_0.8.0
> 000010b0 T virDomainQemuMonitorCommand
>
> Any suggestions about what I'm doing wrong?
Have you re-ordered your patches ? There is a qemuMonitorCommand defined
in src/qemu/qemu_monitor_text.c but that is static. The qemuMonitorCommand
you actually want is not added till your next patch. So perhaps your old
code was pullin in the wrong definition ?
It'd be good to rename this to reflect the public API name and avoid the
clash
Daniel
--
|: Red Hat, Engineering, London -o- http://people.redhat.com/berrange/ :|
|: http://libvirt.org -o- http://virt-manager.org -o- http://deltacloud.org :|
|: http://autobuild.org -o- http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|
More information about the libvir-list
mailing list