From 154fa4d0e7ae5a641d1a9c2568d223ca05952ee1 Mon Sep 17 00:00:00 2001 From: Evan Stoll Date: Sun, 18 Oct 2020 14:48:54 -0400 Subject: [PATCH] pythonPackages.hydrus: init at 413 --- pkgs/applications/graphics/hydrus/default.nix | 112 ++++++++++++++++++ pkgs/top-level/all-packages.nix | 5 + 2 files changed, 117 insertions(+) create mode 100644 pkgs/applications/graphics/hydrus/default.nix diff --git a/pkgs/applications/graphics/hydrus/default.nix b/pkgs/applications/graphics/hydrus/default.nix new file mode 100644 index 000000000000..556e5e30f3a4 --- /dev/null +++ b/pkgs/applications/graphics/hydrus/default.nix @@ -0,0 +1,112 @@ +{ stdenv +, fetchFromGitHub +, lzma +, qt5 +, wrapQtAppsHook +, miniupnpc_2 +, swftools +, pythonPackages +}: + +pythonPackages.buildPythonPackage { + pname = "hydrus"; + version = "413"; + format = "other"; + + src = fetchFromGitHub { + owner = "hydrusnetwork"; + repo = "hydrus"; + rev = "9fbed11bef499e01a6799b298bea7d0967d30430"; + sha256 = "1dl7qpzmlxl376lzm0chmwvf4nl55wz6fwcsw0ikb33rm8r33gq4"; + }; + + nativeBuildInputs = [ + wrapQtAppsHook + ]; + + propagatedBuildInputs = with pythonPackages; [ + beautifulsoup4 + html5lib + lxml + numpy + opencv4 + pillow + psutil + pyopenssl + pyyaml + requests + send2trash + service-identity + twisted + lz4 + lzma + pysocks + matplotlib + qtpy + pyside2 + ]; + + checkInputs = with pythonPackages; [ nose httmock ]; + + # most tests are failing, presumably because we are not using test.py + checkPhase = '' + nosetests $src/hydrus/test \ + -e TestClientAPI \ + -e TestClientConstants \ + -e TestClientDaemons \ + -e TestClientData \ + -e TestClientDB \ + -e TestClientDBDuplicates \ + -e TestClientDBTags \ + -e TestClientImageHandling \ + -e TestClientImportOptions \ + -e TestClientListBoxes \ + -e TestClientMigration \ + -e TestClientNetworking \ + -e TestClientTags \ + -e TestClientThreading \ + -e TestDialogs \ + -e TestFunctions \ + -e TestHydrusNATPunch \ + -e TestHydrusSerialisable \ + -e TestHydrusServer \ + -e TestHydrusSessions \ + -e TestServer \ + ''; + + extraOutputsToLink = [ "doc" ]; + + postPatch = '' + sed 's;os\.path\.join(\sHC\.BIN_DIR,.*;"${miniupnpc_2}/bin/upnpc";' \ + -i ./hydrus/core/HydrusNATPunch.py + + sed 's;os\.path\.join(\sHC\.BIN_DIR,.*;"${swftools}/bin/swfrender";' \ + -i ./hydrus/core/HydrusFlashHandling.py + ''; + + #doCheck = true; + + installPhase = '' + # Move the hydrus module and related directories + mkdir -p $out/${pythonPackages.python.sitePackages} + mv {hydrus,static} $out/${pythonPackages.python.sitePackages} + mv help $out/doc/ + + # install the hydrus binaries + mkdir -p $out/bin + install -m0755 server.py $out/bin/hydrus-server + install -m0755 client.py $out/bin/hydrus-client + ''; + + dontWrapQtApps = true; + preFixup = '' + makeWrapperArgs+=("''${qtWrapperArgs[@]}") + ''; + + meta = with stdenv.lib; { + description = "Danbooru-like image tagging and searching system for the desktop"; + license = licenses.wtfpl; + homepage = "https://hydrusnetwork.github.io/hydrus/"; + maintainers = [ maintainers.evanjs ]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index cb9617f65017..a6f812b2252e 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -20947,6 +20947,11 @@ in goffice = callPackage ../development/libraries/goffice { }; + hydrus = python3Packages.callPackage ../applications/graphics/hydrus { + inherit miniupnpc_2 swftools; + inherit (qt5) wrapQtAppsHook; + }; + jetbrains = (recurseIntoAttrs (callPackages ../applications/editors/jetbrains { jdk = jetbrains.jdk; }) // {