Drop python2 support (again)
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). All related patches for changing from python2 to 3 in other repositories must be merged shortly after this one, as soon as the build slaves were (automatically) updated to have the new osmo-python-tests installed: https://gerrit.osmocom.org/q/topic:drop-py2 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: I3ffc3519bf6c22536a49dad7a966188ddad351a7changes/40/16540/2
parent
b0ba927e33
commit
934caf1a81
|
@ -4,16 +4,6 @@ set -ex
|
|||
|
||||
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
|
||||
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"
|
||||
|
|
|
@ -2,26 +2,12 @@ Source: osmo-python-tests
|
|||
Section: python
|
||||
Priority: optional
|
||||
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
|
||||
Homepage: http://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/
|
||||
|
||||
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
|
||||
Architecture: all
|
||||
Depends: ${python3:Depends}, ${misc:Depends}
|
||||
|
|
|
@ -1,13 +1,9 @@
|
|||
#!/usr/bin/make -f
|
||||
|
||||
%:
|
||||
dh $@ --with python2,python3
|
||||
dh $@ --with python3 --buildsystem=pybuild
|
||||
|
||||
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
|
||||
rm -rf $(CURDIR)/debian/python3-osmopy-libs/usr/bin
|
||||
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'
|
||||
|
||||
__all__ = ['obscvty', 'osmoutil', 'osmo_ipa', 'osmo_interact', 'trap_helper', 'twisted_ipa']
|
||||
|
|
|
@ -16,7 +16,6 @@
|
|||
#
|
||||
# VTY helper code for OpenBSC
|
||||
#
|
||||
from __future__ import print_function
|
||||
import re
|
||||
import socket
|
||||
import sys, subprocess
|
||||
|
@ -176,13 +175,13 @@ class VTYInteract(object):
|
|||
self._connect_socket()
|
||||
|
||||
# Now send the command
|
||||
self.socket.send("%s\r" % request)
|
||||
self.socket.send(("%s\r" % request).encode())
|
||||
res = ""
|
||||
end = ""
|
||||
|
||||
# Unfortunately, timeout and recv don't always play nicely
|
||||
while True:
|
||||
data = self.socket.recv(4096)
|
||||
data = self.socket.recv(4096).decode()
|
||||
res = "%s%s" % (res, data)
|
||||
if not res: # yes, this is ugly
|
||||
raise IOError("Failed to read data (did the app crash?)")
|
||||
|
@ -205,7 +204,7 @@ class VTYInteract(object):
|
|||
buffer = ''
|
||||
data = True
|
||||
while data:
|
||||
data = self.socket.recv(recv_buffer)
|
||||
data = self.socket.recv(recv_buffer).decode()
|
||||
buffer += data
|
||||
|
||||
while buffer.find(delim) != -1:
|
||||
|
@ -244,8 +243,8 @@ class VTYInteract(object):
|
|||
def verify(self, command, results, close=False, loud=True, f=None):
|
||||
res = self.command(command, close).split('\r\n')
|
||||
if f:
|
||||
res = map(f, res)
|
||||
results = map(f, results)
|
||||
res = list(map(f, res))
|
||||
results = list(map(f, results))
|
||||
|
||||
if loud:
|
||||
if res != results:
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
#!/usr/bin/env python
|
||||
#!/usr/bin/env python3
|
||||
__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.
|
||||
'''
|
||||
|
||||
# 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 sys
|
||||
import os
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#!/usr/bin/env python
|
||||
#!/usr/bin/env python3
|
||||
|
||||
# (C) 2013 by Katerina Barone-Adesi <kat.obsc@gmail.com>
|
||||
# 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
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from __future__ import print_function
|
||||
import subprocess
|
||||
import os
|
||||
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.
|
||||
# Fixes may need to be applied to both.
|
||||
|
||||
"""Start the process and dump the documentation to the doc dir."""
|
||||
from __future__ import print_function
|
||||
import subprocess
|
||||
import time
|
||||
import os
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#!/usr/bin/env python
|
||||
#!/usr/bin/env python3
|
||||
|
||||
# (C) 2013 by Katerina Barone-Adesi <kat.obsc@gmail.com>
|
||||
# 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
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
from __future__ import print_function
|
||||
import os
|
||||
import os.path
|
||||
import time
|
||||
|
@ -89,7 +88,7 @@ def copy_config(dirname, config):
|
|||
prefix = os.path.basename(config)
|
||||
tmpfile = tempfile.NamedTemporaryFile(
|
||||
dir=dirname, prefix=prefix, delete=False)
|
||||
tmpfile.write(open(config).read())
|
||||
tmpfile.write(open(config).read().encode())
|
||||
tmpfile.close()
|
||||
# This works around the precautions NamedTemporaryFile is made for...
|
||||
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>
|
||||
# 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
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
from __future__ import print_function
|
||||
import os
|
||||
import time
|
||||
import unittest
|
||||
|
|
32
setup.py
32
setup.py
|
@ -19,24 +19,20 @@ from setuptools import setup, find_packages
|
|||
from osmopy import __version__
|
||||
import sys
|
||||
|
||||
if sys.version_info.major == 2:
|
||||
scripts = [
|
||||
"scripts/osmodumpdoc.py",
|
||||
"scripts/osmotestconfig.py",
|
||||
"scripts/osmotestvty.py",
|
||||
]
|
||||
elif sys.version_info.major == 3:
|
||||
scripts = [
|
||||
"scripts/osmo_ctrl.py",
|
||||
"scripts/osmo_rate_ctr2csv.py",
|
||||
"scripts/soap.py",
|
||||
"scripts/ctrl2cgi.py",
|
||||
"scripts/osmo_trap2cgi.py",
|
||||
"scripts/osmo_interact_vty.py",
|
||||
"scripts/osmo_interact_ctrl.py",
|
||||
"scripts/osmo_verify_transcript_vty.py",
|
||||
"scripts/osmo_verify_transcript_ctrl.py",
|
||||
]
|
||||
scripts = [
|
||||
"scripts/osmodumpdoc.py",
|
||||
"scripts/osmotestvty.py",
|
||||
"scripts/osmotestconfig.py",
|
||||
"scripts/osmo_ctrl.py",
|
||||
"scripts/osmo_rate_ctr2csv.py",
|
||||
"scripts/soap.py",
|
||||
"scripts/ctrl2cgi.py",
|
||||
"scripts/osmo_trap2cgi.py",
|
||||
"scripts/osmo_interact_vty.py",
|
||||
"scripts/osmo_interact_ctrl.py",
|
||||
"scripts/osmo_verify_transcript_vty.py",
|
||||
"scripts/osmo_verify_transcript_ctrl.py",
|
||||
]
|
||||
|
||||
setup(
|
||||
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