From 9fef4092e56fbb8e17a43427d626323941f1eb02 Mon Sep 17 00:00:00 2001 From: Toshio Kuratomi Date: Thu, 30 Dec 2010 21:07:31 -0800 Subject: [PATCH] - Build for python3 --- python-docutils.spec | 118 ++++++++++++++++++++++++++++++++++++++----- 1 file changed, 104 insertions(+), 14 deletions(-) diff --git a/python-docutils.spec b/python-docutils.spec index eedf3fa..5b7e5b3 100644 --- a/python-docutils.spec +++ b/python-docutils.spec @@ -3,11 +3,15 @@ %{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")} %endif +%if 0%{?fedora} > 12 || 0%{?rhel} > 6 +%global with_python3 1 +%endif + %global srcname docutils Name: python-%{srcname} Version: 0.7 -Release: 1%{?dist} +Release: 2%{?dist} Summary: System for processing plaintext documentation Group: Development/Languages @@ -20,6 +24,10 @@ BuildArch: noarch BuildRequires: python2-devel BuildRequires: python-setuptools +%if 0%{?with_python3} +BuildRequires: python3-devel +BuildRequires: python-tools +%endif Requires: python-imaging Provides: docutils = %{version}-%{release} @@ -36,28 +44,87 @@ Currently, the library supports parsing rST that is in standalone files and PEPs (Python Enhancement Proposals). Work is underway to parse rST from Python inline documentation modules and packages. +%if 0%{?with_python3} +%package -n python3-%{srcname} +Summary: System for processing plaintext documentation for python3 +Group: Development/Languages +# This module is optional and not yet available for python3 +#Requires: python3-imaging + +%description -n python3-%{srcname} +The Docutils project specifies a plaintext markup language, reStructuredText, +which is easy to read and quick to write. The project includes a python +library to parse rST files and transform them into other useful formats such +as HTML, XML, and TeX as well as commandline tools that give the enduser +access to this functionality. + +Currently, the library supports parsing rST that is in standalone files and +PEPs (Python Enhancement Proposals). Work is underway to parse rST from +Python inline documentation modules and packages. + +This package contains the module, ported to run under python3. +%endif # with_python3 + %prep %setup -q -n %{srcname}-%{version} - -# Remove a shebang from one of the library files -sed -i -e '/#! *\/usr\/bin\/.*python.*/{1D}' docutils/readers/python/pynodes.py +# Remove shebang from library files +for file in docutils/_string_template_compat.py docutils/readers/python/pynodes.py ; do +sed -i -e '/#! *\/usr\/bin\/.*/{1D}' $file +done +%if 0%{?with_python3} +rm -rf %{py3dir} +cp -a . %{py3dir} +# This module depends on a python2-only module. It has been removed upstream +# for the pending docutils-0.8 release +rm -rf %{py3dir}/docutils/readers/python/ +rm -rf %{py3dir}/docutils/test/test_readers/test_python/ +sed -i "/docutils.readers.python/d" %{py3dir}/setup.py +%endif %build CFLAGS="$RPM_OPT_FLAGS" %{__python} setup.py build +%if 0%{?with_python3} +pushd %{py3dir} +# For roman.py +2to3 --write extras + +CFLAGS="$RPM_OPT_FLAGS" %{__python3} setup.py build +# Docutils setup.py does this on build but only to the built copy, not to the +# original source. For running the tests afterwards we need to have access to everything +for dir in docutils test tools ; do +rm -rf $dir +cp -pr build/lib/$dir . +done +popd +%endif # with_python3 + %install rm -rf %{buildroot} +# Must do the python3 install first because the scripts in /usr/bin are +# overwritten with every setup.py install (and we want the python2 version +# to be the default for now). +%if 0%{?with_python3} +pushd %{py3dir} +%{__python3} setup.py install --skip-build --root %{buildroot} + +# docutils setup.py runs 2to3 on a copy of the tests and puts it in sitelib. +rm -rf %{buildroot}%{python3_sitelib}/test + +# docutils only installs this if its not already on the system. Due to the +# possibility that a previous version of docutils may be installed, we install +# it manually here. +file=roman.py +extradest=%{python3_sitelib} +fullextradest=%{buildroot}/$extradest +install -D -m 0644 extras/$file $fullextradest/$file +popd +%endif # with_python3 + %{__python} setup.py install --skip-build --root %{buildroot} -for file in %{buildroot}/%{_bindir}/*.py; do - mv $file `dirname $file`/`basename $file .py` -done - -# We want the licenses but don't need this build file -rm -f licenses/docutils.conf - # docutils only installs this if its not already on the system. Due to the # possibility that a previous version of docutils may be installed, we install # it manually here. @@ -66,6 +133,22 @@ extradest=%{python_sitelib} fullextradest=%{buildroot}/$extradest install -D -m 0644 extras/$file $fullextradest/$file +for file in %{buildroot}/%{_bindir}/*.py; do + mv $file `dirname $file`/`basename $file .py` +done + +# We want the licenses but don't need this build file +rm -f licenses/docutils.conf + +%check +python test/alltests.py + +%if 0%{?with_python3} +pushd %{py3dir} +python3 test/alltests.py +popd +%endif + %clean rm -rf %{buildroot} @@ -74,11 +157,18 @@ rm -rf %{buildroot} %doc BUGS.txt COPYING.txt FAQ.txt HISTORY.txt README.txt RELEASE-NOTES.txt %doc THANKS.txt licenses docs tools/editors %{_bindir}/* -%{python_sitelib}/docutils/ -%{python_sitelib}/roman.* -%{python_sitelib}/*egg-info +%{python_sitelib}/* + +%files -n python3-%{srcname} +%defattr(-,root,root,-) +%doc BUGS.txt COPYING.txt FAQ.txt HISTORY.txt README.txt RELEASE-NOTES.txt +%doc THANKS.txt licenses docs tools/editors +%{python3_sitelib}/* %changelog +* Thu Dec 30 2010 Toshio Kuratomi - 0.7-2 +- Build for python3 + * Sun Aug 1 2010 Toshio Kuratomi - 0.7-1 - Update for 0.7 release