diff --git a/pkgs/development/python-modules/python-zbar/0001-python-enum-fix-build-for-Python-3.11.patch b/pkgs/development/python-modules/python-zbar/0001-python-enum-fix-build-for-Python-3.11.patch deleted file mode 100644 index 11b554151790..000000000000 --- a/pkgs/development/python-modules/python-zbar/0001-python-enum-fix-build-for-Python-3.11.patch +++ /dev/null @@ -1,61 +0,0 @@ -From 64de7911d2938fc3601fec39c08008465b9d4f6f Mon Sep 17 00:00:00 2001 -From: Nick Cao -Date: Tue, 7 Feb 2023 17:12:50 +0800 -Subject: [PATCH] python: enum: fix build for Python 3.11 -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Python 3.9 introduced Py_SET_SIZE function to set size instead of -relying on Py_SIZE() as a macro [3.9]. - -Python 3.10 started to encourage to use Py_SET_SIZE instead of -assigning into return value of Py_SIZE [3.10]. - -Python 3.11 flips the switch, turn Py_SIZE into a function [3.11], -thus Py_SIZE(obj) will be a rvalue. We need to use Py_SET_SIZE -to set size now. - -[3.9]: https://docs.python.org/3.9/c-api/structures.html#c.Py_SET_SIZE -[3.10]: https://docs.python.org/3.10/c-api/structures.html#c.Py_SIZE -[3.11]: https://docs.python.org/3.11/c-api/structures.html#c.Py_SIZE - -Adapted from https://github.com/mchehab/zbar/pull/231 - -Signed-off-by: Đoàn Trần Công Danh -Signed-off-by: Nick Cao ---- - python/enum.c | 8 ++++++++ - 1 file changed, 8 insertions(+) - -diff --git a/python/enum.c b/python/enum.c -index dfe1b1e..4833a20 100644 ---- a/python/enum.c -+++ b/python/enum.c -@@ -52,7 +52,11 @@ enumitem_new (PyTypeObject *type, - - /* we assume the "fast path" for a single-digit ints (see longobject.c) */ - /* this also holds if we get a small_int preallocated long */ -+#if PY_VERSION_HEX >= 0x030900A4 -+ Py_SET_SIZE(&self->val, Py_SIZE(longval)); -+#else - Py_SIZE(&self->val) = Py_SIZE(longval); -+#endif - self->val.ob_digit[0] = longval->ob_digit[0]; - Py_DECREF(longval); - #else -@@ -143,7 +147,11 @@ zbarEnumItem_New (PyObject *byname, - - /* we assume the "fast path" for a single-digit ints (see longobject.c) */ - /* this also holds if we get a small_int preallocated long */ -+#if PY_VERSION_HEX >= 0x030900A4 -+ Py_SET_SIZE(&self->val, Py_SIZE(longval)); -+#else - Py_SIZE(&self->val) = Py_SIZE(longval); -+#endif - self->val.ob_digit[0] = longval->ob_digit[0]; - Py_DECREF(longval); - --- -2.39.1 - diff --git a/pkgs/development/python-modules/python-zbar/default.nix b/pkgs/development/python-modules/python-zbar/default.nix index a7c28b2992d4..539823f064ac 100644 --- a/pkgs/development/python-modules/python-zbar/default.nix +++ b/pkgs/development/python-modules/python-zbar/default.nix @@ -1,6 +1,8 @@ { lib , buildPythonPackage , fetchFromGitHub +, pythonAtLeast +, setuptools , pillow , zbar , pytestCheckHook @@ -9,7 +11,10 @@ buildPythonPackage rec { pname = "python-zbar"; version = "0.23.93"; - format = "setuptools"; + pyproject = true; + + # distutils usage in setup.py + disabled = pythonAtLeast "3.12"; src = fetchFromGitHub { owner = "mchehab"; @@ -18,23 +23,18 @@ buildPythonPackage rec { hash = "sha256-6gOqMsmlYy6TK+iYPIBsCPAk8tYDliZYMYeTOidl4XQ="; }; - patches = [ - # python: enum: fix build for Python 3.11 - # https://github.com/mchehab/zbar/pull/231 - # the patch is reworked as it does not cleanly apply - ./0001-python-enum-fix-build-for-Python-3.11.patch - ]; + postPatch = '' + cd python + ''; - propagatedBuildInputs = [ pillow ]; + build-system = [ setuptools ]; + + dependencies = [ pillow ]; buildInputs = [ zbar ]; nativeCheckInputs = [ pytestCheckHook ]; - preBuild = '' - cd python - ''; - disabledTests = [ #AssertionError: b'Y800' != 'Y800' "test_format" @@ -42,6 +42,9 @@ buildPythonPackage rec { #Requires loading a recording device #zbar.SystemError: "test_processing" + # Version too long? + # self.assertEqual(len(ver), 2) + "test_version" ]; pythonImportsCheck = [ "zbar" ];