git: 2b0251dce16b - main - www/py-html5lib: fix build with newer setuptools

From: Charlie Li <vishwin_at_FreeBSD.org>
Date: Wed, 18 Mar 2026 16:03:45 UTC
The branch main has been updated by vishwin:

URL: https://cgit.FreeBSD.org/ports/commit/?id=2b0251dce16b46466be31b4bc4cd41276d1ab522

commit 2b0251dce16b46466be31b4bc4cd41276d1ab522
Author:     Charlie Li <vishwin@FreeBSD.org>
AuthorDate: 2026-03-12 15:42:47 +0000
Commit:     Charlie Li <vishwin@FreeBSD.org>
CommitDate: 2026-03-18 16:01:03 +0000

    www/py-html5lib: fix build with newer setuptools
    
    Use an upstream pull request [0] to handle ast.Str deprecation/removal, as the existing patch fails:
    
    Traceback (most recent call last):
      File "/usr/local/lib/python3.13t/site-packages/pyproject_hooks/_in_process/_in_process.py", line 389, in <module>
        main()
        ~~~~^^
      File "/usr/local/lib/python3.13t/site-packages/pyproject_hooks/_in_process/_in_process.py", line 373, in main
        json_out["return_val"] = hook(**hook_input["kwargs"])
                                 ~~~~^^^^^^^^^^^^^^^^^^^^^^^^
      File "/usr/local/lib/python3.13t/site-packages/pyproject_hooks/_in_process/_in_process.py", line 143, in get_requires_for_build_wheel
        return hook(config_settings)
      File "/usr/local/lib/python3.13t/site-packages/setuptools/build_meta.py", line 333, in get_requires_for_build_wheel
        return self._get_build_requires(config_settings, requirements=[])
               ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/usr/local/lib/python3.13t/site-packages/setuptools/build_meta.py", line 301, in _get_build_requires
        self.run_setup()
        ~~~~~~~~~~~~~~^^
      File "/usr/local/lib/python3.13t/site-packages/setuptools/build_meta.py", line 520, in run_setup
        super().run_setup(setup_script=setup_script)
        ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/usr/local/lib/python3.13t/site-packages/setuptools/build_meta.py", line 317, in run_setup
        exec(code, locals())
        ~~~~^^^^^^^^^^^^^^^^
      File "<string>", line 96, in <module>
      File "/usr/local/lib/python3.13t/site-packages/setuptools/__init__.py", line 117, in setup
        return distutils.core.setup(**attrs)  # type: ignore[return-value]
               ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^
      File "/usr/local/lib/python3.13t/site-packages/setuptools/_distutils/core.py", line 148, in setup
        _setup_distribution = dist = klass(attrs)
                                     ~~~~~^^^^^^^
      File "/usr/local/lib/python3.13t/site-packages/setuptools/dist.py", line 332, in __init__
        self.metadata.version = self._normalize_version(self.metadata.version)
                                ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
      File "/usr/local/lib/python3.13t/site-packages/setuptools/dist.py", line 368, in _normalize_version
        normalized = str(Version(version))
                         ~~~~~~~^^^^^^^^^
      File "/usr/local/lib/python3.13t/site-packages/packaging/version.py", line 359, in __init__
        match = self._regex.fullmatch(version)
    TypeError: expected string or bytes-like object, got 'Constant'
    
    While here:
    - remove all references to pkg_resources, removed in setuptools 82+
    - switch to USE_PYTHON=pep517
    
    [0] https://github.com/html5lib/html5lib-python/pull/589
    
    PR: 293763
    Approved by: rm (maintainer)
---
 www/py-html5lib/Makefile             | 10 ++++++++--
 www/py-html5lib/distinfo             |  6 +++++-
 www/py-html5lib/files/patch-setup.py | 13 -------------
 3 files changed, 13 insertions(+), 16 deletions(-)

diff --git a/www/py-html5lib/Makefile b/www/py-html5lib/Makefile
index 510b856b2268..0c673849efaf 100644
--- a/www/py-html5lib/Makefile
+++ b/www/py-html5lib/Makefile
@@ -1,10 +1,14 @@
 PORTNAME=	html5lib
 PORTVERSION=	1.1
-PORTREVISION=	1
+PORTREVISION=	2
 CATEGORIES=	www python
 MASTER_SITES=	PYPI
 PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}
 
+PATCH_SITES=	https://github.com/html5lib/html5lib-python/commit/
+PATCHFILES=	b90dafff1bf342d34d539098013d0b9f318c7641.patch:-p1 \
+		2ba10ae9c0852318aee4dfece8cd8b49bfe48682.patch:-p1
+
 MAINTAINER=	rm@FreeBSD.org
 COMMENT=	Python based HTML parser based on the HTML5 spec
 WWW=		https://github.com/html5lib/html5lib-python
@@ -12,11 +16,13 @@ WWW=		https://github.com/html5lib/html5lib-python
 LICENSE=	MIT
 LICENSE_FILE=	${WRKSRC}/LICENSE
 
+BUILD_DEPENDS=	${PYTHON_PKGNAMEPREFIX}setuptools>0:devel/py-setuptools@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}wheel>0:devel/py-wheel@${PY_FLAVOR}
 RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}six>0:devel/py-six@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}webencodings>0:converters/py-webencodings@${PY_FLAVOR}
 
 NO_ARCH=	yes
 USES=		cpe python
-USE_PYTHON=	autoplist distutils
+USE_PYTHON=	autoplist pep517
 
 .include <bsd.port.mk>
diff --git a/www/py-html5lib/distinfo b/www/py-html5lib/distinfo
index e49c5e6d5e3b..469e878ab50a 100644
--- a/www/py-html5lib/distinfo
+++ b/www/py-html5lib/distinfo
@@ -1,3 +1,7 @@
-TIMESTAMP = 1681809284
+TIMESTAMP = 1773329494
 SHA256 (html5lib-1.1.tar.gz) = b2e5b40261e20f354d198eae92afc10d750afb487ed5e50f9c4eaf07c184146f
 SIZE (html5lib-1.1.tar.gz) = 272215
+SHA256 (b90dafff1bf342d34d539098013d0b9f318c7641.patch) = 293065ee2c2592ff2536c43dc1aabb5e2f0753b0f986d26a3075d4650a1628b7
+SIZE (b90dafff1bf342d34d539098013d0b9f318c7641.patch) = 1465
+SHA256 (2ba10ae9c0852318aee4dfece8cd8b49bfe48682.patch) = 8c020776667b58f2306f16861ae3821c7172b564aeacc99fdfbbcf9170f9c9da
+SIZE (2ba10ae9c0852318aee4dfece8cd8b49bfe48682.patch) = 2238
diff --git a/www/py-html5lib/files/patch-setup.py b/www/py-html5lib/files/patch-setup.py
deleted file mode 100644
index 1dea77f968f7..000000000000
--- a/www/py-html5lib/files/patch-setup.py
+++ /dev/null
@@ -1,13 +0,0 @@
---- setup.py.orig	2020-06-22 23:23:02 UTC
-+++ setup.py
-@@ -90,8 +90,8 @@ with open(join(here, "html5lib", "__init__.py"), "rb")
-         if (len(a.targets) == 1 and
-                 isinstance(a.targets[0], ast.Name) and
-                 a.targets[0].id == "__version__" and
--                isinstance(a.value, ast.Str)):
--            version = a.value.s
-+                isinstance(a.value, ast.Constant)):
-+            version = a.value
- 
- setup(name='html5lib',
-       version=version,