git: b7e75ada7e38 - main - databases/py-sqlite3: convert to USE_PYTHON=pep517

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

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

commit b7e75ada7e388c089d7655d78077f81d75cdb070
Author:     Charlie Li <vishwin@FreeBSD.org>
AuthorDate: 2025-03-12 02:32:06 +0000
Commit:     Charlie Li <vishwin@FreeBSD.org>
CommitDate: 2025-03-12 02:32:06 +0000

    databases/py-sqlite3: convert to USE_PYTHON=pep517
    
    PR: 268283
---
 databases/py-sqlite3/Makefile                | 26 +++++++++++++++-----------
 databases/py-sqlite3/files/pyproject.toml.in | 11 +++++++++++
 databases/py-sqlite3/files/setup.py          | 22 ++++------------------
 3 files changed, 30 insertions(+), 29 deletions(-)

diff --git a/databases/py-sqlite3/Makefile b/databases/py-sqlite3/Makefile
index 5fb28c4e7f14..4a21857d9e96 100644
--- a/databases/py-sqlite3/Makefile
+++ b/databases/py-sqlite3/Makefile
@@ -1,6 +1,6 @@
 PORTNAME=	sqlite3
 DISTVERSION=	${PYTHON_DISTVERSION}
-PORTREVISION=	9
+PORTREVISION=	10
 CATEGORIES=	databases python
 MASTER_SITES=	PYTHON/ftp/python/${DISTVERSION}
 PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}
@@ -13,29 +13,33 @@ COMMENT=	Standard Python binding to the SQLite3 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=	libsqlite3.so:databases/sqlite3
 
-PORTSCOUT=	ignore:1
-
 USES=		compiler:c11 python tar:xz
-USE_PYTHON=	autoplist distutils allflavors
+USE_PYTHON=	allflavors autoplist pep517
 
 DISTINFO_FILE=	${PORTSDIR}/lang/python${PYTHON_SUFFIX}/distinfo
 WRKSRC_SUBDIR=	Modules
 
-PYDISTUTILS_INSTALLARGS+=	--install-lib ${PYTHON_LIBDIR}/lib-dynload
+SUB_LIST+=	DISTVERSION=${DISTVERSION}
+SUB_FILES=	pyproject.toml
+PLIST_FILES=	${PYTHONPREFIX_LIBDIR:S;${PREFIX}/;;}/lib-dynload/_sqlite3${PYTHON_EXT_SUFFIX}.so
 
-TESTING_UNSAFE=	ModuleNotFoundError: No module named '_sqlite3'
-
-.include <bsd.port.pre.mk>
+PORTSCOUT=	ignore:1
 
-post-extract:
+pre-configure:
 	@${CP} ${FILESDIR}/setup.py ${WRKSRC}
+	@${MV} ${WRKDIR}/pyproject.toml ${WRKSRC}
 
 post-install:
-	@${STRIP_CMD} ${STAGEDIR}${PYTHON_LIBDIR}/lib-dynload/_sqlite3*.so
+	@${STRIP_CMD} ${STAGEDIR}${PYTHONPREFIX_SITELIBDIR}/_sqlite3${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/_sqlite3${PYTHON_EXT_SUFFIX}.so)
 
 do-test:
 	@${PYTHON_CMD} -c 'import sqlite3'  # minimal smoke test
 
-.include <bsd.port.post.mk>
+.include <bsd.port.mk>
diff --git a/databases/py-sqlite3/files/pyproject.toml.in b/databases/py-sqlite3/files/pyproject.toml.in
new file mode 100644
index 000000000000..366dc626f5a7
--- /dev/null
+++ b/databases/py-sqlite3/files/pyproject.toml.in
@@ -0,0 +1,11 @@
+[build-system]
+requires = ["setuptools", "wheel"]
+build-backend = "setuptools.build_meta"
+
+[project]
+name = "sqlite3"
+version = "%%DISTVERSION%%"
+description = "SQLite 3 extension to Python"
+
+[tool.setuptools]
+packages = []
diff --git a/databases/py-sqlite3/files/setup.py b/databases/py-sqlite3/files/setup.py
index 944c89920852..f18133864cad 100644
--- a/databases/py-sqlite3/files/setup.py
+++ b/databases/py-sqlite3/files/setup.py
@@ -1,21 +1,10 @@
 #!/usr/bin/env python
-# To use:
-#       python setup.py install
-#
 
 import platform
+import sysconfig
+from setuptools import setup, Extension
 
-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]]
-
-prefix = sysconfig.PREFIX
+prefix = sysconfig.get_config_var('prefix')
 inc_dirs = [prefix + "/include", "Modules/_sqlite"]
 lib_dirs = [prefix + "/lib"]
 libs = ["sqlite3"]
@@ -44,10 +33,7 @@ try:
 except AttributeError:
     macros.append(('SQLITE_OMIT_LOAD_EXTENSION', '1'))
 
-setup(name = "sqlite3",
-      description = "SQLite 3 extension to Python",
-
-      ext_modules = [Extension('_sqlite3', sqlite_srcs,
+setup(ext_modules = [Extension('_sqlite3', sqlite_srcs,
                                include_dirs = inc_dirs,
                                libraries = libs,
                                library_dirs = lib_dirs,