From c00b953741af3f32f1b255d33d30aec5b2a88cb9 Mon Sep 17 00:00:00 2001 From: Martin Weinelt Date: Sat, 26 Oct 2024 18:32:25 +0200 Subject: [PATCH] python312Packages.pyvirtualdisplay: modernize, enable tests on linux --- .../pyvirtualdisplay/default.nix | 44 ++++++++++++++++--- .../pyvirtualdisplay/paths.patch | 35 +++++++++++++++ 2 files changed, 74 insertions(+), 5 deletions(-) create mode 100644 pkgs/development/python-modules/pyvirtualdisplay/paths.patch diff --git a/pkgs/development/python-modules/pyvirtualdisplay/default.nix b/pkgs/development/python-modules/pyvirtualdisplay/default.nix index 0574c5706338..fcbb8c0de00b 100644 --- a/pkgs/development/python-modules/pyvirtualdisplay/default.nix +++ b/pkgs/development/python-modules/pyvirtualdisplay/default.nix @@ -1,16 +1,28 @@ { lib, + stdenv, buildPythonPackage, fetchPypi, + substituteAll, + xorg, + + # build-system + setuptools, + + # tests easyprocess, + entrypoint2, + pillow, + psutil, + pytest-xdist, + pytestCheckHook, + vncdo, }: buildPythonPackage rec { pname = "pyvirtualdisplay"; version = "3.0"; - format = "setuptools"; - - propagatedBuildInputs = [ easyprocess ]; + pyproject = true; src = fetchPypi { pname = "PyVirtualDisplay"; @@ -18,8 +30,30 @@ buildPythonPackage rec { hash = "sha256-CXVbw86263JfsH7KVCX0PyNY078I4A0qm3kqGu3RYVk="; }; - # requires X server - doCheck = false; + patches = lib.optionals stdenv.isLinux [ + (substituteAll { + src = ./paths.patch; + xauth = lib.getExe xorg.xauth; + xdpyinfo = lib.getExe xorg.xdpyinfo; + }) + ]; + + build-system = [ setuptools ]; + + doCheck = stdenv.isLinux; + + nativeCheckInputs = [ + easyprocess + entrypoint2 + pillow + psutil + pytest-xdist + pytestCheckHook + (vncdo.overridePythonAttrs { doCheck = false; }) + xorg.xorgserver + xorg.xmessage + xorg.xvfb + ]; meta = with lib; { description = "Python wrapper for Xvfb, Xephyr and Xvnc"; diff --git a/pkgs/development/python-modules/pyvirtualdisplay/paths.patch b/pkgs/development/python-modules/pyvirtualdisplay/paths.patch new file mode 100644 index 000000000000..d447cd622802 --- /dev/null +++ b/pkgs/development/python-modules/pyvirtualdisplay/paths.patch @@ -0,0 +1,35 @@ +diff --git a/pyvirtualdisplay/abstractdisplay.py b/pyvirtualdisplay/abstractdisplay.py +index dd93943..c694209 100644 +--- a/pyvirtualdisplay/abstractdisplay.py ++++ b/pyvirtualdisplay/abstractdisplay.py +@@ -242,7 +242,7 @@ class AbstractDisplay(object): + + try: + xdpyinfo = subprocess.Popen( +- ["xdpyinfo"], ++ ["@xdpyinfo@"], + env=self._env(), + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, +diff --git a/pyvirtualdisplay/xauth.py b/pyvirtualdisplay/xauth.py +index ce0f804..7734e21 100644 +--- a/pyvirtualdisplay/xauth.py ++++ b/pyvirtualdisplay/xauth.py +@@ -14,7 +14,7 @@ def is_installed(): + """ + try: + xauth = subprocess.Popen( +- ["xauth", "-V"], ++ ["@xauth@", "-V"], + # env=self._env(), + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, +@@ -43,7 +43,7 @@ def call(*args): + Call xauth with the given args. + """ + xauth = subprocess.Popen( +- ["xauth"] + list(args), ++ ["@xauth@"] + list(args), + # env=self._env(), + stdout=subprocess.PIPE, + stderr=subprocess.PIPE,