[libvirt] [PATCH 1 of 5] Split out version script into multiple files

Jim Meyering jim at meyering.net
Tue Dec 23 17:31:14 UTC 2008


John Levon <john.levon at sun.com> wrote:
> On Tue, Dec 23, 2008 at 12:57:19PM +0100, Jim Meyering wrote:
>
>> This all looks fine, but I'd prefer to retain the WARNING in the generated
>> file, so that people are less likely to modify it directly.  Along the
>
> Sure, your changes sound fine - are you going to commit your version?

I had trouble applying the first change set, both in configure.in
(rejected hunk) and with the renamed file.  Plus I made some small
additional changes, so please check it carefully.  The other 4 applied
cleanly.  Also, look over the five log messages.  Each of those will be
copied mechanically into the ChangeLog file.

Once you sign off, I'll commit these.

BTW, I noticed that configure.in contains many uses of test's -o
operator, but that's not portable.  See the "Limitations of Builtins"
section in autoconf's documentation.  But that probably doesn't
matter for libvirt, since I suspect that all systems for which
libvirt is useful have a sufficiently modern /bin/sh.


>From 87ff5b3d474e036a6d4b12276d2ebb3b1c2531d6 Mon Sep 17 00:00:00 2001
From: john.levon at sun.com <john.levon at sun.com>
Date: Tue, 23 Dec 2008 17:38:26 +0100
Subject: [PATCH 1/5] split version script into multiple files

* src/Makefile.am (PRIVSYMFILES): Define.
(EXTRA_DIST): Append $(PRIVSYMFILES).
(libvirt.syms): New rule.
Reflect renaming: s/libvirt_sym.version/libvirt.syms/.
(BUILT_SOURCES): Depend on libvirt.syms.
* configure.in: Define ENABLE_DEBUG as an automake conditional.
(AC_OUTPUT): Remove src/libvirt_sym.version.
* src/.cvsignore: s/libvirt_sym.version/libvirt.syms/.
* src/.gitignore: Regenerate.
* src/libvirt_public.syms: Renamed from src/libvirt_sym.version.in.
* src/libvirt_debug.syms: New file.
* src/libvirt_private.syms: New file.
Author: John Levon
---
 configure.in               |    2 +-
 src/.cvsignore             |    2 +-
 src/.gitignore             |    2 +-
 src/Makefile.am            |   52 ++++-
 src/libvirt_debug.syms     |   19 ++
 src/libvirt_private.syms   |  346 ++++++++++++++++++++++++
 src/libvirt_public.syms    |  240 +++++++++++++++++
 src/libvirt_sym.version.in |  626 --------------------------------------------
 8 files changed, 653 insertions(+), 636 deletions(-)
 create mode 100644 src/libvirt_debug.syms
 create mode 100644 src/libvirt_private.syms
 create mode 100644 src/libvirt_public.syms
 delete mode 100644 src/libvirt_sym.version.in

diff --git a/configure.in b/configure.in
index e870004..3358cff 100644
--- a/configure.in
+++ b/configure.in
@@ -195,6 +195,7 @@ dnl --enable-debug=(yes|no)
 AC_ARG_ENABLE([debug],
               [AC_HELP_STRING([--enable-debug=no/yes],
                              [enable debugging output])],[],[enable_debug=yes])
+AM_CONDITIONAL([ENABLE_DEBUG], test x"$enable_debug" = x"yes")
 if test x"$enable_debug" = x"yes"; then
    AC_DEFINE([ENABLE_DEBUG], [], [whether debugging is enabled])
 fi
