File use-python3.patch of Package pocketsphinx

Index: pocketsphinx-0.8/python/Makefile.am
===================================================================
--- pocketsphinx-0.8.orig/python/Makefile.am
+++ pocketsphinx-0.8/python/Makefile.am
@@ -13,7 +13,7 @@ noinst_HEADERS = bogus_pygobject.h
 
 if BUILD_PYTHON
 # Setuptools isn't really compatible with distutils, unfortunately
-SETUPTOOLS_CRAP = `python -c 'import setuptools' 2>/dev/null \
+SETUPTOOLS_CRAP = `python3 -c 'import setuptools' 2>/dev/null \
 	&& echo --single-version-externally-managed --record filelist.txt`
 
 all-local: pymod-build-stamp
@@ -40,5 +40,5 @@ endif
 
 if BUILD_CYTHON
 $(srcdir)/pocketsphinx.c: $(srcdir)/pocketsphinx.pyx $(srcdir)/pocketsphinx.pxd
-	cython -o $@ $< $(CPPFLAGS) -I$(sphinxbase)/python
+	cython -3 -o $@ $< $(CPPFLAGS) -I$(sphinxbase)/python
 endif
Index: pocketsphinx-0.8/python/Makefile.in
===================================================================
--- pocketsphinx-0.8.orig/python/Makefile.in
+++ pocketsphinx-0.8/python/Makefile.in
@@ -217,7 +217,7 @@ pkginclude_HEADERS = pocketsphinx.pxd
 noinst_HEADERS = bogus_pygobject.h
 
 # Setuptools isn't really compatible with distutils, unfortunately
-@BUILD_PYTHON_TRUE@SETUPTOOLS_CRAP = `python -c 'import setuptools' 2>/dev/null \
+@BUILD_PYTHON_TRUE@SETUPTOOLS_CRAP = `python3 -c 'import setuptools' 2>/dev/null \
 @BUILD_PYTHON_TRUE@	&& echo --single-version-externally-managed --record filelist.txt`
 
 all: all-am
@@ -505,7 +505,7 @@ uninstall-am: uninstall-local uninstall-
 @BUILD_PYTHON_TRUE@	touch $@
 
 @BUILD_CYTHON_TRUE@$(srcdir)/pocketsphinx.c: $(srcdir)/pocketsphinx.pyx $(srcdir)/pocketsphinx.pxd
-@BUILD_CYTHON_TRUE@	cython -o $@ $< $(CPPFLAGS) -I$(sphinxbase)/python
+@BUILD_CYTHON_TRUE@	cython -3 -o $@ $< $(CPPFLAGS) -I$(sphinxbase)/python
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
Index: pocketsphinx-0.8/python/pocketsphinx.pyx
===================================================================
--- pocketsphinx-0.8.orig/python/pocketsphinx.pyx
+++ pocketsphinx-0.8/python/pocketsphinx.pyx
@@ -7,6 +7,8 @@
 #
 # Author: David Huggins-Daines <dhuggins@cs.cmu.edu>
 
+from libc.stdio cimport fdopen
+
 cdef class LatNode:
     """
     Node in a word lattice.
@@ -265,7 +267,7 @@ cdef class Lattice:
             self.dag = ps_lattice_read(NULL, latfile)
         self.n_frames = ps_lattice_n_frames(self.dag)
         if self.dag == NULL:
-            raise RuntimeError, "Failed to read lattice from %s" % latfile
+            raise RuntimeError("Failed to read lattice from %s" % latfile)
         
     cdef set_dag(Lattice self, ps_lattice_t *dag):
         ps_lattice_retain(dag)
@@ -366,7 +368,7 @@ cdef class Lattice:
 
         rv = ps_lattice_write(self.dag, outfile)
         if rv < 0:
-            raise RuntimeError, "Failed to write lattice to %s" % outfile
+            raise RuntimeError("Failed to write lattice to %s" % outfile)
 
 
 cdef class Segment:
@@ -469,11 +471,11 @@ cdef class Decoder:
             i = i + 2
         config = sb.cmd_ln_parse_r(NULL, ps_args(), self.argc, self.argv, 0)
         if config == NULL:
-            raise RuntimeError, "Failed to parse argument list"
+            raise RuntimeError("Failed to parse argument list")
         self.ps = ps_init(config)
         sb.cmd_ln_free_r(config)
         if self.ps == NULL:
-            raise RuntimeError, "Failed to initialize PocketSphinx"
+            raise RuntimeError("Failed to initialize PocketSphinx")
 
     cdef set_boxed(Decoder self, box):
         cdef ps_decoder_t *ps
@@ -506,7 +508,7 @@ cdef class Decoder:
         cdef int nsamp
         cdef char *cuttid
 
-        cfh = PyFile_AsFile(fh)
+        cfh = fdopen(PyObject_AsFileDescriptor(fh), "rb")
         if uttid == None:
             cuttid = NULL
         else:
@@ -525,7 +527,7 @@ cdef class Decoder:
         cdef FILE *cfh
         cdef char *cuttid
 
-        cfh = PyFile_AsFile(fh)
+        cfh = fdopen(PyObject_AsFileDescriptor(fh), "rb")
         if uttid == None:
             cuttid = NULL
         else:
@@ -555,7 +557,7 @@ cdef class Decoder:
         @param data: Audio data to process.  This is packed binary
         data, which consists of single-channel, 16-bit PCM audio, at
         the sample rate specified when the decoder was initialized.
-        @type data: str
+        @type data: bytes
         @param no_search: Buffer the data without actually processing it (default is to process the
         data as it is received).
         @type no_search: bool
@@ -569,17 +571,17 @@ cdef class Decoder:
         cdef char* strdata
         cdef raw_data_ptr cdata
         
-        PyString_AsStringAndSize(data, &strdata, &len)
+        PyBytes_AsStringAndSize(data, &strdata, &len)
         cdata = strdata
-        if ps_process_raw(self.ps, cdata, len / 2, no_search, full_utt) < 0:
-            raise RuntimeError, "Failed to process %d samples of audio data" % len / 2
+        if ps_process_raw(self.ps, cdata, len // 2, no_search, full_utt) < 0:
+            raise RuntimeError("Failed to process %d samples of audio data" % len // 2)
 
     def end_utt(self):
         """
         Finish processing an utterance.
         """
         if ps_end_utt(self.ps) < 0:
-            raise RuntimeError, "Failed to stop utterance processing"
+            raise RuntimeError("Failed to stop utterance processing")
 
     def get_hyp(self):
         """
