From: Daniel Dickman Subject: Re: py3.14 To: ports , Theo Buehler , Kurt Mosiejczuk , Landry Breuil Date: Mon, 27 Apr 2026 16:56:23 -0400 Makes sense to me on timing for the update and I'm fine with the update itself and also the updates of ports I maintain. I'm only wondering if it might make sense to have something like the below so that SUBST_VARS replaces python3.13 with a variable? That might make diffs of the packaging list changes easier to review when we do major version updates? Index: Makefile.inc =================================================================== RCS file: /cvs/ports/lang/python/Makefile.inc,v diff -u -p -u -r1.171 Makefile.inc --- Makefile.inc 15 Jan 2026 11:53:46 -0000 1.171 +++ Makefile.inc 27 Apr 2026 20:50:11 -0000 @@ -11,7 +11,8 @@ COMMENT-tests = Python test suite COMMENT-tkinter = Python interface to the Tk graphical toolkit COMMENT-tools = extra tools for Python -VERSION = ${FULL_VERSION:R} +VERSION = ${FULL_VERSION:R} +PYTHON_VERSION = python${VERSION} DISTNAME = Python-${FULL_VERSION} PKGNAME-main = python-${FULL_VERSION} @@ -92,11 +93,11 @@ LIB_DEPENDS-bsddb += databases/db/v4,no_ .else LIB_DEPENDS-bsddb += databases/db/v4 .endif -WANTLIB-bsddb = lib/db4/db>=4 pthread python${VERSION} +WANTLIB-bsddb = lib/db4/db>=4 pthread ${PYTHON_VERSION} LIB_DEPENDS-gdbm = databases/gdbm \ lang/python/${V_SUBDIR},-main -WANTLIB-gdbm = gdbm>=3 pthread python${VERSION} +WANTLIB-gdbm = gdbm>=3 pthread ${PYTHON_VERSION} RUN_DEPENDS-idle = lang/python/${V_SUBDIR},-tkinter \ ${RUN_DEPENDS} @@ -112,7 +113,7 @@ MODTK_VERSION = 8.6 LIB_DEPENDS-tkinter = lang/python/${V_SUBDIR},-main \ ${MODTK_LIB_DEPENDS} -WANTLIB-tkinter = pthread python${VERSION} \ +WANTLIB-tkinter = pthread ${PYTHON_VERSION} \ ${MODTK_WANTLIB} CONFIGURE_STYLE = autoconf @@ -150,7 +151,7 @@ MAKE_FLAGS += CFLAGS_NODIST='-I${LOCALBA FAKE_FLAGS += RANLIB=: PY_PLATFORM = openbsd${OSMAJOR} -SUBST_VARS += FULL_VERSION VERSION_SPEC PY_PLATFORM +SUBST_VARS += PYTHON_VERSION VERSION FULL_VERSION VERSION_SPEC PY_PLATFORM # Python itself is clean, but some dlopen()'d extensions e.g. QtWebKit # require W|X mappings and/or don't have the required landing pads for @@ -182,7 +183,7 @@ ADJ_FILES += ${WRKSRC}/Tools/scripts/2to post-build: perl -pi -e \ - 's@#! */usr/bin/(env +)?python@#!${PREFIX}/bin/python${VERSION}@' \ + 's@#! */usr/bin/(env +)?python@#!${PREFIX}/bin/${PYTHON_VERSION}@' \ ${ADJ_FILES} post-install: @@ -194,22 +195,22 @@ post-install: ${INSTALL_SCRIPT} ${WRKSRC}/idle ${PREFIX}/bin/idle${VERSION} cd ${PREFIX}/bin && ln -sf idle${VERSION} idle${VERSION:R} mv ${PREFIX}/bin/pydoc ${PREFIX}/bin/pydoc2 - @cd ${WRKSRC}; tar -cf - Tools | (cd ${PREFIX}/lib/python${VERSION}; \ + @cd ${WRKSRC}; tar -cf - Tools | (cd ${PREFIX}/lib/${PYTHON_VERSION}; \ tar -xf -) ${INSTALL_SCRIPT} ${WRKSRC}/Tools/scripts/2to3 \ - ${PREFIX}/bin/python${VERSION}-2to3 + ${PREFIX}/bin/${PYTHON_VERSION}-2to3 .else rm -f ${PREFIX}/bin/pip3 # in devel/py-pip .endif if [ -e ${FILESDIR}/EXTERNALLY-MANAGED ]; then \ ${INSTALL_DATA} ${FILESDIR}/EXTERNALLY-MANAGED \ - ${PREFIX}/lib/python${VERSION}/EXTERNALLY-MANAGED; fi # PEP-668 - ${INSTALL_DATA_DIR} ${PREFIX}/share/doc/python${VERSION} + ${PREFIX}/lib/${PYTHON_VERSION}/EXTERNALLY-MANAGED; fi # PEP-668 + ${INSTALL_DATA_DIR} ${PREFIX}/share/doc/${PYTHON_VERSION} ${INSTALL_DATA} ${FILESDIR}/CHANGES.OpenBSD \ - ${PREFIX}/share/doc/python${VERSION}/CHANGES.OpenBSD + ${PREFIX}/share/doc/${PYTHON_VERSION}/CHANGES.OpenBSD ${INSTALL_DATA_DIR} ${PREFIX}/share/gdb/auto-load/usr/local/bin ${INSTALL_SCRIPT} ${WRKSRC}/python-gdb.py \ - ${PREFIX}/share/gdb/auto-load/usr/local/bin/python${VERSION}-gdb.py + ${PREFIX}/share/gdb/auto-load/usr/local/bin/${PYTHON_VERSION}-gdb.py @for i in _hashlib _ssl; do \ if ! [ -r ${PREFIX}/lib/python*/lib-dynload/$$i*.so ]; then echo; \ echo "*** check logs - $$i was not built!"; echo; exit 1; fi; done