diff --git a/pkgs/development/python-modules/sigrok/default.nix b/pkgs/development/python-modules/sigrok/default.nix new file mode 100644 index 000000000000..b8b925ba6b16 --- /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 + ]; + }; +})) diff --git a/pkgs/development/python-modules/sigrok/python-install.patch b/pkgs/development/python-modules/sigrok/python-install.patch new file mode 100644 index 000000000000..9c25eab6f39a --- /dev/null +++ b/pkgs/development/python-modules/sigrok/python-install.patch @@ -0,0 +1,16 @@ +diff --git a/Makefile.am b/Makefile.am +index 280cf64d..e10eb79f 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -888,8 +888,9 @@ $(PDIR)/timestamp: $(PDIR)/sigrok/core/classes.i \ + + python-install: + $(AM_V_at)$(MKDIR_P) "$(DESTDIR)$(prefix)" "$(DESTDIR)$(exec_prefix)" +- destdir='$(DESTDIR)'; $(setup_py) install $${destdir:+"--root=$$destdir"} \ +- --prefix "$(prefix)" --exec-prefix "$(exec_prefix)" ++ destdir='$(DESTDIR)'; $(setup_py) install --root=$${destdir:-/} \ ++ --prefix "$(prefix)" --exec-prefix "$(exec_prefix)" \ ++ --single-version-externally-managed + + python-clean: + -$(AM_V_at)rm -f $(PDIR)/timestamp diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 24a0dcb52fc3..0332a01ef6d1 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -8925,6 +8925,8 @@ in { signedjson = callPackage ../development/python-modules/signedjson { }; + sigrok = callPackage ../development/python-modules/sigrok { }; + sigtools = callPackage ../development/python-modules/sigtools { }; simanneal = callPackage ../development/python-modules/simanneal { };