git: 606487326045 - main - lang/python314: get port ready to ship

From: Matthias Andree <mandree_at_FreeBSD.org>
Date: Sat, 01 Nov 2025 20:12:16 UTC
The branch main has been updated by mandree:

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

commit 60648732604548051b170d9e599e05b870f9d008
Author:     Matthias Andree <mandree@FreeBSD.org>
AuthorDate: 2025-11-01 20:02:17 +0000
Commit:     Matthias Andree <mandree@FreeBSD.org>
CommitDate: 2025-11-01 20:11:56 +0000

    lang/python314: get port ready to ship
    
    claim maintainership on the new port - not doing that with the
    previous commit by wen@ to have a clear distinction who contributed
    what.
    
    - require archivers/zstd since it's part of the Python standard library:
      https://docs.python.org/3.14/whatsnew/3.14.html#whatsnew314-zstandard
    
    - refresh Makefile.pre.in patch
    
    - skip test_gdb without WITH_DEBUG
    
      test_gdb has test_pretty_print, which requires debug symbols.
      Skip it if WITH_DEBUG is not defined.
    
    - drop --with-system-ffi configure option, which is no longer supported
      and its behaviour is now the default
    
    - move sqlite3 extension back into port
      because the separate port fails to build
      (mark the external python:-3.13)
    
    PR:             282176
---
 Mk/Uses/python.mk                          |  2 +-
 Mk/bsd.default-versions.mk                 |  2 +-
 databases/py-sqlite3/Makefile              |  2 +-
 lang/python314/Makefile                    | 18 ++++++++++--------
 lang/python314/files/patch-Makefile.pre.in |  6 +++---
 lang/python314/files/pkg-message.in        |  1 -
 lang/python314/pkg-plist                   |  2 ++
 7 files changed, 18 insertions(+), 15 deletions(-)

diff --git a/Mk/Uses/python.mk b/Mk/Uses/python.mk
index 3000e4e5a118..66be65eba7cf 100644
--- a/Mk/Uses/python.mk
+++ b/Mk/Uses/python.mk
@@ -341,7 +341,7 @@ ZEROREGS_UNSAFE=	yes
 # What Python version and what Python interpreters are currently supported?
 # When adding a version, please keep the comment in
 # Mk/bsd.default-versions.mk in sync.
-_PYTHON_VERSIONS=		3.11 3.12 3.10 2.7 # preferred first
+_PYTHON_VERSIONS=		3.11 3.12 3.14 3.10 2.7 # preferred first
 _PYTHON_PORTBRANCH=		3.11		# ${_PYTHON_VERSIONS:[1]}
 _PYTHON_BASECMD=		${LOCALBASE}/bin/python
 _PYTHON_RELPORTDIR=		lang/python
diff --git a/Mk/bsd.default-versions.mk b/Mk/bsd.default-versions.mk
index a1cc119107d9..f016f1879c02 100644
--- a/Mk/bsd.default-versions.mk
+++ b/Mk/bsd.default-versions.mk
@@ -140,7 +140,7 @@ PYCRYPTOGRAPHY_DEFAULT?=	rust
 .  else
 PYCRYPTOGRAPHY_DEFAULT?=	legacy
 .  endif
-# Possible values: 3.10, 3.11, 3.12
+# Possible values: 3.10, 3.11, 3.12, 3.14
 PYTHON_DEFAULT?=	3.11
 # Possible values: 2.7
 PYTHON2_DEFAULT?=	2.7
