[libvirt] [libvirt-python][PATCH] maint: Require libvirt-3.4.0 at least

Michal Privoznik posted 1 patch 6 years, 7 months ago
Failed in applying to current master (apply log)
setup.py           |   2 +-
README             |   2 +-
libvirt-override.c | 149 -----------------------------------------------------
3 files changed, 2 insertions(+), 151 deletions(-)
[libvirt] [libvirt-python][PATCH] maint: Require libvirt-3.4.0 at least
Posted by Michal Privoznik 6 years, 7 months ago
Currently, we require 0.9.11. However, some APIs are missing
there and thus sanity check fails:

DEBUG: /usr/bin/python sanitytest.py build/lib.linux-s390x-2.7 /usr/share/libvirt/api/libvirt-api.xml
DEBUG: FAIL virStream.sparseRecvAll       (Python API not mapped to C)
DEBUG: FAIL virStream.sparseSendAll       (Python API not mapped to C)
DEBUG: error: command '/usr/bin/python' failed with exit status 1

I'm not sure how to fix that so raising minimal required libvirt
version is the solution.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
---
 setup.py           |   2 +-
 README             |   2 +-
 libvirt-override.c | 149 -----------------------------------------------------
 3 files changed, 2 insertions(+), 151 deletions(-)

diff --git a/setup.py b/setup.py
index f33ff1a..f929eb2 100755
--- a/setup.py
+++ b/setup.py
@@ -17,7 +17,7 @@ import re
 import shutil
 import time
 
-MIN_LIBVIRT = "0.9.11"
+MIN_LIBVIRT = "3.4.0"
 MIN_LIBVIRT_LXC = "1.0.2"
 
 # Hack to stop 'pip install' failing with error
diff --git a/README b/README
index 96082f0..bc3ee77 100644
--- a/README
+++ b/README
@@ -5,7 +5,7 @@ This package provides a python binding to the libvirt.so,
 libvirt-qemu.so and libvirt-lxc.so library APIs.
 
 It is written to build against any version of libvirt that
-is 0.9.11 or newer.
+is 3.4.0 or newer.
 
 This code is distributed under the terms of the LGPL version
 2 or later.
diff --git a/libvirt-override.c b/libvirt-override.c
index 9eba4ed..280856d 100644
--- a/libvirt-override.c
+++ b/libvirt-override.c
@@ -66,20 +66,9 @@ getPyNodeCPUCount(virConnectPtr conn)
 {
     int i_retval;
 
-#if LIBVIR_CHECK_VERSION(1, 0, 0)
     LIBVIRT_BEGIN_ALLOW_THREADS;
     i_retval = virNodeGetCPUMap(conn, NULL, NULL, 0);
     LIBVIRT_END_ALLOW_THREADS;
-#else /* fallback: use nodeinfo */
-    virNodeInfo nodeinfo;
-
-    LIBVIRT_BEGIN_ALLOW_THREADS;
-    i_retval = virNodeGetInfo(conn, &nodeinfo);
-    LIBVIRT_END_ALLOW_THREADS;
-
-    if (i_retval >= 0)
-        i_retval = VIR_NODEINFO_MAXCPUS(nodeinfo);
-#endif /* LIBVIR_CHECK_VERSION(1, 0, 0) */
 
     return i_retval;
 }
@@ -398,14 +387,12 @@ libvirt_virDomainMemoryStats(PyObject *self ATTRIBUTE_UNUSED,
         case VIR_DOMAIN_MEMORY_STAT_RSS:
             key = libvirt_constcharPtrWrap("rss");
             break;
-#if LIBVIR_CHECK_VERSION(2, 1, 0)
         case VIR_DOMAIN_MEMORY_STAT_USABLE:
             key = libvirt_constcharPtrWrap("usable");
             break;
         case VIR_DOMAIN_MEMORY_STAT_LAST_UPDATE:
             key = libvirt_constcharPtrWrap("last_update");
             break;
-#endif /* LIBVIR_CHECK_VERSION(2, 1, 0) */
         default:
             continue;
         }
@@ -1451,7 +1438,6 @@ libvirt_virDomainGetVcpuPinInfo(PyObject *self ATTRIBUTE_UNUSED,
 }
 
 
-#if LIBVIR_CHECK_VERSION(0, 10, 0)
 static PyObject *
 libvirt_virDomainPinEmulator(PyObject *self ATTRIBUTE_UNUSED,
                              PyObject *args)
@@ -1547,9 +1533,7 @@ libvirt_virDomainGetEmulatorPinInfo(PyObject *self ATTRIBUTE_UNUSED,
     Py_CLEAR(pycpumap);
     goto cleanup;
 }
-#endif /* LIBVIR_CHECK_VERSION(0, 10, 0) */
 
-#if LIBVIR_CHECK_VERSION(1, 2, 14)
 static PyObject *
 libvirt_virDomainGetIOThreadInfo(PyObject *self ATTRIBUTE_UNUSED,
                                  PyObject *args)
@@ -1668,7 +1652,6 @@ libvirt_virDomainPinIOThread(PyObject *self ATTRIBUTE_UNUSED,
     return ret;
 }
 
