Drop python2 support / make it work with python3
Re-apply reverted commit Iabda95073faa2191fd117e9637e0858c589e9d9e ("Drop python2 support"), but with additional changes to make the scripts actually work with python3 and to make it build without python2. I have verified, that the contrib/jenkins.sh scripts of all Osmocom repositories (with their python3 patches on top) are working with this patch and that all Osmocom repositories with the python3 patches build in OBS (tested in own namespace). New fixes: * osmopy/obscvty.py: verify: fix compare Comparing maps in python3 does not work the same as in python2. Convert them to lists first, so the compare works as intended again. Fix error: File "/home/user/code/osmo-dev/src/osmo-python-tests/scripts/osmotestvty.py", line 57, in test_history assert(self.vty.w_verify(test_str, [t1])) AssertionError * osmopy/obscvty.py: use enc/dec with send/recv Fix error: self.socket.send("%s\r" % request) TypeError: a bytes-like object is required, not 'str' * scripts/osmotestconfig.py: use encode() before writing to file Fix error: File "/home/user/code/osmo-dev/src/osmo-python-tests/scripts/osmotestconfig.py", line 91, in copy_config tmpfile.write(open(config).read()) File "/usr/lib/python3.5/tempfile.py", line 622, in func_wrapper return func(*args, **kwargs) TypeError: a bytes-like object is required, not 'str' * debian/control: add --buildsystem=pybuild. Otherwise "--with python3" is ignored and the build fails if python2 is not installed, with: Can't exec "pyversions": No such file or directory at /usr/[...]/python_distutils.pm line 120. Related: OS#2819 Change-Id: I3ffc3519bf6c22536a49dad7a966188ddad351a7
This commit is contained in:
parent
b0ba927e33
commit
d8666ad3c8
|
@ -4,16 +4,6 @@ set -ex
|
||||||
|
|
||||||
COM_FLAGS='-m compileall'
|
COM_FLAGS='-m compileall'
|
||||||
|
|
||||||
# FIXME: remove once python 2 support is deprecated
|
|
||||||
PY2=python2
|
|
||||||
PY2_LIST="osmopy scripts/osmodumpdoc.py scripts/osmotestvty.py scripts/osmotestconfig.py"
|
|
||||||
$PY2 ./setup.py install
|
|
||||||
$PY2 tests/test_py2.py
|
|
||||||
for f in $PY2_LIST
|
|
||||||
do
|
|
||||||
$PY2 $COM_FLAGS $f
|
|
||||||
done
|
|
||||||
|
|
||||||
rm -rf ./build
|
rm -rf ./build
|
||||||
PY3=python3
|
PY3=python3
|
||||||
PY3_LIST="osmopy scripts/osmo_ctrl.py scripts/osmo_rate_ctr2csv.py scripts/osmodumpdoc.py scripts/osmotestvty.py scripts/osmotestconfig.py scripts/osmo_interact_ctrl.py scripts/osmo_interact_vty.py scripts/osmo_verify_transcript_ctrl.py scripts/osmo_verify_transcript_vty.py scripts/soap.py scripts/twisted_ipa.py"
|
PY3_LIST="osmopy scripts/osmo_ctrl.py scripts/osmo_rate_ctr2csv.py scripts/osmodumpdoc.py scripts/osmotestvty.py scripts/osmotestconfig.py scripts/osmo_interact_ctrl.py scripts/osmo_interact_vty.py scripts/osmo_verify_transcript_ctrl.py scripts/osmo_verify_transcript_vty.py scripts/soap.py scripts/twisted_ipa.py"
|
||||||
|
|
|
@ -2,26 +2,12 @@ Source: osmo-python-tests
|
||||||
Section: python
|
Section: python
|
||||||
Priority: optional
|
Priority: optional
|
||||||
Maintainer: Harald Welte <laforge@gnumonks.org>
|
Maintainer: Harald Welte <laforge@gnumonks.org>
|
||||||
Build-Depends: debhelper (>= 9), python, dh-python, python-setuptools, python3, python3-setuptools
|
Build-Depends: debhelper (>= 9), dh-python, python3, python3-setuptools
|
||||||
Standards-Version: 3.9.8
|
Standards-Version: 3.9.8
|
||||||
Homepage: http://git.osmocom.org/python/osmo-python-tests/
|
Homepage: http://git.osmocom.org/python/osmo-python-tests/
|
||||||
Vcs-Git: git://git.osmocom.org/python/osmo-python-tests
|
Vcs-Git: git://git.osmocom.org/python/osmo-python-tests
|
||||||
Vcs-Browser: http://git.osmocom.org/python/osmo-python-tests/
|
Vcs-Browser: http://git.osmocom.org/python/osmo-python-tests/
|
||||||
|
|
||||||
Package: python2-osmopy-libs
|
|
||||||
Architecture: all
|
|
||||||
Depends: ${python:Depends}, ${misc:Depends}
|
|
||||||
Description: Python code (not only) for testing of Osmocom programs
|
|
||||||
.
|
|
||||||
This package contains the Python 2 version of osmopy libraries.
|
|
||||||
|
|
||||||
Package: python2-osmopy-utils
|
|
||||||
Architecture: all
|
|
||||||
Depends: ${python:Depends}, ${misc:Depends}, python2-osmopy-libs
|
|
||||||
Description: Python code (not only) for testing of Osmocom programs
|
|
||||||
.
|
|
||||||
This package contains the Python 2 version of osmopy utils.
|
|
||||||
|
|
||||||
Package: python3-osmopy-libs
|
Package: python3-osmopy-libs
|
||||||
Architecture: all
|
Architecture: all
|
||||||
Depends: ${python3:Depends}, ${misc:Depends}
|
Depends: ${python3:Depends}, ${misc:Depends}
|
||||||
|
|
|
@ -1,13 +1,9 @@
|
||||||
#!/usr/bin/make -f
|
#!/usr/bin/make -f
|
||||||
|
|
||||||
%:
|
%:
|
||||||
dh $@ --with python2,python3
|
dh $@ --with python3 --buildsystem=pybuild
|
||||||
|
|
||||||
override_dh_auto_install:
|
override_dh_auto_install:
|
||||||
python2 setup.py install --install-layout=deb --root=$(CURDIR)/debian/python2-osmopy-libs
|
|
||||||
rm -rf $(CURDIR)/debian/python2-osmopy-libs/usr/bin
|
|
||||||
python2 setup.py install --install-layout=deb --root=$(CURDIR)/debian/python2-osmopy-utils
|
|
||||||
rm -rf $(CURDIR)/debian/python2-osmopy-utils/usr/lib
|
|
||||||
python3 setup.py install --install-layout=deb --root=$(CURDIR)/debian/python3-osmopy-libs
|
python3 setup.py install --install-layout=deb --root=$(CURDIR)/debian/python3-osmopy-libs
|
||||||
rm -rf $(CURDIR)/debian/python3-osmopy-libs/usr/bin
|
rm -rf $(CURDIR)/debian/python3-osmopy-libs/usr/bin
|
||||||
python3 setup.py install --install-layout=deb --root=$(CURDIR)/debian/python3-osmopy-utils
|
python3 setup.py install --install-layout=deb --root=$(CURDIR)/debian/python3-osmopy-utils
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#!/usr/bin/env python
|
#!/usr/bin/env python3
|
||||||
__version__ = '0.1.0'
|
__version__ = '0.1.0'
|
||||||
|
|
||||||
__all__ = ['obscvty', 'osmoutil', 'osmo_ipa', 'osmo_interact', 'trap_helper', 'twisted_ipa']
|
__all__ = ['obscvty', 'osmoutil', 'osmo_ipa', 'osmo_interact', 'trap_helper', 'twisted_ipa']
|
||||||
|
|
|
@ -16,7 +16,6 @@
|
||||||
#
|
#
|
||||||
# VTY helper code for OpenBSC
|
# VTY helper code for OpenBSC
|
||||||
#
|
#
|
||||||
from __future__ import print_function
|
|
||||||
import re
|
import re
|
||||||
import socket
|
import socket
|
||||||
import sys, subprocess
|
import sys, subprocess
|
||||||
|
@ -176,13 +175,13 @@ class VTYInteract(object):
|
||||||
self._connect_socket()
|
self._connect_socket()
|
||||||
|
|
||||||
# Now send the command
|
# Now send the command
|
||||||
self.socket.send("%s\r" % request)
|
self.socket.send(("%s\r" % request).encode())
|
||||||
res = ""
|
res = ""
|
||||||
end = ""
|
end = ""
|
||||||
|
|
||||||
# Unfortunately, timeout and recv don't always play nicely
|
# Unfortunately, timeout and recv don't always play nicely
|
||||||
while True:
|
while True:
|
||||||
data = self.socket.recv(4096)
|
data = self.socket.recv(4096).decode()
|
||||||
res = "%s%s" % (res, data)
|
res = "%s%s" % (res, data)
|
||||||
if not res: # yes, this is ugly
|
if not res: # yes, this is ugly
|
||||||
raise IOError("Failed to read data (did the app crash?)")
|
raise IOError("Failed to read data (did the app crash?)")
|
||||||
|
@ -205,7 +204,7 @@ class VTYInteract(object):
|
||||||
buffer = ''
|
buffer = ''
|
||||||
data = True
|
data = True
|
||||||
while data:
|
while data:
|
||||||
data = self.socket.recv(recv_buffer)
|
data = self.socket.recv(recv_buffer).decode()
|
||||||
buffer += data
|
buffer += data
|
||||||
|
|
||||||
while buffer.find(delim) != -1:
|
while buffer.find(delim) != -1:
|
||||||
|
@ -244,8 +243,8 @@ class VTYInteract(object):
|
||||||
def verify(self, command, results, close=False, loud=True, f=None):
|
def verify(self, command, results, close=False, loud=True, f=None):
|
||||||
res = self.command(command, close).split('\r\n')
|
res = self.command(command, close).split('\r\n')
|
||||||
if f:
|
if f:
|
||||||
res = map(f, res)
|
res = list(map(f, res))
|
||||||
results = map(f, results)
|
results = list(map(f, results))
|
||||||
|
|
||||||
if loud:
|
if loud:
|
||||||
if res != results:
|
if res != results:
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
#!/usr/bin/env python
|
#!/usr/bin/env python3
|
||||||
__all__ = ['common', 'vty', 'ctrl']
|
__all__ = ['common', 'vty', 'ctrl']
|
||||||
|
|
|
@ -24,11 +24,6 @@ This implements all of application interaction, piping and verification.
|
||||||
vty.py and ctrl.py plug VTY and CTRL interface specific bits.
|
vty.py and ctrl.py plug VTY and CTRL interface specific bits.
|
||||||
'''
|
'''
|
||||||
|
|
||||||
# Our setup.py currently wants everything to be parsable by both py2 and py3.
|
|
||||||
# IMHO that is not a good idea, but until that changes, let's just keep this
|
|
||||||
# py2 legacy shim in here so we can syntax-check this py3 module with py2.
|
|
||||||
from __future__ import print_function
|
|
||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
import sys
|
import sys
|
||||||
import os
|
import os
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#!/usr/bin/env python
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
# (C) 2013 by Katerina Barone-Adesi <kat.obsc@gmail.com>
|
# (C) 2013 by Katerina Barone-Adesi <kat.obsc@gmail.com>
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
@ -14,7 +14,6 @@
|
||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
from __future__ import print_function
|
|
||||||
import subprocess
|
import subprocess
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
|
|
@ -1,10 +1,9 @@
|
||||||
#!/usr/bin/env python
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
# Make sure this code is in sync with the BTS directory.
|
# Make sure this code is in sync with the BTS directory.
|
||||||
# Fixes may need to be applied to both.
|
# Fixes may need to be applied to both.
|
||||||
|
|
||||||
"""Start the process and dump the documentation to the doc dir."""
|
"""Start the process and dump the documentation to the doc dir."""
|
||||||
from __future__ import print_function
|
|
||||||
import subprocess
|
import subprocess
|
||||||
import time
|
import time
|
||||||
import os
|
import os
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#!/usr/bin/env python
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
# (C) 2013 by Katerina Barone-Adesi <kat.obsc@gmail.com>
|
# (C) 2013 by Katerina Barone-Adesi <kat.obsc@gmail.com>
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
@ -13,7 +13,6 @@
|
||||||
|
|
||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
from __future__ import print_function
|
|
||||||
import os
|
import os
|
||||||
import os.path
|
import os.path
|
||||||
import time
|
import time
|
||||||
|
@ -89,7 +88,7 @@ def copy_config(dirname, config):
|
||||||
prefix = os.path.basename(config)
|
prefix = os.path.basename(config)
|
||||||
tmpfile = tempfile.NamedTemporaryFile(
|
tmpfile = tempfile.NamedTemporaryFile(
|
||||||
dir=dirname, prefix=prefix, delete=False)
|
dir=dirname, prefix=prefix, delete=False)
|
||||||
tmpfile.write(open(config).read())
|
tmpfile.write(open(config).read().encode())
|
||||||
tmpfile.close()
|
tmpfile.close()
|
||||||
# This works around the precautions NamedTemporaryFile is made for...
|
# This works around the precautions NamedTemporaryFile is made for...
|
||||||
return tmpfile.name
|
return tmpfile.name
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#!/usr/bin/env python
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
# (C) 2013 by Katerina Barone-Adesi <kat.obsc@gmail.com>
|
# (C) 2013 by Katerina Barone-Adesi <kat.obsc@gmail.com>
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
@ -13,7 +13,6 @@
|
||||||
|
|
||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
from __future__ import print_function
|
|
||||||
import os
|
import os
|
||||||
import time
|
import time
|
||||||
import unittest
|
import unittest
|
||||||
|
|
32
setup.py
32
setup.py
|
@ -19,24 +19,20 @@ from setuptools import setup, find_packages
|
||||||
from osmopy import __version__
|
from osmopy import __version__
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
if sys.version_info.major == 2:
|
scripts = [
|
||||||
scripts = [
|
"scripts/osmodumpdoc.py",
|
||||||
"scripts/osmodumpdoc.py",
|
"scripts/osmotestvty.py",
|
||||||
"scripts/osmotestconfig.py",
|
"scripts/osmotestconfig.py",
|
||||||
"scripts/osmotestvty.py",
|
"scripts/osmo_ctrl.py",
|
||||||
]
|
"scripts/osmo_rate_ctr2csv.py",
|
||||||
elif sys.version_info.major == 3:
|
"scripts/soap.py",
|
||||||
scripts = [
|
"scripts/ctrl2cgi.py",
|
||||||
"scripts/osmo_ctrl.py",
|
"scripts/osmo_trap2cgi.py",
|
||||||
"scripts/osmo_rate_ctr2csv.py",
|
"scripts/osmo_interact_vty.py",
|
||||||
"scripts/soap.py",
|
"scripts/osmo_interact_ctrl.py",
|
||||||
"scripts/ctrl2cgi.py",
|
"scripts/osmo_verify_transcript_vty.py",
|
||||||
"scripts/osmo_trap2cgi.py",
|
"scripts/osmo_verify_transcript_ctrl.py",
|
||||||
"scripts/osmo_interact_vty.py",
|
]
|
||||||
"scripts/osmo_interact_ctrl.py",
|
|
||||||
"scripts/osmo_verify_transcript_vty.py",
|
|
||||||
"scripts/osmo_verify_transcript_ctrl.py",
|
|
||||||
]
|
|
||||||
|
|
||||||
setup(
|
setup(
|
||||||
name = 'osmopython',
|
name = 'osmopython',
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
#!/usr/bin/env python2
|
|
||||||
|
|
||||||
# just import a smoke test for osmopy
|
|
||||||
|
|
||||||
import osmopy
|
|
||||||
|
|
||||||
print '[Python2] Smoke test PASSED.'
|
|
Loading…
Reference in New Issue