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@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 :| -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list