-#endif /* LIBVIR_CHECK_VERSION(1, 2, 14) */
 
 /************************************************************************
  *									*
@@ -2037,7 +2020,6 @@ libvirt_virConnectGetVersion(PyObject *self ATTRIBUTE_UNUSED,
     return libvirt_intWrap(hvVersion);
 }
 
-#if LIBVIR_CHECK_VERSION(1, 1, 3)
 static PyObject *
 libvirt_virConnectGetCPUModelNames(PyObject *self ATTRIBUTE_UNUSED,
                                    PyObject *args)
@@ -2083,7 +2065,6 @@ libvirt_virConnectGetCPUModelNames(PyObject *self ATTRIBUTE_UNUSED,
     Py_CLEAR(rv);
     goto done;
 }
-#endif /* LIBVIR_CHECK_VERSION(1, 1, 3) */
 
 static PyObject *
 libvirt_virConnectGetLibVersion(PyObject *self ATTRIBUTE_UNUSED,
@@ -2162,7 +2143,6 @@ libvirt_virConnectListDomainsID(PyObject *self ATTRIBUTE_UNUSED,
     return NULL;
 }
 
-#if LIBVIR_CHECK_VERSION(0, 9, 13)
 static PyObject *
 libvirt_virConnectListAllDomains(PyObject *self ATTRIBUTE_UNUSED,
                                  PyObject *args)
@@ -2206,7 +2186,6 @@ libvirt_virConnectListAllDomains(PyObject *self ATTRIBUTE_UNUSED,
     Py_CLEAR(py_retval);
     goto cleanup;
 }
-#endif /* LIBVIR_CHECK_VERSION(0, 9, 13) */
 
 static PyObject *
 libvirt_virConnectListDefinedDomains(PyObject *self ATTRIBUTE_UNUSED,
@@ -2317,7 +2296,6 @@ libvirt_virDomainSnapshotListNames(PyObject *self ATTRIBUTE_UNUSED,
     goto cleanup;
 }
 
-#if LIBVIR_CHECK_VERSION(0, 9, 13)
 static PyObject *
 libvirt_virDomainListAllSnapshots(PyObject *self ATTRIBUTE_UNUSED,
                                   PyObject *args)
@@ -2361,7 +2339,6 @@ libvirt_virDomainListAllSnapshots(PyObject *self ATTRIBUTE_UNUSED,
     Py_CLEAR(py_retval);
     goto cleanup;
 }
-#endif /* LIBVIR_CHECK_VERSION(0, 9, 13) */
 
 static PyObject *
 libvirt_virDomainSnapshotListChildrenNames(PyObject *self ATTRIBUTE_UNUSED,
@@ -2417,7 +2394,6 @@ libvirt_virDomainSnapshotListChildrenNames(PyObject *self ATTRIBUTE_UNUSED,
     goto cleanup;
 }
 
-#if LIBVIR_CHECK_VERSION(0, 9, 13)
 static PyObject *
 libvirt_virDomainSnapshotListAllChildren(PyObject *self ATTRIBUTE_UNUSED,
                                          PyObject *args)
@@ -2461,7 +2437,6 @@ libvirt_virDomainSnapshotListAllChildren(PyObject *self ATTRIBUTE_UNUSED,
     Py_CLEAR(py_retval);
     goto cleanup;
 }
-#endif /* LIBVIR_CHECK_VERSION(0, 9, 13) */
 
 static PyObject *
 libvirt_virDomainRevertToSnapshot(PyObject *self ATTRIBUTE_UNUSED,
@@ -2752,7 +2727,6 @@ libvirt_virDomainGetSecurityLabel(PyObject *self ATTRIBUTE_UNUSED,
     return NULL;
 }
 
-#if LIBVIR_CHECK_VERSION(0, 10, 0)
 static PyObject *
 libvirt_virDomainGetSecurityLabelList(PyObject *self ATTRIBUTE_UNUSED,
                                       PyObject *args)
@@ -2803,7 +2777,6 @@ libvirt_virDomainGetSecurityLabelList(PyObject *self ATTRIBUTE_UNUSED,
     Py_CLEAR(py_retval);
     goto cleanup;
 }
-#endif /* LIBVIR_CHECK_VERSION(0, 10, 0) */
 
 static PyObject *
 libvirt_virDomainGetUUID(PyObject *self ATTRIBUTE_UNUSED,
@@ -2992,7 +2965,6 @@ libvirt_virConnectListDefinedNetworks(PyObject *self ATTRIBUTE_UNUSED,
     goto cleanup;
 }
 
-#if LIBVIR_CHECK_VERSION(0, 10, 2)
 static PyObject *
 libvirt_virConnectListAllNetworks(PyObject *self ATTRIBUTE_UNUSED,
                                   PyObject *args)
@@ -3036,7 +3008,6 @@ libvirt_virConnectListAllNetworks(PyObject *self ATTRIBUTE_UNUSED,
     Py_CLEAR(py_retval);
     goto cleanup;
 }
-#endif /* LIBVIR_CHECK_VERSION(0, 10, 2) */
 
 
 static PyObject *
@@ -3437,7 +3408,6 @@ libvirt_virConnectListDefinedStoragePools(PyObject *self ATTRIBUTE_UNUSED,
     goto cleanup;
 }
 
-#if LIBVIR_CHECK_VERSION(0, 10, 2)
 static PyObject *
 libvirt_virConnectListAllStoragePools(PyObject *self ATTRIBUTE_UNUSED,
                                       PyObject *args)
@@ -3482,7 +3452,6 @@ libvirt_virConnectListAllStoragePools(PyObject *self ATTRIBUTE_UNUSED,
     Py_CLEAR(py_retval);
     goto cleanup;
 }
-#endif /* LIBVIR_CHECK_VERSION(0, 10, 2) */
 
 static PyObject *
 libvirt_virStoragePoolListVolumes(PyObject *self ATTRIBUTE_UNUSED,
@@ -3539,7 +3508,6 @@ libvirt_virStoragePoolListVolumes(PyObject *self ATTRIBUTE_UNUSED,
     goto cleanup;
 }
 
-#if LIBVIR_CHECK_VERSION(0, 10, 2)
 static PyObject *
 libvirt_virStoragePoolListAllVolumes(PyObject *self ATTRIBUTE_UNUSED,
                                      PyObject *args)
@@ -3585,7 +3553,6 @@ libvirt_virStoragePoolListAllVolumes(PyObject *self ATTRIBUTE_UNUSED,
     Py_CLEAR(py_retval);
     goto cleanup;
 }
-#endif /* LIBVIR_CHECK_VERSION(0, 10, 2) */
 
 
 static PyObject *
@@ -3689,7 +3656,6 @@ libvirt_virStorageVolGetInfo(PyObject *self ATTRIBUTE_UNUSED,
     return NULL;
 }
 
-#if LIBVIR_CHECK_VERSION(3, 0, 0)
 static PyObject *
 libvirt_virStorageVolGetInfoFlags(PyObject *self ATTRIBUTE_UNUSED,
                                   PyObject *args)
@@ -3727,7 +3693,6 @@ libvirt_virStorageVolGetInfoFlags(PyObject *self ATTRIBUTE_UNUSED,
     Py_DECREF(py_retval);
     return NULL;
 }
-#endif
 
 static PyObject *
 libvirt_virStoragePoolGetUUID(PyObject *self ATTRIBUTE_UNUSED,
@@ -3863,7 +3828,6 @@ libvirt_virNodeListDevices(PyObject *self ATTRIBUTE_UNUSED,
     goto cleanup;
 }
 
-#if LIBVIR_CHECK_VERSION(0, 10, 2)
 static PyObject *
 libvirt_virConnectListAllNodeDevices(PyObject *self ATTRIBUTE_UNUSED,
                                      PyObject *args)
@@ -3908,7 +3872,6 @@ libvirt_virConnectListAllNodeDevices(PyObject *self ATTRIBUTE_UNUSED,
     Py_CLEAR(py_retval);
     goto cleanup;
 }
-#endif /* LIBVIR_CHECK_VERSION(0, 10, 2) */
 
 static PyObject *
 libvirt_virNodeDeviceListCaps(PyObject *self ATTRIBUTE_UNUSED,
@@ -4094,7 +4057,6 @@ libvirt_virConnectListSecrets(PyObject *self ATTRIBUTE_UNUSED,
     goto cleanup;
 }
 
-#if LIBVIR_CHECK_VERSION(0, 10, 2)
 static PyObject *
 libvirt_virConnectListAllSecrets(PyObject *self ATTRIBUTE_UNUSED,
                                  PyObject *args)
@@ -4139,7 +4101,6 @@ libvirt_virConnectListAllSecrets(PyObject *self ATTRIBUTE_UNUSED,
     Py_CLEAR(py_retval);
     goto cleanup;
 }
-#endif /* LIBVIR_CHECK_VERSION(0, 10, 2) */
 
 static PyObject *
 libvirt_virSecretGetValue(PyObject *self ATTRIBUTE_UNUSED,
@@ -4327,7 +4288,6 @@ libvirt_virConnectListNWFilters(PyObject *self ATTRIBUTE_UNUSED,
     goto cleanup;
 }
 
-#if LIBVIR_CHECK_VERSION(0, 10, 2)
 static PyObject *
 libvirt_virConnectListAllNWFilters(PyObject *self ATTRIBUTE_UNUSED,
                                    PyObject *args)
@@ -4372,7 +4332,6 @@ libvirt_virConnectListAllNWFilters(PyObject *self ATTRIBUTE_UNUSED,
     Py_CLEAR(py_retval);
     goto cleanup;
 }
-#endif /* LIBVIR_CHECK_VERSION(0, 10, 2) */
 
 static PyObject *
 libvirt_virConnectListInterfaces(PyObject *self ATTRIBUTE_UNUSED,
@@ -4489,7 +4448,6 @@ libvirt_virConnectListDefinedInterfaces(PyObject *self ATTRIBUTE_UNUSED,
 }
 
 
-#if LIBVIR_CHECK_VERSION(0, 10, 2)
 static PyObject *
 libvirt_virConnectListAllInterfaces(PyObject *self ATTRIBUTE_UNUSED,
                                     PyObject *args)
@@ -4534,7 +4492,6 @@ libvirt_virConnectListAllInterfaces(PyObject *self ATTRIBUTE_UNUSED,
     Py_CLEAR(py_retval);
     goto cleanup;
 }
-#endif /* LIBVIR_CHECK_VERSION(0, 10, 2) */
 
 static PyObject *
 libvirt_virConnectBaselineCPU(PyObject *self ATTRIBUTE_UNUSED,
@@ -4645,7 +4602,6 @@ libvirt_virDomainGetJobInfo(PyObject *self ATTRIBUTE_UNUSED,
     return NULL;
 }
 
-#if LIBVIR_CHECK_VERSION(1, 0, 3)
 static PyObject *
 libvirt_virDomainGetJobStats(PyObject *self ATTRIBUTE_UNUSED,
                              PyObject *args)
@@ -4684,7 +4640,6 @@ libvirt_virDomainGetJobStats(PyObject *self ATTRIBUTE_UNUSED,
     Py_CLEAR(dict);
     goto cleanup;
 }
-#endif /* LIBVIR_CHECK_VERSION(1, 0, 3) */
 
 static PyObject *
 libvirt_virDomainGetBlockJobInfo(PyObject *self ATTRIBUTE_UNUSED,
@@ -4913,7 +4868,6 @@ libvirt_virDomainGetDiskErrors(PyObject *self ATTRIBUTE_UNUSED,
 }
 
 
-#if LIBVIR_CHECK_VERSION(1, 2, 14)
 static PyObject *
 libvirt_virDomainInterfaceAddresses(PyObject *self ATTRIBUTE_UNUSED,
                                     PyObject *args)
@@ -5000,7 +4954,6 @@ libvirt_virDomainInterfaceAddresses(PyObject *self ATTRIBUTE_UNUSED,
     Py_CLEAR(py_retval);
     goto cleanup;
 }
-#endif /* LIBVIR_CHECK_VERSION(1, 2, 14) */
 
 
 /*******************************************
@@ -7156,7 +7109,6 @@ libvirt_virConnectDomainEventDeregisterAny(PyObject *self ATTRIBUTE_UNUSED,
     return libvirt_intWrap(ret);
 }
 
-#if LIBVIR_CHECK_VERSION(1, 2, 1)
 static void
 libvirt_virConnectNetworkEventFreeFunc(void *opaque)
 {
@@ -7299,9 +7251,7 @@ libvirt_virConnectNetworkEventDeregisterAny(PyObject *self ATTRIBUTE_UNUSED,
 
     return libvirt_intWrap(ret);
 }
-#endif /* LIBVIR_CHECK_VERSION(1, 2, 1)*/
 
-#if LIBVIR_CHECK_VERSION(0, 10, 0)
 static void
 libvirt_virConnectCloseCallbackDispatch(virConnectPtr conn ATTRIBUTE_UNUSED,
                                         int reason,
@@ -7398,7 +7348,6 @@ libvirt_virConnectUnregisterCloseCallback(PyObject * self ATTRIBUTE_UNUSED,
 
     return libvirt_intWrap(ret);
 }
-#endif /* LIBVIR_CHECK_VERSION(0, 10, 0) */
 
 static void
 libvirt_virStreamEventFreeFunc(void *opaque)
@@ -7585,7 +7534,6 @@ libvirt_virDomainSendKey(PyObject *self ATTRIBUTE_UNUSED,
     return libvirt_intWrap(ret);
 }
 
-#if LIBVIR_CHECK_VERSION(1, 0, 3)
 static PyObject *
 libvirt_virDomainMigrateGetCompressionCache(PyObject *self ATTRIBUTE_UNUSED,
                                             PyObject *args)
@@ -7612,7 +7560,6 @@ libvirt_virDomainMigrateGetCompressionCache(PyObject *self ATTRIBUTE_UNUSED,
 
     return libvirt_ulonglongWrap(cacheSize);
 }
-#endif /* LIBVIR_CHECK_VERSION(1, 0, 3) */
 
 static PyObject *
 libvirt_virDomainMigrateGetMaxSpeed(PyObject *self ATTRIBUTE_UNUSED,
@@ -7669,7 +7616,6 @@ libvirt_virDomainMigrateGetMaxDowntime(PyObject *self ATTRIBUTE_UNUSED,
 }
 #endif /* LIBVIR_CHECK_VERSION(3, 7, 0) */
 
-#if LIBVIR_CHECK_VERSION(1, 1, 0)
 static PyObject *
 libvirt_virDomainMigrate3(PyObject *self ATTRIBUTE_UNUSED,
                           PyObject *args)
@@ -7731,7 +7677,6 @@ libvirt_virDomainMigrateToURI3(PyObject *self ATTRIBUTE_UNUSED,
     virTypedParamsFree(params, nparams);
     return libvirt_intWrap(ret);
 }
-#endif /* LIBVIR_CHECK_VERSION(1, 1, 0) */
 
 static PyObject *
 libvirt_virDomainBlockPeek(PyObject *self ATTRIBUTE_UNUSED,
@@ -7810,7 +7755,6 @@ libvirt_virDomainMemoryPeek(PyObject *self ATTRIBUTE_UNUSED,
     return py_retval;
 }
 
-#if LIBVIR_CHECK_VERSION(0, 10, 2)
 static PyObject *
 libvirt_virNodeSetMemoryParameters(PyObject *self ATTRIBUTE_UNUSED,
                                    PyObject *args)
@@ -7930,9 +7874,7 @@ libvirt_virNodeGetMemoryParameters(PyObject *self ATTRIBUTE_UNUSED,
     virTypedParamsFree(params, nparams);
     return ret;
 }
-#endif /* LIBVIR_CHECK_VERSION(0, 10, 2) */
 
-#if LIBVIR_CHECK_VERSION(1, 0, 0)
 static PyObject *
 libvirt_virNodeGetCPUMap(PyObject *self ATTRIBUTE_UNUSED,
                          PyObject *args)
@@ -7986,10 +7928,8 @@ libvirt_virNodeGetCPUMap(PyObject *self ATTRIBUTE_UNUSED,
     Py_CLEAR(ret);
     goto cleanup;
 }
-#endif /* LIBVIR_CHECK_VERSION(1, 0, 0) */
 
 
-#if LIBVIR_CHECK_VERSION(1, 1, 1)
 static PyObject *
 libvirt_virDomainCreateWithFiles(PyObject *self ATTRIBUTE_UNUSED,
                                  PyObject *args)
@@ -8083,10 +8023,8 @@ libvirt_virDomainCreateXMLWithFiles(PyObject *self ATTRIBUTE_UNUSED,
     VIR_FREE(files);
     return py_retval;
 }
-#endif /* LIBVIR_CHECK_VERSION(1, 1, 1) */
 
 
-#if LIBVIR_CHECK_VERSION(1, 2, 5)
 static PyObject *
 libvirt_virDomainFSFreeze(PyObject *self ATTRIBUTE_UNUSED,
                           PyObject *args)
@@ -8274,10 +8212,8 @@ libvirt_virDomainSetTime(PyObject *self ATTRIBUTE_UNUSED,
 
     return libvirt_intWrap(c_retval);
 }
-#endif /* LIBVIR_CHECK_VERSION(1, 2, 5) */
 
 
-#if LIBVIR_CHECK_VERSION(1, 2, 6)
 static PyObject *
 libvirt_virNodeGetFreePages(PyObject *self ATTRIBUTE_UNUSED,
                             PyObject *args)
@@ -8441,9 +8377,7 @@ libvirt_virNetworkGetDHCPLeases(PyObject *self ATTRIBUTE_UNUSED,
     goto cleanup;
 }
 
-#endif /* LIBVIR_CHECK_VERSION(1, 2, 6) */
 
-#if LIBVIR_CHECK_VERSION(1, 2, 8)
 
 static PyObject *
 convertDomainStatsRecord(virDomainStatsRecordPtr *records,
@@ -8601,9 +8535,7 @@ libvirt_virDomainBlockCopy(PyObject *self ATTRIBUTE_UNUSED,
     return libvirt_intWrap(c_retval);
 }
 
-#endif /* LIBVIR_CHECK_VERSION(1, 2, 8) */
 
-#if LIBVIR_CHECK_VERSION(1, 2, 9)
 static PyObject *
 libvirt_virNodeAllocPages(PyObject *self ATTRIBUTE_UNUSED,
                           PyObject *args)
@@ -8665,9 +8597,7 @@ libvirt_virNodeAllocPages(PyObject *self ATTRIBUTE_UNUSED,
     VIR_FREE(pageCounts);
     return NULL;
 }
-#endif /* LIBVIR_CHECK_VERSION(1, 2, 8) */
 
-#if LIBVIR_CHECK_VERSION(1, 2, 11)
 
 static PyObject *
 libvirt_virDomainGetFSInfo(PyObject *self ATTRIBUTE_UNUSED,
@@ -8742,9 +8672,7 @@ libvirt_virDomainGetFSInfo(PyObject *self ATTRIBUTE_UNUSED,
     goto cleanup;
 }
 
-#endif /* LIBVIR_CHECK_VERSION(1, 2, 11) */
 
-#if LIBVIR_CHECK_VERSION(1, 3, 3)
 static PyObject *
 libvirt_virDomainGetPerfEvents(PyObject *self ATTRIBUTE_UNUSED,
                                PyObject *args)
@@ -8837,9 +8765,7 @@ libvirt_virDomainSetPerfEvents(PyObject *self ATTRIBUTE_UNUSED,
     virTypedParamsFree(new_params, size);
     return ret;
 }
-#endif /* LIBVIR_CHECK_VERSION(1, 3, 3) */
 
-#if LIBVIR_CHECK_VERSION(2, 0, 0)
 static void
 libvirt_virConnectStoragePoolEventFreeFunc(void *opaque)
 {
@@ -9072,9 +8998,7 @@ libvirt_virDomainGetGuestVcpus(PyObject *self ATTRIBUTE_UNUSED,
     virTypedParamsFree(params, nparams);
     return ret;
 }
-#endif /* LIBVIR_CHECK_VERSION(2, 0, 0)*/
 
-#if LIBVIR_CHECK_VERSION(2, 2, 0)
 static void
 libvirt_virConnectNodeDeviceEventFreeFunc(void *opaque)
 {
@@ -9276,9 +9200,7 @@ libvirt_virConnectNodeDeviceEventDeregisterAny(PyObject *self ATTRIBUTE_UNUSED,
     return libvirt_intWrap(ret);
 }
 
-#endif /* LIBVIR_CHECK_VERSION(2, 2, 0)*/
 
-#if LIBVIR_CHECK_VERSION(3, 0, 0)
 static void
 libvirt_virConnectSecretEventFreeFunc(void *opaque)
 {
@@ -9475,10 +9397,8 @@ libvirt_virConnectSecretEventDeregisterAny(PyObject *self ATTRIBUTE_UNUSED,
 
     return libvirt_intWrap(ret);
 }
-#endif /* LIBVIR_CHECK_VERSION(3, 0, 0)*/
 
 
-#if LIBVIR_CHECK_VERSION(3, 4, 0)
 static PyObject *
 libvirt_virStreamRecvHole(PyObject *self ATTRIBUTE_UNUSED,
                           PyObject *args)
@@ -9571,7 +9491,6 @@ libvirt_virStreamRecvFlags(PyObject *self ATTRIBUTE_UNUSED,
     return rv;
 }
 
-#endif /* LIBVIR_CHECK_VERSION(3, 4, 0) */
 
 
 /************************************************************************
@@ -9583,28 +9502,20 @@ static PyMethodDef libvirtMethods[] = {
 #include "build/libvirt-export.c"
     {(char *) "virGetVersion", libvirt_virGetVersion, METH_VARARGS, NULL},
     {(char *) "virConnectGetVersion", libvirt_virConnectGetVersion, METH_VARARGS, NULL},
-#if LIBVIR_CHECK_VERSION(1, 1, 3)
     {(char *) "virConnectGetCPUModelNames", libvirt_virConnectGetCPUModelNames, METH_VARARGS, NULL},
-#endif /* LIBVIR_CHECK_VERSION(1, 1, 3) */
     {(char *) "virConnectGetLibVersion", libvirt_virConnectGetLibVersion, METH_VARARGS, NULL},
     {(char *) "virConnectOpenAuth", libvirt_virConnectOpenAuth, METH_VARARGS, NULL},
     {(char *) "virConnectListDomainsID", libvirt_virConnectListDomainsID, METH_VARARGS, NULL},
     {(char *) "virConnectListDefinedDomains", libvirt_virConnectListDefinedDomains, METH_VARARGS, NULL},
-#if LIBVIR_CHECK_VERSION(0, 9, 13)
     {(char *) "virConnectListAllDomains", libvirt_virConnectListAllDomains, METH_VARARGS, NULL},
-#endif /* LIBVIR_CHECK_VERSION(0, 9, 13) */
     {(char *) "virConnectDomainEventRegister", libvirt_virConnectDomainEventRegister, METH_VARARGS, NULL},
     {(char *) "virConnectDomainEventDeregister", libvirt_virConnectDomainEventDeregister, METH_VARARGS, NULL},
     {(char *) "virConnectDomainEventRegisterAny", libvirt_virConnectDomainEventRegisterAny, METH_VARARGS, NULL},
     {(char *) "virConnectDomainEventDeregisterAny", libvirt_virConnectDomainEventDeregisterAny, METH_VARARGS, NULL},
-#if LIBVIR_CHECK_VERSION(1, 2, 1)
     {(char *) "virConnectNetworkEventRegisterAny", libvirt_virConnectNetworkEventRegisterAny, METH_VARARGS, NULL},
     {(char *) "virConnectNetworkEventDeregisterAny", libvirt_virConnectNetworkEventDeregisterAny, METH_VARARGS, NULL},
-#endif /* LIBVIR_CHECK_VERSION(1, 2, 1) */
-#if LIBVIR_CHECK_VERSION(0, 10, 0)
     {(char *) "virConnectRegisterCloseCallback", libvirt_virConnectRegisterCloseCallback, METH_VARARGS, NULL},
     {(char *) "virConnectUnregisterCloseCallback", libvirt_virConnectUnregisterCloseCallback, METH_VARARGS, NULL},
-#endif /* LIBVIR_CHECK_VERSION(0, 10, 0) */
     {(char *) "virStreamEventAddCallback", libvirt_virStreamEventAddCallback, METH_VARARGS, NULL},
     {(char *) "virStreamRecv", libvirt_virStreamRecv, METH_VARARGS, NULL},
     {(char *) "virStreamSend", libvirt_virStreamSend, METH_VARARGS, NULL},
@@ -9615,9 +9526,7 @@ static PyMethodDef libvirtMethods[] = {
     {(char *) "virNodeGetInfo", libvirt_virNodeGetInfo, METH_VARARGS, NULL},
     {(char *) "virNodeGetSecurityModel", libvirt_virNodeGetSecurityModel, METH_VARARGS, NULL},
     {(char *) "virDomainGetSecurityLabel", libvirt_virDomainGetSecurityLabel, METH_VARARGS, NULL},
-#if LIBVIR_CHECK_VERSION(0, 10, 0)
     {(char *) "virDomainGetSecurityLabelList", libvirt_virDomainGetSecurityLabelList, METH_VARARGS, NULL},
-#endif /* LIBVIR_CHECK_VERSION(0, 10, 0) */
     {(char *) "virNodeGetCPUStats", libvirt_virNodeGetCPUStats, METH_VARARGS, NULL},
     {(char *) "virNodeGetMemoryStats", libvirt_virNodeGetMemoryStats, METH_VARARGS, NULL},
     {(char *) "virDomainGetUUID", libvirt_virDomainGetUUID, METH_VARARGS, NULL},
@@ -9628,9 +9537,7 @@ static PyMethodDef libvirtMethods[] = {
     {(char *) "virConnGetLastError", libvirt_virConnGetLastError, METH_VARARGS, NULL},
     {(char *) "virConnectListNetworks", libvirt_virConnectListNetworks, METH_VARARGS, NULL},
     {(char *) "virConnectListDefinedNetworks", libvirt_virConnectListDefinedNetworks, METH_VARARGS, NULL},
-#if LIBVIR_CHECK_VERSION(0, 10, 2)
     {(char *) "virConnectListAllNetworks", libvirt_virConnectListAllNetworks, METH_VARARGS, NULL},
-#endif /* LIBVIR_CHECK_VERSION(0, 10, 2) */
     {(char *) "virNetworkGetUUID", libvirt_virNetworkGetUUID, METH_VARARGS, NULL},
     {(char *) "virNetworkGetUUIDString", libvirt_virNetworkGetUUIDString, METH_VARARGS, NULL},
     {(char *) "virNetworkLookupByUUID", libvirt_virNetworkLookupByUUID, METH_VARARGS, NULL},
@@ -9659,29 +9566,19 @@ static PyMethodDef libvirtMethods[] = {
     {(char *) "virDomainPinVcpu", libvirt_virDomainPinVcpu, METH_VARARGS, NULL},
     {(char *) "virDomainPinVcpuFlags", libvirt_virDomainPinVcpuFlags, METH_VARARGS, NULL},
     {(char *) "virDomainGetVcpuPinInfo", libvirt_virDomainGetVcpuPinInfo, METH_VARARGS, NULL},
-#if LIBVIR_CHECK_VERSION(0, 10, 0)
     {(char *) "virDomainGetEmulatorPinInfo", libvirt_virDomainGetEmulatorPinInfo, METH_VARARGS, NULL},
     {(char *) "virDomainPinEmulator", libvirt_virDomainPinEmulator, METH_VARARGS, NULL},
-#endif /* LIBVIR_CHECK_VERSION(0, 10, 0) */
-#if LIBVIR_CHECK_VERSION(1, 2, 14)
     {(char *) "virDomainGetIOThreadInfo", libvirt_virDomainGetIOThreadInfo, METH_VARARGS, NULL},
     {(char *) "virDomainPinIOThread", libvirt_virDomainPinIOThread, METH_VARARGS, NULL},
-#endif /* LIBVIR_CHECK_VERSION(1, 2, 14) */
     {(char *) "virConnectListStoragePools", libvirt_virConnectListStoragePools, METH_VARARGS, NULL},
     {(char *) "virConnectListDefinedStoragePools", libvirt_virConnectListDefinedStoragePools, METH_VARARGS, NULL},
-#if LIBVIR_CHECK_VERSION(0, 10, 2)
     {(char *) "virConnectListAllStoragePools", libvirt_virConnectListAllStoragePools, METH_VARARGS, NULL},
-#endif /* LIBVIR_CHECK_VERSION(0, 10, 2) */
     {(char *) "virStoragePoolGetAutostart", libvirt_virStoragePoolGetAutostart, METH_VARARGS, NULL},
     {(char *) "virStoragePoolListVolumes", libvirt_virStoragePoolListVolumes, METH_VARARGS, NULL},
-#if LIBVIR_CHECK_VERSION(0, 10, 2)
     {(char *) "virStoragePoolListAllVolumes", libvirt_virStoragePoolListAllVolumes, METH_VARARGS, NULL},
-#endif /* LIBVIR_CHECK_VERSION(0, 10, 2) */
     {(char *) "virStoragePoolGetInfo", libvirt_virStoragePoolGetInfo, METH_VARARGS, NULL},
     {(char *) "virStorageVolGetInfo", libvirt_virStorageVolGetInfo, METH_VARARGS, NULL},
-#if LIBVIR_CHECK_VERSION(3, 0, 0)
     {(char *) "virStorageVolGetInfoFlags", libvirt_virStorageVolGetInfoFlags, METH_VARARGS, NULL},
-#endif /* LIBVIR_CHECK_VERSION(3, 0, 0) */
     {(char *) "virStoragePoolGetUUID", libvirt_virStoragePoolGetUUID, METH_VARARGS, NULL},
     {(char *) "virStoragePoolGetUUIDString", libvirt_virStoragePoolGetUUIDString, METH_VARARGS, NULL},
     {(char *) "virStoragePoolLookupByUUID", libvirt_virStoragePoolLookupByUUID, METH_VARARGS, NULL},
@@ -9692,121 +9589,75 @@ static PyMethodDef libvirtMethods[] = {
     {(char *) "virEventInvokeTimeoutCallback", libvirt_virEventInvokeTimeoutCallback, METH_VARARGS, NULL},
     {(char *) "virEventInvokeFreeCallback", libvirt_virEventInvokeFreeCallback, METH_VARARGS, NULL},
     {(char *) "virNodeListDevices", libvirt_virNodeListDevices, METH_VARARGS, NULL},
-#if LIBVIR_CHECK_VERSION(0, 10, 2)
     {(char *) "virConnectListAllNodeDevices", libvirt_virConnectListAllNodeDevices, METH_VARARGS, NULL},
-#endif /* LIBVIR_CHECK_VERSION(0, 10, 2) */
     {(char *) "virNodeDeviceListCaps", libvirt_virNodeDeviceListCaps, METH_VARARGS, NULL},
     {(char *) "virSecretGetUUID", libvirt_virSecretGetUUID, METH_VARARGS, NULL},
     {(char *) "virSecretGetUUIDString", libvirt_virSecretGetUUIDString, METH_VARARGS, NULL},
     {(char *) "virSecretLookupByUUID", libvirt_virSecretLookupByUUID, METH_VARARGS, NULL},
     {(char *) "virConnectListSecrets", libvirt_virConnectListSecrets, METH_VARARGS, NULL},
-#if LIBVIR_CHECK_VERSION(0, 10, 2)
     {(char *) "virConnectListAllSecrets", libvirt_virConnectListAllSecrets, METH_VARARGS, NULL},
-#endif /* LIBVIR_CHECK_VERSION(0, 10, 2) */
     {(char *) "virSecretGetValue", libvirt_virSecretGetValue, METH_VARARGS, NULL},
     {(char *) "virSecretSetValue", libvirt_virSecretSetValue, METH_VARARGS, NULL},
     {(char *) "virNWFilterGetUUID", libvirt_virNWFilterGetUUID, METH_VARARGS, NULL},
     {(char *) "virNWFilterGetUUIDString", libvirt_virNWFilterGetUUIDString, METH_VARARGS, NULL},
     {(char *) "virNWFilterLookupByUUID", libvirt_virNWFilterLookupByUUID, METH_VARARGS, NULL},
     {(char *) "virConnectListNWFilters", libvirt_virConnectListNWFilters, METH_VARARGS, NULL},
-#if LIBVIR_CHECK_VERSION(0, 10, 2)
     {(char *) "virConnectListAllNWFilters", libvirt_virConnectListAllNWFilters, METH_VARARGS, NULL},
-#endif /* LIBVIR_CHECK_VERSION(0, 10, 2) */
     {(char *) "virConnectListInterfaces", libvirt_virConnectListInterfaces, METH_VARARGS, NULL},
     {(char *) "virConnectListDefinedInterfaces", libvirt_virConnectListDefinedInterfaces, METH_VARARGS, NULL},
-#if LIBVIR_CHECK_VERSION(0, 10, 2)
     {(char *) "virConnectListAllInterfaces", libvirt_virConnectListAllInterfaces, METH_VARARGS, NULL},
-#endif /* LIBVIR_CHECK_VERSION(0, 10, 2) */
     {(char *) "virConnectBaselineCPU", libvirt_virConnectBaselineCPU, METH_VARARGS, NULL},
     {(char *) "virDomainGetJobInfo", libvirt_virDomainGetJobInfo, METH_VARARGS, NULL},
-#if LIBVIR_CHECK_VERSION(1, 0, 3)
     {(char *) "virDomainGetJobStats", libvirt_virDomainGetJobStats, METH_VARARGS, NULL},
-#endif /* LIBVIR_CHECK_VERSION(1, 0, 3) */
     {(char *) "virDomainSnapshotListNames", libvirt_virDomainSnapshotListNames, METH_VARARGS, NULL},
-#if LIBVIR_CHECK_VERSION(0, 9, 13)
     {(char *) "virDomainListAllSnapshots", libvirt_virDomainListAllSnapshots, METH_VARARGS, NULL},
-#endif /* LIBVIR_CHECK_VERSION(0, 9, 13) */
     {(char *) "virDomainSnapshotListChildrenNames", libvirt_virDomainSnapshotListChildrenNames, METH_VARARGS, NULL},
-#if LIBVIR_CHECK_VERSION(0, 9, 13)
     {(char *) "virDomainSnapshotListAllChildren", libvirt_virDomainSnapshotListAllChildren, METH_VARARGS, NULL},
-#endif /* LIBVIR_CHECK_VERSION(0, 9, 13) */
     {(char *) "virDomainRevertToSnapshot", libvirt_virDomainRevertToSnapshot, METH_VARARGS, NULL},
     {(char *) "virDomainGetBlockJobInfo", libvirt_virDomainGetBlockJobInfo, METH_VARARGS, NULL},
     {(char *) "virDomainSetBlockIoTune", libvirt_virDomainSetBlockIoTune, METH_VARARGS, NULL},
     {(char *) "virDomainGetBlockIoTune", libvirt_virDomainGetBlockIoTune, METH_VARARGS, NULL},
     {(char *) "virDomainSendKey", libvirt_virDomainSendKey, METH_VARARGS, NULL},
-#if LIBVIR_CHECK_VERSION(1, 0, 3)
     {(char *) "virDomainMigrateGetCompressionCache", libvirt_virDomainMigrateGetCompressionCache, METH_VARARGS, NULL},
-#endif /* LIBVIR_CHECK_VERSION(1, 0, 3) */
     {(char *) "virDomainMigrateGetMaxSpeed", libvirt_virDomainMigrateGetMaxSpeed, METH_VARARGS, NULL},
 #if LIBVIR_CHECK_VERSION(3, 7, 0)
     {(char *) "virDomainMigrateGetMaxDowntime", libvirt_virDomainMigrateGetMaxDowntime, METH_VARARGS, NULL},
 #endif /* LIBVIR_CHECK_VERSION(3, 7, 0) */
     {(char *) "virDomainMigrateGetMaxSpeed", libvirt_virDomainMigrateGetMaxSpeed, METH_VARARGS, NULL},
-#if LIBVIR_CHECK_VERSION(1, 1, 0)
     {(char *) "virDomainMigrate3", libvirt_virDomainMigrate3, METH_VARARGS, NULL},
     {(char *) "virDomainMigrateToURI3", libvirt_virDomainMigrateToURI3, METH_VARARGS, NULL},
-#endif /* LIBVIR_CHECK_VERSION(1, 1, 0) */
     {(char *) "virDomainBlockPeek", libvirt_virDomainBlockPeek, METH_VARARGS, NULL},
     {(char *) "virDomainMemoryPeek", libvirt_virDomainMemoryPeek, METH_VARARGS, NULL},
     {(char *) "virDomainGetDiskErrors", libvirt_virDomainGetDiskErrors, METH_VARARGS, NULL},
-#if LIBVIR_CHECK_VERSION(0, 10, 2)
     {(char *) "virNodeGetMemoryParameters", libvirt_virNodeGetMemoryParameters, METH_VARARGS, NULL},
     {(char *) "virNodeSetMemoryParameters", libvirt_virNodeSetMemoryParameters, METH_VARARGS, NULL},
-#endif /* LIBVIR_CHECK_VERSION(0, 10, 2) */
-#if LIBVIR_CHECK_VERSION(1, 0, 0)
     {(char *) "virNodeGetCPUMap", libvirt_virNodeGetCPUMap, METH_VARARGS, NULL},
-#endif /* LIBVIR_CHECK_VERSION(1, 0, 0) */
-#if LIBVIR_CHECK_VERSION(1, 1, 1)
     {(char *) "virDomainCreateXMLWithFiles", libvirt_virDomainCreateXMLWithFiles, METH_VARARGS, NULL},
     {(char *) "virDomainCreateWithFiles", libvirt_virDomainCreateWithFiles, METH_VARARGS, NULL},
-#endif /* LIBVIR_CHECK_VERSION(1, 1, 1) */
-#if LIBVIR_CHECK_VERSION(1, 2, 5)
     {(char *) "virDomainFSFreeze", libvirt_virDomainFSFreeze, METH_VARARGS, NULL},
     {(char *) "virDomainFSThaw", libvirt_virDomainFSThaw, METH_VARARGS, NULL},
     {(char *) "virDomainGetTime", libvirt_virDomainGetTime, METH_VARARGS, NULL},
     {(char *) "virDomainSetTime", libvirt_virDomainSetTime, METH_VARARGS, NULL},
-#endif /* LIBVIR_CHECK_VERSION(1, 2, 5) */
-#if LIBVIR_CHECK_VERSION(1, 2, 6)
     {(char *) "virNodeGetFreePages", libvirt_virNodeGetFreePages, METH_VARARGS, NULL},
     {(char *) "virNetworkGetDHCPLeases", libvirt_virNetworkGetDHCPLeases, METH_VARARGS, NULL},
-#endif /* LIBVIR_CHECK_VERSION(1, 2, 6) */
-#if LIBVIR_CHECK_VERSION(1, 2, 8)
     {(char *) "virConnectGetAllDomainStats", libvirt_virConnectGetAllDomainStats, METH_VARARGS, NULL},
     {(char *) "virDomainListGetStats", libvirt_virDomainListGetStats, METH_VARARGS, NULL},
     {(char *) "virDomainBlockCopy", libvirt_virDomainBlockCopy, METH_VARARGS, NULL},
-#endif /* LIBVIR_CHECK_VERSION(1, 2, 8) */
-#if LIBVIR_CHECK_VERSION(1, 2, 9)
     {(char *) "virNodeAllocPages", libvirt_virNodeAllocPages, METH_VARARGS, NULL},
-#endif /* LIBVIR_CHECK_VERSION(1, 2, 9) */
-#if LIBVIR_CHECK_VERSION(1, 2, 11)
     {(char *) "virDomainGetFSInfo", libvirt_virDomainGetFSInfo, METH_VARARGS, NULL},
-#endif /* LIBVIR_CHECK_VERSION(1, 2, 11) */
-#if LIBVIR_CHECK_VERSION(1, 2, 14)
     {(char *) "virDomainInterfaceAddresses", libvirt_virDomainInterfaceAddresses, METH_VARARGS, NULL},
-#endif /* LIBVIR_CHECK_VERSION(1, 2, 14) */
-#if LIBVIR_CHECK_VERSION(1, 3, 3)
     {(char *) "virDomainGetPerfEvents", libvirt_virDomainGetPerfEvents, METH_VARARGS, NULL},
     {(char *) "virDomainSetPerfEvents", libvirt_virDomainSetPerfEvents, METH_VARARGS, NULL},
-#endif /* LIBVIR_CHECK_VERSION(1, 3, 3) */
-#if LIBVIR_CHECK_VERSION(2, 0, 0)
     {(char *) "virConnectStoragePoolEventRegisterAny", libvirt_virConnectStoragePoolEventRegisterAny, METH_VARARGS, NULL},
     {(char *) "virConnectStoragePoolEventDeregisterAny", libvirt_virConnectStoragePoolEventDeregisterAny, METH_VARARGS, NULL},
     {(char *) "virDomainGetGuestVcpus", libvirt_virDomainGetGuestVcpus, METH_VARARGS, NULL},
-#endif /* LIBVIR_CHECK_VERSION(2, 0, 0) */
-#if LIBVIR_CHECK_VERSION(2, 2, 0)
     {(char *) "virConnectNodeDeviceEventRegisterAny", libvirt_virConnectNodeDeviceEventRegisterAny, METH_VARARGS, NULL},
     {(char *) "virConnectNodeDeviceEventDeregisterAny", libvirt_virConnectNodeDeviceEventDeregisterAny, METH_VARARGS, NULL},
-#endif /* LIBVIR_CHECK_VERSION(2, 2, 0) */
-#if LIBVIR_CHECK_VERSION(3, 0, 0)
     {(char *) "virConnectSecretEventRegisterAny", libvirt_virConnectSecretEventRegisterAny, METH_VARARGS, NULL},
     {(char *) "virConnectSecretEventDeregisterAny", libvirt_virConnectSecretEventDeregisterAny, METH_VARARGS, NULL},
-#endif /* LIBVIR_CHECK_VERSION(3, 0, 0) */
-#if LIBVIR_CHECK_VERSION(3, 4, 0)
     {(char *) "virStreamRecvHole", libvirt_virStreamRecvHole, METH_VARARGS, NULL},
     {(char *) "virStreamSendHole", libvirt_virStreamSendHole, METH_VARARGS, NULL},
     {(char *) "virStreamRecvFlags", libvirt_virStreamRecvFlags, METH_VARARGS, NULL},
-#endif /* LIBVIR_CHECK_VERSION(3, 4, 0) */
     {NULL, NULL, 0, NULL}
 };
 
-- 
2.13.5

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [libvirt-python][PATCH] maint: Require libvirt-3.4.0 at least
Posted by Daniel P. Berrange 6 years, 7 months ago
On Thu, Sep 14, 2017 at 01:41:08PM +0200, Michal Privoznik wrote:
> Currently, we require 0.9.11. However, some APIs are missing
> there and thus sanity check fails:
> 
> DEBUG: /usr/bin/python sanitytest.py build/lib.linux-s390x-2.7 /usr/share/libvirt/api/libvirt-api.xml
> DEBUG: FAIL virStream.sparseRecvAll       (Python API not mapped to C)
> DEBUG: FAIL virStream.sparseSendAll       (Python API not mapped to C)
> DEBUG: error: command '/usr/bin/python' failed with exit status 1
> 
> I'm not sure how to fix that so raising minimal required libvirt
> version is the solution.
> 
> Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
> ---
>  setup.py           |   2 +-
>  README             |   2 +-
>  libvirt-override.c | 149 -----------------------------------------------------
>  3 files changed, 2 insertions(+), 151 deletions(-)
> 
> diff --git a/setup.py b/setup.py
> index f33ff1a..f929eb2 100755
> --- a/setup.py
> +++ b/setup.py
> @@ -17,7 +17,7 @@ import re
>  import shutil
>  import time
>  
> -MIN_LIBVIRT = "0.9.11"
> +MIN_LIBVIRT = "3.4.0"

NACK, we cannot do this - it will break many people and apps (OpenStack
in particular) who expect latest libvirt on pypi to work with historical
C libs.


Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [libvirt-python][PATCH] maint: Require libvirt-3.4.0 at least
Posted by Michal Privoznik 6 years, 7 months ago
On 09/14/2017 02:42 PM, Daniel P. Berrange wrote:
> On Thu, Sep 14, 2017 at 01:41:08PM +0200, Michal Privoznik wrote:
>> Currently, we require 0.9.11. However, some APIs are missing
>> there and thus sanity check fails:
>>
>> DEBUG: /usr/bin/python sanitytest.py build/lib.linux-s390x-2.7 /usr/share/libvirt/api/libvirt-api.xml
>> DEBUG: FAIL virStream.sparseRecvAll       (Python API not mapped to C)
>> DEBUG: FAIL virStream.sparseSendAll       (Python API not mapped to C)
>> DEBUG: error: command '/usr/bin/python' failed with exit status 1
>>
>> I'm not sure how to fix that so raising minimal required libvirt
>> version is the solution.
>>
>> Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
>> ---
>>  setup.py           |   2 +-
>>  README             |   2 +-
>>  libvirt-override.c | 149 -----------------------------------------------------
>>  3 files changed, 2 insertions(+), 151 deletions(-)
>>
>> diff --git a/setup.py b/setup.py
>> index f33ff1a..f929eb2 100755
>> --- a/setup.py
>> +++ b/setup.py
>> @@ -17,7 +17,7 @@ import re
>>  import shutil
>>  import time
>>  
>> -MIN_LIBVIRT = "0.9.11"
>> +MIN_LIBVIRT = "3.4.0"
> 
> NACK, we cannot do this - it will break many people and apps (OpenStack
> in particular) who expect latest libvirt on pypi to work with historical
> C libs.

I don't know how pypi works, but if somebody distributes just
libvirt-python and doesn't ship libvirt.so too, such process is broken
already because libvirt-python could have been compiled with one version
of libvirt while user might be running a different one. So shipping
libvirt.so is the only way. And since libvirt-python doesn't add any new
features compared to bare libvirt, why on earth would somebody want to
run latest libvirt-python but an ancient libvirt? It doesn't make much
sense to update one without other.

Michal

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [libvirt-python][PATCH] maint: Require libvirt-3.4.0 at least
Posted by Daniel P. Berrange 6 years, 7 months ago
On Thu, Sep 14, 2017 at 03:05:15PM +0200, Michal Privoznik wrote:
> On 09/14/2017 02:42 PM, Daniel P. Berrange wrote:
> > On Thu, Sep 14, 2017 at 01:41:08PM +0200, Michal Privoznik wrote:
> >> Currently, we require 0.9.11. However, some APIs are missing
> >> there and thus sanity check fails:
> >>
> >> DEBUG: /usr/bin/python sanitytest.py build/lib.linux-s390x-2.7 /usr/share/libvirt/api/libvirt-api.xml
> >> DEBUG: FAIL virStream.sparseRecvAll       (Python API not mapped to C)
> >> DEBUG: FAIL virStream.sparseSendAll       (Python API not mapped to C)
> >> DEBUG: error: command '/usr/bin/python' failed with exit status 1
> >>
> >> I'm not sure how to fix that so raising minimal required libvirt
> >> version is the solution.
> >>
> >> Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
> >> ---
> >>  setup.py           |   2 +-
> >>  README             |   2 +-
> >>  libvirt-override.c | 149 -----------------------------------------------------
> >>  3 files changed, 2 insertions(+), 151 deletions(-)
> >>
> >> diff --git a/setup.py b/setup.py
> >> index f33ff1a..f929eb2 100755
> >> --- a/setup.py
> >> +++ b/setup.py
> >> @@ -17,7 +17,7 @@ import re
> >>  import shutil
> >>  import time
> >>  
> >> -MIN_LIBVIRT = "0.9.11"
> >> +MIN_LIBVIRT = "3.4.0"
> > 
> > NACK, we cannot do this - it will break many people and apps (OpenStack
> > in particular) who expect latest libvirt on pypi to work with historical
> > C libs.
> 
> I don't know how pypi works, but if somebody distributes just
> libvirt-python and doesn't ship libvirt.so too, such process is broken
> already because libvirt-python could have been compiled with one version
> of libvirt while user might be running a different one. So shipping
> libvirt.so is the only way. And since libvirt-python doesn't add any new
> features compared to bare libvirt, why on earth would somebody want to
> run latest libvirt-python but an ancient libvirt? It doesn't make much
> sense to update one without other.

Pypi only ships the source tar.gz. When you pip install libvirt-python
it is then built against the libvirt C library you have installed. The
newer libvirt-python bindings sometimes fix bugs wrt bindings of previously
existing APIs, so there is a reason to run newer libvirt-python. In addition
building libvirt-python from pypi instead of relying on distro installed
RPMs of libvirt-python lets apps use arbitrary versions of python, not just
the one the distro built against. This all works very well and is relied
upon by OpenStack.

Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [libvirt-python][PATCH] maint: Require libvirt-3.4.0 at least
Posted by Martin Kletzander 6 years, 7 months ago
On Thu, Sep 14, 2017 at 01:41:08PM +0200, Michal Privoznik wrote:
>Currently, we require 0.9.11. However, some APIs are missing
>there and thus sanity check fails:
>
>DEBUG: /usr/bin/python sanitytest.py build/lib.linux-s390x-2.7 /usr/share/libvirt/api/libvirt-api.xml
>DEBUG: FAIL virStream.sparseRecvAll       (Python API not mapped to C)
>DEBUG: FAIL virStream.sparseSendAll       (Python API not mapped to C)
>DEBUG: error: command '/usr/bin/python' failed with exit status 1
>
>I'm not sure how to fix that so raising minimal required libvirt
>version is the solution.
>

I think the whole point is to be able to compile with any older (sane)
version of libvirt, so you should *not* do this.  We already have a
mechanism for this, it's just that the naming of these functions doesn't
fit it and it needs to be adjusted IIRC.  See function shouldSkip() in
generator.py.

From me this is NACK until convinced otherwise.
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list