From: Elan Ruusamäe Date: Sat, 1 Oct 2016 19:12:52 +0000 (+0300) Subject: build python2/python3 versions X-Git-Tag: auto/th/apache-mod_wsgi-4.5.7-1~3 X-Git-Url: http://git.pld-linux.org/?p=packages%2Fapache-mod_wsgi.git;a=commitdiff_plain;h=1e85a36c71aeeffec420a9964fac167bf0606a67 build python2/python3 versions see devel-en thread about naming used http://lists.pld-linux.org/mailman/pipermail/pld-devel-en/2016-October/025148.html --- diff --git a/apache-mod_wsgi.spec b/apache-mod_wsgi.spec index 8768a65..ad2ed29 100644 --- a/apache-mod_wsgi.spec +++ b/apache-mod_wsgi.spec @@ -1,11 +1,11 @@ # TODO: -# - build py2 and py3 variants both? # - add -n mod_wsgi-express package # https://github.com/GrahamDumpleton/mod_wsgi#installation-into-python # # Conditional build: -%bcond_with python3 # use CPython 3.x +%bcond_without python2 # mod_wsgi for CPython 2.x +%bcond_without python3 # mod_wsgi for CPython 3.x %define mod_name wsgi %define apxs /usr/sbin/apxs @@ -13,7 +13,7 @@ Summary: WSGI interface for the Apache Web server Summary(pl.UTF-8): Interfejs WSGI dla serwera WWW Apache Name: apache-mod_%{mod_name} Version: 4.5.7 -Release: 0.1 +Release: 0.2 License: Apache Group: Networking/Daemons Source0: https://github.com/GrahamDumpleton/mod_wsgi/archive/%{version}/mod_%{mod_name}-%{version}.tar.gz @@ -25,21 +25,13 @@ BuildRequires: apache-devel >= 2.0.52-7 BuildRequires: apr-devel >= 1:1.0.0 BuildRequires: autoconf BuildRequires: automake -%if %{with python3} -BuildRequires: python3-devel -%else +%if %{with python2} BuildRequires: python-devel >= 2.3 %endif -BuildRequires: rpmbuild(macros) >= 1.268 -Requires: apache(modules-api) = %{apache_modules_api} -Requires: apr >= 1:1.0.0 %if %{with python3} -Requires: python3-modules -%else -Requires: python-modules +BuildRequires: python3-devel %endif -# http://helpful.knobs-dials.com/index.php/Mod_wsgi_notes#PyEval_AcquireThread:_non-NULL_old_thread_state -Conflicts: apache-mod_python +BuildRequires: rpmbuild(macros) >= 1.268 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n) %define _pkglibdir %(%{apxs} -q LIBEXECDIR 2>/dev/null) @@ -60,41 +52,129 @@ bibliotekę uruchomieniową Apache i ma mniejsze wymagania niż w przypadku używania istniejących adapterów WSGI dla modułu mod_python lub CGI. +%package py2 +Summary: WSGI interface for the Apache Web server +Summary(pl.UTF-8): Interfejs WSGI dla serwera WWW Apache +Group: Networking/Daemons +Requires: apache(modules-api) = %{apache_modules_api} +Requires: apr >= 1:1.0.0 +Requires: python-modules +Conflicts: %{name} < 4.5.7-0.2 +# http://helpful.knobs-dials.com/index.php/Mod_wsgi_notes#PyEval_AcquireThread:_non-NULL_old_thread_state +Conflicts: apache-mod_python + +%description py2 +The mod_wsgi adapter is an Apache module that provides a WSGI +compliant interface for hosting Python based web applications within +Apache. The adapter is written completely in C code against the Apache +C runtime and for hosting WSGI applications within Apache has a lower +overhead than using existing WSGI adapters for mod_python or CGI. + +%description py2 -l pl.UTF-8 +Adapter mod_wsgi jest modułem udostępniającym interfejs WSGI dla +aplikacji WWW napisanych w języku Python i osadzonych w serwerze +Apache. Adapter jest w całości napisany w języku C w oparciu o +bibliotekę uruchomieniową Apache i ma mniejsze wymagania niż w +przypadku używania istniejących adapterów WSGI dla modułu mod_python +lub CGI. + +%package py3 +Summary: WSGI interface for the Apache Web server +Summary(pl.UTF-8): Interfejs WSGI dla serwera WWW Apache +Group: Networking/Daemons +Requires: apache(modules-api) = %{apache_modules_api} +Requires: apr >= 1:1.0.0 +Requires: python3-modules +Conflicts: %{name} < 4.5.7-0.2 +# http://helpful.knobs-dials.com/index.php/Mod_wsgi_notes#PyEval_AcquireThread:_non-NULL_old_thread_state +Conflicts: apache-mod_python3 + +%description py3 +The mod_wsgi adapter is an Apache module that provides a WSGI +compliant interface for hosting Python based web applications within +Apache. The adapter is written completely in C code against the Apache +C runtime and for hosting WSGI applications within Apache has a lower +overhead than using existing WSGI adapters for mod_python or CGI. + +%description py3 -l pl.UTF-8 +Adapter mod_wsgi jest modułem udostępniającym interfejs WSGI dla +aplikacji WWW napisanych w języku Python i osadzonych w serwerze +Apache. Adapter jest w całości napisany w języku C w oparciu o +bibliotekę uruchomieniową Apache i ma mniejsze wymagania niż w +przypadku używania istniejących adapterów WSGI dla modułu mod_python +lub CGI. + %prep %setup -q -n mod_%{mod_name}-%{version} %build %{__aclocal} %{__autoconf} + +# doesn't support out of tree builds, so we just build twice +%if %{with python2} %configure \ -%if %{with python3} - --with-python=%{__python3} \ -%else --with-python=%{__python} \ + --with-apxs=%{apxs} +%{__make} +%{__make} install DESTDIR=$(pwd)/py2 +%{__make} clean %endif + +%if %{with python3} +%configure \ + --with-python=%{__python3} \ --with-apxs=%{apxs} +%{__make} +%{__make} install DESTDIR=$(pwd)/py3 +%{__make} clean +%endif %install rm -rf $RPM_BUILD_ROOT install -d $RPM_BUILD_ROOT{%{_pkglibdir},%{_sysconfdir}} -%{__make} install \ - DESTDIR=$RPM_BUILD_ROOT - -cp -p %{SOURCE1} $RPM_BUILD_ROOT%{_sysconfdir}/61_mod_wsgi.conf +%if %{with python2} +cp -a py2/* $RPM_BUILD_ROOT +mv $RPM_BUILD_ROOT%{_pkglibdir}/mod_%{mod_name}{,-py2}.so +sed -e 's/mod_wsgi.so/mod_wsgi-py2.so/' %{SOURCE1} > $RPM_BUILD_ROOT%{_sysconfdir}/61_mod_wsgi-py2.conf +%endif +%if %{with python3} +cp -a py3/* $RPM_BUILD_ROOT +mv $RPM_BUILD_ROOT%{_pkglibdir}/mod_%{mod_name}{,-py3}.so +sed -e 's/mod_wsgi.so/mod_wsgi-py3.so/' %{SOURCE1} > $RPM_BUILD_ROOT%{_sysconfdir}/61_mod_wsgi-py3.conf +%endif %clean rm -rf $RPM_BUILD_ROOT -%post +%post py2 %service -q httpd restart -%postun +%postun py2 if [ "$1" = "0" ]; then %service -q httpd restart fi -%files +%post py3 +%service -q httpd restart + +%postun py3 +if [ "$1" = "0" ]; then + %service -q httpd restart +fi + +%if %{with python2} +%files py2 %defattr(644,root,root,755) %doc README.rst CREDITS.rst -%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/*_mod_%{mod_name}.conf -%attr(755,root,root) %{_pkglibdir}/mod_%{mod_name}.so +%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/*_mod_%{mod_name}-py2.conf +%attr(755,root,root) %{_pkglibdir}/mod_%{mod_name}-py2.so +%endif + +%if %{with python3} +%files py3 +%defattr(644,root,root,755) +%doc README.rst CREDITS.rst +%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/*_mod_%{mod_name}-py3.conf +%attr(755,root,root) %{_pkglibdir}/mod_%{mod_name}-py3.so +%endif