diff --git a/.gitignore b/.gitignore index e69de29..429946d 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1 @@ +/release_v2.20.tar.gz diff --git a/pycparser-0.91.1-remove-relative-sys-path.py b/pycparser-0.91.1-remove-relative-sys-path.py new file mode 100644 index 0000000..20fcb06 --- /dev/null +++ b/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/pycparser-unbundle-ply.patch b/pycparser-unbundle-ply.patch new file mode 100644 index 0000000..0f0cd6b --- /dev/null +++ b/pycparser-unbundle-ply.patch @@ -0,0 +1,51 @@ +diff --git a/pycparser/c_lexer.py b/pycparser/c_lexer.py +index 045d24e..9b3cbf2 100644 +--- a/pycparser/c_lexer.py ++++ b/pycparser/c_lexer.py +@@ -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 --git a/pycparser/c_parser.py b/pycparser/c_parser.py +index 744ede8..50156a3 100644 +--- a/pycparser/c_parser.py ++++ b/pycparser/c_parser.py +@@ -8,7 +8,7 @@ + #------------------------------------------------------------------------------ + import re + +-from .ply import yacc ++from ply import yacc + + from . import c_ast + from .c_lexer import CLexer +diff --git a/setup.py b/setup.py +index 6dce89c..b3dbfb4 100644 +--- a/setup.py ++++ b/setup.py +@@ -8,6 +8,8 @@ except ImportError: + from distutils.command.install import install as _install + from distutils.command.sdist import sdist as _sdist + ++import ply ++ + + def _run_build_tables(dir): + from subprocess import check_call +@@ -60,7 +62,8 @@ setup( + 'Programming Language :: Python :: 3.6', + ], + python_requires=">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", +- packages=['pycparser', 'pycparser.ply'], ++ packages=['pycparser'], ++ install_requires=['ply==' + ply.__version__], + package_data={'pycparser': ['*.cfg']}, + cmdclass={'install': install, 'sdist': sdist}, + ) diff --git a/python-pycparser.spec b/python-pycparser.spec new file mode 100644 index 0000000..a5cbddf --- /dev/null +++ b/python-pycparser.spec @@ -0,0 +1,218 @@ +%bcond_without tests + +Name: python-pycparser +Summary: C parser and AST generator written in Python +Version: 2.20 +Release: 8%{?dist} +License: BSD +URL: http://github.com/eliben/pycparser +Source0: %{url}/archive/release_v%{version}.tar.gz +Source1: pycparser-0.91.1-remove-relative-sys-path.py + +# 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. +# It also ensures that pycparser uses the same YACC __tabversion__ as ply +# package to prevent "yacc table file version is out of date" problem. +Patch100: pycparser-unbundle-ply.patch + +BuildArch: noarch + +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-ply + +# for unit tests +%if %{with tests} +BuildRequires: cpp +%endif + +%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. + +%package -n python3-pycparser +Summary: %{summary} +%{?python_provide:%python_provide python3-pycparser} + +%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. + +%prep +%autosetup -p1 -n pycparser-release_v%{version} + +# remove embedded copy of ply +rm -r pycparser/ply + +# Remove relative sys.path from the examples +%{python3} %{SOURCE1} examples + +%build +%py3_build +pushd build/lib/pycparser +%{python3} _build_tables.py +popd + +%install +%py3_install + +%check +%if %{with tests} +%{python3} tests/all_tests.py +%endif + +%files -n python3-pycparser +%license LICENSE +%doc examples +%{python3_sitelib}/pycparser/ +%{python3_sitelib}/pycparser-*.egg-info/ + +%changelog +* Fri Jul 22 2022 Fedora Release Engineering - 2.20-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Mon Jun 13 2022 Python Maint - 2.20-7 +- Rebuilt for Python 3.11 + +* Fri Jan 21 2022 Fedora Release Engineering - 2.20-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Tue Jul 27 2021 Fedora Release Engineering - 2.20-5 +- Second attempt - Rebuilt for + https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Wed Jun 02 2021 Python Maint - 2.20-4 +- Rebuilt for Python 3.10 + +* Wed Jan 27 2021 Fedora Release Engineering - 2.20-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Wed Jul 29 2020 Fedora Release Engineering - 2.20-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Fri Jun 05 2020 Miro Hrončok - 2.20-1 +- Update to 2.20 (#1810349) + +* Sat May 23 2020 Miro Hrončok - 2.19-3 +- Rebuilt for Python 3.9 + +* Thu Jan 30 2020 Fedora Release Engineering - 2.19-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Fri Nov 08 2019 Lumír Balhar - 2.19-1 +- New usptream version 2.19 + +* Sun Oct 20 2019 Miro Hrončok - 2.14-23 +- Subpackage python2-ply has been removed + See https://fedoraproject.org/wiki/Changes/Mass_Python_2_Package_Removal + +* Thu Oct 03 2019 Miro Hrončok - 2.14-22 +- Rebuilt for Python 3.8.0rc1 (#1748018) + +* Thu Aug 15 2019 Miro Hrončok - 2.14-21 +- Rebuilt for Python 3.8 + +* Fri Jul 26 2019 Fedora Release Engineering - 2.14-20 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Mon Jun 10 2019 Marcel Plch - 2.14-19 +- Avoid invalid unicode escape sequences in Py3.8 + +* Tue Feb 26 2019 Christian Heimes - 2.14-18 +- Add build dependency on cpp for unit tests +- Add dependency on python-ply version to prevent "yacc table file version is out of date" +- Fixes RHBZ#1668230 + +* Sat Feb 02 2019 Fedora Release Engineering - 2.14-17 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Sat Jul 14 2018 Fedora Release Engineering - 2.14-16 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Fri Jun 15 2018 Miro Hrončok - 2.14-15 +- Rebuilt for Python 3.7 + +* Mon Feb 12 2018 Iryna Shcherbina - 2.14-14 +- Update Python 2 dependency declarations to new packaging standards + (See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3) + +* Fri Feb 09 2018 Fedora Release Engineering - 2.14-13 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Wed Sep 27 2017 Troy Dawson - 2.14-12 +- Cleanup spec file conditionals + +* Thu Jul 27 2017 Fedora Release Engineering - 2.14-11 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Sat Feb 11 2017 Fedora Release Engineering - 2.14-10 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Fri Jan 6 2017 Orion Poplawski - 2.14-9 +- Ship python2-pycparser +- Modernize spec + +* Fri Dec 09 2016 Charalampos Stratakis - 2.14-8 +- Rebuild for Python 3.6 + +* Tue Jul 19 2016 Fedora Release Engineering - 2.14-7 +- https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages + +* Fri Jul 8 2016 Tom Callaway - 2.14-6 +- rebuild to update yacctab.py + +* Thu Feb 04 2016 Fedora Release Engineering - 2.14-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Tue Oct 13 2015 Robert Kuska - 2.14-4 +- Rebuilt for Python3.5 rebuild + +* Tue Jul 14 2015 Stephen Gallagher - 2.14-3 +- Rebuild alongside python-ply 3.6 + +* Thu Jun 18 2015 Fedora Release Engineering - 2.14-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* 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 diff --git a/sources b/sources new file mode 100644 index 0000000..4789666 --- /dev/null +++ b/sources @@ -0,0 +1 @@ +SHA512 (release_v2.20.tar.gz) = d2dc48727750ec0a80d5e3b0c9fba390c3647416a3e18cad59429edb9f55d043c7695c52301b037c93af5d96ffc85fcba7cd54d376abdb89e973759c59fa189d