From abebf576dc653cc80d3f14afa744b00d4ca5b2e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= Date: Tue, 9 Mar 2021 17:47:31 +0100 Subject: [PATCH] General cleanup --- Cython.spec | 81 ++++++++++--------- class-static-method-workaround.patch | 114 --------------------------- 2 files changed, 43 insertions(+), 152 deletions(-) delete mode 100644 class-static-method-workaround.patch diff --git a/Cython.spec b/Cython.spec index 59957c5..83eb815 100644 --- a/Cython.spec +++ b/Cython.spec @@ -1,6 +1,3 @@ -%global srcname Cython -%global upname cython - %bcond_without tests # This bcond allows to ship a non-compiled version @@ -9,22 +6,21 @@ Name: Cython Version: 0.29.22 -%global upver %{version_no_tilde %{nil}} -Release: 1%{?dist} +Release: 2%{?dist} Summary: Language for writing Python extension modules License: ASL 2.0 URL: http://www.cython.org -Source: https://github.com/cython/cython/archive/%{upver}/%{srcname}-%{version}.tar.gz +Source: https://github.com/cython/cython/archive/%{version}/Cython-%{version}.tar.gz -# Partially work around issues with class and static methods -# See https://bugzilla.redhat.com/show_bug.cgi?id=1788506 -# Mostly backported from upstream: https://github.com/cython/cython/pull/3106 -# This also: -# - Removes staticmethod optimizations for normal functions -# - Removes failing test for staticmethod fused functions, which still fail -# See also: https://github.com/cython/cython/issues/3614 -Patch3106: class-static-method-workaround.patch +BuildRequires: python3-devel +BuildRequires: python3-setuptools + +%if %{with tests} +BuildRequires: gcc-c++ +BuildRequires: python3-numpy +BuildRequires: python3-jedi +%endif %if %{with cython_compile} BuildRequires: gcc @@ -34,29 +30,30 @@ BuildArch: noarch %global python3_site %{python3_sitelib} %endif -%if %{with tests} -BuildRequires: gcc-c++ -%endif +%global _description %{expand: +The Cython language makes writing C extensions for the Python language as easy +as Python itself. Cython is a source code translator based on Pyrex, +but supports more cutting edge functionality and optimizations. -%global _description \ -This is a development version of Pyrex, a language\ -for writing Python extension modules. +The Cython language is a superset of the Python language (almost all Python +code is also valid Cython code), but Cython additionally supports optional +static typing to natively call C functions, operate with C++ classes and +declare fast C types on variables and class attributes. +This allows the compiler to generate very efficient C code from Cython code. + +This makes Cython the ideal language for writing glue code for external C/C++ +libraries, and for fast C modules that speed up the execution of Python code.} %description %{_description} -%package -n python3-%{srcname} + +%package -n python3-Cython Summary: %{summary} -%{?python_provide:%python_provide python3-%{srcname}} -Conflicts: python2-%{srcname} < 0.28.4-2 Provides: Cython = %{?epoch:%{epoch}:}%{version}-%{release} Provides: Cython%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} -Obsoletes: Cython < %{?epoch:%{epoch}:}%{version}-%{release} -BuildRequires: python3-devel -BuildRequires: python3-setuptools -%if %{with tests} -BuildRequires: python3-numpy -BuildRequires: python3-jedi -%endif +Provides: cython = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: cython%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} +%py_provides python3-cython # A small templating library is bundled in Cython/Tempita # Upstream version 0.5.2 is available from https://pypi.org/project/Tempita @@ -64,9 +61,8 @@ BuildRequires: python3-jedi # Upstream homepage is inaccessible. Provides: bundled(python3dist(tempita)) -%description -n python3-%{srcname} %{_description} +%description -n python3-Cython %{_description} -Python 3 version. %package -n emacs-cython-mode Summary: A major mode for editing Cython source files in Emacs @@ -77,8 +73,10 @@ Requires: emacs(bin) >= %{_emacs_version} %description -n emacs-cython-mode cython-mode is an Emacs major mode for editing Cython source files. + %prep -%autosetup -n %{upname}-%{upver} -p1 +%autosetup -n cython-%{version} -p1 + %build %py3_build -- %{!?with_cython_compile:--no-cython-compile} @@ -110,24 +108,31 @@ cp -p cython-mode-init.el cython-mode-init.elc %{buildroot}%{_emacs_sitestartdir %endif -%files -n python3-%{srcname} + +%files -n python3-Cython %license LICENSE.txt %doc *.txt Demos Doc Tools %{_bindir}/cython %{_bindir}/cygdb %{_bindir}/cythonize -%{python3_site}/%{srcname}-*.egg-info/ -%{python3_site}/%{srcname}/ +%{python3_site}/Cython-*.egg-info/ +%{python3_site}/Cython/ %{python3_site}/pyximport/ -%{python3_site}/%{upname}.py -%{python3_site}/__pycache__/%{upname}.* +%pycached %{python3_site}/cython.py %files -n emacs-cython-mode %license LICENSE.txt %{_emacs_sitelispdir}/cython*.el* %{_emacs_sitestartdir}/cython*.el* + %changelog +* Tue Mar 09 2021 Miro Hrončok - 0.29.22-2 +- Remove an obsoleted patch +- Remove old Obsoletes and Conflicts +- Update description +- Provide cython, python3-cython + * Thu Mar 04 2021 Miro Hrončok - 0.29.22-1 - Update to 0.29.22 diff --git a/class-static-method-workaround.patch b/class-static-method-workaround.patch deleted file mode 100644 index b0a66b0..0000000 --- a/class-static-method-workaround.patch +++ /dev/null @@ -1,114 +0,0 @@ -diff -U3 -r cython-0.29.17.orig/Cython/Compiler/ExprNodes.py cython-0.29.17/Cython/Compiler/ExprNodes.py ---- cython-0.29.17.orig/Cython/Compiler/ExprNodes.py 2020-04-26 13:48:48.000000000 +0200 -+++ cython-0.29.17/Cython/Compiler/ExprNodes.py 2020-05-15 17:44:55.157172257 +0200 -@@ -2295,8 +2295,10 @@ - setter = 'PyDict_SetItem' - namespace = Naming.moddict_cname - elif entry.is_pyclass_attr: -- code.globalstate.use_utility_code(UtilityCode.load_cached("SetNameInClass", "ObjectHandling.c")) -- setter = '__Pyx_SetNameInClass' -+ # Special-case setting __new__ -+ n = "SetNewInClass" if self.name == "__new__" else "SetNameInClass" -+ code.globalstate.use_utility_code(UtilityCode.load_cached(n, "ObjectHandling.c")) -+ setter = '__Pyx_' + n - else: - assert False, repr(entry) - code.put_error_if_neg( -diff -U3 -r cython-0.29.17.orig/Cython/Compiler/Nodes.py cython-0.29.17/Cython/Compiler/Nodes.py ---- cython-0.29.17.orig/Cython/Compiler/Nodes.py 2020-04-26 13:48:48.000000000 +0200 -+++ cython-0.29.17/Cython/Compiler/Nodes.py 2020-05-15 17:44:55.159172253 +0200 -@@ -2872,7 +2872,6 @@ - func = decorator.decorator - if func.is_name: - self.is_classmethod |= func.name == 'classmethod' -- self.is_staticmethod |= func.name == 'staticmethod' - - if self.is_classmethod and env.lookup_here('classmethod'): - # classmethod() was overridden - not much we can do here ... -diff -U3 -r cython-0.29.17.orig/Cython/Utility/ObjectHandling.c cython-0.29.17/Cython/Utility/ObjectHandling.c ---- cython-0.29.17.orig/Cython/Utility/ObjectHandling.c 2020-04-26 13:48:48.000000000 +0200 -+++ cython-0.29.17/Cython/Utility/ObjectHandling.c 2020-05-15 17:44:55.160172251 +0200 -@@ -1163,6 +1163,30 @@ - #define __Pyx_SetNameInClass(ns, name, value) PyObject_SetItem(ns, name, value) - #endif - -+/////////////// SetNewInClass.proto /////////////// -+ -+static int __Pyx_SetNewInClass(PyObject *ns, PyObject *name, PyObject *value); -+ -+/////////////// SetNewInClass /////////////// -+//@requires: SetNameInClass -+ -+// Special-case setting __new__: if it's a Cython function, wrap it in a -+// staticmethod. This is similar to what Python does for a Python function -+// called __new__. -+static int __Pyx_SetNewInClass(PyObject *ns, PyObject *name, PyObject *value) { -+#ifdef __Pyx_CyFunction_USED -+ int ret; -+ if (__Pyx_CyFunction_Check(value)) { -+ PyObject *staticnew = PyStaticMethod_New(value); -+ if (unlikely(!staticnew)) return -1; -+ ret = __Pyx_SetNameInClass(ns, name, staticnew); -+ Py_DECREF(staticnew); -+ return ret; -+ } -+#endif -+ return __Pyx_SetNameInClass(ns, name, value); -+} -+ - - /////////////// GetModuleGlobalName.proto /////////////// - //@requires: PyDictVersioning -Only in cython-0.29.17.orig: cython-0.29.17 -diff -U3 -r cython-0.29.17.orig/tests/run/cyfunction.pyx cython-0.29.17/tests/run/cyfunction.pyx ---- cython-0.29.17.orig/tests/run/cyfunction.pyx 2020-04-26 13:48:48.000000000 +0200 -+++ cython-0.29.17/tests/run/cyfunction.pyx 2020-05-15 17:44:55.160172251 +0200 -@@ -376,6 +376,18 @@ - def meth(self): pass - - -+class TestStaticmethod(object): -+ """ -+ >>> x = TestStaticmethod() -+ >>> x.staticmeth(42) -+ 42 -+ >>> x.staticmeth.__get__(42)() -+ 42 -+ """ -+ @staticmethod -+ def staticmeth(arg): return arg -+ -+ - cdef class TestOptimisedBuiltinMethod: - """ - >>> obj = TestOptimisedBuiltinMethod() -diff -U3 -r cython-0.29.17.orig/tests/run/fused_def.pyx cython-0.29.17/tests/run/fused_def.pyx ---- cython-0.29.17.orig/tests/run/fused_def.pyx 2020-04-26 13:48:48.000000000 +0200 -+++ cython-0.29.17/tests/run/fused_def.pyx 2020-05-15 18:03:39.436752174 +0200 -@@ -268,14 +268,6 @@ - def test_fused_def_super(): - """ - >>> test_fused_def_super() -- long 10 -- long 11 -- long 11 -- long 12 -- short 12 -- long 13 -- short 13 -- long 14 - long 14 - long 15 - long 15 -@@ -296,11 +288,6 @@ - obj = SubClass() - cls = SubClass - -- obj.mystaticmethod(obj, 10) -- cls.mystaticmethod(obj, 11) -- obj.mystaticmethod[cy.short](obj, 12) -- cls.mystaticmethod[cy.short](obj, 13) -- - obj.myclassmethod(14) - cls.myclassmethod(15) - obj.myclassmethod[cy.short](16)