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/development/tools/libsigrok/default.nix b/pkgs/development/tools/libsigrok/default.nix index 9db3df428232..5a11db8b3b94 100644 --- a/pkgs/development/tools/libsigrok/default.nix +++ b/pkgs/development/tools/libsigrok/default.nix @@ -1,5 +1,5 @@ { lib, stdenv, fetchurl, pkg-config, libzip, glib, libusb1, libftdi1, check -, libserialport, librevisa, doxygen, glibmm, python3 +, libserialport, librevisa, doxygen, glibmm, python , version ? "0.5.1", sha256 ? "171b553dir5gn6w4f7n37waqk62nq2kf1jykx4ifjacdz5xdw3z4", doInstallCheck ? true }: @@ -17,7 +17,7 @@ stdenv.mkDerivation rec { sha256 = "14sd8xqph4kb109g073daiavpadb20fcz7ch1ipn0waz7nlly4sw"; }; - nativeBuildInputs = [ doxygen pkg-config python3 ]; + nativeBuildInputs = [ doxygen pkg-config python ]; buildInputs = [ libzip glib libusb1 libftdi1 check libserialport librevisa glibmm ]; strictDeps = true; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index a8b122cd9300..f568f8c766fe 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -14544,9 +14544,12 @@ with pkgs; libstdcxx5 = callPackage ../development/libraries/gcc/libstdc++/5.nix { }; - libsigrok = callPackage ../development/tools/libsigrok { }; + libsigrok = callPackage ../development/tools/libsigrok { + python = python3; + }; # old version: libsigrok_0_3 = libsigrok.override { + python = python3; version = "0.3.0"; sha256 = "0l3h7zvn3w4c1b9dgvl3hirc4aj1csfkgbk87jkpl7bgl03nk4j3"; doInstallCheck = false; diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index ee0f264dc294..cb08a6fb7a4c 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -8950,6 +8950,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 { };