diff --git a/lang/python-doc-html/distinfo b/lang/python-doc-html/distinfo
index 7824757b6ab6..ceb4bfa81141 100644
--- a/lang/python-doc-html/distinfo
+++ b/lang/python-doc-html/distinfo
@@ -1,25 +1,25 @@
-TIMESTAMP = 1786764719
+TIMESTAMP = 1786765185
SHA256 (python/python-2.7.18-docs-html.tar.bz2) = 20445e9a571cacdd350f702f0980e4dc559b6ff81f1d69affe9b0a862fef2f0e
SIZE (python/python-2.7.18-docs-html.tar.bz2) = 4634932
SHA256 (python/python-2.7.18-docs-text.tar.bz2) = c86f5b5a2bd8f90158523efd350198d6cde7353965ef5a6ca5e54e5174af47f2
SIZE (python/python-2.7.18-docs-text.tar.bz2) = 1631043
-SHA256 (python/python-3.10.20-docs-html.tar.bz2) = c08ec47daa9dad1db008c1e44795a799daab89ba393718698abbcacec9d6f7c5
-SIZE (python/python-3.10.20-docs-html.tar.bz2) = 7329760
-SHA256 (python/python-3.10.20-docs-text.tar.bz2) = e68ae71aee67ac997c0932513eadc9df443606b56dc6458614cd2750e4c93ee9
-SIZE (python/python-3.10.20-docs-text.tar.bz2) = 2673051
+SHA256 (python/python-3.10.21-docs-html.tar.bz2) = ce31b0f22e616608658aa643236e036175452639313db72a463c573510426e5d
+SIZE (python/python-3.10.21-docs-html.tar.bz2) = 7469828
+SHA256 (python/python-3.10.21-docs-text.tar.bz2) = 5edd8129ebe2afd0f73778a48668615c329fa7fbf97632ca7cb60d273ac06069
+SIZE (python/python-3.10.21-docs-text.tar.bz2) = 2689682
SHA256 (python/python-3.11.16-docs-html.tar.bz2) = d1e8daaca02a82a03a9155097241e0a8d402b319fedb81ec947784f198046222
SIZE (python/python-3.11.16-docs-html.tar.bz2) = 8006278
SHA256 (python/python-3.11.16-docs-text.tar.bz2) = 4db72c7775a68f6bffdc59e3add600bc1380658c77664eec6b972f9c1b8df6da
SIZE (python/python-3.11.16-docs-text.tar.bz2) = 2848695
SHA256 (python/python-3.12.14-docs-html.tar.bz2) = 4ceb15bdf46a9cc4d2544164984fbfd9c2fddc29025969187e482994d6e41dee
SIZE (python/python-3.12.14-docs-html.tar.bz2) = 8459739
SHA256 (python/python-3.12.14-docs-text.tar.bz2) = ace61a04b376cd45ce9cb47d13d71cb1c20c86675d0db225345ed67788cf4e4a
SIZE (python/python-3.12.14-docs-text.tar.bz2) = 2918569
SHA256 (python/python-3.13.15-docs-html.tar.bz2) = 99c7cb60c121cd41fb05abdbd0eb0400fa1efb57474fc5c136f904505b563129
SIZE (python/python-3.13.15-docs-html.tar.bz2) = 10655948
SHA256 (python/python-3.13.15-docs-text.tar.bz2) = e727be6351ac4c7567075196df0af4284455e05c2217ca923c361c8093735316
SIZE (python/python-3.13.15-docs-text.tar.bz2) = 3134071
SHA256 (python/python-3.14.7-docs-html.tar.bz2) = d484b784ec35c5776c5ff55f81fa984b5251a38b532b24bb00e43148bd73ffe9
SIZE (python/python-3.14.7-docs-html.tar.bz2) = 11177897
SHA256 (python/python-3.14.7-docs-text.tar.bz2) = 0936adfe558b69767fe749cccbf99d741c4c1bc092d7783aa465b65748d1328a
SIZE (python/python-3.14.7-docs-text.tar.bz2) = 3327933
diff --git a/lang/python310/Makefile b/lang/python310/Makefile
index 7b7886a21998..b1b47a0c8ef2 100644
--- a/lang/python310/Makefile
+++ b/lang/python310/Makefile
@@ -1,161 +1,156 @@
PORTNAME= python
DISTVERSION= ${PYTHON_DISTVERSION}
-PORTREVISION= 4
CATEGORIES= lang python
MASTER_SITES= PYTHON/ftp/python/${DISTVERSION:C/[a-z].*//}
PKGNAMESUFFIX= ${PYTHON_SUFFIX}
DISTNAME= Python-${DISTVERSION}
DIST_SUBDIR= python
PATCH_SITES= https://github.com/python/cpython/commit/
-PATCHFILES= ad4d5ba32af4d80b0dfa2ba9d8203bfb219e60a5.patch:-p1 \
- 591ed890270c5697b013bf637029fb3e6cd2d73e.patch:-p1 \
- c5767a72838a8dda9d6dc5d3558075b055c56bca.patch:-p1 \
- 47128e64f98c3a20271138a98c2922bea2a3ee0e.patch:-p1
MAINTAINER= python@FreeBSD.org
COMMENT= Interpreted object-oriented programming language
WWW= https://www.python.org/
DEPRECATED= Python 3.10 is an old version in the last year of security support, see to it that your favorite ports get updated for newer Python releases in due time
EXPIRATION_DATE=2026-09-30
LICENSE= PSFL
LIB_DEPENDS= libexpat.so:textproc/expat2 \
libffi.so:devel/libffi
USES= compiler:c11 cpe ncurses pathfix pkgconfig \
python:${PYTHON_DISTVERSION:R},env readline shebangfix ssl tar:xz
PATHFIX_MAKEFILEIN= Makefile.pre.in
USE_LDCONFIG= yes
GNU_CONFIGURE= yes
python_CMD= ${PREFIX}/bin/python${PYTHON_DISTVERSION:R}
SHEBANG_FILES= Lib/*.py Lib/*/*.py Lib/*/*/*.py Lib/*/*/*/*.py
SHEBANG_FILES+= Lib/test/ziptestdata/exe_with_z64 \
Lib/test/ziptestdata/exe_with_zip \
Lib/test/ziptestdata/header.sh
DISABLED_EXTENSIONS= _sqlite3 _tkinter _gdbm
CONFIGURE_ARGS+= --enable-shared --without-ensurepip --with-system-expat \
--with-system-ffi
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}
MAKE_ARGS+= INSTALL_SHARED="${INSTALL_LIB}" # Strip shared library
SUB_FILES= pkg-message
SUB_LIST= PYTHON_SUFFIX=${PYTHON_SUFFIX}
PLIST_SUB= ABI=${ABIFLAGS} \
DISTVERSION=${DISTVERSION} \
OSMAJOR=${OSVERSION:C/([0-9]*)[0-9]{5}/\1/} # For plat-freebsd* in pkg-plist. https://bugs.python.org/issue19554
OPTIONS_DEFINE= DEBUG IPV6 LIBMPDEC LTO NLS PYMALLOC
OPTIONS_DEFAULT= LIBMPDEC PYMALLOC
OPTIONS_EXCLUDE_riscv64= LTO
OPTIONS_RADIO= HASH
OPTIONS_RADIO_HASH= FNV SIPHASH
OPTIONS_SUB= yes
LIBMPDEC_DESC= Use libmpdec from ports instead of bundled version
NLS_DESC= Enable gettext support for the locale module
PYMALLOC_DESC= Enable specialized mallocs
HASH_DESC= Hash Algorithm (PEP-456)
FNV_DESC= Modified Fowler-Noll-Vo Algorithm
SIPHASH_DESC= SipHash24 Algorithm
FNV_CONFIGURE_ON= --with-hash-algorithm=fnv
SIPHASH_CONFIGURE_ON= --with-hash-algorithm=siphash24
DEBUG_CONFIGURE_WITH= pydebug
IPV6_CONFIGURE_ENABLE= ipv6
LIBMPDEC_CONFIGURE_ON= --with-system-libmpdec
LIBMPDEC_LIB_DEPENDS= libmpdec.so:math/mpdecimal
LTO_CONFIGURE_ON= --with-lto
# Use CPPFLAGS over CFLAGS due to -I ordering, causing elementtree and pyexpat
# to break in Python 2.7, or preprocessor complaints in Python >= 3.3
# Upstream Issue: https://bugs.python.org/issue6299
NLS_USES= gettext-runtime
NLS_CPPFLAGS= -I${LOCALBASE}/include
NLS_LIBS= -L${LOCALBASE}/lib -lintl
NLS_CONFIGURE_ENV_OFF= ac_cv_lib_intl_textdomain=no ac_cv_header_libintl_h=no
PYMALLOC_CONFIGURE_WITH= pymalloc
.include "${.CURDIR}/Makefile.version"
.include
.if ${PORT_OPTIONS:MDEBUG}
ABIFLAGS:= d${ABIFLAGS}
.endif
.if !empty(ABIFLAGS)
PLIST_FILES+= bin/python${PYTHON_VER}${ABIFLAGS} \
bin/python${PYTHON_VER}${ABIFLAGS}-config \
libdata/pkgconfig/python-${PYTHON_VER}${ABIFLAGS}.pc \
libdata/pkgconfig/python-${PYTHON_VER}${ABIFLAGS}-embed.pc
.endif
# See https://bugs.freebsd.org/115940 and https://bugs.freebsd.org/193650
.if !exists(/usr/bin/ypcat) || defined(WITHOUT_NIS)
PLIST_SUB+= NO_NIS="@comment "
DISABLED_EXTENSIONS+= nis
.else
PLIST_SUB+= NO_NIS=""
.endif
.if ${SSL_DEFAULT:Mlibressl*}
EXTRA_PATCHES+= ${PATCHDIR}/libressl
.endif
post-patch:
# disable the detection of includes and library from libuuid,
# which introduces hidden dependency and breaks build
@${REINPLACE_CMD} -e 's|uuid/uuid.h|ignore_&|' ${WRKSRC}/configure
# disable detection of multiarch as it breaks with clang >= 13, which adds a
# major.minor version number in -print-multiarch output, confusing Python
@${REINPLACE_CMD} -e 's|^\( *MULTIARCH=\).*--print-multiarch.*|\1|' ${WRKSRC}/configure
# Apply DISABLED_EXTENSIONS
@${ECHO_CMD} '*disabled*' > ${WRKSRC}/Modules/Setup.local
. for _module in ${DISABLED_EXTENSIONS}
@${ECHO_CMD} ${_module} >> ${WRKSRC}/Modules/Setup.local
. endfor
post-install:
.if ! ${PORT_OPTIONS:MDEBUG}
${RM} ${STAGEDIR}${PREFIX}/lib/libpython3.so # Upstream Issue: https://bugs.python.org/issue17975
.endif
${LN} -sf libpython${PYTHON_VER}${ABIFLAGS}.so.1.0 ${STAGEDIR}${PREFIX}/lib/libpython${PYTHON_VER}${ABIFLAGS}.so.1
# This code block exists for the qemu-user enabled cross build environment.
# When using this environment in poudriere, CC is not set to the default
# of /usr/bin/cc and a cross-compile toolchain is used. We need to hand
# edit this so that the run time configuration for python matches what the
# FreeBSD base system provides. sbruno 02Aug2017
.if ${CC} == /nxb-bin/usr/bin/cc
@${REINPLACE_CMD} -e 's=/nxb-bin==' \
${STAGEDIR}${PREFIX}/lib/python${PYTHON_VER}/_sysconfigdata_${ABIFLAGS}_freebsd${OSREL:R}_.py
@cd ${WRKSRC} && ${SETENV} LD_LIBRARY_PATH=${WRKSRC} \
./python -E -m compileall -d ${PREFIX}/lib/python${PYTHON_VER} \
${STAGEDIR}${PREFIX}/lib/python${PYTHON_VER}/_sysconfigdata_${ABIFLAGS}_freebsd${OSREL:R}_.py
@cd ${WRKSRC} && ${SETENV} LD_LIBRARY_PATH=${WRKSRC} \
./python -E -O -m compileall -d ${PREFIX}/lib/python${PYTHON_VER} \
${STAGEDIR}${PREFIX}/lib/python${PYTHON_VER}/_sysconfigdata_${ABIFLAGS}_freebsd${OSREL:R}_.py
@${REINPLACE_CMD} -e 's=/nxb-bin==' \
${STAGEDIR}${PREFIX}/lib/python${PYTHON_VER}/config-${PYTHON_VER}${ABIFLAGS}/Makefile
.endif
for i in ${STAGEDIR}${PREFIX}/lib/python${PYTHON_VER}/lib-dynload/*.so; do \
${STRIP_CMD} $$i; done # Strip shared extensions
${INSTALL_DATA} ${WRKSRC}/Tools/gdb/libpython.py \
${STAGEDIR}${PREFIX}/lib/libpython${PYTHON_VER}${ABIFLAGS}.so.1.0-gdb.py
.include
diff --git a/lang/python310/Makefile.version b/lang/python310/Makefile.version
index 4e23b1c8aad9..f39482df3186 100644
--- a/lang/python310/Makefile.version
+++ b/lang/python310/Makefile.version
@@ -1,7 +1,7 @@
# Mk/Uses/python.mk includes this file, don't remove it!
# Do not forget to
# 1. Update python documentation (lang/python-doc-*)
# Run "make -C lang/python-doc-html makesum"
# 2. Remove PORTREVISION in Makefile
-PYTHON_DISTVERSION= 3.10.20
+PYTHON_DISTVERSION= 3.10.21
diff --git a/lang/python310/distinfo b/lang/python310/distinfo
index 953c4661f78c..40e6dc630b98 100644
--- a/lang/python310/distinfo
+++ b/lang/python310/distinfo
@@ -1,11 +1,3 @@
-TIMESTAMP = 1781841473
-SHA256 (python/Python-3.10.20.tar.xz) = de6517421601e39a9a3bc3e1bc4c7b2f239297423ee05e282598c83ec0647505
-SIZE (python/Python-3.10.20.tar.xz) = 19868028
-SHA256 (python/ad4d5ba32af4d80b0dfa2ba9d8203bfb219e60a5.patch) = ab97e1bd4defb39eff9b8c911ce96c481d482df4f2ac86b39a2c25085873bf3c
-SIZE (python/ad4d5ba32af4d80b0dfa2ba9d8203bfb219e60a5.patch) = 4654
-SHA256 (python/591ed890270c5697b013bf637029fb3e6cd2d73e.patch) = c085e97cffd3262e2bea13477e838f799bc6bcc8b9ff5d94185bb6af7e6c5359
-SIZE (python/591ed890270c5697b013bf637029fb3e6cd2d73e.patch) = 5733
-SHA256 (python/c5767a72838a8dda9d6dc5d3558075b055c56bca.patch) = d15c47533fa36472527509a792906afc4e6a562ff2b900ad949d33dc180a045f
-SIZE (python/c5767a72838a8dda9d6dc5d3558075b055c56bca.patch) = 2902
-SHA256 (python/47128e64f98c3a20271138a98c2922bea2a3ee0e.patch) = f975da3bca34d44cdb5b3d6775cbe654404c5e181c4dc7facd30bc66f3054f6b
-SIZE (python/47128e64f98c3a20271138a98c2922bea2a3ee0e.patch) = 2085
+TIMESTAMP = 1786762840
+SHA256 (python/Python-3.10.21.tar.xz) = a0da1e72132e950154eca0f6f47d5db828454700de20e5113667940d81e0db04
+SIZE (python/Python-3.10.21.tar.xz) = 19896516