From 0010e0bb58e5d4c3cbe7dd09f6782dfbc9eb7fea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20Sch=C3=BCtz?= Date: Thu, 10 Jun 2021 15:12:07 +0200 Subject: [PATCH] python3Packages.notify-py: hardcode paths to aplay, notify-send, and which --- .../notify-py/darwin-paths.patch | 13 +++++ .../python-modules/notify-py/default.nix | 43 +++++++++++---- .../notify-py/linux-paths.patch | 54 +++++++++++++++++++ 3 files changed, 101 insertions(+), 9 deletions(-) create mode 100644 pkgs/development/python-modules/notify-py/darwin-paths.patch create mode 100644 pkgs/development/python-modules/notify-py/linux-paths.patch diff --git a/pkgs/development/python-modules/notify-py/darwin-paths.patch b/pkgs/development/python-modules/notify-py/darwin-paths.patch new file mode 100644 index 000000000000..3088825b9b9b --- /dev/null +++ b/pkgs/development/python-modules/notify-py/darwin-paths.patch @@ -0,0 +1,13 @@ +diff --git a/notifypy/os_notifiers/macos.py b/notifypy/os_notifiers/macos.py +index 68731fb..53fcee3 100644 +--- a/notifypy/os_notifiers/macos.py ++++ b/notifypy/os_notifiers/macos.py +@@ -75,7 +75,7 @@ class MacOSNotifier(BaseNotifier): + def _find_installed_afplay(): + """Function to find the path for afplay""" + try: +- run_which_for_aplay = subprocess.check_output(["which", "afplay"]) ++ run_which_for_aplay = subprocess.check_output(["@which@", "afplay"]) + return run_which_for_aplay.decode("utf-8") + except subprocess.CalledProcessError: + logger.exception("Unable to find aplay.") diff --git a/pkgs/development/python-modules/notify-py/default.nix b/pkgs/development/python-modules/notify-py/default.nix index ba4725c9aaa4..497b20d3df8f 100644 --- a/pkgs/development/python-modules/notify-py/default.nix +++ b/pkgs/development/python-modules/notify-py/default.nix @@ -1,5 +1,17 @@ -{ lib, stdenv, buildPythonPackage, fetchFromGitHub, isPy3k, coreutils, alsa-utils -, libnotify, which, jeepney, loguru, pytestCheckHook }: +{ lib +, stdenv +, buildPythonPackage +, isPy3k +, fetchFromGitHub +, substituteAll +, alsa-utils +, libnotify +, which +, jeepney +, loguru +, pytestCheckHook +, coreutils +}: buildPythonPackage rec { pname = "notify-py"; @@ -14,15 +26,28 @@ buildPythonPackage rec { sha256 = "1n35adwsyhz304n4ifnsz6qzkymwhyqc8sg8d76qv5psv2xsnzlf"; }; - propagatedNativeBuildInputs = [ which ] - ++ lib.optionals stdenv.isLinux [ alsa-utils libnotify ]; + patches = lib.optionals stdenv.isLinux [ + # hardcode paths to aplay and notify-send + (substituteAll { + src = ./linux-paths.patch; + aplay = "${alsa-utils}/bin/aplay"; + notifysend = "${libnotify}/bin/notify-send"; + }) + ] ++ lib.optionals stdenv.isDarwin [ + # hardcode path to which + (substituteAll { + src = ./darwin-paths.patch; + which = "${which}/bin/which"; + }) + ]; + propagatedBuildInputs = [ loguru ] ++ lib.optionals stdenv.isLinux [ jeepney ]; - checkInputs = [ coreutils pytestCheckHook ]; + checkInputs = [ pytestCheckHook ]; # Tests search for "afplay" binary which is built in to MacOS and not available in nixpkgs - preCheck = '' + preCheck = lib.optionalString stdenv.isDarwin '' mkdir $TMP/bin ln -s ${coreutils}/bin/true $TMP/bin/afplay export PATH="$TMP/bin:$PATH" @@ -31,9 +56,9 @@ buildPythonPackage rec { pythonImportsCheck = [ "notifypy" ]; meta = with lib; { - description = "Python Module for sending cross-platform desktop notifications on Windows, macOS, and Linux."; - homepage = "https://github.com/ms7m/notify-py/"; + description = "Cross-platform desktop notification library for Python"; + homepage = "https://github.com/ms7m/notify-py"; license = licenses.mit; - maintainers = with maintainers; [ austinbutler ]; + maintainers = with maintainers; [ austinbutler dotlambda ]; }; } diff --git a/pkgs/development/python-modules/notify-py/linux-paths.patch b/pkgs/development/python-modules/notify-py/linux-paths.patch new file mode 100644 index 000000000000..f043ec14a467 --- /dev/null +++ b/pkgs/development/python-modules/notify-py/linux-paths.patch @@ -0,0 +1,54 @@ +diff --git a/notifypy/os_notifiers/linux.py b/notifypy/os_notifiers/linux.py +index ee89216..5201574 100644 +--- a/notifypy/os_notifiers/linux.py ++++ b/notifypy/os_notifiers/linux.py +@@ -53,30 +53,12 @@ class LinuxNotifierLibNotify(BaseNotifier): + @staticmethod + def _find_installed_aplay(): + """Function to find the path for notify-send""" +- try: +- run_which_for_aplay = subprocess.check_output(["which", "aplay"]) +- return run_which_for_aplay.decode("utf-8") +- except subprocess.CalledProcessError: +- logger.exception("Unable to find aplay.") +- return False +- except Exception: +- logger.exception("Unhandled exception for finding aplay.") +- return False ++ return "@aplay@" + + @staticmethod + def _find_installed_notify_send(): + """Function to find the path for notify-send""" +- try: +- run_which_for_notify_send = subprocess.check_output( +- ["which", "notify-send"] +- ) +- return run_which_for_notify_send.decode("utf-8") +- except subprocess.CalledProcessError: +- logger.exception("Unable to find notify-send.") +- return False +- except Exception: +- logger.exception("Unhandled exception for finding notify-send.") +- return False ++ return "@notifysend@" + + def send_notification( + self, +@@ -159,15 +141,7 @@ class LinuxNotifier(BaseNotifier): + @staticmethod + def _find_installed_aplay(): + """Function to find the path for notify-send""" +- try: +- run_which_for_aplay = subprocess.check_output(["which", "aplay"]) +- return run_which_for_aplay.decode("utf-8") +- except subprocess.CalledProcessError: +- logger.exception("Unable to find aplay.") +- return False +- except Exception: +- logger.exception("Unhandled exception for finding aplay.") +- return False ++ return "@aplay@" + + def send_notification( + self,