From c00b953741af3f32f1b255d33d30aec5b2a88cb9 Mon Sep 17 00:00:00 2001 From: Martin Weinelt Date: Sat, 26 Oct 2024 18:32:25 +0200 Subject: [PATCH 1/2] 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 0574c57063389..fcbb8c0de00bb 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 0000000000000..d447cd6228021 --- /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, From 00ea3170aff3ca2b5d40969512aafcadf325de45 Mon Sep 17 00:00:00 2001 From: Martin Weinelt Date: Sat, 26 Oct 2024 18:34:27 +0200 Subject: [PATCH 2/2] python312Packages.mss: modernize, test on linux --- .../python-modules/mss/default.nix | 50 ++++++++++++++++--- .../python-modules/mss/linux-paths.patch | 17 +++++++ 2 files changed, 60 insertions(+), 7 deletions(-) create mode 100644 pkgs/development/python-modules/mss/linux-paths.patch diff --git a/pkgs/development/python-modules/mss/default.nix b/pkgs/development/python-modules/mss/default.nix index c60c4d51ec8ad..8be69129140fa 100644 --- a/pkgs/development/python-modules/mss/default.nix +++ b/pkgs/development/python-modules/mss/default.nix @@ -3,12 +3,28 @@ buildPythonPackage, fetchPypi, pythonOlder, + stdenv, + substituteAll, + + # build-system + hatchling, + + # native dependencies + xorg, + + # tests + lsof, + pillow, + pytest-cov-stub, + pytest, + pyvirtualdisplay, + xvfb-run, }: buildPythonPackage rec { pname = "mss"; version = "9.0.2"; - format = "setuptools"; + pyproject = true; disabled = pythonOlder "3.6"; @@ -17,13 +33,33 @@ buildPythonPackage rec { hash = "sha256-yWpOxzIk2n2yK8B+88+qGPi4aQDRhy4pETu87wCToh4="; }; - prePatch = '' - # By default it attempts to build Windows-only functionality - rm src/mss/windows.py - ''; + patches = lib.optionals stdenv.isLinux [ + (substituteAll { + src = ./linux-paths.patch; + x11 = "${xorg.libX11}/lib/libX11.so"; + xfixes = "${xorg.libXfixes}/lib/libXfixes.so"; + xrandr = "${xorg.libXrandr}/lib/libXrandr.so"; + }) + ]; - # Skipping tests due to most relying on DISPLAY being set - doCheck = false; + build-system = [ hatchling ]; + + doCheck = stdenv.isLinux; + + nativeCheckInputs = [ + lsof + pillow + pytest-cov-stub + pytest + pyvirtualdisplay + xvfb-run + ]; + + checkPhase = '' + runHook preCheck + xvfb-run pytest -k "not test_grab_with_tuple and not test_grab_with_tuple_percents and not test_resource_leaks" + runHook postCheck + ''; pythonImportsCheck = [ "mss" ]; diff --git a/pkgs/development/python-modules/mss/linux-paths.patch b/pkgs/development/python-modules/mss/linux-paths.patch new file mode 100644 index 0000000000000..e8727d80b20f8 --- /dev/null +++ b/pkgs/development/python-modules/mss/linux-paths.patch @@ -0,0 +1,17 @@ +diff --git a/src/mss/linux.py b/src/mss/linux.py +index 6dac52b..c90bd93 100644 +--- a/src/mss/linux.py ++++ b/src/mss/linux.py +@@ -185,9 +185,9 @@ class XWindowAttributes(Structure): + + + _ERROR = {} +-_X11 = find_library("X11") +-_XFIXES = find_library("Xfixes") +-_XRANDR = find_library("Xrandr") ++_X11 = "@x11@" ++_XFIXES = "@xfixes@" ++_XRANDR = "@xrandr@" + + + @CFUNCTYPE(c_int, POINTER(Display), POINTER(XErrorEvent))