@@ -633,7 +635,7 @@ cdef class Decoder:
 
         dag = ps_get_lattice(self.ps)
         if dag == NULL:
-            raise RuntimeError, "Failed to create word lattice"
+            raise RuntimeError("Failed to create word lattice")
         lat = Lattice()
         lat.set_dag(dag)
         return lat
@@ -726,7 +728,7 @@ cdef class Decoder:
         cdef SegmentIterator itor
         first_seg = ps_seg_iter(self.ps, &score)
         if first_seg == NULL:
-            raise RuntimeError, "Failed to create best path word segment iterator"
+            raise RuntimeError("Failed to create best path word segment iterator")
         itor = SegmentIterator()
         itor.set_iter(first_seg)
         return (itor, score)
Index: pocketsphinx-0.8/python/setup.py.in
===================================================================
--- pocketsphinx-0.8.orig/python/setup.py.in
+++ pocketsphinx-0.8/python/setup.py.in
@@ -5,7 +5,7 @@ except:
 
 import distutils.command.install
 import os
-import commands
+import subprocess
 import sys
 
 class bogus_uninstall(distutils.command.install.install):
@@ -29,7 +29,7 @@ class bogus_uninstall(distutils.command.
             if os.path.isdir(f):
                 dirs[f] = 1
                 continue
-            print "Trying to remove file", f
+            print("Trying to remove file", f)
             try:
                 os.unlink(f)
             except:
@@ -38,11 +38,11 @@ class bogus_uninstall(distutils.command.
         # This is really not guaranteed to work!!!
         for d in dirs:
             while d != self.prefix:
-                print "Trying to remove dir", d
+                print("Trying to remove dir", d)
                 try:
                     if d.endswith(".egg-info"):
                         files=[os.path.join(d,f) for f in os.listdir(d)]
-                        print "Trying to remove:", " ".join(files)
+                        print("Trying to remove:", " ".join(files))
                         for f in files: os.unlink(f)
                     os.rmdir(d)
                 except:
@@ -51,7 +51,7 @@ class bogus_uninstall(distutils.command.
 
 def pkgconfig(*packages, **kw):
     flag_map = {'-I': 'include_dirs', '-L': 'library_dirs', '-l': 'libraries'}
-    for token in commands.getoutput("pkg-config --libs --cflags %s" % ' '.join(packages)).split():
+    for token in subprocess.getoutput("pkg-config --libs --cflags %s" % ' '.join(packages)).split():
         kw.setdefault(flag_map.get(token[:2]), []).append(token[2:])
     return kw
 
Index: pocketsphinx-0.8/python/pocketsphinx.pxd
===================================================================
--- pocketsphinx-0.8.orig/python/pocketsphinx.pxd
+++ pocketsphinx-0.8/python/pocketsphinx.pxd
@@ -28,8 +28,8 @@ cdef extern from "stdio.h":
     ctypedef struct FILE # oh dear...
 
 cdef extern from "Python.h":
-    FILE *PyFile_AsFile(object p)
-    int PyString_AsStringAndSize(object p, char **buf, Py_ssize_t *len) except -1
+    int PyObject_AsFileDescriptor(object)
+    int PyBytes_AsStringAndSize(object p, char **buf, Py_ssize_t *len) except -1
 
 # Don't rely on having PyGTK actually installed
 cdef extern from "bogus_pygobject.h":
openSUSE Build Service is sponsored by