diff options
Diffstat (limited to 'nixpkgs/pkgs/development/python-modules/sounddevice')
-rw-r--r-- | nixpkgs/pkgs/development/python-modules/sounddevice/default.nix | 37 | ||||
-rw-r--r-- | nixpkgs/pkgs/development/python-modules/sounddevice/fix-portaudio-library-path.patch | 34 |
2 files changed, 71 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/python-modules/sounddevice/default.nix b/nixpkgs/pkgs/development/python-modules/sounddevice/default.nix new file mode 100644 index 000000000000..bdb003467f56 --- /dev/null +++ b/nixpkgs/pkgs/development/python-modules/sounddevice/default.nix @@ -0,0 +1,37 @@ +{ lib +, buildPythonPackage +, fetchPypi +, cffi +, numpy +, portaudio +, substituteAll +}: + +buildPythonPackage rec { + pname = "sounddevice"; + version = "0.3.12"; + + src = fetchPypi { + inherit pname version; + sha256 = "f59ae4e2ec12cb1e5940f06f08804ecca855d959de25ca45a3938de45d0f81a2"; + }; + + propagatedBuildInputs = [ cffi numpy portaudio ]; + + # No tests included nor upstream available. + doCheck = false; + + patches = [ + (substituteAll { + src = ./fix-portaudio-library-path.patch; + portaudio = "${portaudio}/lib/libportaudio.so.2"; + }) + ]; + + meta = { + description = "Play and Record Sound with Python"; + homepage = http://python-sounddevice.rtfd.org/; + license = with lib.licenses; [ mit ]; + maintainers = with lib.maintainers; [ fridh ]; + }; +} \ No newline at end of file diff --git a/nixpkgs/pkgs/development/python-modules/sounddevice/fix-portaudio-library-path.patch b/nixpkgs/pkgs/development/python-modules/sounddevice/fix-portaudio-library-path.patch new file mode 100644 index 000000000000..5be786ee0f5c --- /dev/null +++ b/nixpkgs/pkgs/development/python-modules/sounddevice/fix-portaudio-library-path.patch @@ -0,0 +1,34 @@ +diff --git a/sounddevice.py b/sounddevice.py +index f03476c..5745b6e 100644 +--- a/sounddevice.py ++++ b/sounddevice.py +@@ -58,28 +58,7 @@ from ctypes.util import find_library as _find_library + from _sounddevice import ffi as _ffi + + +-try: +- for _libname in ( +- 'portaudio', # Default name on POSIX systems +- 'bin\\libportaudio-2.dll', # DLL from conda-forge +- ): +- _libname = _find_library(_libname) +- if _libname is not None: +- break +- else: +- raise OSError('PortAudio library not found') +- _lib = _ffi.dlopen(_libname) +-except OSError: +- if _platform.system() == 'Darwin': +- _libname = 'libportaudio.dylib' +- elif _platform.system() == 'Windows': +- _libname = 'libportaudio' + _platform.architecture()[0] + '.dll' +- else: +- raise +- import _sounddevice_data +- _libname = _os.path.join( +- next(iter(_sounddevice_data.__path__)), 'portaudio-binaries', _libname) +- _lib = _ffi.dlopen(_libname) ++_lib = _ffi.dlopen('@portaudio@') + + _sampleformats = { + 'float32': _lib.paFloat32, |