diff --git a/databases/py-sqlite3/Makefile b/databases/py-sqlite3/Makefile
index d0b47c51cae6..c54ee0c4efc5 100644
--- a/databases/py-sqlite3/Makefile
+++ b/databases/py-sqlite3/Makefile
@@ -17,7 +17,7 @@ BUILD_DEPENDS=	${PYTHON_PKGNAMEPREFIX}setuptools>0:devel/py-setuptools@${PY_FLAV
 		${PYTHON_PKGNAMEPREFIX}wheel>0:devel/py-wheel@${PY_FLAVOR}
 LIB_DEPENDS=	libsqlite3.so:databases/sqlite3
 
-USES=		compiler:c11 python tar:xz
+USES=		compiler:c11 python:-3.13 tar:xz
 USE_PYTHON=	allflavors autoplist pep517
 
 DISTINFO_FILE=	${PORTSDIR}/lang/python${PYTHON_SUFFIX}/distinfo
diff --git a/lang/python314/Makefile b/lang/python314/Makefile
index 45097519d7bc..41fa3216fe18 100644
--- a/lang/python314/Makefile
+++ b/lang/python314/Makefile
@@ -6,16 +6,17 @@ PKGNAMESUFFIX=	${PYTHON_SUFFIX}
 DISTNAME=	Python-${DISTVERSION}
 DIST_SUBDIR=	python
 
-MAINTAINER=	python@FreeBSD.org
+MAINTAINER=	mandree@FreeBSD.org
 COMMENT=	Interpreted object-oriented programming language
 WWW=		https://www.python.org/
 
 LICENSE=	PSFL
 
-LIB_DEPENDS=	libffi.so:devel/libffi
+LIB_DEPENDS=	libffi.so:devel/libffi \
+		libzstd.so:archivers/zstd
 
 USES=		compiler:c11 cpe ncurses pathfix pkgconfig readline \
-		shebangfix ssl tar:xz
+		shebangfix sqlite ssl tar:xz
 PATHFIX_MAKEFILEIN=	Makefile.pre.in
 USE_LDCONFIG=	yes
 GNU_CONFIGURE=	yes
@@ -30,15 +31,16 @@ PYTHON_VER=		${PYTHON_DISTVERSION:R}
 PYTHON_VERSION=		python${PYTHON_VER}
 PYTHON_SUFFIX=		${PYTHON_VER:S/.//g}
 
-DISABLED_EXTENSIONS=	_sqlite3 _tkinter _gdbm
-CONFIGURE_ARGS+=	--enable-shared --without-ensurepip \
-			--with-system-ffi
+DISABLED_EXTENSIONS=	_tkinter _gdbm
+CONFIGURE_ARGS+=	--enable-shared --without-ensurepip
 CONFIGURE_ENV+=		OPT="" # Null out OPT to respect user CFLAGS and remove optimizations
 
 INSTALL_TARGET=		altinstall						# Don't want cloberring of unprefixed files
 
-TEST_TARGET=		buildbottest
-TEST_ARGS=		TESTOPTS=-j${MAKE_JOBS_NUMBER}
+# TEST_TARGET=		buildbottest # that's the --slow-ci with more resources/longer timeouts
+TEST_TARGET=		test # that's the --fast-ci with tighter timeouts and using less resources
+# TEST_ARGS: test_gdb requires debug symbols for the test_gdb.test_pretty_print test, so skip it unless defined(WITH_DEBUG)
+TEST_ARGS=		TESTOPTS="-j${MAKE_JOBS_NUMBER} ${WITH_DEBUG:U-x test_gdb}"
 
 MAKE_ARGS+=		INSTALL_SHARED="${INSTALL_LIB}"				# Strip shared library
 
diff --git a/lang/python314/files/patch-Makefile.pre.in b/lang/python314/files/patch-Makefile.pre.in
index 7a3acb763099..e5e8bfa7e0e9 100644
--- a/lang/python314/files/patch-Makefile.pre.in
+++ b/lang/python314/files/patch-Makefile.pre.in
@@ -1,4 +1,4 @@
---- Makefile.pre.in.orig	2025-01-15 08:42:56 UTC
+--- Makefile.pre.in.orig	2025-11-01 17:59:00 UTC
 +++ Makefile.pre.in
 @@ -84,7 +84,6 @@ BASECPPFLAGS=	@BASECPPFLAGS@
  OPT=		@OPT@
@@ -30,7 +30,7 @@
  PY_LDFLAGS_NODIST=$(CONFIGURE_LDFLAGS_NODIST) $(LDFLAGS_NODIST)
  PY_LDFLAGS_NOLTO=$(PY_LDFLAGS) $(CONFIGURE_LDFLAGS_NOLTO) $(LDFLAGS_NODIST)
  NO_AS_NEEDED=	@NO_AS_NEEDED@
-@@ -2344,14 +2341,6 @@ bininstall: commoninstall altbininstall
+@@ -2492,14 +2489,6 @@ bininstall: commoninstall altbininstall
  	else true; \
  	fi
  	(cd $(DESTDIR)$(BINDIR); $(LN) -s python$(VERSION)$(EXE) python3$(EXE))
@@ -45,7 +45,7 @@
  	-rm -f $(DESTDIR)$(BINDIR)/python3-config
  	(cd $(DESTDIR)$(BINDIR); $(LN) -s python$(VERSION)-config python3-config)
  	-rm -f $(DESTDIR)$(LIBPC)/python3.pc
-@@ -2798,6 +2787,14 @@ libainstall: all scripts
+@@ -2952,6 +2941,14 @@ libainstall: all scripts
  	$(INSTALL_SCRIPT) $(srcdir)/install-sh $(DESTDIR)$(LIBPL)/install-sh
  	$(INSTALL_SCRIPT) python-config.py $(DESTDIR)$(LIBPL)/python-config.py
  	$(INSTALL_SCRIPT) python-config $(DESTDIR)$(BINDIR)/python$(LDVERSION)-config
diff --git a/lang/python314/files/pkg-message.in b/lang/python314/files/pkg-message.in
index 286359c9f272..d0ccc00761c5 100644
--- a/lang/python314/files/pkg-message.in
+++ b/lang/python314/files/pkg-message.in
@@ -5,7 +5,6 @@ Note that some standard Python modules are provided as separate ports
 as they require additional dependencies. They are available as:
 
 py%%PYTHON_SUFFIX%%-gdbm       databases/py-gdbm@py%%PYTHON_SUFFIX%%
-py%%PYTHON_SUFFIX%%-sqlite3    databases/py-sqlite3@py%%PYTHON_SUFFIX%%
 py%%PYTHON_SUFFIX%%-tkinter    x11-toolkits/py-tkinter@py%%PYTHON_SUFFIX%%
 EOM
 }
diff --git a/lang/python314/pkg-plist b/lang/python314/pkg-plist
index e1199297a862..01ff69efb048 100644
--- a/lang/python314/pkg-plist
+++ b/lang/python314/pkg-plist
@@ -2600,6 +2600,7 @@ lib/python%%XYDOT%%/lib-dynload/_sha1.cpython-%%XY%%%%ABI%%.so
 lib/python%%XYDOT%%/lib-dynload/_sha2.cpython-%%XY%%%%ABI%%.so
 lib/python%%XYDOT%%/lib-dynload/_sha3.cpython-%%XY%%%%ABI%%.so
 lib/python%%XYDOT%%/lib-dynload/_socket.cpython-%%XY%%%%ABI%%.so
+lib/python%%XYDOT%%/lib-dynload/_sqlite3.cpython-%%XY%%.so
 lib/python%%XYDOT%%/lib-dynload/_ssl.cpython-%%XY%%%%ABI%%.so
 lib/python%%XYDOT%%/lib-dynload/_statistics.cpython-%%XY%%%%ABI%%.so
 lib/python%%XYDOT%%/lib-dynload/_struct.cpython-%%XY%%%%ABI%%.so
@@ -2615,6 +2616,7 @@ lib/python%%XYDOT%%/lib-dynload/_testsinglephase.cpython-%%XY%%%%ABI%%.so
 lib/python%%XYDOT%%/lib-dynload/_uuid.cpython-%%XY%%%%ABI%%.so
 lib/python%%XYDOT%%/lib-dynload/_xxtestfuzz.cpython-%%XY%%%%ABI%%.so
 lib/python%%XYDOT%%/lib-dynload/_zoneinfo.cpython-%%XY%%%%ABI%%.so
+lib/python%%XYDOT%%/lib-dynload/_zstd.cpython-%%XY%%%%ABI%%.so
 lib/python%%XYDOT%%/lib-dynload/array.cpython-%%XY%%%%ABI%%.so
 lib/python%%XYDOT%%/lib-dynload/binascii.cpython-%%XY%%%%ABI%%.so
 lib/python%%XYDOT%%/lib-dynload/cmath.cpython-%%XY%%%%ABI%%.so