diff --git a/speech-dispatcher-python3.patch b/speech-dispatcher-python3.patch deleted file mode 100644 index f20d7de..0000000 --- a/speech-dispatcher-python3.patch +++ /dev/null @@ -1,295 +0,0 @@ -diff -urN speechd/client.py speechd/client.py ---- speechd/client.py 2010-09-10 10:23:55.000000000 +0200 -+++ speechd/client.py 2012-07-11 11:05:05.000000000 +0200 -@@ -32,7 +32,7 @@ - except: - import dummy_threading as threading - --import paths -+from . import paths - - class CallbackType(object): - """Constants describing the available types of callbacks""" -@@ -151,9 +151,9 @@ - class _SSIP_Connection(object): - """Implemantation of low level SSIP communication.""" - -- _NEWLINE = "\r\n" -- _END_OF_DATA_MARKER = '.' -- _END_OF_DATA_MARKER_ESCAPED = '..' -+ _NEWLINE = b"\r\n" -+ _END_OF_DATA_MARKER = b'.' -+ _END_OF_DATA_MARKER_ESCAPED = b'..' - _END_OF_DATA = _NEWLINE + _END_OF_DATA_MARKER + _NEWLINE - _END_OF_DATA_ESCAPED = _NEWLINE + _END_OF_DATA_MARKER_ESCAPED + _NEWLINE - # Constants representing \r\n. and \r\n.. -@@ -187,12 +187,12 @@ - try: - self._socket = socket.socket(socket_family, socket.SOCK_STREAM) - self._socket.connect(socket_connect_args) -- except socket.error, ex: -+ except socket.error as ex: - raise SSIPCommunicationError("Can't open socket using method " - + communication_method, - original_exception = ex) - -- self._buffer = "" -+ self._buffer = b"" - self._com_buffer = [] - self._callback = None - self._ssip_reply_semaphore = threading.Semaphore(0) -@@ -232,7 +232,7 @@ - except IOError: - # If the socket has been closed, exit the thread - sys.exit() -- if code/100 != 7: -+ if code//100 != 7: - # This is not an index mark nor an event - self._com_buffer.append((code, msg, data)) - self._ssip_reply_semaphore.release() -@@ -267,7 +267,7 @@ - pointer = self._buffer.find(self._NEWLINE) - line = self._buffer[:pointer] - self._buffer = self._buffer[pointer+len(self._NEWLINE):] -- return line -+ return line.decode('utf-8') - - def _recv_message(self): - """Read server response or a callback -@@ -321,11 +321,11 @@ - or isinstance(args[0], int) - cmd = ' '.join((command,) + tuple(map(str, args))) - try: -- self._socket.send(cmd + self._NEWLINE) -+ self._socket.send(cmd.encode('utf-8') + self._NEWLINE) - except socket.error: - raise SSIPCommunicationError("Speech Dispatcher connection lost.") - code, msg, data = self._recv_response() -- if code/100 != 2: -+ if code//100 != 2: - raise SSIPCommandError(code, msg, cmd) - return code, msg, data - -@@ -340,6 +340,7 @@ - 'IOError' is raised when the socket was closed by the remote side. - - """ -+ data = data.encode('utf-8') - # Escape the end-of-data marker even if present at the beginning - # The start of the string is also the start of a line. - if data.startswith(self._END_OF_DATA_MARKER): -@@ -357,7 +358,7 @@ - except socket.error: - raise SSIPCommunicationError("Speech Dispatcher connection lost.") - code, msg, response_data = self._recv_response() -- if code/100 != 2: -+ if code//100 != 2: - raise SSIPDataError(code, msg, data) - return code, msg, response_data - -@@ -576,14 +580,14 @@ - """Establish new connection (and/or autospawn server)""" - try: - self._conn = _SSIP_Connection(**connection_args) -- except SSIPCommunicationError, ce: -+ except SSIPCommunicationError as ce: - # Suppose server might not be running, try the autospawn mechanism - if autospawn != False: - # Autospawn is however not guaranteed to start the server. The server - # will decide, based on it's configuration, whether to honor the request. - try: - self._server_spawn(connection_args) -- except SpawnError, se: -+ except SpawnError as se: - ce.set_additional_exception(se) - raise ce - self._conn = _SSIP_Connection(**connection_args) -@@ -737,8 +741,6 @@ - - """ - self._conn.send_command('SPEAK') -- if isinstance(text, unicode): -- text = text.encode('utf-8') - result = self._conn.send_data(text) - if callback: - msg_id = int(result[2][0]) -@@ -759,8 +761,6 @@ - message is queued on the server and the method returns immediately. - - """ -- if isinstance(char, unicode): -- char = char.encode('utf-8') - self._conn.send_command('CHAR', char.replace(' ', 'space')) - - def key(self, key): -diff -urN speechd/__init__.py speechd/__init__.py ---- speechd/__init__.py 2010-09-10 10:21:48.000000000 +0200 -+++ speechd/__init__.py 2012-07-11 11:05:05.000000000 +0200 -@@ -14,5 +14,5 @@ - # along with this program; if not, write to the Free Software - # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - --from client import * -+from .client import * - -diff -urN speechd/_test.py speechd/_test.py ---- speechd/_test.py 2010-09-10 10:21:50.000000000 +0200 -+++ speechd/_test.py 2012-07-11 11:05:05.000000000 +0200 -@@ -19,7 +19,7 @@ - import unittest - import time - --from client import PunctuationMode, CallbackType, SSIPClient, Scope, Speaker -+from .client import PunctuationMode, CallbackType, SSIPClient, Scope, Speaker - - - class _SSIPClientTest(unittest.TestCase): -@@ -124,10 +124,10 @@ - c = self._client - for module in c.list_output_modules(): - c.set_output_module(module) -- print "**", module -+ print("**", module) - c.speak(module +"using default voice") - for name, lang, dialect in c.list_synthesis_voices(): -- print " -", module, name, lang, dialect -+ print(" -", module, name, lang, dialect) - c.set_synthesis_voice(name) - c.speak(module +" using voice "+ name) - -diff -urN speechd_config/config.py speechd_config/config.py ---- speechd_config/config.py 2010-09-10 16:38:39.000000000 +0200 -+++ speechd_config/config.py 2012-07-13 15:52:02.000000000 +0200 -@@ -26,12 +26,12 @@ - from optparse import OptionParser - - # Configuration and sound data paths --import paths -+from . import paths - - def report(msg): - """Output information messages for the user on stdout - and if desired, by espeak synthesis""" -- print msg -+ print(msg) - if options.use_espeak_synthesis: - os.system("espeak \"" + msg + "\"") - -@@ -57,7 +58,7 @@ - input_audio_icon() - - if not options.dont_ask: -- str_inp = raw_input(">") -+ str_inp = input(">") - - # On plain enter, return default - if options.dont_ask or (len(str_inp) == 0): -@@ -213,17 +216,17 @@ - and problem diagnostics.""" - self.cmdline_parser = OptionParser(usage) - -- for option, definition in self._conf_options.iteritems(): -+ for option, definition in self._conf_options.items(): - # Set object attributes to default values - def_val = definition.get('default', None) - setattr(self, option, def_val) - - # Fill in the cmdline_parser object -- if definition.has_key('command_line'): -+ if 'command_line' in definition: - descr = definition.get('descr', None) - type = definition.get('type', None) - -- if definition.has_key('arg_map'): -+ if 'arg_map' in definition: - type, map = definition['arg_map'] - if type == str: - type_str = 'string' -@@ -248,10 +251,10 @@ - # Set options according to command line flags - (cmdline_options, args) = self.cmdline_parser.parse_args() - -- for option, definition in self._conf_options.iteritems(): -+ for option, definition in self._conf_options.items(): - val = getattr(cmdline_options, option, None) - if val != None: -- if definition.has_key('arg_map'): -+ if 'arg_map' in definition: - former_type, map = definition['arg_map'] - try: - val = map[val] -@@ -298,7 +293,8 @@ - self.festival_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - try: - self.festival_socket.connect((socket.gethostbyname(host), port)) -- except socket.error, (num, reson): -+ except socket.error as e: -+ (num, reson) = e.args - report("""ERROR: It was not possible to connect to Festival on the - given host and port. Connection failed with error %d : %s .""" % (num, reson)) - report("""Hint: Most likely, your Festival server is not running now -@@ -500,18 +496,18 @@ - report(""" - - Diagnostics results:""") -- if results.has_key('spd_say_working'): -+ if 'spd_say_working' in results: - if results['spd_say_working']: - report("Speech Dispatcher is working") - else: - report("Speech Dispatcher not working through spd-say") -- if results.has_key('synthesizers'): -+ if 'synthesizers' in results: - report("Synthesizers that were tested and seem to work: %s" % - str(results['synthesizers'])) -- if results.has_key('audio'): -+ if 'audio' in results: - report("Audio systems that were tested and seem to work: %s" % - str(results['audio'])) -- if results.has_key('python_speechd'): -+ if 'python_speechd' in results: - if(results['python_speechd']): - report("Python Speech Dispatcher module is importable") - else: -@@ -562,7 +560,7 @@ - time.sleep(2) - - # All debugging files are written to TMPDIR/speech-dispatcher/ -- if os.environ.has_key('TMPDIR'): -+ if 'TMPDIR' in os.environ: - tmpdir = os.environ['TMPDIR'] - else: - tmpdir = "/tmp/" -@@ -639,7 +639,7 @@ - # Parse config file in-place and replace the desired options+values - for line in fileinput.input(configfile, inplace=True, backup=".bak"): - # Check if the current line contains any of the desired options -- for opt, value in options.iteritems(): -+ for opt, value in options.items(): - if opt in line: - # Now count unknown words and try to judge if this is - # real configuration or just a comment -@@ -671,11 +671,11 @@ - else: - spd_val = str(value) - -- print opt + " " + spd_val -+ print(opt + " " + spd_val) - break - - else: -- print line, -+ print(line, end=' ') - - def create_user_configuration(self): - """Create user configuration in the standard location""" -diff -urN speechd_config/__init__.py speechd_config/__init__.py ---- speechd_config/__init__.py 2010-09-01 15:30:12.000000000 +0200 -+++ speechd_config/__init__.py 2012-07-11 11:05:05.000000000 +0200 -@@ -14,5 +14,5 @@ - # along with this program; if not, write to the Free Software - # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - --from config import * -+from .config import * - diff --git a/speech-dispatcher.spec b/speech-dispatcher.spec index f9ebc32..595df23 100644 --- a/speech-dispatcher.spec +++ b/speech-dispatcher.spec @@ -19,14 +19,10 @@ Buildrequires: glib2-devel Buildrequires: libao-devel Buildrequires: pulseaudio-libs-devel BuildRequires: python-setuptools-devel -BuildRequires: python2-devel -BuildRequires: python3-devel BuildRequires: texinfo BuildRequires: systemd-units BuildRequires: automake libtool Patch0: 0001-RPM-Cleanups.patch -# Backported Python 3 suppor from speech-dispatcher-0.8-beta1.tar.gz -Patch1: speech-dispatcher-python3.patch Requires(post): systemd-units Requires(post): systemd-sysv @@ -78,7 +74,7 @@ Requires(preun):/sbin/install-info speechd documentation %package -n python-speechd -Summary: Python 2 Client API for speech-dispatcher +Summary: Python Client API for speech-dispatcher License: GPLv2+ Group: Development/Libraries Requires: speech-dispatcher = %{version}-%{release} @@ -86,17 +82,7 @@ Obsoletes: speech-dispatcher-python < 0.7.1-11 Provides: speech-dispatcher-python = %{version}-%{release} %description -n python-speechd -Python 2 bindings for speech-dispatcher. - -%package -n python3-speechd -Summary: Python 3 Client API for speech-dispatcher -License: GPLv2+ -Group: Development/Libraries -Requires: speech-dispatcher = %{version}-%{release} -Requires: python3-pyxdg - -%description -n python3-speechd -Python 3 bindings for speech-dispatcher. +speechd python module %prep %setup -q @@ -117,16 +103,6 @@ for dir in \ popd done -# HACK: copy over and patch the Python 2 module for Python 3 support. -# Proper Python 3 support is available in speech-dispatcher 0.8-beta1, and -# this hack can be removed when the package gets updated. -mkdir -p %{buildroot}%{python3_sitearch} -cp -a %{buildroot}%{python_sitearch}/* %{buildroot}%{python3_sitearch}/ -pushd %{buildroot}%{python3_sitearch} -rm */*.pyc */*.pyo -patch -p0 < %{PATCH1} -popd - mkdir -p %{buildroot}%{_unitdir} install -p -m 0644 %SOURCE1 %{buildroot}%{_unitdir}/ @@ -224,15 +200,10 @@ fi %files -n python-speechd %{python_sitearch}/speechd* -%files -n python3-speechd -%{python3_sitearch}/speechd* - %changelog * Wed Feb 27 2013 Kalev Lember - 0.7.1-11 - Rename the Python 2 package to python-speechd, for consistency with other distros -- Backport Python 3 bindings from 0.8-beta1 and install them in python3-speechd - subpackage (#867958) * Fri Feb 15 2013 Fedora Release Engineering - 0.7.1-10 - Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild