From 73eb682edb67f44aead7f2c70e9e8777e87df898 Mon Sep 17 00:00:00 2001 From: Russell Bryant Date: Mon, 14 Dec 2015 14:03:14 -0500 Subject: [PATCH 1/1] python: Fix xmlrpclib imports. Fix imports of xmlrpclib to be compatible with Python 3. Python 2 had xmlrpclib (client) and SimpleXMLRPCServer (server). In Python 3, these have been renamed to xmlrpc.client and xmlrpc.server. The solution implemented here is to use the six library. It may seem excessive for this particular issue, but the six library provides helpers for Python 2 and 3 compatibility for many different issues. This is just the first of many uses of the six library. Signed-off-by: Russell Bryant Acked-by: Ben Pfaff --- INSTALL.md | 4 +++- debian/control | 7 ++++--- m4/openvswitch.m4 | 6 ++++++ python/ovstest/rpcserver.py | 5 +++-- python/ovstest/util.py | 6 ++++-- rhel/openvswitch-fedora.spec.in | 3 ++- rhel/openvswitch.spec.in | 2 +- 7 files changed, 23 insertions(+), 10 deletions(-) diff --git a/INSTALL.md b/INSTALL.md index bf756f27c..dc688adbc 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -48,7 +48,7 @@ you will need the following software: privileges. If libcap-ng is installed, then Open vSwitch will automatically build with support for it. - - Python 2.7. + - Python 2.7. You must also have the Python six library. On Linux, you may choose to compile the kernel module that comes with the Open vSwitch distribution or to use the kernel module built into @@ -150,6 +150,8 @@ following software: from iproute2 (part of all major distributions and available at http://www.linux-foundation.org/en/Net:Iproute2). + - Python 2.7. You must also have the Python six library. + On Linux you should ensure that /dev/urandom exists. To support TAP devices, you must also ensure that /dev/net/tun exists. diff --git a/debian/control b/debian/control index a71c8fb48..2918d0612 100644 --- a/debian/control +++ b/debian/control @@ -16,7 +16,8 @@ Build-Depends: graphviz, python-all (>= 2.7), python-qt4, python-twisted-conch, - python-zopeinterface + python-zopeinterface, + python-six Standards-Version: 3.9.3 Homepage: http://openvswitch.org/ @@ -57,8 +58,8 @@ Description: Open vSwitch datapath module source - DKMS version Package: openvswitch-common Architecture: linux-any Depends: openssl, - python, - python (>= 2.7) | python-argparse, + python (>= 2.7), + python-six, ${misc:Depends}, ${shlibs:Depends} Suggests: ethtool diff --git a/m4/openvswitch.m4 b/m4/openvswitch.m4 index 6d4e5da9c..0149c3078 100644 --- a/m4/openvswitch.m4 +++ b/m4/openvswitch.m4 @@ -341,6 +341,12 @@ else: fi done done + if test $ovs_cv_python != no; then + if test -x "$ovs_cv_python" && ! "$ovs_cv_python" -c 'import six' >/dev/null 2>&1; then + ovs_cv_python=no + AC_MSG_WARN([Missing Python six library.]) + fi + fi fi]) AC_SUBST([HAVE_PYTHON]) AM_MISSING_PROG([PYTHON], [python]) diff --git a/python/ovstest/rpcserver.py b/python/ovstest/rpcserver.py index 80fc5dc7e..7abf13cb8 100644 --- a/python/ovstest/rpcserver.py +++ b/python/ovstest/rpcserver.py @@ -20,8 +20,8 @@ from __future__ import print_function import exceptions import sys -import xmlrpclib +import six.moves.xmlrpc_client from twisted.internet import reactor from twisted.internet.error import CannotListenError from twisted.web import xmlrpc @@ -108,7 +108,8 @@ class TestArena(xmlrpc.XMLRPC): Returns the ovs-test server IP address that the other ovs-test server with the given ip will see. """ - server1 = xmlrpclib.Server("http://%s:%u/" % (his_ip, his_port)) + server1 = six.moves.xmlrpc_client.Server("http://%s:%u/" % + (his_ip, his_port)) return server1.get_my_address() def xmlrpc_create_udp_listener(self, port): diff --git a/python/ovstest/util.py b/python/ovstest/util.py index 16c012e7a..a52219540 100644 --- a/python/ovstest/util.py +++ b/python/ovstest/util.py @@ -25,7 +25,8 @@ import struct import signal import subprocess import re -import xmlrpclib + +import six.moves.xmlrpc_client def str_ip(ip_address): @@ -167,7 +168,8 @@ def get_interface_from_routing_decision(ip): def rpc_client(ip, port): - return xmlrpclib.Server("http://%s:%u/" % (ip, port), allow_none=True) + return six.moves.xmlrpc_client.Server("http://%s:%u/" % (ip, port), + allow_none=True) def sigint_intercept(): diff --git a/rhel/openvswitch-fedora.spec.in b/rhel/openvswitch-fedora.spec.in index 15f5c6082..e65566553 100644 --- a/rhel/openvswitch-fedora.spec.in +++ b/rhel/openvswitch-fedora.spec.in @@ -41,7 +41,7 @@ Source: http://openvswitch.org/releases/%{name}-%{version}.tar.gz BuildRequires: autoconf automake libtool BuildRequires: systemd-units openssl openssl-devel -BuildRequires: python python-twisted-core python-zope-interface PyQt4 +BuildRequires: python python-twisted-core python-zope-interface PyQt4 python-six BuildRequires: desktop-file-utils BuildRequires: groff graphviz # make check dependencies @@ -71,6 +71,7 @@ Summary: Open vSwitch python bindings License: ASL 2.0 BuildArch: noarch Requires: python +Requires: python-six %description -n python-openvswitch Python bindings for the Open vSwitch database diff --git a/rhel/openvswitch.spec.in b/rhel/openvswitch.spec.in index fdb187936..a1f9b1878 100644 --- a/rhel/openvswitch.spec.in +++ b/rhel/openvswitch.spec.in @@ -22,7 +22,7 @@ License: ASL 2.0 Release: 1 Source: openvswitch-%{version}.tar.gz Buildroot: /tmp/openvswitch-rpm -Requires: logrotate, python >= 2.7 +Requires: logrotate, python >= 2.7, python-six BuildRequires: openssl-devel %bcond_without check -- 2.20.1