Unverified Commit b90f20aa authored by Martin Weinelt's avatar Martin Weinelt Committed by GitHub
Browse files

python312Packages.{mss,pyvirtualdisplay}: modernize, enable tests on linux (#351482)

parents e1aa0ef7 00ea3170
Loading
Loading
Loading
Loading
+43 −7
Original line number Diff line number Diff line
@@ -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" ];

+17 −0
Original line number Diff line number Diff line
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))
+39 −5
Original line number Diff line number Diff line
{
  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";
+35 −0
Original line number Diff line number Diff line
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,