From 5914624410d37f3f96560214609c4a0c73310d1d Mon Sep 17 00:00:00 2001 From: rnhmjoj Date: Tue, 21 Aug 2018 10:56:52 +0200 Subject: [PATCH] sc-controller: fix udev for NixOS --- pkgs/misc/drivers/sc-controller/default.nix | 6 +++-- .../misc/drivers/sc-controller/fix-udev.patch | 22 +++++++++++++++++++ 2 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 pkgs/misc/drivers/sc-controller/fix-udev.patch diff --git a/pkgs/misc/drivers/sc-controller/default.nix b/pkgs/misc/drivers/sc-controller/default.nix index 872a90f7f59..a13b49bd6cf 100644 --- a/pkgs/misc/drivers/sc-controller/default.nix +++ b/pkgs/misc/drivers/sc-controller/default.nix @@ -2,7 +2,7 @@ , gtk3, gobjectIntrospection, libappindicator-gtk3, librsvg , evdev, pygobject3, pylibacl, pytest , linuxHeaders -, libX11, libXext, libXfixes, libusb1 +, libX11, libXext, libXfixes, libusb1, libudev }: buildPythonApplication rec { @@ -24,12 +24,14 @@ buildPythonApplication rec { checkInputs = [ pytest ]; + patches = [ ./fix-udev.patch ]; + postPatch = '' substituteInPlace scc/paths.py --replace sys.prefix "'$out'" substituteInPlace scc/uinput.py --replace /usr/include ${linuxHeaders}/include ''; - LD_LIBRARY_PATH = lib.makeLibraryPath [ libX11 libXext libXfixes libusb1 ]; + LD_LIBRARY_PATH = lib.makeLibraryPath [ libX11 libXext libXfixes libusb1 libudev ]; preFixup = '' gappsWrapperArgs+=(--prefix LD_LIBRARY_PATH : "$LD_LIBRARY_PATH") diff --git a/pkgs/misc/drivers/sc-controller/fix-udev.patch b/pkgs/misc/drivers/sc-controller/fix-udev.patch new file mode 100644 index 00000000000..2416ac216d7 --- /dev/null +++ b/pkgs/misc/drivers/sc-controller/fix-udev.patch @@ -0,0 +1,22 @@ +diff --git a/scc/lib/eudevmonitor.py b/scc/lib/eudevmonitor.py +index 6c1bd18..182eff2 100644 +--- a/scc/lib/eudevmonitor.py ++++ b/scc/lib/eudevmonitor.py +@@ -28,12 +28,11 @@ class Eudev: + + def __init__(self): + self._ctx = None +- self._lib = ctypes.CDLL(find_library(self.LIB_NAME)) +- if self._lib is None: +- # Alternative approach for NixOS +- try: +- self._lib = ctypes.cdll.LoadLibrary("libudev.so") +- except OSError: ++ try: ++ self._lib = ctypes.cdll.LoadLibrary("libudev.so") ++ except OSError: ++ self._lib = ctypes.CDLL(find_library(self.LIB_NAME)) ++ if self._lib is None: + raise ImportError("No library named udev") + Eudev._setup_lib(self._lib) + self._ctx = self._lib.udev_new()