about summary refs log tree commit diff
path: root/pkgs/development/python-modules/sigrok/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/python-modules/sigrok/default.nix')
-rw-r--r--pkgs/development/python-modules/sigrok/default.nix62
1 files changed, 62 insertions, 0 deletions
diff --git a/pkgs/development/python-modules/sigrok/default.nix b/pkgs/development/python-modules/sigrok/default.nix
new file mode 100644
index 0000000000000..b8b925ba6b16a
--- /dev/null
+++ b/pkgs/development/python-modules/sigrok/default.nix
@@ -0,0 +1,62 @@
+{ lib
+, stdenv
+, libsigrok
+, toPythonModule
+, python
+, autoreconfHook
+, pythonImportsCheckHook
+, pythonCatchConflictsHook
+, swig
+, setuptools
+, numpy
+, pygobject3
+}:
+
+# build libsigrok plus its Python bindings. Unfortunately it does not appear
+# to be possible to build them separately, at least not easily.
+toPythonModule ((libsigrok.override {
+  inherit python;
+}).overrideAttrs (orig: {
+  pname = "${python.libPrefix}-sigrok";
+
+  patches = orig.patches or [] ++ [
+    # Makes libsigrok install the bindings into site-packages properly (like
+    # we expect) instead of making a version-specific *.egg subdirectory.
+    ./python-install.patch
+  ];
+
+  nativeBuildInputs = orig.nativeBuildInputs or [] ++ [
+    autoreconfHook
+    setuptools
+    swig
+    numpy
+  ] ++ lib.optionals (stdenv.hostPlatform == stdenv.buildPlatform) [
+    pythonImportsCheckHook
+    pythonCatchConflictsHook
+  ];
+
+  buildInputs = orig.buildInputs or [] ++ [
+    pygobject3 # makes headers available the configure script checks for
+  ];
+
+  propagatedBuildInputs = orig.propagatedBuildInputs or [] ++ [
+    pygobject3
+    numpy
+  ];
+
+  postInstall = ''
+    ${orig.postInstall or ""}
+
+    # for pythonImportsCheck
+    export PYTHONPATH="$out/${python.sitePackages}:$PYTHONPATH"
+  '';
+
+  pythonImportsCheck = [ "sigrok" "sigrok.core" ];
+
+  meta = orig.meta // {
+    description = "Python bindings for libsigrok";
+    maintainers = orig.meta.maintainers ++ [
+      lib.maintainers.sternenseemann
+    ];
+  };
+}))