git: b4529dc74457 - main - x11-toolkits/py-tkinter: convert to USE_PYTHON=pep517

From: Charlie Li <vishwin_at_FreeBSD.org>
Date: Wed, 12 Mar 2025 02:37:12 UTC
The branch main has been updated by vishwin:

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

commit b4529dc74457f6c0db0692aee8976b89a52aae5d
Author:     Charlie Li <vishwin@FreeBSD.org>
AuthorDate: 2025-03-12 02:34:18 +0000
Commit:     Charlie Li <vishwin@FreeBSD.org>
CommitDate: 2025-03-12 02:35:51 +0000

    x11-toolkits/py-tkinter: convert to USE_PYTHON=pep517
    
    Note USES=tk limited to 8.6; 9.0 support is not expected until Python 3.14
    
    PR: 268283
---
 x11-toolkits/py-tkinter/Makefile                | 36 ++++++++++++++--------
 x11-toolkits/py-tkinter/files/pyproject.toml.in | 11 +++++++
 x11-toolkits/py-tkinter/files/setup.py          | 40 -------------------------
 x11-toolkits/py-tkinter/files/setup.py.in       | 24 +++++++++++++++
 4 files changed, 59 insertions(+), 52 deletions(-)

diff --git a/x11-toolkits/py-tkinter/Makefile b/x11-toolkits/py-tkinter/Makefile
index ed3539dc384b..904493a8ddbb 100644
--- a/x11-toolkits/py-tkinter/Makefile
+++ b/x11-toolkits/py-tkinter/Makefile
@@ -1,34 +1,46 @@
 PORTNAME=	tkinter
 DISTVERSION=	${PYTHON_DISTVERSION}
-PORTREVISION=	9
+PORTREVISION=	10
 CATEGORIES=	x11-toolkits python
 MASTER_SITES=	PYTHON/ftp/python/${DISTVERSION}
 PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}
 DISTNAME=	Python-${DISTVERSION}
+DIST_SUBDIR=	python
 
 MAINTAINER=	python@FreeBSD.org
 COMMENT=	Python bindings to the Tk widget set (Python ${PYTHON_VER})
 
 LICENSE=	PSFL
+LICENSE_FILE=	${WRKDIR}/Python-${DISTVERSION}/LICENSE
 
-PORTSCOUT=	ignore:1
+BUILD_DEPENDS=	${PYTHON_PKGNAMEPREFIX}setuptools>0:devel/py-setuptools@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}wheel>0:devel/py-wheel@${PY_FLAVOR}
 
-USES=		compiler:c11 python tar:xz tk
-USE_PYTHON=	distutils autoplist allflavors
+USES=		compiler:c11 python tar:xz tk:86
+USE_PYTHON=	allflavors autoplist pep517
 
-DIST_SUBDIR=	python
 DISTINFO_FILE=	${PORTSDIR}/lang/python${PYTHON_SUFFIX}/distinfo
 WRKSRC_SUBDIR=	Modules
 
-PYDISTUTILS_INSTALLARGS+=	--install-lib ${PYTHON_LIBDIR}/lib-dynload
+SUB_LIST+=	DISTVERSION=${DISTVERSION} \
+		TK_VER=${TK_VER}
+SUB_FILES=	pyproject.toml \
+		setup.py
+PLIST_FILES=	${PYTHONPREFIX_LIBDIR:S;${PREFIX}/;;}/lib-dynload/_tkinter${PYTHON_EXT_SUFFIX}.so
 
-.include <bsd.port.pre.mk>
+PORTSCOUT=	ignore:1
 
-post-extract:
-	@${SED} -e "s|%%TK_VER%%|${TK_VER}|" ${FILESDIR}/setup.py > ${WRKSRC}/setup.py
+pre-configure:
+	@${MV} ${WRKDIR}/pyproject.toml ${WRKSRC}
+	@${MV} ${WRKDIR}/setup.py ${WRKSRC}
 
 post-install:
