python3Packages.pynput: unbreak on darwin; add pyobjc-framework-{CoreText,ApplicationServices} (#531586)

This commit is contained in:
Luna Nova
2026-06-20 19:44:58 +00:00
committed by GitHub
5 changed files with 139 additions and 1 deletions
+5
View File
@@ -15145,6 +15145,11 @@
githubId = 27364685;
name = "Lorenzo Pasqui";
};
l1n = {
github = "l1n";
githubId = 1367322;
name = "Nova DasSarma";
};
l1npengtul = {
email = "l1npengtul@l1npengtul.lol";
github = "l1npengtul";
@@ -14,6 +14,8 @@
xlib,
evdev,
six,
pyobjc-framework-ApplicationServices,
pyobjc-framework-Quartz,
# tests
unittestCheckHook,
@@ -52,6 +54,11 @@ buildPythonPackage rec {
++ lib.optionals stdenv.hostPlatform.isLinux [
evdev
xlib
]
++ lib.optionals stdenv.hostPlatform.isDarwin [
# the darwin backend imports HIServices (ApplicationServices) and Quartz
pyobjc-framework-ApplicationServices
pyobjc-framework-Quartz
];
doCheck = false; # requires running X server
@@ -59,7 +66,6 @@ buildPythonPackage rec {
nativeCheckInputs = [ unittestCheckHook ];
meta = {
broken = stdenv.hostPlatform.isDarwin;
description = "Library to control and monitor input devices";
homepage = "https://github.com/moses-palmer/pynput";
license = lib.licenses.lgpl3;
@@ -0,0 +1,62 @@
{
buildPythonPackage,
setuptools,
darwin,
pyobjc-core,
pyobjc-framework-Cocoa,
pyobjc-framework-Quartz,
pyobjc-framework-CoreText,
lib,
}:
buildPythonPackage rec {
pname = "pyobjc-framework-ApplicationServices";
pyproject = true;
inherit (pyobjc-core) version src;
sourceRoot = "${src.name}/pyobjc-framework-ApplicationServices";
build-system = [ setuptools ];
buildInputs = [ darwin.libffi ];
nativeBuildInputs = [
darwin.DarwinTools # sw_vers
];
# Same workaround as pyobjc-framework-Quartz; see
# https://github.com/ronaldoussoren/pyobjc/pull/641.
postPatch = ''
substituteInPlace pyobjc_setup.py \
--replace-fail "-buildversion" "-buildVersion" \
--replace-fail "-productversion" "-productVersion" \
--replace-fail "/usr/bin/sw_vers" "sw_vers" \
--replace-fail "/usr/bin/xcrun" "xcrun"
'';
dependencies = [
pyobjc-core
pyobjc-framework-Cocoa
pyobjc-framework-Quartz
pyobjc-framework-CoreText
];
env.NIX_CFLAGS_COMPILE = toString [
"-I${darwin.libffi.dev}/include"
"-Wno-error=unused-command-line-argument"
];
pythonImportsCheck = [
"ApplicationServices"
"HIServices"
];
meta = {
description = "PyObjC wrappers for the ApplicationServices framework on macOS";
homepage = "https://github.com/ronaldoussoren/pyobjc";
license = lib.licenses.mit;
platforms = lib.platforms.darwin;
maintainers = with lib.maintainers; [ l1n ];
};
}
@@ -0,0 +1,59 @@
{
buildPythonPackage,
setuptools,
darwin,
pyobjc-core,
pyobjc-framework-Cocoa,
pyobjc-framework-Quartz,
lib,
}:
buildPythonPackage rec {
pname = "pyobjc-framework-CoreText";
pyproject = true;
inherit (pyobjc-core) version src;
sourceRoot = "${src.name}/pyobjc-framework-CoreText";
build-system = [ setuptools ];
buildInputs = [ darwin.libffi ];
nativeBuildInputs = [
darwin.DarwinTools # sw_vers
];
# Same workaround as pyobjc-framework-Quartz; see
# https://github.com/ronaldoussoren/pyobjc/pull/641.
postPatch = ''
substituteInPlace pyobjc_setup.py \
--replace-fail "-buildversion" "-buildVersion" \
--replace-fail "-productversion" "-productVersion" \
--replace-fail "/usr/bin/sw_vers" "sw_vers" \
--replace-fail "/usr/bin/xcrun" "xcrun"
'';
dependencies = [
pyobjc-core
pyobjc-framework-Cocoa
pyobjc-framework-Quartz
];
env.NIX_CFLAGS_COMPILE = toString [
"-I${darwin.libffi.dev}/include"
"-Wno-error=unused-command-line-argument"
];
pythonImportsCheck = [
"CoreText"
];
meta = {
description = "PyObjC wrappers for the CoreText framework on macOS";
homepage = "https://github.com/ronaldoussoren/pyobjc";
license = lib.licenses.mit;
platforms = lib.platforms.darwin;
maintainers = with lib.maintainers; [ l1n ];
};
}
+6
View File
@@ -14804,6 +14804,10 @@ self: super: with self; {
pyobjc-core = callPackage ../development/python-modules/pyobjc-core { };
pyobjc-framework-ApplicationServices =
callPackage ../development/python-modules/pyobjc-framework-ApplicationServices
{ };
pyobjc-framework-Cocoa = callPackage ../development/python-modules/pyobjc-framework-Cocoa { };
pyobjc-framework-CoreAudio =
@@ -14814,6 +14818,8 @@ self: super: with self; {
callPackage ../development/python-modules/pyobjc-framework-CoreBluetooth
{ };
pyobjc-framework-CoreText = callPackage ../development/python-modules/pyobjc-framework-CoreText { };
pyobjc-framework-Quartz = callPackage ../development/python-modules/pyobjc-framework-Quartz { };
pyobjc-framework-Security = callPackage ../development/python-modules/pyobjc-framework-Security { };