John Levon <john.le...@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.le...@sun.com <john.le...@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_fl...@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@libvirt.syms!!'   \
      |sed 's!-version-info @libvirt_version_i...@!!')

 # 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_priva...@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.le...@sun.com <john.le...@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.le...@sun.com <john.le...@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.le...@sun.com <john.le...@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.le...@sun.com <john.le...@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

--
Libvir-list mailing list
Libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list

Reply via email to