X-Git-Url: http://git.pld-linux.org/?a=blobdiff_plain;f=python-gevent.spec;h=abe773ad007e2b4e151fc39eb7bf6e99e2bd816e;hb=3b06763;hp=3548a756755358f95a2e4423e9a1cd206d33c57d;hpb=11497ff2b6a87dba4101cf06506d569f045d4d3d;p=packages%2Fpython-gevent.git diff --git a/python-gevent.spec b/python-gevent.spec index 3548a75..abe773a 100644 --- a/python-gevent.spec +++ b/python-gevent.spec @@ -1,75 +1,208 @@ # TODO: -# - investigate some of the failing tests -# (now excluded via known_failures-pld.txt) +# - test__core_stat.py fails on 32-bit builds with system libev +# investigate/fix that and enable system libev +# +# - investigate some other failing tests +# (now excluded via known_failures-pld.patch) # Conditional build: -%bcond_without tests # do not run tests +%bcond_without tests # do not run tests +%bcond_with system_libev # build with system libev [test__core_stat.py test fails] +%bcond_without system_c_ares # build with system c_ares +%bcond_without python2 # CPython 2.x module +%bcond_without python3 # CPython 3.x module -%define module gevent -Summary: A coroutine-based Python networking library +%define module gevent +Summary: A coroutine-based Python 2 networking library +Summary(pl.UTF-8): Biblioteka sieciowa dla Pythona 2 oparta na korutynach Name: python-%{module} -Version: 1.0 -Release: 1 +Version: 1.2.1 +Release: 3 +Epoch: 1 License: MIT Group: Development/Languages +#Source0Download: https://pypi.python.org/simple/gevent +Source0: http://files.pythonhosted.org/packages/source/g/gevent/%{module}-%{version}.tar.gz +# Source0-md5: 6700a2433c8e0635425e6798760efc81 +Patch0: known_failures-pld.patch +Patch1: %{name}-tests.patch URL: http://www.gevent.org/ -Source0: http://pypi.python.org/packages/source/g/gevent/%{module}-%{version}.tar.gz -# Source0-md5: 33aef51a06268f5903fea378e1388e4d -Source1: known_failures-pld.txt -BuildRequires: libevent-devel >= 1.4.0 -BuildRequires: python-devel +%{?with_system_c_ares:BuildRequires: c-ares-devel >= 1.10.0} +%{?with_system_libev:BuildRequires: libev-devel >= 4.23} +# if cpython generated files need rebuild +#BuildRequires: python-Cython >= 0.25.1 +%if %{with python2} +BuildRequires: python-cffi >= 1.3.0 +BuildRequires: python-devel >= 1:2.7 +%if %{with tests} +BuildRequires: python-coverage >= 4.0 +BuildRequires: python-devel-src >= 1:2.7 +BuildRequires: python-greenlet >= 0.4.10 +BuildRequires: python-setuptools +BuildRequires: python-test +%endif +%endif +%if %{with python3} +BuildRequires: python3-cffi >= 1.3.0 +BuildRequires: python3-devel >= 1:3.3 +%if %{with tests} +BuildRequires: python3-coverage >= 4.0 +BuildRequires: python3-greenlet >= 0.4.10 +BuildRequires: python3-setuptools +BuildRequires: python3-test +%endif +%endif BuildRequires: rpm-pythonprov -Requires: python-greenlet +BuildRequires: rpmbuild(macros) >= 1.714 +%{?with_system_libev:Requires: libev >= 4.23} +Requires: python-greenlet >= 0.4.10 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n) %description -gevent is a coroutine-based Python networking library that uses -greenlet to provide a high-level synchronous API on top of libevent -event loop. - -Features include: - - convenient API around greenlets - - familiar synchronization primitives (gevent.event, gevent.queue) - - socket module that cooperates - - WSGI server on top of libevent-http - - DNS requests done through libevent-dns - - monkey patching utility to get pure Python modules to cooperate +gevent is a coroutine-based Python networking library. Features +include: +- Fast event loop based on libev. +- Lightweight execution units based on greenlet. +- Familiar API that re-uses concepts from the Python standard library. +- Cooperative sockets with SSL support. +- DNS queries performed through c-ares or a threadpool. +- Ability to use standard library and 3rd party modules written for + standard blocking sockets. + +%description -l pl.UTF-8 +gevent to biblioteka sieciowa dla Pythona oparta na korutynach. Jej +możliwości to m.in. +- szybka pętla zdarzeń oparta na libev +- lekkie jednostki wykonywania oparte na bibliotece greenlet +- znajome API wykorzystujące koncepty biblioteki standardowej Pythona +- gniazda kooperatywne z obsługą SSL +- zapytania DNS wykonywane przez bibliotekę c-ares lub pulę wątków +- możliwość wykorzystania biblioteki standardowej lub modułów innych + producentów napisanych dla standardowych gniazd blokujących + +%package -n python3-%{module} +Summary: A coroutine-based Python 3 networking library +Summary(pl.UTF-8): Biblioteka sieciowa dla Pythona 3 oparta na korutynach +Group: Libraries/Python +%{?with_system_libev:Requires: libev >= 4.23} +Requires: python-greenlet >= 0.4.10 + +%description -n python3-%{module} +gevent is a coroutine-based Python networking library. Features +include: +- Fast event loop based on libev. +- Lightweight execution units based on greenlet. +- Familiar API that re-uses concepts from the Python standard library. +- Cooperative sockets with SSL support. +- DNS queries performed through c-ares or a threadpool. +- Ability to use standard library and 3rd party modules written for + standard blocking sockets + +%description -n python3-%{module} -l pl.UTF-8 +gevent to biblioteka sieciowa dla Pythona oparta na korutynach. Jej +możliwości to m.in. +- szybka pętla zdarzeń oparta na libev +- lekkie jednostki wykonywania oparte na bibliotece greenlet +- znajome API wykorzystujące koncepty biblioteki standardowej Pythona +- gniazda kooperatywne z obsługą SSL +- zapytania DNS wykonywane przez bibliotekę c-ares lub pulę wątków +- możliwość wykorzystania biblioteki standardowej lub modułów innych + producentów napisanych dla standardowych gniazd blokujących %prep %setup -q -n %{module}-%{version} - -cat known_failures.txt %{SOURCE1} > known_failures-merged.txt +%patch0 -p1 +%patch1 -p1 -b .orig %build -CC="%{__cc}" \ -CFLAGS="%{rpmcflags}" \ -%{__python} setup.py build +# when Cython-generated files are to be rebuilt +# (BR: python-Cython must be enabled then too) +# ln -s Makefile.ext Makefile + +# must be exported to work (py*_build macro is not single invocation) +%{?with_system_libev:export LIBEV_EMBED=false} +%{?with_system_c_ares:export CARES_EMBED=false} + +%if %{with python2} +%py_build + +%if %{with tests} +PKGDIR=$(echo $PWD/build-2/lib.*) +cd src/greentest +PYTHONPATH=$PKGDIR %{__python} testrunner.py --config known_failures.py +cd ../.. +%endif +%endif + +%if %{with python3} +%py3_build + +%if %{with tests} +PKGDIR=$(echo $PWD/build-3/lib.*) +cd src/greentest +PYTHONPATH=$PKGDIR %{__python3} testrunner.py --config known_failures.py +cd ../.. +%endif +%endif %install rm -rf $RPM_BUILD_ROOT -%{__python} setup.py install \ - --skip-build \ - --optimize=2 \ - --root=$RPM_BUILD_ROOT + +%{?with_system_libev:export LIBEV_EMBED=false} +%{?with_system_c_ares:export CARES_EMBED=false} + +%if %{with python2} +%py_install %py_postclean +%{__rm} $RPM_BUILD_ROOT%{py_sitedir}/gevent/*.{c,h,pyx} +%{__rm} $RPM_BUILD_ROOT%{py_sitedir}/gevent/libev/*.{c,h,pyx,ppyx} +%endif -%if %{with tests} -cd greentest -PYTHONPATH=.. python testrunner.py --expected ../known_failures-merged.txt -cd .. +%if %{with python3} +%py3_install + +%{__rm} $RPM_BUILD_ROOT%{py3_sitedir}/gevent/*.{c,h,pyx} +%{__rm} $RPM_BUILD_ROOT%{py3_sitedir}/gevent/libev/*.{c,h,pyx,ppyx} %endif %clean rm -rf $RPM_BUILD_ROOT +%if %{with python2} %files %defattr(644,root,root,755) -%doc LICENSE README.rst -%dir %{py_sitedir}/%{module} -%{py_sitedir}/%{module}/*.py[co] -%attr(755,root,root) %{py_sitedir}/%{module}/core.so -%if "%{py_ver}" > "2.4" -%{py_sitedir}/%{module}-%{version}-py%{py_ver}.egg-info +%doc AUTHORS LICENSE NOTICE README.rst TODO +%dir %{py_sitedir}/gevent +%attr(755,root,root) %{py_sitedir}/gevent/_semaphore.so +%attr(755,root,root) %{py_sitedir}/gevent/ares.so +%{py_sitedir}/gevent/*.pxd +%{py_sitedir}/gevent/*.py[co] +%dir %{py_sitedir}/gevent/libev +%attr(755,root,root) %{py_sitedir}/gevent/libev/_corecffi.so +%attr(755,root,root) %{py_sitedir}/gevent/libev/corecext.so +%{py_sitedir}/gevent/libev/libev.pxd +%{py_sitedir}/gevent/libev/*.py[co] +%{py_sitedir}/gevent-%{version}-py%{py_ver}.egg-info +%endif + +%if %{with python3} +%files -n python3-%{module} +%defattr(644,root,root,755) +%doc AUTHORS LICENSE NOTICE README.rst TODO +%dir %{py3_sitedir}/gevent +%attr(755,root,root) %{py3_sitedir}/gevent/_semaphore.cpython-*.so +%attr(755,root,root) %{py3_sitedir}/gevent/ares.cpython-*.so +%{py3_sitedir}/gevent/__pycache__ +%{py3_sitedir}/gevent/*.pxd +%{py3_sitedir}/gevent/*.py +%dir %{py3_sitedir}/gevent/libev +%attr(755,root,root) %{py3_sitedir}/gevent/libev/_corecffi.abi3.so +%attr(755,root,root) %{py3_sitedir}/gevent/libev/corecext.cpython-36m-*.so + +%{py3_sitedir}/gevent/libev/__pycache__ +%{py3_sitedir}/gevent/libev/libev.pxd +%{py3_sitedir}/gevent/libev/*.py +%{py3_sitedir}/gevent-%{version}-py*.egg-info %endif