Package: pyvorbis Version: 1.5-2 Severity: normal Tags: patch User: ubuntu-de...@lists.ubuntu.com Usertags: origin-ubuntu raring ubuntu-patch
Dear Maintainer, Please build pyvorbis in Debian with dh_python2 rather than dh_pysupport, as dh_pysupport is deprecated. In Ubuntu, the attached patch was applied to achieve this. Thanks for considering the patch. -- System Information: Debian Release: wheezy/sid APT prefers raring-updates APT policy: (500, 'raring-updates'), (500, 'raring-security'), (500, 'raring'), (100, 'raring-backports') Architecture: amd64 (x86_64) Foreign Architectures: i386 Kernel: Linux 3.7.0-7-generic (SMP w/1 CPU core) Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash
=== removed directory '.pc/03_fix_call_to_ov_read.patch' === removed directory '.pc/03_fix_call_to_ov_read.patch/src' === removed file '.pc/03_fix_call_to_ov_read.patch/src/pyvorbisfile.c' --- .pc/03_fix_call_to_ov_read.patch/src/pyvorbisfile.c 2012-12-26 12:37:57 +0000 +++ .pc/03_fix_call_to_ov_read.patch/src/pyvorbisfile.c 1970-01-01 00:00:00 +0000 @@ -1,624 +0,0 @@ -#include <stdio.h> -#ifndef _WIN32 -#include <assert.h> -#else -#define LITTLE_ENDIAN 0 -#define BIG_ENDIAN 1 -#define BYTE_ORDER LITTLE_ENDIAN -#endif - -#include "general.h" -#include "vorbismodule.h" -#include "pyvorbisfile.h" -#include "pyvorbisinfo.h" - -/* -********************************************************* -VorbisFile Object methods -********************************************************* -*/ - -char py_vorbisfile_doc[] = ""; - -static void py_ov_file_dealloc(PyObject *); - -static PyObject *py_ov_open(py_vorbisfile *, PyObject *); - -static char py_ov_read_doc[] = \ -"read(length=4096, bigendian=?, word=2, signed=1)\n\ -Returns a tuple: (x,y,y)\n\ -\twhere x is a buffer object of the data read,\n\ -\ty is the number of bytes read,\n\ -\tand z is whatever the bitstream value means (no clue).\n\ -\n\ -length is the number of bytes to read\n\ -\tbigendian is the endianness you want (defaults to host endianness)\n\ -\tword is the word size\n\tnot sure what signed does\n"; - -static PyObject *py_ov_read(PyObject *, PyObject *, PyObject *); - -FDEF(ov_streams) "Returns the number of logical streams in this VorbisFile"; -FDEF(ov_seekable) "Returns whether this VorbisFile is seekable."; -FDEF(ov_bitrate) \ -"x.bitrate(stream_idx=-1):\n\n\ -Returns the bitrate of this VorbisFile"; - -FDEF(ov_serialnumber) \ -"x.serialnumber(stream_idx=-1):\n\n\ -Returns the serialnumber of this VorbisFile."; - -FDEF(ov_bitrate_instant) \ - "Returns the bitrate_instant value for this VorbisFile."; - -FDEF(ov_raw_total) \ -"x.raw_total(stream_idx=-1):\n\n\ -Returns the raw_total value for this VorbisFile."; - -FDEF(ov_pcm_total) \ -"x.pcm_total(stream_idx=-1):\n\n\ -Returns the pcm_total value for this VorbisFile."; - -FDEF(ov_time_total) \ -"x.time_total(stream_idx=-1):\n\n\ -Returns the time_total value for this VorbisFile."; - -FDEF(ov_raw_seek) "x.raw_seek(pos):\n\nSeeks to raw position pos."; -FDEF(ov_pcm_seek) "x.pcm_seek(pos):\n\nSeeks to pcm position pos."; -FDEF(ov_pcm_seek_page) "x.pcm_seek_page(pos):\n\nSeeks to pcm page pos."; -FDEF(ov_time_seek) "x.time_seek(t):\n\nSeeks to time t"; -FDEF(ov_time_seek_page) "x.time_seek_page(pos):\n\nSeeks to time page pos."; -FDEF(ov_raw_tell) "Returns the raw position."; -FDEF(ov_pcm_tell) "Returns the pcm position."; -FDEF(ov_time_tell) "Returns the time position."; -FDEF(ov_info) "Return an info object for this file"; - -FDEF(ov_comment) \ -"x.comment(stream_idx=-1)\n\n\ -Returns a dictionary of lists for the comments in this file.\n\ -All values are stored in uppercase, since values should be case-insensitive."; - -static PyObject *py_ov_file_getattr(PyObject *, char *name); - -char OggVorbis_File_Doc[] = -"A VorbisFile object is used to get information about\n\ -and read data from an ogg/vorbis file.\n\ -\n\ -VorbisFile(f) will create a VorbisFile object; f can be\n\ -either an open, readable file object or a filename string.\n\ -\n\ -The most useful method for a VorbisFile object is \"read\"."; - -PyTypeObject py_vorbisfile_type = { - PyObject_HEAD_INIT(NULL) - 0, - "VorbisFile", - sizeof(py_vorbisfile), - 0, - - /* Standard Methods */ - /* destructor */ py_ov_file_dealloc, - /* printfunc */ 0, - /* getattrfunc */ py_ov_file_getattr, - /* setattrfunc */ 0, - /* cmpfunc */ 0, - /* reprfunc */ 0, - - /* Type Categories */ - 0, /* as number */ - 0, /* as sequence */ - 0, /* as mapping */ - 0, /* hash */ - 0, /* binary */ - 0, /* repr */ - 0, /* getattro */ - 0, /* setattro */ - 0, /* as buffer */ - 0, /* tp_flags */ - OggVorbis_File_Doc, -}; - - -static PyMethodDef OggVorbis_File_methods[] = { - {"read", (PyCFunction) py_ov_read, - METH_VARARGS | METH_KEYWORDS, py_ov_read_doc}, - {"info", py_ov_info, - METH_VARARGS, py_ov_info_doc}, - {"comment", py_ov_comment, - METH_VARARGS, py_ov_comment_doc}, - {"streams", py_ov_streams, - METH_VARARGS, py_ov_streams_doc}, - {"seekable", py_ov_seekable, - METH_VARARGS, py_ov_seekable_doc}, - {"bitrate", py_ov_bitrate, - METH_VARARGS, py_ov_bitrate_doc}, - {"serialnumber", py_ov_serialnumber, - METH_VARARGS, py_ov_serialnumber_doc}, - {"bitrate_instant", py_ov_bitrate_instant, - METH_VARARGS, py_ov_bitrate_instant_doc}, - {"raw_total", py_ov_raw_total, - METH_VARARGS, py_ov_raw_total_doc}, - {"pcm_total", py_ov_pcm_total, - METH_VARARGS, py_ov_pcm_total_doc}, - {"time_total", py_ov_time_total, - METH_VARARGS, py_ov_time_total_doc}, - {"raw_seek", py_ov_raw_seek, - METH_VARARGS, py_ov_raw_seek_doc}, - {"pcm_seek_page", py_ov_pcm_seek_page, - METH_VARARGS, py_ov_pcm_seek_page_doc}, - {"pcm_seek", py_ov_pcm_seek, - METH_VARARGS, py_ov_pcm_seek_doc}, - {"time_seek", py_ov_time_seek, - METH_VARARGS, py_ov_time_seek_doc}, - {"time_seek_page", py_ov_time_seek_page, - METH_VARARGS, py_ov_time_seek_page_doc}, - {"raw_tell", py_ov_raw_tell, - METH_VARARGS, py_ov_raw_tell_doc}, - {"pcm_tell", py_ov_pcm_tell, - METH_VARARGS, py_ov_pcm_tell_doc}, - {"time_tell", py_ov_time_tell, - METH_VARARGS, py_ov_time_tell_doc}, - {NULL,NULL} -}; - -PyObject * -py_file_new(PyObject *self, PyObject *args) /* change to accept kwarg */ -{ - PyObject *ret; - - py_vorbisfile *newobj; - - newobj = PyObject_NEW(py_vorbisfile, &py_vorbisfile_type); - - ret = py_ov_open(newobj, args); - if (ret == NULL) { - PyMem_DEL(newobj); - return NULL; - } - - return (PyObject *) newobj; -} - -static void -py_ov_file_dealloc(PyObject *self) -{ - if (PY_VORBISFILE(self)) - ov_clear(PY_VORBISFILE(self)); - - py_vorbisfile *py_self = (py_vorbisfile *) self; - if (py_self->py_file) { - /* If file was opened from a file object, decref it, so it can - close */ - Py_DECREF(py_self->py_file); - } else { - /* Do NOT close the file -- ov_open() takes ownership of the FILE*, - and ov_close() is responsible for closing it. */ - } - - free(py_self->ovf); - - PyObject_DEL(self); -} - -static PyObject * -py_ov_open(py_vorbisfile *self, PyObject *args) -{ - char *fname; - char *initial = NULL; - long ibytes = 0; - FILE *file; - - PyObject *fobject; - int retval; - char errmsg[MSG_SIZE]; - - if (PyArg_ParseTuple(args, "s|sl", &fname, &initial, &ibytes)) { - - file = fopen(fname, "rb"); - fobject = NULL; - - if (file == NULL) { - snprintf(errmsg, MSG_SIZE, "Could not open file: %s", fname); - PyErr_SetString(PyExc_IOError, errmsg); - return NULL; - } - - } else { - PyErr_Clear(); /* clear first failure */ - if (PyArg_ParseTuple(args, "O!|sl", &PyFile_Type, &fobject, - &initial, &ibytes)) { - - fname = NULL; - file = PyFile_AsFile(fobject); - if (!file) - return NULL; - - /* We have to duplicate the file descriptor, since both Python - and vorbisfile will want to close it. Don't use the file - after you pass it in, or much evil will occur. - - Really, you shouldn't be passing in files anymore, but in the - interest of backwards compatibility it'll stay. - */ - int orig_fd, new_fd; - orig_fd = fileno(file); - new_fd = dup(orig_fd); - file = fdopen(new_fd, "r"); - if (!file) { - PyErr_SetString(PyExc_IOError, "Could not duplicate file."); - return NULL; - } - } else { - PyErr_Clear(); /* clear first failure */ - PyErr_SetString(PyExc_TypeError, - "Argument 1 is not a filename or file object"); - return NULL; - } - } - - self->ovf = (OggVorbis_File*) malloc(sizeof(OggVorbis_File)); - self->py_file = fobject; - Py_XINCREF(fobject); /* Prevent the file from being closed */ - - retval = ov_open(file, self->ovf, initial, ibytes); - - self->c_file = file; - if (retval < 0) { - if (fname != NULL) - fclose(file); - Py_XDECREF(self->py_file); - - return v_error_from_code(retval, "Error opening file: "); - } - - Py_INCREF(Py_None); - return Py_None; - -} - -static char *read_kwlist[] = {"length", - "bigendian", - "word", - "signed", - NULL}; - -static int is_big_endian() { - static int x = 0x1; - char x_as_char = *(char *) &x; - return x_as_char == 0x1 ? 0 : 1; -} - -static PyObject * -py_ov_read(PyObject *self, PyObject *args, PyObject *kwdict) -{ - py_vorbisfile * ov_self = (py_vorbisfile *) self; - PyObject *retobj; - int retval; - - PyObject *buffobj; - PyObject *tuple; - char *buff; - - int length, word, sgned, bitstream; - int bigendianp; - - // Default to host order - bigendianp = is_big_endian(); - length = 4096; - word = 2; - sgned = 1; - - if (!PyArg_ParseTupleAndKeywords(args, kwdict, "|llll", read_kwlist, - &length, &bigendianp, &word, &sgned)) - return NULL; - - buffobj = PyBuffer_New(length); - - tuple = PyTuple_New(1); - Py_INCREF(buffobj); - PyTuple_SET_ITEM(tuple, 0, buffobj); - - if (!(PyArg_ParseTuple(tuple, "t#", &buff, &length))) { - return NULL; - } - Py_DECREF(tuple); - - Py_BEGIN_ALLOW_THREADS - retval = ov_read(ov_self->ovf, buff, length, - bigendianp, word, sgned, &bitstream); - Py_END_ALLOW_THREADS - - if (retval < 0) { - Py_DECREF(buffobj); - return v_error_from_code(retval, "Error reading file: "); - } - - retobj = Py_BuildValue("Oii", buffobj, retval, bitstream); - Py_DECREF(buffobj); - return retobj; -} - -static PyObject * -py_ov_streams(PyObject *self, PyObject *args) -{ - py_vorbisfile * ov_self = (py_vorbisfile *) self; - long val; - - if (!PyArg_ParseTuple(args, "")) - return NULL; - - val = ov_streams(ov_self->ovf); - return PyInt_FromLong(val); -} - -static PyObject * -py_ov_seekable(PyObject *self, PyObject *args) -{ - py_vorbisfile * ov_self = (py_vorbisfile *) self; - long val; - - if (!PyArg_ParseTuple(args, "")) - return NULL; - - val = ov_seekable(ov_self->ovf); - return PyInt_FromLong(val); -} - -static PyObject * -py_ov_bitrate(PyObject *self, PyObject *args) -{ - py_vorbisfile * ov_self = (py_vorbisfile *) self; - long val; - int stream_idx = -1; - - if (!PyArg_ParseTuple(args, "|i", &stream_idx)) - return NULL; - - val = ov_bitrate(ov_self->ovf, stream_idx); - if (val < 0) - return v_error_from_code(val, "Error getting bitrate: "); - return PyInt_FromLong(val); -} - -static PyObject * -py_ov_serialnumber(PyObject *self, PyObject *args) -{ - py_vorbisfile * ov_self = (py_vorbisfile *) self; - long val; - int stream_idx = -1; - - if (!PyArg_ParseTuple(args, "|i", &stream_idx)) - return NULL; - - val = ov_serialnumber(ov_self->ovf, stream_idx); - return PyInt_FromLong(val); -} - -static PyObject * -py_ov_bitrate_instant(PyObject *self, PyObject *args) -{ - py_vorbisfile * ov_self = (py_vorbisfile *) self; - long val; - - if (!PyArg_ParseTuple(args, "")) - return NULL; - - val = ov_bitrate_instant(ov_self->ovf); - if (val < 0) - return v_error_from_code(val, "Error getting bitrate_instant: "); - return PyInt_FromLong(val); -} - -static PyObject * -py_ov_raw_total(PyObject *self, PyObject *args) -{ - py_vorbisfile * ov_self = (py_vorbisfile *) self; - ogg_int64_t val; - int stream_idx = -1; - - if (!PyArg_ParseTuple(args, "|i", &stream_idx)) - return NULL; - - val = ov_raw_total(ov_self->ovf, stream_idx); - if (val < 0) - return v_error_from_code(val, "Error in ov_raw_total: "); - return PyLong_FromLongLong(val); -} - -static PyObject * -py_ov_pcm_total(PyObject *self, PyObject *args) -{ - py_vorbisfile * ov_self = (py_vorbisfile *) self; - ogg_int64_t val; - int stream_idx = -1; - - if (!PyArg_ParseTuple(args, "|i", &stream_idx)) - return NULL; - - val = ov_pcm_total(ov_self->ovf, stream_idx); - if (val < 0) - return v_error_from_code(val, "Error in ov_pcm_total: "); - return PyLong_FromLongLong(val); -} - -static PyObject * -py_ov_time_total(PyObject *self, PyObject *args) -{ - py_vorbisfile * ov_self = (py_vorbisfile *) self; - double val; - int stream_idx = -1; - - if (!PyArg_ParseTuple(args, "|i", &stream_idx)) - return NULL; - - val = ov_time_total(ov_self->ovf, stream_idx); - if (val < 0) - return v_error_from_code(val, "Error in ov_time_total: "); - return PyFloat_FromDouble(val); -} - -static PyObject * -py_ov_raw_seek(PyObject *self, PyObject *args) -{ - py_vorbisfile * ov_self = (py_vorbisfile *) self; - int val; - long pos; - - if (!PyArg_ParseTuple(args, "l", &pos)) - return NULL; - - val = ov_raw_seek(ov_self->ovf, pos); - RETURN_IF_VAL(val, "Error in ov_raw_seek"); -} - -static PyObject * -py_ov_pcm_seek(PyObject *self, PyObject *args) -{ - py_vorbisfile * ov_self = (py_vorbisfile *) self; - PyObject *longobj; - int val; - ogg_int64_t pos; - - if (!PyArg_ParseTuple(args, "O", &longobj)) - return NULL; - - if (!modinfo->arg_to_int64(longobj, &pos)) - return NULL; - - val = ov_pcm_seek(ov_self->ovf, pos); - RETURN_IF_VAL(val, "Error is ov_pcm_seek"); -} - -static PyObject * -py_ov_pcm_seek_page(PyObject *self, PyObject *args) -{ - py_vorbisfile * ov_self = (py_vorbisfile *) self; - int val; - PyObject *longobj; - ogg_int64_t pos; - - if (!PyArg_ParseTuple(args, "O", &longobj)) - return NULL; - - if (!modinfo->arg_to_int64(longobj, &pos)) - return NULL; - - val = ov_pcm_seek_page(ov_self->ovf, pos); - RETURN_IF_VAL(val, "Error is ov_pcm_seek_page"); -} - -static PyObject * -py_ov_time_seek(PyObject *self, PyObject *args) -{ - py_vorbisfile * ov_self = (py_vorbisfile *) self; - int val; - double pos; - - if (!PyArg_ParseTuple(args, "d", &pos)) - return NULL; - - val = ov_time_seek(ov_self->ovf, pos); - RETURN_IF_VAL(val, "Error is ov_pcm_time_seek"); -} - -static PyObject * -py_ov_time_seek_page(PyObject *self, PyObject *args) -{ - py_vorbisfile * ov_self = (py_vorbisfile *) self; - int val; - double pos; - - if (!PyArg_ParseTuple(args, "d", &pos)) - return NULL; - - val = ov_time_seek_page(ov_self->ovf, pos); - RETURN_IF_VAL(val, "Error is ov_pcm_time_seek_page"); -} - -static PyObject * -py_ov_raw_tell(PyObject *self, PyObject *args) -{ - py_vorbisfile * ov_self = (py_vorbisfile *) self; - ogg_int64_t val; - - if (!PyArg_ParseTuple(args, "")) - return NULL; - - val = ov_raw_tell(ov_self->ovf); - return PyLong_FromLongLong(val); -} - -static PyObject * -py_ov_pcm_tell(PyObject *self, PyObject *args) -{ - py_vorbisfile * ov_self = (py_vorbisfile *) self; - ogg_int64_t val; - - if (!PyArg_ParseTuple(args, "")) - return NULL; - - val = ov_pcm_tell(ov_self->ovf); - return PyLong_FromLongLong(val); -} - -static PyObject * -py_ov_time_tell(PyObject *self, PyObject *args) -{ - py_vorbisfile * ov_self = (py_vorbisfile *) self; - double val; - - if (!PyArg_ParseTuple(args, "")) - return NULL; - - val = ov_time_tell(ov_self->ovf); - return PyFloat_FromDouble(val); -} - -static PyObject* -py_ov_info(PyObject *self, PyObject *args) -{ - py_vorbisfile *ov_self = (py_vorbisfile *) self; - int stream_idx = -1; - vorbis_info *vi; - - if (!PyArg_ParseTuple(args, "|i", &stream_idx)) - return NULL; - - vi = ov_info(ov_self->ovf, stream_idx); - if (!vi) { - PyErr_SetString(PyExc_RuntimeError, "Couldn't get info for VorbisFile."); - return NULL; - } - - return py_info_new_from_vi(vi); -} - - -static PyObject * -py_ov_comment(PyObject *self, PyObject *args) -{ - py_vorbisfile *ov_self = (py_vorbisfile *) self; - vorbis_comment *comments; - - int stream_idx = -1; - - if (!PyArg_ParseTuple(args, "|i", &stream_idx)) - return NULL; - - comments = ov_comment(ov_self->ovf, stream_idx); - if (!comments) { - PyErr_SetString(PyExc_RuntimeError, "Couldn't get comments"); - return NULL; - } - - return py_comment_new_from_vc(comments, self); -} - -static PyObject* -py_ov_file_getattr(PyObject *self, char *name) -{ - return Py_FindMethod(OggVorbis_File_methods, self, name); -} - - - - === modified file 'debian/changelog' === modified file 'debian/control' --- debian/control 2011-08-17 17:47:50 +0000 +++ debian/control 2012-12-29 00:35:37 +0000 @@ -1,10 +1,11 @@ Source: pyvorbis Section: python Priority: optional -Maintainer: Debian Python Modules Team <python-modules-t...@lists.alioth.debian.org> +Maintainer: Ubuntu Developers <ubuntu-devel-disc...@lists.ubuntu.com> +XSBC-Original-Maintainer: Debian Python Modules Team <python-modules-t...@lists.alioth.debian.org> Uploaders: Sandro Tosi <mo...@debian.org> -Build-Depends: debhelper (>= 5.0.37.2), python-all-dev (>= 2.3.5-11), - python-all-dbg, python-support (>= 0.3), python-ogg-dbg (>= 1.3-1.1), +Build-Depends: debhelper (>= 5.0.37.2), python-all-dev (>= 2.6.6-3~), + python-all-dbg, python-ogg-dbg (>= 1.3-1.1), libvorbis-dev (>= 1.0.1) Standards-Version: 3.9.2 X-Python-Version: all === modified file 'debian/rules' --- debian/rules 2011-08-17 17:47:50 +0000 +++ debian/rules 2012-12-29 00:11:47 +0000 @@ -71,10 +71,9 @@ dh_installdocs dh_installexamples dh_installchangelogs ChangeLog - dh_pysupport + dh_python2 dh_link dh_strip -ppython-pyvorbis --dbg-package=python-pyvorbis-dbg - mv debian/python-pyvorbis-dbg/usr/lib/debug/usr/lib/pyshared/ debian/python-pyvorbis-dbg/usr/lib/debug/usr/lib/pymodules/ rm -rf debian/python-pyvorbis-dbg/usr/share/doc/python-pyvorbis-dbg ln -s python-pyvorbis debian/python-pyvorbis-dbg/usr/share/doc/python-pyvorbis-dbg dh_compress -X.py