git: 7a5f12ca6a82 - main - databases/py-gdbm: convert to USE_PYTHON=pep517

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

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

commit 7a5f12ca6a82f80b6846aa727807cf697d1f5345
Author:     Charlie Li <vishwin@FreeBSD.org>
AuthorDate: 2025-03-12 02:24:07 +0000
Commit:     Charlie Li <vishwin@FreeBSD.org>
CommitDate: 2025-03-12 02:31:08 +0000

    databases/py-gdbm: convert to USE_PYTHON=pep517
    
    PR: 268283
---
 databases/py-gdbm/Makefile                | 27 ++++++++++++++++++++-------
 databases/py-gdbm/files/pyproject.toml.in | 11 +++++++++++
 databases/py-gdbm/files/setup.py          | 21 ++++-----------------
 3 files changed, 35 insertions(+), 24 deletions(-)

diff --git a/databases/py-gdbm/Makefile b/databases/py-gdbm/Makefile
index 380cc4946f3c..3514845816c4 100644
--- a/databases/py-gdbm/Makefile
+++ b/databases/py-gdbm/Makefile
@@ -1,6 +1,6 @@
 PORTNAME=	gdbm
 DISTVERSION=	${PYTHON_DISTVERSION}
-PORTREVISION=	8
+PORTREVISION=	9
 CATEGORIES=	databases python
 MASTER_SITES=	PYTHON/ftp/python/${DISTVERSION}
 PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}
@@ -11,22 +11,35 @@ MAINTAINER=	python@FreeBSD.org
 COMMENT=	Python bindings to the GNU dbm library (Python ${PYTHON_VER})
 
 LICENSE=	PSFL
+LICENSE_FILE=	${WRKDIR}/Python-${DISTVERSION}/LICENSE
 
+BUILD_DEPENDS=	${PYTHON_PKGNAMEPREFIX}setuptools>0:devel/py-setuptools@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}wheel>0:devel/py-wheel@${PY_FLAVOR}
 LIB_DEPENDS=	libgdbm.so:databases/gdbm
 
 USES=		compiler:c11 python tar:xz
-USE_PYTHON=	allflavors autoplist distutils
+USE_PYTHON=	allflavors autoplist pep517
 
-DISTINFO_FILE=	${.CURDIR}/../../lang/python${PYTHON_SUFFIX}/distinfo
-PYDISTUTILS_INSTALLARGS+=	--install-lib ${PYTHONPREFIX_LIBDIR}/lib-dynload
+DISTINFO_FILE=	${PORTSDIR}/lang/python${PYTHON_SUFFIX}/distinfo
 WRKSRC_SUBDIR=	Modules
 
+SUB_LIST+=	DISTVERSION=${DISTVERSION}
+SUB_FILES=	pyproject.toml
+PLIST_FILES=	${PYTHONPREFIX_LIBDIR:S;${PREFIX}/;;}/lib-dynload/_gdbm${PYTHON_EXT_SUFFIX}.so
+
 PORTSCOUT=	ignore:1
 
-post-extract:
-	@${CP} ${FILESDIR}/setup.py ${WRKSRC}/setup.py
+pre-configure:
+	@${CP} ${FILESDIR}/setup.py ${WRKSRC}
+	@${MV} ${WRKDIR}/pyproject.toml ${WRKSRC}
 
 post-install:
-	${STRIP_CMD} ${STAGEDIR}${PYTHON_LIBDIR}/lib-dynload/_gdbm.cpython-${PYTHON_SUFFIX}.so
+	@${STRIP_CMD} ${STAGEDIR}${PYTHONPREFIX_SITELIBDIR}/_gdbm${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/_gdbm${PYTHON_EXT_SUFFIX}.so)
+
+do-test:
+	@${PYTHON_CMD} -c 'import dbm'  # minimal smoke test
 
 .include <bsd.port.mk>
diff --git a/databases/py-gdbm/files/pyproject.toml.in b/databases/py-gdbm/files/pyproject.toml.in
new file mode 100644
index 000000000000..8d32d1e58f3f
--- /dev/null
+++ b/databases/py-gdbm/files/pyproject.toml.in
@@ -0,0 +1,11 @@
+[build-system]
+requires = ["setuptools", "wheel"]
+build-backend = "setuptools.build_meta"
+
+[project]
+name = "gdbm"
+version = "%%DISTVERSION%%"
+description = "GNU dbm extension to Python"
+
+[tool.setuptools]
+packages = []
diff --git a/databases/py-gdbm/files/setup.py b/databases/py-gdbm/files/setup.py
index 0a947466d03e..d6424297d8da 100644
--- a/databases/py-gdbm/files/setup.py
+++ b/databases/py-gdbm/files/setup.py
@@ -1,27 +1,14 @@
 #!/usr/bin/env python
-# To use:
-#       python setup.py install
-#
 
-try:
-    import distutils
-    from distutils import sysconfig
-    from distutils.command.install import install
-    from distutils.core import setup, Extension
-except:
-    raise SystemExit("Distutils problem")
+import sysconfig
+from setuptools import setup, Extension
 
-install.sub_commands = [x for x in install.sub_commands if 'egg' not in x[0]]
-
-prefix = sysconfig.PREFIX
+prefix = sysconfig.get_config_var('prefix')
 inc_dirs = [prefix + "/include"]
 lib_dirs = [prefix + "/lib"]
 libs = ["gdbm"]
 
-setup(name = "gdbm",
-      description = "GDBM Extension to Python",
-
-      ext_modules = [Extension('_gdbm', ['_gdbmmodule.c'],
+setup(ext_modules = [Extension('_gdbm', ['_gdbmmodule.c'],
                                include_dirs = inc_dirs,
                                libraries = libs,
                                library_dirs = lib_dirs)]