Unverified Commit 00ea3170 authored by Martin Weinelt's avatar Martin Weinelt
Browse files

python312Packages.mss: modernize, test on linux

parent c00b9537
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))