-#	${STRIP_CMD} ${STAGEDIR}${PYTHON_LIBDIR}/lib-dynload/_tkinter.cpython-${PYTHON_SUFFIX}.so
-	${STRIP_CMD} ${STAGEDIR}${PYTHON_LIBDIR}/lib-dynload/_tkinter*.so
+	@${STRIP_CMD} ${STAGEDIR}${PYTHONPREFIX_SITELIBDIR}/_tkinter${PYTHON_EXT_SUFFIX}.so
+	# lib-dynload is the expected location
+	@${MKDIR} ${STAGEDIR}${PYTHONPREFIX_LIBDIR}/lib-dynload
+	@(cd ${STAGEDIR}${PYTHONPREFIX_LIBDIR}/lib-dynload && ${LN} -s ../site-packages/_tkinter${PYTHON_EXT_SUFFIX}.so)
+
+do-test:
+	@${PYTHON_CMD} -c 'import tkinter' # minimal smoke test
 
-.include <bsd.port.post.mk>
+.include <bsd.port.mk>
diff --git a/x11-toolkits/py-tkinter/files/pyproject.toml.in b/x11-toolkits/py-tkinter/files/pyproject.toml.in
new file mode 100644
index 000000000000..80772b4b3ff2
--- /dev/null
+++ b/x11-toolkits/py-tkinter/files/pyproject.toml.in
@@ -0,0 +1,11 @@
+[build-system]
+requires = ["setuptools", "wheel"]
+build-backend = "setuptools.build_meta"
+
+[project]
+name = "tkinter"
+version = "%%DISTVERSION%%"
+description = "Tk Extension to Python"
+
+[tool.setuptools]
+packages = []
diff --git a/x11-toolkits/py-tkinter/files/setup.py b/x11-toolkits/py-tkinter/files/setup.py
deleted file mode 100644
index bcf53d093857..000000000000
--- a/x11-toolkits/py-tkinter/files/setup.py
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/usr/bin/env python
-# To use:
-#       python setup.py install
-#
-
-import os, string
-
-try:
-    import distutils
-    from distutils import sysconfig
-    from distutils.command.install import install
-    from distutils.core import setup, Extension
-except:
-    raise SystemExit("Distutils problem")
-
-install.sub_commands = [x for x in install.sub_commands if 'egg' not in x[0]]
-
-tkversion = "%%TK_VER%%"
-prefix = sysconfig.PREFIX
-# Python 1.5 doesn't have os.getenv()?
-x11base = os.environ['LOCALBASE'] or '/usr/X11R6'
-inc_dirs = [prefix + "/include",
-            prefix + "/include/tcl" + tkversion,
-            prefix + "/include/tk" + tkversion,
-            x11base + "/include"]
-lib_dirs = [prefix + "/lib", x11base + "/lib"]
-# use string.replace() for the benefit of Python 1.5 users
-libs = ["tcl" + tkversion.replace(".", ""),
-        "tk" + tkversion.replace(".", ""),
-        "X11"]
-
-setup(name = "Tkinter",
-      description = "Tk Extension to Python",
-
-      ext_modules = [Extension('_tkinter', ['_tkinter.c', 'tkappinit.c'],
-                               define_macros=[('WITH_APPINIT', 1)],
-                               include_dirs = inc_dirs,
-                               libraries = libs,
-                               library_dirs = lib_dirs)]
-      )
diff --git a/x11-toolkits/py-tkinter/files/setup.py.in b/x11-toolkits/py-tkinter/files/setup.py.in
new file mode 100644
index 000000000000..493bf949a682
--- /dev/null
+++ b/x11-toolkits/py-tkinter/files/setup.py.in
@@ -0,0 +1,24 @@
+#!/usr/bin/env python
+
+import sys
+import sysconfig
+from setuptools import setup, Extension
+
+tkversion = "%%TK_VER%%"
+prefix = sysconfig.get_config_var('prefix')
+x11base = sys.prefix or '/usr/X11R6'
+inc_dirs = [prefix + "/include",
+            prefix + "/include/tcl" + tkversion,
+            prefix + "/include/tk" + tkversion,
+            x11base + "/include"]
+lib_dirs = [prefix + "/lib", x11base + "/lib"]
+libs = ["tcl" + tkversion.replace(".", ""),
+        "tk" + tkversion.replace(".", ""),
+        "X11"]
+
+setup(ext_modules = [Extension('_tkinter', ['_tkinter.c', 'tkappinit.c'],
+                               define_macros=[('WITH_APPINIT', 1)],
+                               include_dirs = inc_dirs,
+                               libraries = libs,
+                               library_dirs = lib_dirs)]
+      )