summary refs log tree commit diff
path: root/pkgs/development/python-modules/sounddevice
diff options
context:
space:
mode:
authorJos van Bakel <josvanbakel@protonmail.com>2018-07-07 18:46:06 +0200
committerRobert Schütz <rschuetz17@gmail.com>2018-07-07 18:46:06 +0200
commit9291a3c0cfb498126bf8012d8284f36c9d88c5ec (patch)
treed5c750b2e0a6a967509d80d8a5e3e162d29d5917 /pkgs/development/python-modules/sounddevice
parent059f5fd8a866c1248f4287ff7dea5952b06ddc7c (diff)
downloadnixpkgs-9291a3c0cfb498126bf8012d8284f36c9d88c5ec.tar
nixpkgs-9291a3c0cfb498126bf8012d8284f36c9d88c5ec.tar.gz
nixpkgs-9291a3c0cfb498126bf8012d8284f36c9d88c5ec.tar.bz2
nixpkgs-9291a3c0cfb498126bf8012d8284f36c9d88c5ec.tar.lz
nixpkgs-9291a3c0cfb498126bf8012d8284f36c9d88c5ec.tar.xz
nixpkgs-9291a3c0cfb498126bf8012d8284f36c9d88c5ec.tar.zst
nixpkgs-9291a3c0cfb498126bf8012d8284f36c9d88c5ec.zip
pythonpackages.sounddevice: 0.3.9 -> 0.3.11 and fix for portaudio library path (#43083)
Diffstat (limited to 'pkgs/development/python-modules/sounddevice')
-rw-r--r--pkgs/development/python-modules/sounddevice/default.nix14
-rw-r--r--pkgs/development/python-modules/sounddevice/fix-portaudio-library-path.patch34
2 files changed, 43 insertions, 5 deletions
diff --git a/pkgs/development/python-modules/sounddevice/default.nix b/pkgs/development/python-modules/sounddevice/default.nix
index 6d467a57c60..5b8c4a46b2b 100644
--- a/pkgs/development/python-modules/sounddevice/default.nix
+++ b/pkgs/development/python-modules/sounddevice/default.nix
@@ -4,15 +4,16 @@
 , cffi
 , numpy
 , portaudio
+, substituteAll
 }:
 
 buildPythonPackage rec {
   pname = "sounddevice";
-  version = "0.3.9";
+  version = "0.3.11";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1c9e833f8c8ccc67c0291c3448b29e9acc548fe56d15ee6f7fdd7037e00319f8";
+    sha256 = "0pfcbgbl77nggchxb2i5rb78m7hpgn65aqpz99yfx1fgfbmy9yg1";
   };
 
   propagatedBuildInputs = [ cffi numpy portaudio ];
@@ -20,9 +21,12 @@ buildPythonPackage rec {
   # No tests included nor upstream available.
   doCheck = false;
 
-  prePatch = ''
-    substituteInPlace src/sounddevice.py --replace "'portaudio'" "'${portaudio}/lib/libportaudio.so.2'"
-  '';
+  patches = [
+    (substituteAll {
+      src = ./fix-portaudio-library-path.patch;
+      portaudio = "${portaudio}/lib/libportaudio.so.2";
+    })
+  ];
 
   meta = {
     description = "Play and Record Sound with Python";
diff --git a/pkgs/development/python-modules/sounddevice/fix-portaudio-library-path.patch b/pkgs/development/python-modules/sounddevice/fix-portaudio-library-path.patch
new file mode 100644
index 00000000000..5be786ee0f5
--- /dev/null
+++ b/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,