Blob Blame History Raw
%global modname grako
%global modfirst %(c=%{modname}; echo ${c:0:1})

Name:           python-%{modname}
Version:        3.18.1
Release:        1%{?dist}
Summary:        Python grammar compiler, EBNF input, PEG/Packrat parser output

License:        BSD
URL:            https://pypi.python.org/pypi/%{modname}/
Source0:        https://pypi.io/packages/source/%{modfirst}/%{modname}/%{modname}-%{version}.tar.gz

BuildArch:      noarch
BuildRequires:  python%{python3_pkgversion}-devel
BuildRequires:  python%{python3_pkgversion}-setuptools
# needed for tests:
BuildRequires:  python%{python3_pkgversion}-pytest

%description
Grako (for "grammar compiler") takes a grammar in a variation of EBNF
as input, and outputs a memoizing PEG/Packrat parser in Python.

%package -n python%{python3_pkgversion}-%{modname}
Summary:        %{summary}
Requires:       python%{python3_pkgversion}-pygraphviz
%{?python_provide:%python_provide python%{python3_pkgversion}-%{modname}}

%description -n python%{python3_pkgversion}-%{modname}
Grako (for "grammar compiler") takes a grammar in a variation of EBNF
as input, and outputs a memoizing PEG/Packrat parser in Python.


%prep
%setup -q -n %{modname}-%{version}

# Edit Makefiles to invoke python3 explicitly, rather than just python.
# This ensures that we run the tests using the python3 interpreter.
find . -name Makefile -exec sed -i 's/python[ \t]/python3 /g' {} +

# Fix Python shebang lines
find -type f -exec sed -i '1s=^#!/usr\(/env\|/bin\)* python[23]\?=#!/usr/bin/python3=' {} +

# Don't package examples/antlr2grako/.ropeproject 
rm -rf examples/antlr2grako/.ropeproject


%build
%py3_build


%install
%py3_install
# install loses the executable permission on bootstrap.py, so fix
chmod a+x %{buildroot}%{python3_sitelib}/%{modname}/bootstrap.py


%check
# make directory needed for bootstrap test
mkdir tmp
make test

# Examples are packaged as documentation, not intended to run in place
# from the doc dir, so they should not be prebuilt. After check, clean
# and remove bytecode.
for e in antlr2grako calc regex
do
  pushd examples/$e
  make clean
  rm -rf __pycache__ */__pycache__
  popd
done


%files -n python%{python3_pkgversion}-%{modname}
%license LICENSE.txt
%doc DESCRIPTION.rst README.md
%doc examples
%{_bindir}/%{modname}
%{python3_sitelib}/%{modname}
%{python3_sitelib}/%{modname}-%{version}-py?.?.egg-info


%changelog
* Fri Dec 16 2016 Eric Smith <brouhaha@fedoraproject.org> 3.18.1-1
- Updated to latest upstream.
- Use find and sed to replace shebang lines in python scripts based on
  http://python-rpm-porting.readthedocs.io/en/latest/applications.html#fixing-shebangs
- Use find and sed to change "python" in Makefiles to "python3".

* Wed Dec 14 2016 Eric Smith <brouhaha@fedoraproject.org> 3.18.0-4
- Moved check section to follow install section in spec.
- Use pushd/popd rather than cd in check section.

* Tue Dec 13 2016 Eric Smith <brouhaha@fedoraproject.org> 3.18.0-3
- Fix dependency on python3-pygraphviz, and move into subpackage.
- Fix shebang lines of examples.
- Clean examples after check.

* Mon Dec 12 2016 Eric Smith <brouhaha@fedoraproject.org> 3.18.0-2
- Add dependency on python3-pygraphviz per package review.
- Add a "mkdir tmp" so diagram test passes.
- Added examples directory as doc.

* Sat Dec 10 2016 Eric Smith <brouhaha@fedoraproject.org> 3.18.0-1
- Updated to latest upstream
- Changes per package review (#1401276).

* Sun Dec 04 2016 Eric Smith <brouhaha@fedoraproject.org> 3.17.0-1
- Initial version.