Björn Esser 09a261b
# Conditional for release and snapshot builds. Uncomment for release-builds.
Björn Esser 09a261b
%global rel_build 1
Björn Esser 09a261b
Björn Esser 09a261b
# Failsafe backport of Python2-macros for RHEL <= 6
Björn Esser 09a261b
%{!?python_sitelib:	%global python_sitelib		%(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")}
Björn Esser 09a261b
%{!?python_sitearch:	%global python_sitearch		%(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))")}
Björn Esser 09a261b
%{!?python_version:	%global python_version		%(%{__python} -c "import sys; sys.stdout.write(sys.version[:3])")}
Björn Esser 09a261b
%{!?__python2:		%global __python2		%{__python}}
Björn Esser 09a261b
%{!?python2_sitelib:	%global python2_sitelib		%{python_sitelib}}
Björn Esser 09a261b
%{!?python2_sitearch:	%global python2_sitearch	%{python_sitearch}}
Björn Esser 09a261b
%{!?python2_version:	%global python2_version		%{python_version}}
Björn Esser 09a261b
Björn Esser 09a261b
# Settings used for build from snapshots.
Björn Esser 09a261b
%{!?rel_build:%global commit		282578b9ef65aa2ec72153d6eb1fcff5c273a42f}
Björn Esser 09a261b
%{!?rel_build:%global commit_date	20121007}
Björn Esser 09a261b
%{!?rel_build:%global shortcommit	%(c=%{commit};echo ${c:0:7})}
Björn Esser 09a261b
%{!?rel_build:%global gitver		git%{commit_date}-%{shortcommit}}
Björn Esser 09a261b
%{!?rel_build:%global gitrel		.git%{commit_date}.%{shortcommit}}
Björn Esser 09a261b
%{!?rel_build:%global gittar		%{name}-%{version}-%{gitver}.tar.gz}
Björn Esser 09a261b
%{?rel_build: %global gittar		%{name}-%{version}.tar.gz}
Björn Esser 09a261b
Björn Esser 09a261b
# Can we build a Py3-pkg?
Björn Esser 09a261b
%if 0%{?fedora} || 0%{?rhel} >= 8
Björn Esser 09a261b
%global with_python3 1
Björn Esser 09a261b
%endif #0%{?fedora} || 0%{?rhel} >= 8
Björn Esser 09a261b
Björn Esser 09a261b
%global common_description						\
Björn Esser 09a261b
The NGram class extends the Python 'set' class with efficient fuzzy	\
Björn Esser 09a261b
search for members by means of an N-gram similarity measure.  It	\
Björn Esser 09a261b
also has static methods to compare a pair of strings.			\
Björn Esser 09a261b
									\
Björn Esser 09a261b
The N-grams are character based not word-based, and the class does	\
Björn Esser 09a261b
not implement a language model, merely searching for members by		\
Björn Esser 09a261b
string similarity.
Björn Esser 09a261b
Björn Esser 09a261b
%global pypi_name ngram
Björn Esser 09a261b
Björn Esser 09a261b
Name:			python-%{pypi_name}
Björn Esser 09a261b
Version:		3.3.0
Björn Esser 09a261b
Release:		1%{?gitrel}%{?dist}
Björn Esser 09a261b
Summary:		Set-based subclass providing fuzzy search based on N-grams
Björn Esser 09a261b
Björn Esser 09a261b
License:		LGPLv3+
Björn Esser 09a261b
URL:			https://github.com/gpoulter/%{name}
Björn Esser 09a261b
# Sources for release-builds.
Björn Esser 09a261b
%{?rel_build:Source0:	%{url}/archive/%{version}.tar.gz#/%{gittar}}
Björn Esser 09a261b
# Sources for snapshot-builds.
Björn Esser 09a261b
%{!?rel_build:Source0:	%{url}/archive/%{commit}.tar.gz#/%{gittar}}
Björn Esser 09a261b
Björn Esser 09a261b
BuildArch:		noarch
Björn Esser 09a261b
Björn Esser 09a261b
BuildRequires:		python-nose
Björn Esser 09a261b
BuildRequires:		python2-devel
Björn Esser 09a261b
Björn Esser 09a261b
%if 0%{?rhel} && 0%{?rhel} <= 6
Björn Esser 09a261b
BuildRequires:		python-argparse
Björn Esser 09a261b
Björn Esser 09a261b
Requires:		python-argparse
Björn Esser 09a261b
%endif #0%{?rhel} && 0%{?rhel} <= 6
Björn Esser 09a261b
Björn Esser 09a261b
%description
Björn Esser 09a261b
%{common_description}
Björn Esser 09a261b
Björn Esser 09a261b
Björn Esser 09a261b
%package doc
Björn Esser 09a261b
Summary:		Documentation-files for %{name}
Björn Esser 09a261b
Björn Esser 09a261b
# On RHEL <= 6 we need sphinx-10-build from EPEL.
Björn Esser 09a261b
%if 0%{?fedora} || 0%{?rhel} >= 7
Björn Esser 09a261b
BuildRequires:		python-sphinx
Björn Esser 09a261b
%else #0%{?fedora} || 0%{?rhel} >= 7
Björn Esser 09a261b
BuildRequires:		python-sphinx10
Björn Esser 09a261b
%endif #0%{?fedora} || 0%{?rhel} >= 7
Björn Esser 09a261b
Björn Esser 09a261b
%description doc
Björn Esser 09a261b
This package contains the documentation-files for %{name}.
Björn Esser 09a261b
Björn Esser 09a261b
Björn Esser 09a261b
%if 0%{?with_python3}
Björn Esser 09a261b
%package -n python3-%{pypi_name}
Björn Esser 09a261b
Summary:		Set-based subclass providing fuzzy search based on N-grams
Björn Esser 09a261b
Björn Esser 09a261b
BuildRequires:		python3-devel
Björn Esser 09a261b
BuildRequires:		python3-nose
Björn Esser 09a261b
Björn Esser 09a261b
%description -n python3-%{pypi_name}
Björn Esser 09a261b
%{common_description}
Björn Esser 09a261b
%endif #0%{?with_python3}
Björn Esser 09a261b
Björn Esser 09a261b
Björn Esser 09a261b
%prep
Björn Esser 09a261b
%setup -q%{!?rel_build:n %{name}-%{commit}}
Björn Esser 09a261b
rm -rf *%{pypi_name}*.egg-info
Björn Esser 09a261b
Björn Esser 09a261b
# On RHEL <= 6 we need sphinx-10-build from EPEL.
Björn Esser 09a261b
%if 0%{?rhel} && 0%{?rhel} <= 6
Björn Esser 09a261b
sed -i -e 's!sphinx-build$!%{_bindir}/sphinx-1.0-build!' docs/Makefile
Björn Esser 09a261b
%endif #0%{?rhel} && 0%{?rhel} <= 6
Björn Esser 09a261b
Björn Esser 09a261b
# Fix path to script in testsuite.
Björn Esser 09a261b
sed -i -e 's!csvjoin.py!scripts/&!g' tests/test_csvjoin.py
Björn Esser 09a261b
Björn Esser 09a261b
%if 0%{?with_python3}
Björn Esser 09a261b
rm -rf %{py3dir}
Björn Esser 09a261b
cp -a . %{py3dir}
Björn Esser 09a261b
%endif #0%{?with_python3}
Björn Esser 09a261b
Björn Esser 09a261b
Björn Esser 09a261b
%build
Björn Esser 09a261b
%{__python2} setup.py build
Björn Esser 09a261b
Björn Esser 09a261b
# Build the autodocs.
Björn Esser 09a261b
pushd docs
Björn Esser 09a261b
make %{?_smp_mflags} html
Björn Esser 09a261b
rm -f _build/html/.buildinfo
Björn Esser 09a261b
find _build/html -type f -print0 | xargs -0 sed -i -e 's!\r$!!'
Björn Esser 09a261b
popd
Björn Esser 09a261b
Björn Esser 09a261b
# Build the Python3-version.
Björn Esser 09a261b
%if 0%{?with_python3}
Björn Esser 09a261b
pushd %{py3dir}
Björn Esser 09a261b
%{__python3} setup.py build
Björn Esser 09a261b
popd
Björn Esser 09a261b
%endif #0%{?with_python3}
Björn Esser 09a261b
Björn Esser 09a261b
Björn Esser 09a261b
%install
Björn Esser 09a261b
# Prefer the scripts in %%{_bindir} from Python2-pkg.
Björn Esser 09a261b
%if 0%{?with_python3}
Björn Esser 09a261b
pushd %{py3dir}
Björn Esser 09a261b
%{__python3} setup.py install -O1 --skip-build --root %{buildroot}
Björn Esser 09a261b
rm -f %{buildroot}%{_bindir}/*
Björn Esser 09a261b
popd
Björn Esser 09a261b
%endif #0%{?with_python3}
Björn Esser 09a261b
Björn Esser 09a261b
%{__python2} setup.py install -O1 --skip-build --root %{buildroot}
Björn Esser 09a261b
Björn Esser 09a261b
# Fixup the hashbang in Python-scripts.
Björn Esser 09a261b
# Remove the file-ext from Python-scripts.
Björn Esser 09a261b
for _file in %{buildroot}/%{_bindir}/*
Björn Esser 09a261b
do
Björn Esser 09a261b
  _new="`echo ${_file} | sed -e 's!.py$!!'`"
Björn Esser 09a261b
  sed -e '1s@^#!.*python$@#!%{__python2}@' < ${_file} > ${_new} &&	\
Björn Esser 09a261b
  chmod 0755 ${_new} &&							\
Björn Esser 09a261b
  touch -r ${_file} ${_new} &&						\
Björn Esser 09a261b
  rm -f ${_file}
Björn Esser 09a261b
done
Björn Esser 09a261b
Björn Esser 09a261b
Björn Esser 09a261b
%check
Björn Esser 09a261b
export PYTHONPATH="`pwd`"
Björn Esser 09a261b
nosetests -v
Björn Esser 09a261b
Björn Esser 09a261b
%if 0%{?with_python3}
Björn Esser 09a261b
pushd %{py3dir}
Björn Esser 09a261b
export PYTHONPATH="`pwd`"
Björn Esser 09a261b
nosetests-%{python3_version} -v
Björn Esser 09a261b
popd
Björn Esser 09a261b
%endif #0%{?with_python3}
Björn Esser 09a261b
 
Björn Esser 09a261b
%files
Björn Esser 09a261b
%doc COPYING* README
Björn Esser 09a261b
%{_bindir}/csvjoin
Björn Esser 09a261b
%{python2_sitelib}/%{pypi_name}.py*
Björn Esser 09a261b
%{python2_sitelib}/%{pypi_name}-%{version}-py%{python2_version}.egg-info
Björn Esser 09a261b
Björn Esser 09a261b
%files doc
Björn Esser 09a261b
%doc COPYING* README docs/_build/html
Björn Esser 09a261b
Björn Esser 09a261b
%if 0%{?with_python3}
Björn Esser 09a261b
%files -n python3-%{pypi_name}
Björn Esser 09a261b
%doc COPYING* README
Björn Esser 09a261b
%{python3_sitelib}/__pycache__/%{pypi_name}.cpython-%(echo %{python3_version} | sed -e 's!\.!!g').py?
Björn Esser 09a261b
%{python3_sitelib}/%{pypi_name}.py*
Björn Esser 09a261b
%{python3_sitelib}/%{pypi_name}-%{version}-py%{python3_version}.egg-info
Björn Esser 09a261b
%endif #0%{?with_python3}
Björn Esser 09a261b
Björn Esser 09a261b
Björn Esser 09a261b
%changelog
Björn Esser 09a261b
* Fri May 09 2014 Björn Esser <bjoern.esser@gmail.com> - 3.3.0-1
Björn Esser 09a261b
- initial rpm release (#1096188)