1{
2 lib,
3 stdenv,
4 buildPythonPackage,
5 pythonOlder,
6 fetchFromGitHub,
7 miniaudio,
8 cffi,
9 pytestCheckHook,
10 AudioToolbox,
11 CoreAudio,
12}:
13
14let
15 # TODO: recheck after 1.59
16 miniaudio' = miniaudio.overrideAttrs (oldAttrs: rec {
17 version = "0.11.16"; # cffi breakage with 0.11.17
18 src = fetchFromGitHub {
19 inherit (oldAttrs.src) owner repo;
20 rev = "refs/tags/${version}";
21 hash = "sha256-POe/dYPJ25RKNGIhaLoqxm9JJ08MrTyHVN4NmaGOdwM=";
22 };
23 });
24in
25buildPythonPackage rec {
26 pname = "miniaudio";
27 version = "1.59";
28
29 disabled = pythonOlder "3.6";
30
31 format = "setuptools";
32
33 src = fetchFromGitHub {
34 owner = "irmen";
35 repo = "pyminiaudio";
36 rev = "refs/tags/v${version}";
37 hash = "sha256-tMQOGqEThtownW3cnNpCzWye0Uo/Es7E8abVySo1QnQ=";
38 };
39
40 postPatch = ''
41 rm -r miniaudio
42 ln -s ${miniaudio'} miniaudio
43 substituteInPlace build_ffi_module.py \
44 --replace "miniaudio/stb_vorbis.c" "miniaudio/extras/stb_vorbis.c";
45 substituteInPlace miniaudio.c \
46 --replace "miniaudio/stb_vorbis.c" "miniaudio/extras/stb_vorbis.c";
47 '';
48
49 buildInputs = lib.optionals stdenv.isDarwin [
50 AudioToolbox
51 CoreAudio
52 ];
53
54 propagatedNativeBuildInputs = [ cffi ];
55 propagatedBuildInputs = [ cffi ];
56
57 nativeCheckInputs = [ pytestCheckHook ];
58
59 pythonImportsCheck = [ "miniaudio" ];
60
61 meta = with lib; {
62 description = "Python bindings for the miniaudio library and its decoders";
63 homepage = "https://github.com/irmen/pyminiaudio";
64 license = licenses.mit;
65 maintainers = with maintainers; [ dotlambda ];
66 };
67}