diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b4a08b9 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/release_v2.14.tar.gz diff --git a/.python-pycparser.metadata b/.python-pycparser.metadata new file mode 100644 index 0000000..f941e35 --- /dev/null +++ b/.python-pycparser.metadata @@ -0,0 +1 @@ +849ba755b3b93716297a3d0a1b9be5d58314e63d SOURCES/release_v2.14.tar.gz diff --git a/README.md b/README.md deleted file mode 100644 index 98f42b4..0000000 --- a/README.md +++ /dev/null @@ -1,4 +0,0 @@ -The master branch has no content - -Look at the c7 branch if you are working with CentOS-7, or the c4/c5/c6 branch for CentOS-4, 5 or 6 -If you find this file in a distro specific branch, it means that no content has been checked in yet diff --git a/SOURCES/pycparser-0.91.1-remove-relative-sys-path.py b/SOURCES/pycparser-0.91.1-remove-relative-sys-path.py new file mode 100644 index 0000000..20fcb06 --- /dev/null +++ b/SOURCES/pycparser-0.91.1-remove-relative-sys-path.py @@ -0,0 +1,38 @@ +#!/usr/bin/env python + +''' +pycparser examples all contain the following boiler plate code +for running in tree. This script removes them: + +# This is not required if you've installed pycparser into +# your site-packages/ with setup.py +# +sys.path.extend(['.', '..']) +''' + +import sys +import os + +boiler_plate = "sys.path.extend(['.', '..'])\n" +d = sys.argv[1] +for (root, dirs, files) in os.walk(d): + for i in files: + if not i.endswith('.py'): + continue + fname = os.path.join(root, i) + lines = open(fname).readlines() + try: + start = lines.index(boiler_plate) + end = start + except ValueError: + start = None + end = start + if start is not None: + while lines[start-1].startswith('#'): + start -= 1 + + if start is not None and end is not None: + f = open(fname, 'w') + f.writelines(lines[:start]) + f.writelines(lines[end+1:]) + f.close() diff --git a/SOURCES/pycparser-2.10-ply.patch b/SOURCES/pycparser-2.10-ply.patch new file mode 100644 index 0000000..d1e1f53 --- /dev/null +++ b/SOURCES/pycparser-2.10-ply.patch @@ -0,0 +1,38 @@ +diff -up pycparser-release_v2.10/pycparser/c_lexer.py.ply pycparser-release_v2.10/pycparser/c_lexer.py +--- pycparser-release_v2.10/pycparser/c_lexer.py.ply 2013-08-03 07:15:32.000000000 -0600 ++++ pycparser-release_v2.10/pycparser/c_lexer.py 2014-08-20 12:40:48.308461164 -0600 +@@ -9,8 +9,8 @@ + import re + import sys + +-from .ply import lex +-from .ply.lex import TOKEN ++from ply import lex ++from ply.lex import TOKEN + + + class CLexer(object): +diff -up pycparser-release_v2.10/pycparser/c_parser.py.ply pycparser-release_v2.10/pycparser/c_parser.py +--- pycparser-release_v2.10/pycparser/c_parser.py.ply 2013-08-03 07:15:32.000000000 -0600 ++++ pycparser-release_v2.10/pycparser/c_parser.py 2014-08-20 12:40:05.154894980 -0600 +@@ -8,7 +8,7 @@ + #------------------------------------------------------------------------------ + import re + +-from .ply import yacc ++from ply import yacc + + from . import c_ast + from .c_lexer import CLexer +diff -up pycparser-release_v2.10/setup.py.ply pycparser-release_v2.10/setup.py +--- pycparser-release_v2.10/setup.py.ply 2013-08-03 07:15:32.000000000 -0600 ++++ pycparser-release_v2.10/setup.py 2014-08-20 12:40:05.154894980 -0600 +@@ -22,7 +22,7 @@ setup( + classifiers = [ + 'Programming Language :: Python :: 2', + 'Programming Language :: Python :: 3',], +- packages=['pycparser', 'pycparser.ply'], ++ packages=['pycparser'], + package_data={'pycparser': ['*.cfg']}, + ) + diff --git a/SPECS/python-pycparser.spec b/SPECS/python-pycparser.spec new file mode 100644 index 0000000..c5a51bd --- /dev/null +++ b/SPECS/python-pycparser.spec @@ -0,0 +1,156 @@ +%if 0%{?fedora} > 12 +%global with_python3 1 +%else +%{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print (get_python_lib())")} +%endif + +Name: python-pycparser +Summary: C parser and AST generator written in Python +Version: 2.14 +Release: 1%{?dist} +License: BSD +Group: System Environment/Libraries +URL: http://github.com/eliben/pycparser +Source0: http://github.com/eliben/pycparser/archive/release_v%{version}.tar.gz +Source1: pycparser-0.91.1-remove-relative-sys-path.py + +Patch100: pycparser-2.10-ply.patch +# This is Fedora-specific; I don't think we should request upstream to +# remove embedded libraries from their distribuution, when we can remove +# them during packaging. + +BuildArch: noarch + +BuildRequires: python2-devel python-setuptools + +# for unit tests +BuildRequires: dos2unix +BuildRequires: python-ply + +%if 0%{?with_python3} +BuildRequires: python3-devel python3-setuptools +# for unit tests +BuildRequires: python3-ply +%endif # if with_python3 + +Requires: python-ply + +%description +pycparser is a complete parser for the C language, written in pure Python. +It is a module designed to be easily integrated into applications that +need to parse C source code. + +%if 0%{?with_python3} +%package -n python3-pycparser +Summary: C parser and AST generator written in Python +Group: System Environment/Libraries +Requires: python3-ply + +%description -n python3-pycparser +pycparser is a complete parser for the C language, written in pure Python. +It is a module designed to be easily integrated into applications that +need to parse C source code. +%endif # if with_python3 + +%prep +%setup -q -n pycparser-release_v%{version} +%patch100 -p1 -F5 -b .ply + +# remove embedded copy of ply +rm -rf pycparser/ply + +# examples +%{__python} %{SOURCE1} examples +dos2unix LICENSE + +%if 0%{?with_python3} +rm -rf %{py3dir} +cp -a . %{py3dir} +find %{py3dir} -name '*.py' | xargs sed -i '1s|^#!/usr/bin/python|#!%{__python3}|' +%endif # with_python3 + +%build +%{__python} setup.py build +pushd build/lib/pycparser +%{__python} _build_tables.py +popd + +%if 0%{?with_python3} +pushd %{py3dir} +%{__python3} setup.py build +pushd build/lib/pycparser +%{__python3} _build_tables.py +popd +popd +%endif # with_python3 + +%install +%{__python} setup.py install --skip-build --root %{buildroot} + +%if 0%{?with_python3} +pushd %{py3dir} +%{__python3} setup.py install --skip-build --root %{buildroot} +popd +%endif # with_python3 + +%check +%{__python} tests/all_tests.py + +%if 0%{?with_python3} +%{__python3} tests/all_tests.py +pushd %{py3dir} +popd +%endif # with_python3 + +%files +%doc examples LICENSE +%{python_sitelib}/pycparser/ +%{python_sitelib}/pycparser-*.egg-info + +%if 0%{?with_python3} +%files -n python3-pycparser +%{python3_sitelib}/pycparser/ +%{python3_sitelib}/pycparser-*.egg-info +%endif # with_python3 + +%changelog +* Tue Jun 09 2015 Nathaniel McCallum - 2.14-1 +- Update to 2.14 + +* Wed Aug 20 2014 Eric Smith 2.10-1 +- Update to latest upstream. + +* Sat Jun 07 2014 Fedora Release Engineering - 2.09.1-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Mon May 12 2014 Bohuslav Kabrda - 2.09.1-8 +- Rebuilt for https://fedoraproject.org/wiki/Changes/Python_3.4 + +* Sun Aug 04 2013 Fedora Release Engineering - 2.09.1-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Tue Jul 23 2013 Eric Smith 2.09.1-6 +- Added Python 3 support. + +* Mon Jul 22 2013 Eric Smith 2.09.1-5 +- Renumbered Fedora-specific Patch1 to Patch100 +- Added new Patch1 to fix table generation when the build system + already has a python-pycparser package installed. +- Submitted Patch0 and Patch1 as upstream issues. +- Added comments about patches. + +* Sun Jul 21 2013 Eric Smith 2.09.1-4 +- Upstream repository is now on github. +- Fix rpmlint strange-permission complaint. +- Rename patches, Source1 to all start with pycparser-{version}, to + simplify updating patches for future upstream releases. + +* Sun Jul 21 2013 Eric Smith 2.09.1-3 +- Run _build_tables.py to build the lextab.py and yacctab.py; otherwise + they have to be regenerated at runtime for no benefit. + +* Tue Mar 19 2013 Jos de Kloe 2.09.1-2 +- remove the embedded ply code + +* Fri Jan 18 2013 Scott Tsai 2.09.1-1 +- upstream 2.09.1