Skip to content

Commit

Permalink
python3.pkgs.androguard: rewrite
Browse files Browse the repository at this point in the history
Add an optional withGui flag to turn off gui as most of the time it's
not needed since this is a python library.

Use a GitHub tarball to optionally enable tests, currently disabled by
default, but next release' tests should pass (tested the beta release
tag).

Wrap qt apps properly, without double wrapping, if gui is enabled.
  • Loading branch information
doronbehar authored and FRidh committed Oct 8, 2020
1 parent cd5b560 commit 36b7e89
Showing 1 changed file with 63 additions and 7 deletions.
70 changes: 63 additions & 7 deletions pkgs/development/python-modules/androguard/default.nix
Original file line number Diff line number Diff line change
@@ -1,13 +1,44 @@
{ lib, buildPythonPackage, fetchPypi, future, networkx, pygments, lxml, colorama, matplotlib,
asn1crypto, click, pydot, ipython, pyqt5, pyperclip }:
{ lib
, fetchpatch
, buildPythonPackage
, fetchFromGitHub
, future
, networkx
, pygments
, lxml
, colorama
, matplotlib
, asn1crypto
, click
, pydot
, ipython
, pyqt5
, pyperclip
, nose
, nose-timer
, mock
, python_magic
, codecov
, coverage
, qt5
# This is usually used as a library, and it'd be a shame to force the gui
# libraries to the closure if gui is not desired.
, withGui ? false
# Tests take a very long time, and currently fail, but next release' tests
# shouldn't fail
, doCheck ? false
}:

buildPythonPackage rec {
version = "3.3.5";
pname = "androguard";

src = fetchPypi {
inherit pname version;
sha256 = "f0655ca3a5add74c550951e79bd0bebbd1c5b239178393d30d8db0bd3202cda2";
# No tests in pypi tarball
src = fetchFromGitHub {
repo = pname;
owner = pname;
rev = "v${version}";
sha256 = "0zc8m1xnkmhz2v12ddn47q0c01p3sbna2v5npfxhcp88szswlr9y";
};

propagatedBuildInputs = [
Expand All @@ -21,12 +52,37 @@ buildPythonPackage rec {
click
pydot
ipython
] ++ lib.optionals withGui [
pyqt5
pyperclip
];

# Tests are not shipped on PyPI.
doCheck = false;
checkInputs = [
pyqt5
pyperclip
nose
nose-timer
codecov
coverage
mock
python_magic
];
inherit doCheck;

nativeBuildInputs = lib.optionals withGui [ qt5.wrapQtAppsHook ];

# If it won't be verbose, you'll see nothing going on for a long time.
checkPhase = ''
runHook preCheck
nosetests --verbosity=3
runHook postCheck
'';

preFixup = lib.optionalString withGui ''
makeWrapperArgs+=("''${qtWrapperArgs[@]}")
'';

meta = {
description = "Tool and python library to interact with Android Files";
Expand Down

0 comments on commit 36b7e89

Please sign in to comment.