mirror of
https://github.com/openwrt/packages.git
synced 2026-06-13 17:11:32 +08:00
python-pycparser: bump to 3.0
v3.0 removes the dependency on PLY by rewriting pycparser with a hand-written lexer and recursive-descent parser for C. No API changes or functionality changes - the same AST is produced as before. Other changes: - Drop EOL Python 3.8 and 3.9 support (minimum now 3.10) - Add support for Python 3.14 Since PLY is no longer used: - Remove python-ply from PKG_BUILD_DEPENDS and HOST_BUILD_DEPENDS - Remove +python3-ply from package DEPENDS - Remove 001-use-external-ply.patch (no longer needed) Full release notes: https://github.com/eliben/pycparser/releases/tag/release_v3.00 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Signed-off-by: Alexandru Ardelean <alex@shruggie.ro>
This commit is contained in:
committed by
Alexandru Ardelean
parent
10b8f04e3e
commit
a7f33e7daf
@@ -8,11 +8,11 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=python-pycparser
|
||||
PKG_VERSION:=2.23
|
||||
PKG_VERSION:=3.0
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PYPI_NAME:=pycparser
|
||||
PKG_HASH:=78816d4f24add8f10a06d6f05b4d424ad9e96cfebf68a4ddc99c65c0720d00c2
|
||||
PKG_HASH:=600f49d217304a5902ac3c37e1281c9fe94e4d0489de643a9504c5cdfdfc6b29
|
||||
|
||||
PKG_LICENSE:=BSD-3-Clause
|
||||
PKG_LICENSE_FILES:=LICENSE
|
||||
@@ -20,15 +20,13 @@ PKG_MAINTAINER:=Alexandru Ardelean <ardeleanalex@gmail.com>
|
||||
|
||||
PKG_BUILD_DEPENDS:= \
|
||||
python3/host \
|
||||
python-setuptools/host \
|
||||
python-ply/host # ply==3.10
|
||||
python-setuptools/host
|
||||
HOST_BUILD_DEPENDS:= \
|
||||
python3/host \
|
||||
python-setuptools/host \
|
||||
python-build/host \
|
||||
python-installer/host \
|
||||
python-wheel/host \
|
||||
python-ply/host
|
||||
python-wheel/host
|
||||
|
||||
include ../pypi.mk
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
@@ -43,8 +41,7 @@ define Package/python3-pycparser
|
||||
TITLE:=C parser in Python
|
||||
URL:=https://github.com/eliben/pycparser
|
||||
DEPENDS:= \
|
||||
+python3-light \
|
||||
+python3-ply
|
||||
+python3-light
|
||||
endef
|
||||
|
||||
define Package/python3-pycparser/description
|
||||
|
||||
@@ -1,35 +0,0 @@
|
||||
--- a/pycparser/c_lexer.py
|
||||
+++ b/pycparser/c_lexer.py
|
||||
@@ -8,8 +8,8 @@
|
||||
#------------------------------------------------------------------------------
|
||||
import re
|
||||
|
||||
-from .ply import lex
|
||||
-from .ply.lex import TOKEN
|
||||
+from ply import lex
|
||||
+from ply.lex import TOKEN
|
||||
|
||||
|
||||
class CLexer(object):
|
||||
--- a/pycparser/c_parser.py
|
||||
+++ b/pycparser/c_parser.py
|
||||
@@ -6,7 +6,7 @@
|
||||
# Eli Bendersky [https://eli.thegreenplace.net/]
|
||||
# License: BSD
|
||||
#------------------------------------------------------------------------------
|
||||
-from .ply import yacc
|
||||
+from ply import yacc
|
||||
|
||||
from . import c_ast
|
||||
from .c_lexer import CLexer
|
||||
--- a/setup.py
|
||||
+++ b/setup.py
|
||||
@@ -61,7 +61,7 @@ setup(
|
||||
'Programming Language :: Python :: 3.13',
|
||||
],
|
||||
python_requires=">=3.8",
|
||||
- packages=['pycparser', 'pycparser.ply'],
|
||||
+ packages=['pycparser'],
|
||||
package_data={'pycparser': ['*.cfg']},
|
||||
cmdclass={'install': install, 'sdist': sdist},
|
||||
)
|
||||
Executable
+31
@@ -0,0 +1,31 @@
|
||||
#!/bin/sh
|
||||
|
||||
[ "$1" = "python3-pycparser" ] || exit 0
|
||||
|
||||
python3 - << EOF
|
||||
import sys
|
||||
import pycparser
|
||||
|
||||
# aardelean: yes, it's hardcoded here, hopefully we don't get too many;
|
||||
# but for version 3.0 on pypi.org, pycparser reports 3.00
|
||||
if "3.0" == "$2" and pycparser.__version__ == "3.00":
|
||||
pass
|
||||
elif pycparser.__version__ != "$2":
|
||||
print("Wrong version: " + pycparser.__version__)
|
||||
sys.exit(1)
|
||||
|
||||
# Test basic parsing of a simple C snippet
|
||||
parser = pycparser.CParser()
|
||||
ast = parser.parse("int x = 5;", filename='<none>')
|
||||
assert ast is not None, "Failed to parse simple C code"
|
||||
|
||||
# Verify the AST contains a FileAST node
|
||||
assert isinstance(ast, pycparser.c_ast.FileAST), \
|
||||
f"Expected FileAST, got {type(ast)}"
|
||||
|
||||
# Test parsing a function declaration
|
||||
ast2 = parser.parse("int foo(int a, int b) { return a + b; }", filename='<none>')
|
||||
assert ast2 is not None, "Failed to parse function declaration"
|
||||
|
||||
sys.exit(0)
|
||||
EOF
|
||||
Reference in New Issue
Block a user