summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam James <sam@gentoo.org>2022-07-02 12:57:57 +0000
committerSam James <sam@gentoo.org>2022-07-02 13:00:23 +0000
commit8718d02e1cad7bfa1dfecc952b6a403ea155c8bc (patch)
tree4d07e150150619cc1c40897970028bc824886494 /dev-python/pyaudio
parentdev-lang/erlang: Stabilize 25.0 sparc, #855716 (diff)
downloadgentoo-8718d02e1cad7bfa1dfecc952b6a403ea155c8bc.tar.gz
gentoo-8718d02e1cad7bfa1dfecc952b6a403ea155c8bc.tar.bz2
gentoo-8718d02e1cad7bfa1dfecc952b6a403ea155c8bc.zip
dev-python/pyaudio: fix Python 3.10 compatibility
Closes: https://bugs.gentoo.org/855626 Signed-off-by: Sam James <sam@gentoo.org>
Diffstat (limited to 'dev-python/pyaudio')
-rw-r--r--dev-python/pyaudio/files/pyaudio-0.2.11-python310-size_t.patch28
-rw-r--r--dev-python/pyaudio/pyaudio-0.2.11-r2.ebuild42
2 files changed, 70 insertions, 0 deletions
diff --git a/dev-python/pyaudio/files/pyaudio-0.2.11-python310-size_t.patch b/dev-python/pyaudio/files/pyaudio-0.2.11-python310-size_t.patch
new file mode 100644
index 000000000000..445a9b7e9c44
--- /dev/null
+++ b/dev-python/pyaudio/files/pyaudio-0.2.11-python310-size_t.patch
@@ -0,0 +1,28 @@
+https://git.skeh.site/skeh/pyaudio/commit/2ee560056ec889ea7cd3ce1801b796b0939dd540
+https://bugs.gentoo.org/855626
+
+From 2ee560056ec889ea7cd3ce1801b796b0939dd540 Mon Sep 17 00:00:00 2001
+From: Derek Schmidt <skeh@is.nota.live>
+Date: Tue, 14 Dec 2021 21:46:11 -0700
+Subject: [PATCH] Use Py_ssize_t for tuple return on stream methods
+
+--- a/src/_portaudiomodule.c
++++ b/src/_portaudiomodule.c
+@@ -25,6 +25,7 @@
+ */
+
+ #include <stdio.h>
++#define PY_SSIZE_T_CLEAN
+ #include "Python.h"
+ #include "portaudio.h"
+ #include "_portaudiomodule.h"
+@@ -1291,7 +1292,7 @@ int _stream_callback_cfunction(const void *input, void *output,
+ PyObject *py_status_flags = PyLong_FromUnsignedLong(statusFlags);
+ PyObject *py_input_data = Py_None;
+ const char *pData;
+- unsigned output_len;
++ Py_ssize_t output_len;
+ PyObject *py_result;
+
+ if (input) {
+
diff --git a/dev-python/pyaudio/pyaudio-0.2.11-r2.ebuild b/dev-python/pyaudio/pyaudio-0.2.11-r2.ebuild
new file mode 100644
index 000000000000..b061423018d0
--- /dev/null
+++ b/dev-python/pyaudio/pyaudio-0.2.11-r2.ebuild
@@ -0,0 +1,42 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{8..10} )
+inherit distutils-r1
+
+MY_PN="PyAudio"
+
+DESCRIPTION="Python bindings for PortAudio"
+HOMEPAGE="http://people.csail.mit.edu/hubert/pyaudio/"
+SRC_URI="mirror://pypi/${MY_PN:0:1}/${MY_PN}/${MY_PN}-${PV}.tar.gz"
+S="${WORKDIR}/${MY_PN}-${PV}"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+# Tests work if you have the correct HW device(s) to test. 0.2.11-r1.
+RESTRICT="test"
+
+RDEPEND="media-libs/portaudio"
+DEPEND="${RDEPEND}"
+BDEPEND="test? ( dev-python/numpy[${PYTHON_USEDEP}] )"
+
+distutils_enable_sphinx sphinx
+distutils_enable_tests unittest
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-0.2.11-python310-size_t.patch
+)
+
+python_test() {
+ elog "These tests require an OS loopback sound device that forwards audio"
+ elog "output, generated by PyAudio for playback, and forwards it to an input"
+ elog "device, which PyAudio can record and verify against a test signal."
+
+ cd tests || die
+ # pyaudio_tests have very complicated runtime requirements, therefore skipping them.
+ "${EPYTHON}" -m unittest error_tests -v || die "Tests fail with ${EPYTHON}"
+}