@@ -1253,7 +1254,6 @@ AC_OUTPUT(Makefile src/Makefile include/Makefile docs/Makefile \
 	  gnulib/lib/Makefile \
 	  gnulib/tests/Makefile \
           libvirt.pc libvirt.spec mingw32-libvirt.spec \
-          src/libvirt_sym.version \
           po/Makefile.in \
 	  include/libvirt/Makefile include/libvirt/libvirt.h \
 	  python/Makefile python/tests/Makefile \
diff --git a/src/.cvsignore b/src/.cvsignore
index cef59e0..537340f 100644
--- a/src/.cvsignore
+++ b/src/.cvsignore
@@ -15,4 +15,4 @@ libvirt_parthelper
 libvirt_lxc
 virsh-net-edit.c
 virsh-pool-edit.c
-libvirt_sym.version
+libvirt.syms
diff --git a/src/.gitignore b/src/.gitignore
index cef59e0..537340f 100644
--- a/src/.gitignore
+++ b/src/.gitignore
@@ -15,4 +15,4 @@ libvirt_parthelper
 libvirt_lxc
 virsh-net-edit.c
 virsh-pool-edit.c
-libvirt_sym.version
+libvirt.syms
diff --git a/src/Makefile.am b/src/Makefile.am
index 6c65f91..984c12a 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -192,6 +192,8 @@ libvirt_driver_la_SOURCES =					\
 libvirt_driver_la_CFLAGS = $(XEN_CFLAGS) $(NUMACTL_CFLAGS)
 libvirt_driver_la_LDFLAGS = $(XEN_LIBS) $(NUMACTL_LIBS)

+PRIVSYMFILES = libvirt_private.syms
+
 if WITH_TEST
 if WITH_DRIVER_MODULES
 mod_LTLIBRARIES += libvirt_driver_test.la
@@ -390,31 +392,67 @@ EXTRA_DIST +=							\
 		$(NODE_DEVICE_DRIVER_HAL_SOURCES)		\
 		$(NODE_DEVICE_DRIVER_DEVKIT_SOURCES)

+#
+# Build our version script.  This is composed of three parts:
+#
+# 1. libvirt_public.syms - public API.  These functions are always
+# present in the library and should never change incompatibly.
+#
+# 2. libvirt_private.syms - private API.  These symbols are private and
+# semantics may change on every release, hence the version number is
+# spliced in at build time. This ensures that if libvirtd, virsh, or a
+# driver module was built against one libvirt release, it will refuse to
+# load with another where symbols may have same names but different
+# semantics. Such symbols should never be visible in an (installed)
+# public header file.
+#
+# 3. libvirt_*.syms - dynamic private API.  Like libvirt_private.syms,
+# except that build options (such as --enable-debug) can mean these
+# symbols aren't present at all.
+#
+
+if ENABLE_DEBUG
+PRIVSYMFILES += libvirt_debug.syms
+endif
+
+EXTRA_DIST += libvirt_public.syms $(PRIVSYMFILES)
+
+libvirt.syms: libvirt_public.syms $(PRIVSYMFILES)
+	rm -f $@-tmp $@
+	printf '# WARNING: generated from the following:\n# $^\n\n' >$@-tmp
+	cat $(srcdir)/libvirt_public.syms >>$@-tmp
+	printf '\n\n# Private symbols\n\n' >>$@-tmp
+	printf 'LIBVIRT_PRIVATE_$(VERSION) {\n\n'  >>$@-tmp
+	printf 'global:\n\n' >>$@-tmp
+	for file in $(PRIVSYMFILES); do \
+	    cat $(srcdir)/$$file >>$@-tmp; \
+	done
+	printf '\n\nlocal:\n*;\n\n};' >>$@-tmp
+	chmod a-w $@-tmp
+	mv $@-tmp libvirt.syms

 # Empty source list - it merely links a bunch of convenience libs together
 libvirt_la_SOURCES =
 libvirt_la_LIBADD += \
 		    @CYGWIN_EXTRA_LIBADD@ ../gnulib/lib/libgnu.la
-libvirt_la_LDFLAGS = @VERSION_SCRIPT_FLAGS at libvirt_sym.version \
+libvirt_la_LDFLAGS = $(VERSION_SCRIPT_FLAGS)libvirt.syms \
                      -version-info @LIBVIRT_VERSION_INFO@ \
                     $(COVERAGE_CFLAGS:-f%=-Wc,-f%) \
                     $(LIBXML_LIBS) $(SELINUX_LIBS) \
 		    $(XEN_LIBS) $(DRIVER_MODULE_LIBS) \
 		    @CYGWIN_EXTRA_LDFLAGS@ @MINGW_EXTRA_LDFLAGS@
 libvirt_la_CFLAGS = $(COVERAGE_CFLAGS) -DIN_LIBVIRT
-libvirt_la_DEPENDENCIES = $(libvirt_la_LIBADD) libvirt_sym.version
+libvirt_la_DEPENDENCIES = $(libvirt_la_LIBADD) libvirt.syms

 # Create an automake "convenience library" version of libvirt_la,
 # just for testing, since the test harness requires access to internal
 # bits and pieces that we don't want to make publicly accessible.
 noinst_LTLIBRARIES += libvirt_test.la

-# Convert libvirt_sym.version
-#      to libvirt_test_sym.version, and
-# remove -version-info X.Y.Z (not needed since this is a convenience library.
+# Remove version script from convenience library
 test_LDFLAGS =						\
   $$(echo '$(libvirt_la_LDFLAGS)'			\
-     |sed 's!-Wl,--v.*_sym\.version!!'			\
+     |sed 's!@VERSION_SCRIPT_FLAGS at libvirt.syms!!'	\
      |sed 's!-version-info @LIBVIRT_VERSION_INFO@!!')

 # Just like the above, but with a slightly different set of public symbols.
@@ -438,7 +476,7 @@ virsh_LDADD =							\
 		../gnulib/lib/libgnu.la				\
 		$(VIRSH_LIBS)
 virsh_CFLAGS = $(COVERAGE_CFLAGS) $(READLINE_CFLAGS) $(NUMACTL_CFLAGS)
-BUILT_SOURCES = virsh-net-edit.c virsh-pool-edit.c
+BUILT_SOURCES = virsh-net-edit.c virsh-pool-edit.c libvirt.syms

 virsh-net-edit.c: virsh.c Makefile.am
 	rm -f $@-tmp
diff --git a/src/libvirt_debug.syms b/src/libvirt_debug.syms
new file mode 100644
index 0000000..1742a0b
--- /dev/null
+++ b/src/libvirt_debug.syms
@@ -0,0 +1,19 @@
+#
+# These symbols are dependent upon --enable-debug.
+#
+
+
+# libvirt_internal.h
+debugFlag;
+
+
+# logging.h
+virLogMessage;
+virLogSetDefaultPriority;
+virLogDefineFilter;
+virLogDefineOutput;
+virLogParseFilters;
+virLogParseOutputs;
+virLogStartup;
+virLogShutdown;
+virLogReset;
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
new file mode 100644
index 0000000..fb7b5f9
--- /dev/null
+++ b/src/libvirt_private.syms
@@ -0,0 +1,346 @@
+#
+# General private symbols. See Makefile.am.
+#
+
+
+# bridge.h
+brAddBridge;
+brAddInterface;
+brAddTap;
+brDeleteBridge;
+brInit;
+brSetEnableSTP;
+brSetForwardDelay;
+brSetInetAddress;
+brSetInetNetmask;
+brSetInterfaceUp;
+brShutdown;
+
+
+# buf.h
+virBufferVSprintf;
+virBufferEscapeString;
+virBufferAdd;
+virBufferAddChar;
+virBufferContentAndReset;
+virBufferError;
+
+
+# caps.h
+virCapabilitiesAddGuest;
+virCapabilitiesAddGuestDomain;
+virCapabilitiesAddGuestFeature;
+virCapabilitiesAddHostMigrateTransport;
+virCapabilitiesAddHostNUMACell;
+virCapabilitiesAddHostFeature;
+virCapabilitiesDefaultGuestArch;
+virCapabilitiesDefaultGuestEmulator;
+virCapabilitiesDefaultGuestMachine;
+virCapabilitiesFormatXML;
+virCapabilitiesFree;
+virCapabilitiesNew;
+virCapabilitiesSetMacPrefix;
+
+
+# conf.h
+virConfNew;
+virConfReadFile;
+virConfReadMem;
+virConfFree;
+virConfFreeValue;
+virConfGetValue;
+virConfSetValue;
+virConfWriteFile;
+virConfWriteMem;
+
+
+# datatypes.h
+virGetDomain;
+virGetNetwork;
+virGetStoragePool;
+virGetStorageVol;
+virGetNodeDevice;
+virUnrefDomain;
+
+
+# domain_conf.h
+virDiskNameToBusDeviceIndex;
+virDiskNameToIndex;
+virDomainAssignDef;
+virDomainConfigFile;
+virDomainCpuSetFormat;
+virDomainCpuSetParse;
+virDomainChrDefFree;
+virDomainChrTypeFromString;
+virDomainChrTypeToString;
+virDomainDefDefaultEmulator;
+virDomainDefFormat;
+virDomainDefFree;
+virDomainDefParseFile;
+virDomainDefParseNode;
+virDomainDefParseString;
+virDomainDeleteConfig;
+virDomainDeviceDefFree;
+virDomainDeviceDefParse;
+virDomainDiskBusTypeToString;
+virDomainDiskDefFree;
+virDomainDiskDeviceTypeToString;
+virDomainDiskQSort;
+virDomainFindByID;
+virDomainFindByName;
+virDomainFindByUUID;
+virDomainGraphicsTypeFromString;
+virDomainGraphicsDefFree;
+virDomainInputDefFree;
+virDomainLifecycleTypeFromString;
+virDomainLifecycleTypeToString;
+virDomainLoadAllConfigs;
+virDomainNetDefFree;
+virDomainObjFree;
+virDomainObjListFree;
+virDomainRemoveInactive;
+virDomainSaveXML;
+virDomainSaveConfig;
+virDomainSoundDefFree;
+virDomainSoundModelTypeFromString;
+virDomainSoundModelTypeToString;
+virDomainVirtTypeToString;
+virDomainFSDefFree;
+virDomainObjLock;
+virDomainObjUnlock;
+
+
+# domain_event.h
+virDomainEventCallbackListAdd;
+virDomainEventCallbackListFree;
+virDomainEventCallbackListRemove;
+virDomainEventCallbackListRemoveConn;
+virDomainEventCallbackListMarkDelete;
+virDomainEventCallbackListPurgeMarked;
+virDomainEventQueueNew;
+virDomainEventQueueFree;
+virDomainEventQueuePop;
+virDomainEventQueuePush;
+virDomainEventNew;
+virDomainEventNewFromDom;
+virDomainEventNewFromObj;
+virDomainEventNewFromDef;
+virDomainEventFree;
+virDomainEventDispatchDefaultFunc;
+virDomainEventDispatch;
+virDomainEventQueueDispatch;
+
+
+# driver.h
+virDriverLoadModule;
+
+
+# event.h
+virEventAddHandle;
+virEventAddTimeout;
+virEventRemoveHandle;
+virEventRemoveTimeout;
+virEventUpdateHandle;
+virEventUpdateTimeout;
+
+
+# hash.h
+virHashAddEntry;
+virHashCreate;
+virHashForEach;
+virHashFree;
+virHashLookup;
+virHashRemoveEntry;
+virHashRemoveSet;
+virHashSearch;
+virHashSize;
+
+
+# iptables.h
+iptablesAddForwardAllowCross;
+iptablesAddForwardAllowIn;
+iptablesAddForwardAllowOut;
+iptablesAddForwardAllowRelatedIn;
+iptablesAddForwardMasquerade;
+iptablesAddForwardRejectIn;
+iptablesAddForwardRejectOut;
+iptablesAddTcpInput;
+iptablesAddUdpInput;
+iptablesContextFree;
+iptablesContextNew;
+iptablesReloadRules;
+iptablesRemoveForwardAllowCross;
+iptablesRemoveForwardAllowIn;
+iptablesRemoveForwardAllowOut;
+iptablesRemoveForwardAllowRelatedIn;
+iptablesRemoveForwardMasquerade;
+iptablesRemoveForwardRejectIn;
+iptablesRemoveForwardRejectOut;
+iptablesRemoveTcpInput;
+iptablesRemoveUdpInput;
+iptablesSaveRules;
+
+
+# libvirt_internal.h
+virStateInitialize;
+virStateCleanup;
+virStateReload;
+virStateActive;
+virDrvSupportsFeature;
+virDomainMigratePrepare;
+virDomainMigratePerform;
+virDomainMigrateFinish;
+virDomainMigratePrepare2;
+virDomainMigrateFinish2;
+virRegisterDriver;
+virRegisterNetworkDriver;
+virRegisterStateDriver;
+virRegisterStorageDriver;
+virRegisterDeviceMonitor;
+
+
+# memory.h
+virAlloc;
+virAllocN;
+virReallocN;
+virFree;
+
+
+# network_conf.h
+virNetworkAssignDef;
+virNetworkDefFormat;
+virNetworkDefFree;
+virNetworkDefParseFile;
+virNetworkDefParseNode;
+virNetworkDefParseString;
+virNetworkDeleteConfig;
+virNetworkFindByName;
+virNetworkFindByUUID;
+virNetworkLoadAllConfigs;
+virNetworkObjListFree;
+virNetworkDefParseNode;
+virNetworkRemoveInactive;
+virNetworkSaveConfig;
+virNetworkObjLock;
+virNetworkObjUnlock;
+
+
+# nodeinfo.h
+virNodeInfoPopulate;
+virCapsInitNUMA;
+
+
+# node_device_conf.h
+virNodeDeviceObjRemove;
+virNodeDevCapTypeToString;
+virNodeDeviceFindByName;
+virNodeDeviceObjListFree;
+virNodeDeviceDefFree;
+virNodeDevCapsDefFree;
+virNodeDeviceDefFormat;
+virNodeDeviceObjLock;
+virNodeDeviceObjUnlock;
+virNodeDeviceAssignDef;
+
+
+# qparams.h
+qparam_get_query;
+qparam_query_parse;
+free_qparam_set;
+
+
+# stats_linux.h
+linuxDomainInterfaceStats;
+xenLinuxDomainBlockStats;
+
+
+# storage_backend.h
+virStorageBackendForType;
+virStorageBackendRunProgNul;
+virStorageBackendRunProgRegex;
+virStorageBackendStablePath;
+virStorageBackendUpdateVolInfo;
+virStorageBackendUpdateVolInfoFD;
+
+
+# storage_conf.h
+virStoragePoolDefFormat;
+virStoragePoolDefFree;
+virStoragePoolDefParse;
+virStoragePoolLoadAllConfigs;
+virStoragePoolObjAssignDef;
+virStoragePoolObjClearVols;
+virStoragePoolObjDeleteDef;
+virStoragePoolObjFindByName;
+virStoragePoolObjFindByUUID;
+virStoragePoolObjListFree;
+virStoragePoolObjRemove;
+virStoragePoolObjSaveDef;
+virStoragePoolSourceFree;
+virStoragePoolSourceListFormat;
+virStorageVolDefFindByKey;
+virStorageVolDefFindByName;
+virStorageVolDefFindByPath;
+virStorageVolDefFormat;
+virStorageVolDefFree;
+virStorageVolDefParse;
+virStoragePoolFormatDiskTypeToString;
+virStoragePoolFormatFileSystemTypeToString;
+virStoragePoolFormatFileSystemNetTypeToString;
+virStorageVolFormatFileSystemTypeToString;
+virStoragePoolTypeFromString;
+virStoragePoolObjLock;
+virStoragePoolObjUnlock;
+
+
+# util.h
+virFileReadAll;
+virStrToLong_i;
+virStrToLong_ll;
+virStrToLong_ull;
+virStrToLong_ui;
+virFileLinkPointsTo;
+saferead;
+safewrite;
+virMacAddrCompare;
+virEnumFromString;
+virEnumToString;
+virEventAddHandle;
+virEventRemoveHandle;
+virExec;
+virFormatMacAddr;
+virParseMacAddr;
+virFileDeletePid;
+virFileExists;
+virFileHasSuffix;
+virFileLinkPointsTo;
+virFileMakePath;
+virFileOpenTty;
+virFileReadLimFD;
+virFilePid;
+virFileReadPid;
+virFileLinkPointsTo;
+virParseNumber;
+virAsprintf;
+virRun;
+virSkipSpaces;
+
+
+# uuid.h
+virUUIDFormat;
+virUUIDGenerate;
+virUUIDParse;
+
+
+# virterror_internal.h
+virReportErrorHelper;
+virErrorMsg;
+virRaiseError;
+
+
+# xml.h
+virXPathLong;
+virXPathNode;
+virXPathNodeSet;
+virXPathString;
+virXMLPropString;
diff --git a/src/libvirt_public.syms b/src/libvirt_public.syms
new file mode 100644
index 0000000..be3fb4f
--- /dev/null
+++ b/src/libvirt_public.syms
@@ -0,0 +1,240 @@
+#
+# Officially exported symbols, for which header
+# file definitions are installed in /usr/include/libvirt
+# either from libvirt.h and virterror.h
+#
+# Versions here are *fixed* to match the libvirt version
+# at which the symbol was introduced. This ensures that
+# a new client app requiring symbol foo() can't accidentally
+# run with old libvirt.so not providing foo() - the global
+# soname version info can't enforce this since we never
+# change the soname
+#
+LIBVIRT_0.0.3 {
+    global:
+	virConnectClose;
+	virConnectGetType;
+	virConnectGetVersion;
+	virConnectListDomains;
+	virConnectNumOfDomains;
+	virConnectOpen;
+	virConnectOpenReadOnly;
+
+	virDomainCreateLinux;
+	virDomainDestroy;
+	virDomainFree;
+	virDomainGetID;
+	virDomainGetInfo;
+	virDomainGetMaxMemory;
+	virDomainGetName;
+	virDomainGetOSType;
+	virDomainGetXMLDesc;
+	virDomainLookupByID;
+	virDomainLookupByName;
+	virDomainRestore;
+	virDomainResume;
+	virDomainSave;
+	virDomainSetMaxMemory;
+	virDomainShutdown;
+	virDomainSuspend;
+
+	virGetVersion;
+};
+
+LIBVIRT_0.0.5 {
+    global:
+	virDomainLookupByUUID;
+	virDomainGetUUID;
+} LIBVIRT_0.0.3;
+
+LIBVIRT_0.1.0 {
+    global:
+	virInitialize;
+	virNodeGetInfo;
+	virDomainReboot;
+
+	virCopyLastError;
+	virConnSetErrorFunc;
+	virResetLastError;
+	virResetError;
+	virConnGetLastError;
+	virGetLastError;
+	virSetErrorFunc;
+	virConnCopyLastError;
+	virConnResetLastError;
+	virDefaultErrorFunc;
+} LIBVIRT_0.0.5;
+
+LIBVIRT_0.1.1 {
+    global:
+	virDomainLookupByUUIDString;
+	virDomainGetUUIDString;
+	virDomainSetMemory;
+	virDomainDefineXML;
+	virDomainCreate;
+	virDomainUndefine;
+	virConnectListDefinedDomains;
+} LIBVIRT_0.1.0;
+
+LIBVIRT_0.1.4 {
+    global:
+	virDomainSetVcpus;
+	virDomainPinVcpu;
+	virDomainGetVcpus;
+} LIBVIRT_0.1.1;
+
+LIBVIRT_0.1.5 {
+    global:
+	virConnectNumOfDefinedDomains;
+} LIBVIRT_0.1.4;
+
+LIBVIRT_0.1.9 {
+    global:
+	virDomainCoreDump;
+	virDomainAttachDevice;
+	virDomainDetachDevice;
+} LIBVIRT_0.1.5;
+
+LIBVIRT_0.2.0 {
+    global:
+	virConnectNumOfNetworks;
+	virConnectListNetworks;
+	virConnectNumOfDefinedNetworks;
+	virConnectListDefinedNetworks;
+	virNetworkLookupByName;
+	virNetworkLookupByUUID;
+	virNetworkLookupByUUIDString;
+	virNetworkCreateXML;
+	virNetworkDefineXML;
+	virNetworkUndefine;
+	virNetworkCreate;
+	virNetworkDestroy;
+	virNetworkFree;
+	virNetworkGetName;
+	virNetworkGetUUID;
+	virNetworkGetUUIDString;
+	virNetworkGetXMLDesc;
+	virNetworkGetBridgeName;
+} LIBVIRT_0.1.9;
+
+LIBVIRT_0.2.1 {
+    global:
+	virConnectGetCapabilities;
+	virConnectGetMaxVcpus;
+	virDomainGetMaxVcpus;
+	virDomainGetAutostart;
+	virDomainSetAutostart;
+	virNetworkGetAutostart;
+	virNetworkSetAutostart;
+} LIBVIRT_0.2.0;
+
+LIBVIRT_0.2.3 {
+    global:
+	virDomainGetSchedulerType;
+	virDomainGetSchedulerParameters;
+	virDomainSetSchedulerParameters;
+} LIBVIRT_0.2.1;
+
+LIBVIRT_0.3.0 {
+    global:
+	virConnectGetHostname;
+	virConnectGetURI;
+	virDomainGetConnect;
+	virNetworkGetConnect;
+} LIBVIRT_0.2.3;
+
+LIBVIRT_0.3.2 {
+    global:
+	virDomainMigrate;
+	virDomainBlockStats;
+	virDomainInterfaceStats;
+} LIBVIRT_0.3.0;
+
+LIBVIRT_0.3.3 {
+    global:
+	virNodeGetCellsFreeMemory;
+	virNodeGetFreeMemory;
+} LIBVIRT_0.3.2;
+
+LIBVIRT_0.4.0 {
+    global:
+	virConnectOpenAuth;
+	virConnectAuthPtrDefault;
+} LIBVIRT_0.3.3;
+
+LIBVIRT_0.4.1 {
+    global:
+	virStoragePoolGetConnect;
+	virConnectNumOfStoragePools;
+	virConnectNumOfDefinedStoragePools;
+	virConnectListStoragePools;
+	virConnectListDefinedStoragePools;
+	virStoragePoolLookupByName;
+	virStoragePoolLookupByUUID;
+	virStoragePoolLookupByUUIDString;
+	virStoragePoolLookupByVolume;
+	virStoragePoolCreateXML;
+	virStoragePoolDefineXML;
+	virStoragePoolUndefine;
+	virStoragePoolCreate;
+	virStoragePoolBuild;
+	virStoragePoolDestroy;
+	virStoragePoolDelete;
+	virStoragePoolRefresh;
+	virStoragePoolFree;
+	virStoragePoolGetName;
+	virStoragePoolGetUUID;
+	virStoragePoolGetUUIDString;
+	virStoragePoolGetInfo;
+	virStoragePoolGetXMLDesc;
+	virStoragePoolSetAutostart;
+	virStoragePoolGetAutostart;
+	virStoragePoolNumOfVolumes;
+	virStoragePoolListVolumes;
+
+	virStorageVolGetConnect;
+	virStorageVolLookupByName;
+	virStorageVolLookupByKey;
+	virStorageVolLookupByPath;
+	virStorageVolCreateXML;
+	virStorageVolDelete;
+	virStorageVolFree;
+	virStorageVolGetName;
+	virStorageVolGetKey;
+	virStorageVolGetInfo;
+	virStorageVolGetXMLDesc;
+	virStorageVolGetPath;
+} LIBVIRT_0.4.0;
+
+LIBVIRT_0.4.2 {
+    global:
+	virDomainBlockPeek;
+	virDomainMemoryPeek;
+} LIBVIRT_0.4.1;
+
+LIBVIRT_0.4.5 {
+    global:
+	virConnectFindStoragePoolSources;
+} LIBVIRT_0.4.2;
+
+LIBVIRT_0.5.0 {
+    global:
+	virDomainCreateXML;
+	virEventRegisterImpl;
+	virConnectDomainEventRegister;
+	virConnectDomainEventDeregister;
+
+	virNodeNumOfDevices;
+	virNodeListDevices;
+	virNodeDeviceLookupByName;
+	virNodeDeviceFree;
+	virNodeDeviceGetXMLDesc;
+	virNodeDeviceGetName;
+	virNodeDeviceGetParent;
+	virNodeDeviceNumOfCaps;
+	virNodeDeviceListCaps;
+
+} LIBVIRT_0.4.5;
+
+# no new entry point in 0.5.1
+# .... define new API here using predicted next version number ....
diff --git a/src/libvirt_sym.version.in b/src/libvirt_sym.version.in
deleted file mode 100644
index de919da..0000000
--- a/src/libvirt_sym.version.in
+++ /dev/null
@@ -1,626 +0,0 @@
-#
-# WARNING: libvirt_sym.version.in  is the master file
-#
-# WARNING: libvirt_sym.version is auto-generated by configure
-#
-
-#
-# First officially exported symbols, for which header
-# file definitions are installed in /usr/include/libvirt
-# either from libvirt.h and virterror.h
-#
-# Versions here are *fixed* to match the libvirt version
-# at which the symbol was introduced. This ensures that
-# a new client app requiring symbol foo() can't accidentally
-# run with old libvirt.so not providing foo() - the global
-# soname version info can't enforce this since we never
-# change the soname
-#
-LIBVIRT_0.0.3 {
-    global:
-	virConnectClose;
-	virConnectGetType;
-	virConnectGetVersion;
-	virConnectListDomains;
-	virConnectNumOfDomains;
-	virConnectOpen;
-	virConnectOpenReadOnly;
-
-	virDomainCreateLinux;
-	virDomainDestroy;
-	virDomainFree;
-	virDomainGetID;
-	virDomainGetInfo;
-	virDomainGetMaxMemory;
-	virDomainGetName;
-	virDomainGetOSType;
-	virDomainGetXMLDesc;
-	virDomainLookupByID;
-	virDomainLookupByName;
-	virDomainRestore;
-	virDomainResume;
-	virDomainSave;
-	virDomainSetMaxMemory;
-	virDomainShutdown;
-	virDomainSuspend;
-
-	virGetVersion;
-};
-
-LIBVIRT_0.0.5 {
-    global:
-	virDomainLookupByUUID;
-	virDomainGetUUID;
-} LIBVIRT_0.0.3;
-
-LIBVIRT_0.1.0 {
-    global:
-	virInitialize;
-	virNodeGetInfo;
-	virDomainReboot;
-
-	virCopyLastError;
-	virConnSetErrorFunc;
-	virResetLastError;
-	virResetError;
-	virConnGetLastError;
-	virGetLastError;
-	virSetErrorFunc;
-	virConnCopyLastError;
-	virConnResetLastError;
-	virDefaultErrorFunc;
-} LIBVIRT_0.0.5;
-
-LIBVIRT_0.1.1 {
-    global:
-	virDomainLookupByUUIDString;
-	virDomainGetUUIDString;
-	virDomainSetMemory;
-	virDomainDefineXML;
-	virDomainCreate;
-	virDomainUndefine;
-	virConnectListDefinedDomains;
-} LIBVIRT_0.1.0;
-
-LIBVIRT_0.1.4 {
-    global:
-	virDomainSetVcpus;
-	virDomainPinVcpu;
-	virDomainGetVcpus;
-} LIBVIRT_0.1.1;
-
-LIBVIRT_0.1.5 {
-    global:
-	virConnectNumOfDefinedDomains;
-} LIBVIRT_0.1.4;
-
-LIBVIRT_0.1.9 {
-    global:
-	virDomainCoreDump;
-	virDomainAttachDevice;
-	virDomainDetachDevice;
-} LIBVIRT_0.1.5;
-
-LIBVIRT_0.2.0 {
-    global:
-	virConnectNumOfNetworks;
-	virConnectListNetworks;
-	virConnectNumOfDefinedNetworks;
-	virConnectListDefinedNetworks;
-	virNetworkLookupByName;
-	virNetworkLookupByUUID;
-	virNetworkLookupByUUIDString;
-	virNetworkCreateXML;
-	virNetworkDefineXML;
-	virNetworkUndefine;
-	virNetworkCreate;
-	virNetworkDestroy;
-	virNetworkFree;
-	virNetworkGetName;
-	virNetworkGetUUID;
-	virNetworkGetUUIDString;
-	virNetworkGetXMLDesc;
-	virNetworkGetBridgeName;
-} LIBVIRT_0.1.9;
-
-LIBVIRT_0.2.1 {
-    global:
-	virConnectGetCapabilities;
-	virConnectGetMaxVcpus;
-	virDomainGetMaxVcpus;
-	virDomainGetAutostart;
-	virDomainSetAutostart;
-	virNetworkGetAutostart;
-	virNetworkSetAutostart;
-} LIBVIRT_0.2.0;
-
-LIBVIRT_0.2.3 {
-    global:
-	virDomainGetSchedulerType;
-	virDomainGetSchedulerParameters;
-	virDomainSetSchedulerParameters;
-} LIBVIRT_0.2.1;
-
-LIBVIRT_0.3.0 {
-    global:
-	virConnectGetHostname;
-	virConnectGetURI;
-	virDomainGetConnect;
-	virNetworkGetConnect;
-} LIBVIRT_0.2.3;
-
-LIBVIRT_0.3.2 {
-    global:
-	virDomainMigrate;
-	virDomainBlockStats;
-	virDomainInterfaceStats;
-} LIBVIRT_0.3.0;
-
-LIBVIRT_0.3.3 {
-    global:
-	virNodeGetCellsFreeMemory;
-	virNodeGetFreeMemory;
-} LIBVIRT_0.3.2;
-
-LIBVIRT_0.4.0 {
-    global:
-	virConnectOpenAuth;
-	virConnectAuthPtrDefault;
-} LIBVIRT_0.3.3;
-
-LIBVIRT_0.4.1 {
-    global:
-	virStoragePoolGetConnect;
-	virConnectNumOfStoragePools;
-	virConnectNumOfDefinedStoragePools;
-	virConnectListStoragePools;
-	virConnectListDefinedStoragePools;
-	virStoragePoolLookupByName;
-	virStoragePoolLookupByUUID;
-	virStoragePoolLookupByUUIDString;
-	virStoragePoolLookupByVolume;
-	virStoragePoolCreateXML;
-	virStoragePoolDefineXML;
-	virStoragePoolUndefine;
-	virStoragePoolCreate;
-	virStoragePoolBuild;
-	virStoragePoolDestroy;
-	virStoragePoolDelete;
-	virStoragePoolRefresh;
-	virStoragePoolFree;
-	virStoragePoolGetName;
-	virStoragePoolGetUUID;
-	virStoragePoolGetUUIDString;
-	virStoragePoolGetInfo;
-	virStoragePoolGetXMLDesc;
-	virStoragePoolSetAutostart;
-	virStoragePoolGetAutostart;
-	virStoragePoolNumOfVolumes;
-	virStoragePoolListVolumes;
-
-	virStorageVolGetConnect;
-	virStorageVolLookupByName;
-	virStorageVolLookupByKey;
-	virStorageVolLookupByPath;
-	virStorageVolCreateXML;
-	virStorageVolDelete;
-	virStorageVolFree;
-	virStorageVolGetName;
-	virStorageVolGetKey;
-	virStorageVolGetInfo;
-	virStorageVolGetXMLDesc;
-	virStorageVolGetPath;
-} LIBVIRT_0.4.0;
-
-LIBVIRT_0.4.2 {
-    global:
-	virDomainBlockPeek;
-	virDomainMemoryPeek;
-} LIBVIRT_0.4.1;
-
-LIBVIRT_0.4.5 {
-    global:
-	virConnectFindStoragePoolSources;
-} LIBVIRT_0.4.2;
-
-LIBVIRT_0.5.0 {
-    global:
-	virDomainCreateXML;
-	virEventRegisterImpl;
-	virConnectDomainEventRegister;
-	virConnectDomainEventDeregister;
-
-	virNodeNumOfDevices;
-	virNodeListDevices;
-	virNodeDeviceLookupByName;
-	virNodeDeviceFree;
-	virNodeDeviceGetXMLDesc;
-	virNodeDeviceGetName;
-	virNodeDeviceGetParent;
-	virNodeDeviceNumOfCaps;
-	virNodeDeviceListCaps;
-
-} LIBVIRT_0.4.5;
-
-# no new entry point in 0.5.1
-# .... define new API here using predicted next version number ....
-
-
-
-
-# Finally these symbols are private and semantics may change
-# on every release, hence the version number is spliced in at
-# build time. This ensures that if libvirtd, virsh, or a driver
-# module was built against one libvirt release, it will refuse
-# to load with another where symbols may have same names but
-# different semantics.
-#
-# No header files are provided outside the source tree.
-#
-# Keep this section ordered alphabetically by header file name
-#
-# Symbols here are only for use by virsh, libvirtd and dlopen
-# driver modules
-#
-LIBVIRT_PRIVATE_ at VERSION@ {
-
-  global:
-	# bridge.h
-	brAddBridge;
-	brAddInterface;
-	brAddTap;
-	brDeleteBridge;
-	brInit;
-	brSetEnableSTP;
-	brSetForwardDelay;
-	brSetInetAddress;
-	brSetInetNetmask;
-	brSetInterfaceUp;
-	brShutdown;
-
-
-	# buf.h
-	virBufferVSprintf;
-	virBufferEscapeString;
-	virBufferAdd;
-	virBufferAddChar;
-	virBufferContentAndReset;
-	virBufferError;
-
-
-	# caps.h
-	virCapabilitiesAddGuest;
-	virCapabilitiesAddGuestDomain;
-	virCapabilitiesAddGuestFeature;
-	virCapabilitiesAddHostMigrateTransport;
-	virCapabilitiesAddHostNUMACell;
-	virCapabilitiesAddHostFeature;
-	virCapabilitiesDefaultGuestArch;
-	virCapabilitiesDefaultGuestEmulator;
-	virCapabilitiesDefaultGuestMachine;
-	virCapabilitiesFormatXML;
-	virCapabilitiesFree;
-	virCapabilitiesNew;
-	virCapabilitiesSetMacPrefix;
-
-
-	# conf.h
-	virConfNew;
-	virConfReadFile;
-	virConfReadMem;
-	virConfFree;
-	virConfFreeValue;
-	virConfGetValue;
-	virConfSetValue;
-	virConfWriteFile;
-	virConfWriteMem;
-
-
-	# datatypes.h
-	virGetDomain;
-	virGetNetwork;
-	virGetStoragePool;
-	virGetStorageVol;
-	virGetNodeDevice;
-	virUnrefDomain;
-
-
-	# domain_conf.h
-	virDiskNameToBusDeviceIndex;
-	virDiskNameToIndex;
-	virDomainAssignDef;
-	virDomainConfigFile;
-	virDomainCpuSetFormat;
-	virDomainCpuSetParse;
-	virDomainChrDefFree;
-	virDomainChrTypeFromString;
-	virDomainChrTypeToString;
-	virDomainDefDefaultEmulator;
-	virDomainDefFormat;
-	virDomainDefFree;
-	virDomainDefParseFile;
-	virDomainDefParseNode;
-	virDomainDefParseString;
-	virDomainDeleteConfig;
-	virDomainDeviceDefFree;
-	virDomainDeviceDefParse;
-	virDomainDiskBusTypeToString;
-	virDomainDiskDefFree;
-	virDomainDiskDeviceTypeToString;
-	virDomainDiskQSort;
-	virDomainFindByID;
-	virDomainFindByName;
-	virDomainFindByUUID;
-	virDomainGraphicsTypeFromString;
-	virDomainGraphicsDefFree;
-	virDomainInputDefFree;
-	virDomainLifecycleTypeFromString;
-	virDomainLifecycleTypeToString;
-	virDomainLoadAllConfigs;
-	virDomainNetDefFree;
-	virDomainObjFree;
-	virDomainObjListFree;
-	virDomainRemoveInactive;
-	virDomainSaveXML;
-	virDomainSaveConfig;
-	virDomainSoundDefFree;
-	virDomainSoundModelTypeFromString;
-	virDomainSoundModelTypeToString;
-	virDomainVirtTypeToString;
-	virDomainFSDefFree;
-	virDomainObjLock;
-	virDomainObjUnlock;
-
-
-	# domain_event.h
-	virDomainEventCallbackListAdd;
-	virDomainEventCallbackListFree;
-	virDomainEventCallbackListRemove;
-	virDomainEventCallbackListRemoveConn;
-	virDomainEventCallbackListMarkDelete;
-	virDomainEventCallbackListPurgeMarked;
-	virDomainEventQueueNew;
-	virDomainEventQueueFree;
-	virDomainEventQueuePop;
-	virDomainEventQueuePush;
-	virDomainEventNew;
-	virDomainEventNewFromDom;
-	virDomainEventNewFromObj;
-	virDomainEventNewFromDef;
-	virDomainEventFree;
-	virDomainEventDispatchDefaultFunc;
-	virDomainEventDispatch;
-	virDomainEventQueueDispatch;
-
-
-
-	# driver.h
-	virDriverLoadModule;
-
-
-	# event.h
-	virEventAddHandle;
-	virEventAddTimeout;
-	virEventRemoveHandle;
-	virEventRemoveTimeout;
-	virEventUpdateHandle;
-	virEventUpdateTimeout;
-
-
-	# hash.h
-	virHashAddEntry;
-	virHashCreate;
-	virHashForEach;
-	virHashFree;
-	virHashLookup;
-	virHashRemoveEntry;
-	virHashRemoveSet;
-	virHashSearch;
-	virHashSize;
-
-
-	# iptables.h
-	iptablesAddForwardAllowCross;
-	iptablesAddForwardAllowIn;
-	iptablesAddForwardAllowOut;
-	iptablesAddForwardAllowRelatedIn;
-	iptablesAddForwardMasquerade;
-	iptablesAddForwardRejectIn;
-	iptablesAddForwardRejectOut;
-	iptablesAddTcpInput;
-	iptablesAddUdpInput;
-	iptablesContextFree;
-	iptablesContextNew;
-	iptablesReloadRules;
-	iptablesRemoveForwardAllowCross;
-	iptablesRemoveForwardAllowIn;
-	iptablesRemoveForwardAllowOut;
-	iptablesRemoveForwardAllowRelatedIn;
-	iptablesRemoveForwardMasquerade;
-	iptablesRemoveForwardRejectIn;
-	iptablesRemoveForwardRejectOut;
-	iptablesRemoveTcpInput;
-	iptablesRemoveUdpInput;
-	iptablesSaveRules;
-
-
-	# libvirt_internal.h
-	debugFlag;
-	virStateInitialize;
-	virStateCleanup;
-	virStateReload;
-	virStateActive;
-	virDrvSupportsFeature;
-	virDomainMigratePrepare;
-	virDomainMigratePerform;
-	virDomainMigrateFinish;
-	virDomainMigratePrepare2;
-	virDomainMigrateFinish2;
-	virRegisterDriver;
-	virRegisterNetworkDriver;
-	virRegisterStateDriver;
-	virRegisterStorageDriver;
-	virRegisterDeviceMonitor;
-
-	/* logging.h */
-        virLogSetDefaultPriority;
-        virLogDefineFilter;
-        virLogDefineOutput;
-        virLogParseFilters;
-        virLogParseOutputs;
-        virLogStartup;
-        virLogShutdown;
-        virLogReset;
-        virLogMessage;
-
-	# memory.h
-	virAlloc;
-	virAllocN;
-	virReallocN;
-	virFree;
-
-
-	# network_conf.h
-	virNetworkAssignDef;
-	virNetworkDefFormat;
-	virNetworkDefFree;
-	virNetworkDefParseFile;
-	virNetworkDefParseNode;
-	virNetworkDefParseString;
-	virNetworkDeleteConfig;
-	virNetworkFindByName;
-	virNetworkFindByUUID;
-	virNetworkLoadAllConfigs;
-	virNetworkObjListFree;
-	virNetworkDefParseNode;
-	virNetworkRemoveInactive;
-	virNetworkSaveConfig;
-	virNetworkObjLock;
-	virNetworkObjUnlock;
-
-
-	# nodeinfo.h
-	virNodeInfoPopulate;
-	virCapsInitNUMA;
-
-
-	# node_device_conf.h
-	virNodeDeviceObjRemove;
-	virNodeDevCapTypeToString;
-	virNodeDeviceFindByName;
-	virNodeDeviceObjListFree;
-	virNodeDeviceDefFree;
-	virNodeDevCapsDefFree;
-	virNodeDeviceDefFormat;
-	virNodeDeviceObjLock;
-	virNodeDeviceObjUnlock;
-	virNodeDeviceAssignDef;
-
-
-	# qparams.h
-	qparam_get_query;
-	qparam_query_parse;
-	free_qparam_set;
-
-
-	# stats_linux.h
-	linuxDomainInterfaceStats;
-	xenLinuxDomainBlockStats;
-
-
-	# storage_backend.h
-	virStorageBackendForType;
-	virStorageBackendRunProgNul;
-	virStorageBackendRunProgRegex;
-	virStorageBackendStablePath;
-	virStorageBackendUpdateVolInfo;
-	virStorageBackendUpdateVolInfoFD;
-
-
-	# storage_conf.h
-	virStoragePoolDefFormat;
-	virStoragePoolDefFree;
-	virStoragePoolDefParse;
-	virStoragePoolLoadAllConfigs;
-	virStoragePoolObjAssignDef;
-	virStoragePoolObjClearVols;
-	virStoragePoolObjDeleteDef;
-	virStoragePoolObjFindByName;
-	virStoragePoolObjFindByUUID;
-	virStoragePoolObjListFree;
-	virStoragePoolObjRemove;
-	virStoragePoolObjSaveDef;
-	virStoragePoolSourceFree;
-	virStoragePoolSourceListFormat;
-	virStorageVolDefFindByKey;
-	virStorageVolDefFindByName;
-	virStorageVolDefFindByPath;
-	virStorageVolDefFormat;
-	virStorageVolDefFree;
-	virStorageVolDefParse;
-	virStoragePoolFormatDiskTypeToString;
-	virStoragePoolFormatFileSystemTypeToString;
-	virStoragePoolFormatFileSystemNetTypeToString;
-	virStorageVolFormatFileSystemTypeToString;
-	virStoragePoolTypeFromString;
-	virStoragePoolObjLock;
-	virStoragePoolObjUnlock;
-
-
-	# util.h
-	virFileReadAll;
-	virStrToLong_i;
-	virStrToLong_ll;
-	virStrToLong_ull;
-	virStrToLong_ui;
-	virFileLinkPointsTo;
-	saferead;
-	safewrite;
-	virMacAddrCompare;
-	virEnumFromString;
-	virEnumToString;
-	virEventAddHandle;
-	virEventRemoveHandle;
-	virExec;
-	virFormatMacAddr;
-	virParseMacAddr;
-	virFileDeletePid;
-	virFileExists;
-	virFileHasSuffix;
-	virFileLinkPointsTo;
-	virFileMakePath;
-	virFileOpenTty;
-	virFileReadLimFD;
-	virFilePid;
-	virFileReadPid;
-	virFileLinkPointsTo;
-	virParseNumber;
-	virAsprintf;
-	virRun;
-	virSkipSpaces;
-
-
-	# uuid.h
-	virUUIDFormat;
-	virUUIDGenerate;
-	virUUIDParse;
-
-
-	# virterror_internal.h
-	virReportErrorHelper;
-	virErrorMsg;
-	virRaiseError;
-
-
-	# xml.h
-	virXPathLong;
-	virXPathNode;
-	virXPathNodeSet;
-	virXPathString;
-	virXMLPropString;
-
-
-	# Finally everything else is totally private
-    local:
-	*;
-};
--
1.6.1.rc3.359.g43db1


>From ab53472203cb88ddf826dda1a367d1d6ac8b2838 Mon Sep 17 00:00:00 2001
From: john.levon at sun.com <john.levon at sun.com>
Date: Tue, 23 Dec 2008 17:46:20 +0100
Subject: [PATCH 2/5] Move --with-driver-modules symbols into a separate sym file

* src/Makefile.am (PRIVSYMFILES): Append libvirt_driver_modules.syms.
* src/libvirt_private.syms: Move virDriverLoadModule into...
* src/libvirt_driver_modules.syms: ... this new file.
Author: John Levon
---
 src/Makefile.am                 |    4 ++++
 src/libvirt_driver_modules.syms |    7 +++++++
 src/libvirt_private.syms        |    4 ----
 3 files changed, 11 insertions(+), 4 deletions(-)
 create mode 100644 src/libvirt_driver_modules.syms

diff --git a/src/Makefile.am b/src/Makefile.am
index 984c12a..29b4df6 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -415,6 +415,10 @@ if ENABLE_DEBUG
 PRIVSYMFILES += libvirt_debug.syms
 endif

+if WITH_DRIVER_MODULES
+PRIVSYMFILES += libvirt_driver_modules.syms
+endif
+
 EXTRA_DIST += libvirt_public.syms $(PRIVSYMFILES)

 libvirt.syms: libvirt_public.syms $(PRIVSYMFILES)
diff --git a/src/libvirt_driver_modules.syms b/src/libvirt_driver_modules.syms
new file mode 100644
index 0000000..ce8d9b8
--- /dev/null
+++ b/src/libvirt_driver_modules.syms
@@ -0,0 +1,7 @@
+#
+# These symbols are dependent upon --with-driver-modules.
+#
+
+
+# driver.h
+virDriverLoadModule;
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
index fb7b5f9..6f3cd67 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -131,10 +131,6 @@ virDomainEventDispatch;
 virDomainEventQueueDispatch;


-# driver.h
-virDriverLoadModule;
-
-
 # event.h
 virEventAddHandle;
 virEventAddTimeout;
--
1.6.1.rc3.359.g43db1


>From b3e42a27112bdd520fb3a9ccdb7ac2a84afd6b16 Mon Sep 17 00:00:00 2001
From: john.levon at sun.com <john.levon at sun.com>
Date: Tue, 23 Dec 2008 17:46:29 +0100
Subject: [PATCH 3/5] Move bridge symbols into a separate syms file

* configure.in: Provide a new --with-bridge option.
* src/Makefile.am (PRIVSYMFILES) [WITH_BRIDGE]: Append libvirt_bridge.syms.
* src/bridge.c: Test WITH_BRIDGE rather than particular drivers.
* src/libvirt_private.syms: Move bridge-related symbols into...
* src/libvirt_bridge.syms: ...this new file.
Author: John Levon
---
 configure.in             |    7 +++++++
 src/Makefile.am          |    4 ++++
 src/bridge.c             |    4 ++--
 src/libvirt_bridge.syms  |   18 ++++++++++++++++++
 src/libvirt_private.syms |   14 --------------
 5 files changed, 31 insertions(+), 16 deletions(-)
 create mode 100644 src/libvirt_bridge.syms

diff --git a/configure.in b/configure.in
index 3358cff..96f288e 100644
--- a/configure.in
+++ b/configure.in
@@ -275,6 +275,13 @@ if test "$with_qemu" = "yes" ; then
 fi
 AM_CONDITIONAL([WITH_QEMU], [test "$with_qemu" = "yes"])

+with_bridge=no
+if test "$with_qemu" = "yes" -o "$with_lxc" = "yes"; then
+    with_bridge=yes
+    AC_DEFINE_UNQUOTED([WITH_BRIDGE], 1, [whether bridge code is needed])
+fi
+AM_CONDITIONAL([WITH_BRIDGE], [test "$with_bridge" = "yes"])
+
 if test "$with_uml" = "yes" ; then
     AC_DEFINE_UNQUOTED([WITH_UML], 1, [whether UML driver is enabled])
 fi
diff --git a/src/Makefile.am b/src/Makefile.am
index 29b4df6..ccc6b5f 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -419,6 +419,10 @@ if WITH_DRIVER_MODULES
 PRIVSYMFILES += libvirt_driver_modules.syms
 endif

+if WITH_BRIDGE
+PRIVSYMFILES += libvirt_bridge.syms
+endif
+
 EXTRA_DIST += libvirt_public.syms $(PRIVSYMFILES)

 libvirt.syms: libvirt_public.syms $(PRIVSYMFILES)
diff --git a/src/bridge.c b/src/bridge.c
index 13d81bc..38e0b46 100644
--- a/src/bridge.c
+++ b/src/bridge.c
@@ -21,7 +21,7 @@

 #include <config.h>

-#if defined(WITH_QEMU) || defined(WITH_LXC)
+#if defined(WITH_BRIDGE)

 #include "bridge.h"

@@ -750,4 +750,4 @@ brSetEnableSTP(brControl *ctl ATTRIBUTE_UNUSED,
     return 0;
 }

-#endif /* WITH_QEMU || WITH_LXC */
+#endif /* WITH_BRIDGE */
diff --git a/src/libvirt_bridge.syms b/src/libvirt_bridge.syms
new file mode 100644
index 0000000..f898f42
--- /dev/null
+++ b/src/libvirt_bridge.syms
@@ -0,0 +1,18 @@
+#
+# These symbols are dependent upon --with-qemu or --with-lxc via
+# WITH_BRIDGE.
+#
+
+
+# bridge.h
+brAddBridge;
+brAddInterface;
+brAddTap;
+brDeleteBridge;
+brInit;
+brSetEnableSTP;
+brSetForwardDelay;
+brSetInetAddress;
+brSetInetNetmask;
+brSetInterfaceUp;
+brShutdown;
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
index 6f3cd67..d5451c3 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -3,20 +3,6 @@
 #


-# bridge.h
-brAddBridge;
-brAddInterface;
-brAddTap;
-brDeleteBridge;
-brInit;
-brSetEnableSTP;
-brSetForwardDelay;
-brSetInetAddress;
-brSetInetNetmask;
-brSetInterfaceUp;
-brShutdown;
-
-
 # buf.h
 virBufferVSprintf;
 virBufferEscapeString;
--
1.6.1.rc3.359.g43db1


>From 38b60934f442b342cf53ed59ef9a13dbe9970688 Mon Sep 17 00:00:00 2001
From: john.levon at sun.com <john.levon at sun.com>
Date: Tue, 23 Dec 2008 17:46:33 +0100
Subject: [PATCH 4/5] migrate linux-specific symbol names into their own sym file

* configure.in (WITH_LINUX): New automake conditional.
* src/Makefile.am (PRIVSYMFILES) [WITH_LINUX]: Append libvirt_linux.syms.
* src/libvirt_private.syms: Move two symbol names into...
* src/libvirt_linux.syms: ...this new file.
Author: John Levon
---
 configure.in             |    2 ++
 src/Makefile.am          |    4 ++++
 src/libvirt_linux.syms   |    8 ++++++++
 src/libvirt_private.syms |    5 -----
 4 files changed, 14 insertions(+), 5 deletions(-)
 create mode 100644 src/libvirt_linux.syms

diff --git a/configure.in b/configure.in
index 96f288e..c333cc4 100644
--- a/configure.in
+++ b/configure.in
@@ -1248,6 +1248,8 @@ then
 fi
 AM_CONDITIONAL([WITH_NODE_DEVICES], [test "$with_nodedev" = "yes"])

+AM_CONDITIONAL([WITH_LINUX], [test `uname -s` = "Linux"])
+
 # Only COPYING.LIB is under version control, yet COPYING
 # is included as part of the distribution tarball.
 # Copy one to the other, but only if this is a srcdir-build.
diff --git a/src/Makefile.am b/src/Makefile.am
index ccc6b5f..1f707e2 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -423,6 +423,10 @@ if WITH_BRIDGE
 PRIVSYMFILES += libvirt_bridge.syms
 endif

+if WITH_LINUX
+PRIVSYMFILES += libvirt_linux.syms
+endif
+
 EXTRA_DIST += libvirt_public.syms $(PRIVSYMFILES)

 libvirt.syms: libvirt_public.syms $(PRIVSYMFILES)
diff --git a/src/libvirt_linux.syms b/src/libvirt_linux.syms
new file mode 100644
index 0000000..018c892
--- /dev/null
+++ b/src/libvirt_linux.syms
@@ -0,0 +1,8 @@
+#
+# Linux-specific private symbols.
+#
+
+
+# stats_linux.h
+linuxDomainInterfaceStats;
+xenLinuxDomainBlockStats;
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
index d5451c3..14c5944 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -231,11 +231,6 @@ qparam_query_parse;
 free_qparam_set;


-# stats_linux.h
-linuxDomainInterfaceStats;
-xenLinuxDomainBlockStats;
-
-
 # storage_backend.h
 virStorageBackendForType;
 virStorageBackendRunProgNul;
--
1.6.1.rc3.359.g43db1


>From dd96dc83b9210fb7e3364818944de0dbb50c9fef Mon Sep 17 00:00:00 2001
From: john.levon at sun.com <john.levon at sun.com>
Date: Tue, 23 Dec 2008 17:46:35 +0100
Subject: [PATCH 5/5] Remove storage backend symbols from version script

* src/libvirt_private.syms: Remove virStorageBackend* symbol names.
They're linked into qemud, not libvirt.
Author: John Levon
---
 src/libvirt_private.syms |    9 ---------
 1 files changed, 0 insertions(+), 9 deletions(-)

diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
index 14c5944..90bcc68 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -231,15 +231,6 @@ qparam_query_parse;
 free_qparam_set;


-# storage_backend.h
-virStorageBackendForType;
-virStorageBackendRunProgNul;
-virStorageBackendRunProgRegex;
-virStorageBackendStablePath;
-virStorageBackendUpdateVolInfo;
-virStorageBackendUpdateVolInfoFD;
-
-
 # storage_conf.h
 virStoragePoolDefFormat;
 virStoragePoolDefFree;
--
1.6.1.rc3.359.g43db1




More information about the libvir-list mailing list