Skip to content

Commit

Permalink
python312Packages.{mss,pyvirtualdisplay}: modernize, enable tests on …
Browse files Browse the repository at this point in the history
…linux (#351482)
  • Loading branch information
mweinelt authored Oct 26, 2024
2 parents e1aa0ef + 00ea317 commit b90f20a
Show file tree
Hide file tree
Showing 4 changed files with 134 additions and 12 deletions.
50 changes: 43 additions & 7 deletions pkgs/development/python-modules/mss/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -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";

Expand All @@ -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" ];

Expand Down
17 changes: 17 additions & 0 deletions pkgs/development/python-modules/mss/linux-paths.patch
Original file line number Diff line number Diff line change
@@ -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))
44 changes: 39 additions & 5 deletions pkgs/development/python-modules/pyvirtualdisplay/default.nix
Original file line number Diff line number Diff line change
@@ -1,25 +1,59 @@
{
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";
inherit version;
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";
Expand Down
35 changes: 35 additions & 0 deletions pkgs/development/python-modules/pyvirtualdisplay/paths.patch
Original file line number Diff line number Diff line change
@@ -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,

0 comments on commit b90f20a

Please sign in to comment.