Created attachment 245824 [details] python-3.13.0a1 - New ports, python-3.13.0a1 test results: == Tests result: FAILURE then FAILURE == 10 slowest tests: - test_tools: 6 min 26 sec - test_smtpnet: 5 min - test_socket: 4 min 15 sec - test_ssl: 1 min 15 sec - test_imaplib: 51.2 sec - test.test_concurrent_futures.test_wait: 47.9 sec - test_signal: 47.0 sec - test_subprocess: 45.1 sec - test.test_multiprocessing_spawn.test_processes: 43.7 sec - test.test_multiprocessing_spawn.test_threads: 42.1 sec 27 tests skipped: test.test_asyncio.test_windows_events test.test_asyncio.test_windows_utils test.test_gdb.test_backtrace test.test_gdb.test_cfunction test.test_gdb.test_cfunction_full test.test_gdb.test_misc test.test_gdb.test_pretty_print test_dbm_gnu test_devpoll test_epoll test_idle test_ioctl test_launcher test_msvcrt test_perf_profiler test_perfmaps test_sqlite3 test_startfile test_tcl test_tkinter test_ttk test_ttk_textonly test_turtle test_winconsoleio test_winreg test_winsound test_wmi 1 test skipped (resource denied): test_zipfile64 2 re-run tests: test.test_concurrent_futures.test_shutdown test_dtrace 1 test failed: test_dtrace 440 tests OK. Total duration: 8 min 19 sec Total tests: run=39,403 failures=17 skipped=1,334 Total test files: run=470/469 failed=1 skipped=27 resource_denied=1 rerun=2 Result: FAILURE then FAILURE *** Error code 2
Created attachment 247766 [details] Update to alpha3 Update to alpha3
Created attachment 248522 [details] python-3.13.0a4 Python-3.13.0 alpha4
Created attachment 249232 [details] Update to 3.13.0 alpha5 Update to 3.13.0 alpha5
Created attachment 249928 [details] Update to 3.13.0a6 Update to alpha6
Created attachment 250546 [details] Update to 3.13.0beta1 Update to python-3.13.0beta1
Created attachment 251261 [details] Update to 3.13.0 beta2 Update to 3.13.0 beta2
Created attachment 252441 [details] Python-3.13.0rc1 Python-3.13.0rc1
Created attachment 253973 [details] Update to 3.13.0rc3 Update to 3.13.0rc3
Created attachment 254094 [details] Update to 3.13.0 release Update to 3.13.0 release
Created attachment 255638 [details] Update to 3.13.1 Update to 3.13.1
When will this be added to the FreeBSD port tree?
Created attachment 257308 [details] Update to 3.13.2 Update to 3.13.2
What exactly prevents the committing of lang/python3.13 as a new port. I do see Wen's attachments but not an initial commit for creating the port. I do need to understand the criteria/policy if any for porting new Python releases. We had python 3.10.0.beta4, 3.10.0rc1, 3.10.0rc2 as ports but do fail to provide actual Python releases for 3.12 and 3.12. What's going on here please? What is the point of failure? I do NOT criticize Wen here, as he is doing a great job by providing port-upgrades for Python in typically less than 5 days. And he is the one providing upgrade attachments. But there is an issue for getting the first (3.x.0 versions) releases in a reasonable timely manner as a port. And yes, upgrading Python default versions looked also more like <fill in a appropriate word yourself> than anything else. But this is another story and still needs to be improved.
Please increase Importance: --- Affects Only Me ---> Affects some people
A commit in branch main references this bug: URL: https://cgit.FreeBSD.org/ports/commit/?id=de7c5ca4a2d40df82a8ca46b37c8b859a412b89c commit de7c5ca4a2d40df82a8ca46b37c8b859a412b89c Author: Charlie Li <vishwin@FreeBSD.org> AuthorDate: 2025-04-05 20:12:38 +0000 Commit: Charlie Li <vishwin@FreeBSD.org> CommitDate: 2025-04-05 20:12:38 +0000 devel/py-wheel044: "temporarily" add The sole purpose of this port is to build setuptools < 70.1.0 under USE_PYTHON=pep517, as a stopgap to allow newer Python distributions/interpreters to land while the setuptools update continues to be worked on. This port will be removed once setuptools is updated. Nothing else is to declare this as a dependency; continue to use devel/py-wheel elsewhere. As of setuptools 70.1.0, bdist_wheel (what setuptools executes as part of ${PEP517_BUILD_CMD} to build the wheel) has moved from wheel to setuptools [0], so once setuptools is updated past said version, consumers should not continue declaring devel/py-wheel in BUILD_DEPENDS unless the package needs functionality beyond what moved into setuptools. [0] https://setuptools.pypa.io/en/latest/history.html#v70-1-0 PR: 271673, 274671 devel/Makefile | 1 + devel/py-wheel044/Makefile (new) | 26 +++++++++ devel/py-wheel044/distinfo (new) | 3 ++ .../files/patch-src_wheel___bdist__wheel.py (new) | 62 ++++++++++++++++++++++ devel/py-wheel044/pkg-descr (new) | 13 +++++ 5 files changed, 105 insertions(+)
A commit in branch main references this bug: URL: https://cgit.FreeBSD.org/ports/commit/?id=8b5ae17d2f43388fade30e266615a9e34bf06abd commit 8b5ae17d2f43388fade30e266615a9e34bf06abd Author: Charlie Li <vishwin@FreeBSD.org> AuthorDate: 2025-04-05 20:45:55 +0000 Commit: Charlie Li <vishwin@FreeBSD.org> CommitDate: 2025-04-05 20:45:55 +0000 devel/py-setuptools: convert to USE_PYTHON=pep517 The previous method of building/bootstrapping setuptools via the built-in distutils module no longer works in Python 3.12+ as it has been removed [0]. Since USE_PYTHON=pep517 has its own bootstrapping process, use this method to build setuptools. This allows newer Python distributions/interpreters to land in the tree, for the purpose of having buildable packages. While here, remove a slew of dead code and adjust WWW [0] https://peps.python.org/pep-0632/ PR: 271673, 274671 devel/py-setuptools/Makefile | 39 ++++++---------------- .../files/easy-install.pth.dist (gone) | 2 -- .../patch-setuptools_package__index.py (gone) | 11 ------ devel/py-setuptools/files/pkg-message.in (gone) | 8 ----- 4 files changed, 10 insertions(+), 50 deletions(-)
Took wen@'s attachment, cleaned it up a bit, posted at review D49680. Feel free to test for any showstoppers. Amongst other new features [0] are experimental free-threaded/Global Interpreter Lock-disabled support and JIT compiler. They are to be exposed but not enabled by default in the port. [0] https://docs.python.org/3/whatsnew/3.13.html
Sorry, but why did 3.13 still not committed to the tree? What we are waiting for? A release for 3.33?
Created attachment 260991 [details] Update to python-3.13.4 Update to 3.13.4
(In reply to wen from comment #19) Could you please just commit this?
(In reply to Konstantin Belousov from comment #20) No. In certain cases this actually doesn't even build. Also not to mention another large swath of packages are ignored because of one package that upstream declared not compatible with this version.
(In reply to Charlie Li from comment #21) Please be much more specific. What are configurations where 'this' (I assume python 3.13 itself) does not build? And please stop repeating the nonsense about py-* packages. The python itself + virtual envs is the use case, and you block this usage, factually blocking FreeBSD usage in important situations Lots of ports break with 3.12, but the earth did not stopped. It was said many times, it is fine to not have all python versions listed in the bsd.default-versions.mk.
*** Bug 287408 has been marked as a duplicate of this bug. ***
review D49680 is updated for 3.13.4. (In reply to Konstantin Belousov from comment #22) The build issues have been resolved, but packaging and possible circular dependency issues persist, particularly when enabling the experimental free-threaded mode. Free-threaded mode will most likely will be a child port since it is effectively a separate distribution: while the same CPython version, the ABIs are not compatible, and they have a few overlapping files thus CONFLICTS_INSTALL. Some logic changes will also need to happen in python.mk to accommodate this. While free-threaded mode and JIT are currently officially experimental, they may not be experimental in future versions, so we need to start accommodating them now. The primary use case and mandate for the Python team has always been CPython itself and the Python package ports. The use of virtual environments on CPython and everything else is secondary. Please remember that many non-Python ports have Python dependencies (examples: anything that builds using meson, ninja, countless desktop programs implemented in other languages that incorporate Python components). From a support perspective, actual nonsense is when we the Python team get reports (formal or not) from those who manage their Python packages outside of ports, like using pip in a virtual environment or not, that we never had any primary semblance of QA over. (related: there is in fact a PEP that expressly disallows pip et al from touching ${LOCALBASE} or ${PREFIX} that we have not implemented yet, but is coming) It is no longer possible to have a new CPython version without specifying it in Mk/ as these ports themselves use the python.mk variables directly and extensively. This was always the goal even prior to my involvement. Anyway, this is more substantial than 3.12 (which itself was substantial). 3.12 still has issues with some of their ports which carry over to this version. For this version, the new big dependency failure is cython: lang/cython 0.29 is declared not supported on 3.13+ by upstream, but we still have many ports depending on it that probably should change to lang/cython3 which is compatible.
(In reply to Charlie Li from comment #24) > Some logic changes will also need to happen in python.mk to accommodate this. While free-threaded mode and JIT are currently officially experimental, they may not be experimental in future versions, so we need to start accommodating them now. Is this something others (like me?) can help with? This seems like a very large change which will need to mature over a few minor releases before it's enabled by default, so I feel like we might have some runway in this space given that the support window for 3.13 has been increased by a half year vs the prior releases.
3.13.5 is now available on phab. Free-threaded/no-GIL mode is a child port as lang/python313t. It took a bit but I think I have the flavour generation logic sorted now, especially for 3.13t since there are now non-numeric comparisons involved. Also managed to eliminate the port LLVM dependency for JIT, as it would have been a circular dependency if the Python port being built is ${PYTHON_DEFAULT}. Proper flavour generation was important since lang/cython is not compatible with this Python version; poudriere was showing invalid flavour rather than ignored before fixing. Just need some further confirmation (anyone can do this part) that packages generally build and package properly under both 3.13 and 3.13t.
A commit in branch main references this bug: URL: https://cgit.FreeBSD.org/ports/commit/?id=ccaff6c14f2078ddc0edcbf26d7ee7e48b80c2a8 commit ccaff6c14f2078ddc0edcbf26d7ee7e48b80c2a8 Author: Charlie Li <vishwin@FreeBSD.org> AuthorDate: 2025-06-19 19:01:45 +0000 Commit: Charlie Li <vishwin@FreeBSD.org> CommitDate: 2025-06-19 19:15:56 +0000 python.mk: prepare handling versions with ABI flags appended Starting Python 3.13 there is an experimental free-threaded mode that effectively warrants a separate distribution from "vanilla" 3.13. This mode includes appends an ABI flag so the resulting version is 3.13t. Some of the logic for comparing versions and generating flavours, amongst others, breaks since "3.13t" is not numeric, so adjust accordingly. Also account for 3.13t being a child port as the difference is one configure flag. To this effect, introduce two new read-only public variables, PYTHON_BASESUFFIX and PYTHON_BASEVER, for cases where the ABI flag in PYTHON_SUFFIX and PYTHON_VER is not warranted. Shift PYTHON_EXT_SUFFIX to use PYTHON_BASESUFFIX. PR: 274671 Event: Kitchener-Waterloo Hackathon 202506 Mk/Uses/python.mk | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-)
A commit in branch main references this bug: URL: https://cgit.FreeBSD.org/ports/commit/?id=b2cf9fac8a5c6bd2c4ae878cf9c57bc72fe9f8f9 commit b2cf9fac8a5c6bd2c4ae878cf9c57bc72fe9f8f9 Author: Charlie Li <vishwin@FreeBSD.org> AuthorDate: 2025-06-19 19:52:56 +0000 Commit: Charlie Li <vishwin@FreeBSD.org> CommitDate: 2025-06-19 19:52:56 +0000 python.mk: move ABI flag removal modifier out of ${_VC} Ugly hack needed by older bmake versions, ie not -CURRENT: : bmake: "/usr/ports/Mk/Uses/python.mk" line 471: Unknown modifier "/" : bmake: "/usr/ports/Mk/Uses/python.mk" line 471: Malformed conditional (!empty(_PYTHON_VERSION_MAXIMUM) && (${_PYTHON_VERSION:${_VC}} > ${_PYTHON_VERSION_MAXIMUM:${_VC}})) Fixes: ccaff6c14f2078ddc0edcbf26d7ee7e48b80c2a8 Reported by: cmt PR: 274671 Event: Kitchener-Waterloo Hackathon 202506 Mk/Uses/python.mk | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-)
A commit in branch main references this bug: URL: https://cgit.FreeBSD.org/ports/commit/?id=4f0eba1efd73e85ccb544708c967bca70ad3e7a6 commit 4f0eba1efd73e85ccb544708c967bca70ad3e7a6 Author: Charlie Li <vishwin@FreeBSD.org> AuthorDate: 2025-06-19 20:09:42 +0000 Commit: Charlie Li <vishwin@FreeBSD.org> CommitDate: 2025-06-19 20:28:47 +0000 python.mk: rename PYTHON_EXT_SUFFIX to PYTHON_TAG, document, etc EXT_SUFFIX, according to PEP 3149, refers to the full tag and extension for compiled extension module objects, eg .cpython-311.so, .cpython-313t.so, etc. We do not use the correct semantic meaning, and this usage becomes ambiguous and confusing when tags do not match between bytecode and compiled extension module objects. Rename our PYTHON_EXT_SUFFIX to PYTHON_TAG to align with PEP 3147's specification of a magic tag, which consists of implementation name and shorthand version only. This is meant for bytecode and other files containing this tag in their filename that do not depend on a specific Python ABI for the same version. Chase all existing consumers. Introduce PYTHON_SOABI to align with PEP 3149's specification of a tag, which consists of implementation name, shorthand version and any ABI flags present (this and PYTHON_TAG are identical without ABI flags). This is meant for compiled extension module objects and other files that depend on a specific Python ABI for the same version. Add documentation for these variables that our PYTHON_EXT_SUFFIX never had. PR: 274671 Event: Kitchener-Waterloo Hackathon 202506 CHANGES | 9 + Mk/Uses/python.mk | 25 +- accessibility/caribou/pkg-plist | 72 +- accessibility/gammastep/pkg-plist | 20 +- accessibility/py-speech-dispatcher/pkg-plist | 28 +- astro/astrometry/Makefile | 2 +- astro/astrometry/pkg-plist | 10 +- astro/kosmorro/pkg-plist | 44 +- astro/py-ephem/Makefile | 2 +- astro/py-kosmorrolib/pkg-plist | 36 +- astro/py-sgp4/pkg-plist | 2 +- astro/py-skyfield/pkg-plist | 4 +- astro/weather/pkg-plist | 4 +- audio/exaile/pkg-plist | 428 +- audio/picard-plugins/pkg-plist | 412 +- audio/py-SoundFile/pkg-plist | 4 +- audio/py-essentia/Makefile | 2 +- audio/py-essentia/pkg-plist | 2 +- audio/py-pocketsphinx/Makefile | 8 +- audio/py-pocketsphinx/pkg-plist | 32 +- audio/py-samplerate/Makefile | 4 +- audio/py-simpleaudio/Makefile | 2 +- audio/py-soxr/Makefile | 2 +- audio/py-vosk/pkg-plist | 20 +- audio/qjackcapture/pkg-plist | 12 +- benchmarks/py-locust/pkg-plist | 168 +- benchmarks/uica/Makefile | 2 +- benchmarks/uica/pkg-plist | 36 +- biology/py-biosig/Makefile | 2 +- biology/py-pyrodigal/Makefile | 2 +- biology/py-pysam/Makefile | 2 +- biology/py-python-libsbml/pkg-plist | 4 +- biology/py-scikit-bio/Makefile | 4 +- biology/vcflib/pkg-plist | 2 +- cad/klayout/pkg-plist | 34 +- cad/netgen/pkg-plist | 2 +- cad/py-cocotb/Makefile | 2 +- cad/py-csxcad/Makefile | 2 +- chinese/ibus-array/pkg-plist | 8 +- chinese/ibus-libpinyin/pkg-plist | 20 +- comms/gnuradio/pkg-plist | 42 +- comms/gr-osmosdr/pkg-plist | 2 +- comms/hamlib/pkg-plist | 6 +- comms/uhd/pkg-plist | 2 +- converters/py-bsdconv/pkg-plist | 2 +- databases/grass8/pkg-plist | 806 +- databases/ldb25/Makefile | 12 +- databases/ldb28/Makefile | 12 +- databases/ldb29/Makefile | 12 +- databases/py-apache-arrow/pkg-plist | 454 +- databases/py-duckdb/Makefile | 2 +- databases/py-gdbm/Makefile | 6 +- databases/py-pymongo/Makefile | 4 +- databases/py-sqlcipher3/Makefile | 2 +- databases/py-sqlite3/Makefile | 6 +- databases/py-xapian/pkg-plist | 6 +- databases/rrdtool/pkg-plist | 2 +- databases/tdb/pkg-plist | 2 +- databases/tdb1410/pkg-plist | 2 +- deskutils/gnome-tweaks/pkg-plist | 76 +- deskutils/mozo/pkg-plist | 20 +- deskutils/py-paperless-ngx/pkg-plist | 992 +- deskutils/py-paperless/pkg-plist | 404 +- deskutils/recoll/pkg-plist | 6 +- deskutils/rednotebook/pkg-plist | 140 +- deskutils/treeline/pkg-plist | 172 +- devel/blueprint-compiler/pkg-plist | 200 +- devel/cbang/pkg-plist | 66 +- devel/cpplint/pkg-plist | 4 +- devel/distcc/pkg-plist | 2 +- devel/git-cola/pkg-plist | 356 +- devel/glib20/pkg-plist | 40 +- devel/gobject-introspection/pkg-plist | 2 +- devel/kf6-kapidox/pkg-plist | 68 +- devel/libsearpc/pkg-plist | 48 +- devel/llvm-devel/Makefile | 2 +- devel/llvm-devel/pkg-plist | 2 +- devel/llvm14/Makefile | 2 +- devel/llvm14/pkg-plist | 2 +- devel/llvm15/Makefile | 2 +- devel/llvm15/pkg-plist | 2 +- devel/llvm16/Makefile | 2 +- devel/llvm16/pkg-plist | 2 +- devel/llvm17/Makefile | 2 +- devel/llvm17/pkg-plist | 2 +- devel/llvm18/Makefile | 2 +- devel/llvm18/pkg-plist | 2 +- devel/llvm19/Makefile | 2 +- devel/llvm19/pkg-plist | 2 +- devel/llvm20/Makefile | 2 +- devel/llvm20/pkg-plist | 2 +- devel/nanopb/pkg-plist | 28 +- devel/omniORB/pkg-plist | 6 +- devel/py-PYB11Generator/pkg-plist | 28 +- devel/py-ast2json/pkg-plist | 20 +- devel/py-bps-restpy/pkg-plist | 60 +- devel/py-cftime/Makefile | 2 +- devel/py-cld/Makefile | 4 +- devel/py-cysignals/pkg-plist | 14 +- devel/py-dm-tree/pkg-plist | 18 +- devel/py-ewah-bool-utils/Makefile | 6 +- devel/py-grpcio/Makefile | 2 +- devel/py-guppy3/pkg-plist | 4 +- devel/py-ice37/pkg-plist | 2 +- devel/py-jep/pkg-plist | 2 +- devel/py-jsonnet/Makefile | 2 +- devel/py-line-profiler/Makefile | 2 +- devel/py-memory-allocator/pkg-plist | 8 +- devel/py-omniorb/pkg-plist | 48 +- devel/py-pysimdjson/pkg-plist | 2 +- devel/py-python-rapidjson/Makefile | 2 +- devel/py-qt5-pyqt/pkg-plist | 132 +- devel/py-qt6-pyqt/pkg-plist | 156 +- devel/py-qutip/Makefile | 4 +- devel/py-recordclass/pkg-plist | 8 +- devel/py-simsimd/Makefile | 2 +- devel/py-stringzilla/Makefile | 2 +- devel/py-time-machine/Makefile | 2 +- devel/py-zfp/Makefile | 2 +- devel/pybind11_protobuf/pkg-plist | 2 +- devel/pyside6-tools/pkg-plist | 112 +- devel/pyside6/pkg-plist | 40 +- devel/root/pkg-plist | 592 +- devel/shiboken6/pkg-plist | 12 +- devel/talloc/pkg-plist | 8 +- devel/talloc242/pkg-plist | 8 +- devel/tevent/pkg-plist | 2 +- devel/tevent016/pkg-plist | 2 +- devel/thonny/pkg-plist | 944 +- devel/viewvc-devel/pkg-plist | 58 +- devel/youcompleteme/pkg-plist | 2 +- editors/pluma-plugins/pkg-plist | 44 +- editors/pluma/pkg-plist | 120 +- filesystems/openzfs/pkg-plist | 26 +- finance/odoo/pkg-plist | 28700 +++++++++---------- finance/odoo16/pkg-plist | 22508 +++++++-------- finance/odoo17/pkg-plist | 26956 +++++++++--------- finance/py-bt/Makefile | 2 +- finance/py-ta-lib/Makefile | 2 +- games/kajongg/pkg-plist | 138 +- games/openage/pkg-plist | 602 +- games/pyspacewar/pkg-plist | 28 +- games/vamos/pkg-plist | 20 +- graphics/mypaint/pkg-plist | 554 +- graphics/opencv/pkg-plist | 2 +- graphics/openimageio/pkg-plist-pybind | 2 +- graphics/py-ManimPango/Makefile | 2 +- graphics/py-cairo/pkg-plist | 2 +- graphics/py-diplib/pkg-plist | 30 +- graphics/py-f3d/pkg-plist | 2 +- graphics/py-glcontext/Makefile | 4 +- graphics/py-moderngl/Makefile | 2 +- graphics/py-pivy/pkg-plist | 120 +- graphics/py-pygltflib/pkg-plist | 12 +- graphics/py-python-poppler-qt5/Makefile | 2 +- graphics/py-s2/pkg-plist | 4 +- graphics/py-simplejpeg/Makefile | 2 +- graphics/py-vispy/Makefile | 2 +- japanese/py-fugashi/Makefile | 2 +- lang/python310/pkg-plist | 10250 +++---- lang/python311/pkg-plist | 10918 ++++---- lang/python312/pkg-plist | 10794 +++---- lang/python39/pkg-plist | 10116 +++---- math/cadabra2/Makefile | 2 +- math/py-POT/Makefile | 2 +- math/py-SQNomad/Makefile | 2 +- math/py-ambit/pkg-plist | 2 +- math/py-annoy/Makefile | 2 +- math/py-clingcon/Makefile | 2 +- math/py-clingo/Makefile | 2 +- math/py-cvxpy/Makefile | 4 +- math/py-cyipopt/Makefile | 2 +- math/py-cypari2/pkg-plist | 16 +- math/py-daqp/Makefile | 2 +- math/py-deap/Makefile | 2 +- math/py-dgl/Makefile | 2 +- math/py-diffcp/Makefile | 2 +- math/py-dionysus/Makefile | 2 +- math/py-fastdtw/Makefile | 2 +- math/py-fpylll/pkg-plist | 28 +- math/py-fsph/Makefile | 4 +- math/py-heyoka/pkg-plist | 2 +- math/py-kahip/Makefile | 4 +- math/py-linearmodels/Makefile | 2 +- math/py-lrcalc/Makefile | 2 +- math/py-mapbox-earcut/Makefile | 2 +- math/py-mathics/pkg-plist | 28 +- math/py-matplotlib/pkg-plist | 8 +- math/py-minorminer/Makefile | 8 +- math/py-nlopt/pkg-plist | 8 +- math/py-or-tools/pkg-plist | 14 +- math/py-petsc4py/Makefile | 2 +- math/py-pplpy/pkg-plist | 14 +- math/py-primecountpy/pkg-plist | 6 +- math/py-primme/Makefile | 2 +- math/py-py-find-1st/Makefile | 2 +- math/py-pyFFTW/Makefile | 2 +- math/py-pyclipper/Makefile | 2 +- math/py-pyodeint/Makefile | 2 +- math/py-pytensor/Makefile | 2 +- math/py-rectangle-packer/Makefile | 4 +- math/py-rustworkx/Makefile | 2 +- math/py-scikit-umfpack/Makefile | 2 +- math/py-slepc4py/Makefile | 2 +- math/py-spot/pkg-plist | 8 +- math/py-symengine/pkg-plist | 2 +- math/py-topologic/Makefile | 4 +- misc/adios2/Makefile | 2 +- misc/adios2/pkg-plist | 2 +- misc/py-apache-beam/Makefile | 2 +- misc/py-mmcv/Makefile | 2 +- misc/py-numcodecs/Makefile | 2 +- misc/py-openvdb/Makefile | 2 +- misc/py-pytorch/Makefile | 4 +- misc/py-shap2/Makefile | 2 +- misc/py-tvm/pkg-plist | 4598 +-- misc/py-xformers/pkg-plist | 4 +- multimedia/gpodder/pkg-plist | 244 +- multimedia/mythtv/pkg-plist | 122 +- multimedia/onevpl/pkg-plist | 2 +- multimedia/openshot/pkg-plist | 500 +- multimedia/pitivi/pkg-plist | 152 +- multimedia/py-gstreamer1/pkg-plist | 24 +- multimedia/py-opentimelineio/pkg-plist | 240 +- multimedia/py-ustreamer/Makefile | 2 +- net-mgmt/crmsh/pkg-plist | 174 +- net-mgmt/net-snmp/pkg-plist | 2 +- net-mgmt/networkmgr/pkg-plist | 20 +- net-mgmt/seafile-client/pkg-plist | 12 +- net-mgmt/seafile-server/pkg-plist | 10 +- net-p2p/bazarr/pkg-plist | 14508 +++++----- net-p2p/py-libtorrent-rasterbar/Makefile | 4 +- net-p2p/py-pulsar-client/Makefile | 2 +- net-p2p/reticulum/pkg-plist | 304 +- net/kea-devel/pkg-plist | 12 +- net/kea/pkg-plist | 12 +- net/pacemaker2/pkg-plist | 204 +- net/py-libdnet/Makefile | 2 +- net/py-zope.proxy/Makefile | 2 +- net/samba416/pkg-plist | 12 +- net/samba416/pkg-plist.python | 148 +- net/samba419/pkg-plist | 12 +- net/samba419/pkg-plist.python | 158 +- net/samba420/pkg-plist | 12 +- net/samba420/pkg-plist.python | 172 +- print/lilypond-devel/pkg-plist | 6 +- print/lyx/pkg-plist | 168 +- print/pdfarranger/pkg-plist | 44 +- science/cantera/pkg-plist | 2 +- science/chemicalfun/Makefile | 2 +- science/chemicalfun/pkg-plist | 2 +- science/code_saturne/pkg-plist | 2358 +- science/fastjet/pkg-plist | 4 +- science/meep/pkg-plist | 138 +- science/psi4/pkg-plist | 2 +- science/py-GPy/Makefile | 4 +- science/py-PyNE/pkg-plist | 148 +- science/py-arbor/Makefile | 2 +- science/py-arbor/pkg-plist | 2 +- science/py-arch/Makefile | 4 +- science/py-avogadrolibs/Makefile | 4 +- science/py-dftd4/Makefile | 2 +- science/py-dimod/Makefile | 2 +- science/py-dipy/pkg-plist | 1474 +- science/py-dwave-inspector/pkg-plist | 36 +- science/py-dwave-optimization/Makefile | 4 +- science/py-dwave-preprocessing/Makefile | 4 +- science/py-dwave-preprocessing/pkg-plist | 48 +- science/py-dwave-samplers/Makefile | 2 +- science/py-dwave-samplers/pkg-plist | 82 +- science/py-dwave-system/pkg-plist | 144 +- science/py-fresnel/pkg-plist | 4 +- science/py-gemmi/pkg-plist | 2 +- science/py-hoomd-blue/pkg-plist | 8 +- science/py-kimpy/Makefile | 2 +- science/py-kpLib/Makefile | 2 +- science/py-libgetar/Makefile | 2 +- science/py-meshio/pkg-plist | 348 +- science/py-openEMS/Makefile | 2 +- science/py-openbabel/Makefile | 2 +- science/py-phonopy/Makefile | 2 +- science/py-pygmo2/pkg-plist | 2 +- science/py-pymol/pkg-plist | 760 +- science/salome-kernel/pkg-plist | 468 +- science/smoldyn/pkg-plist | 20 +- science/tfel/pkg-plist | 28 +- science/thermofun/Makefile | 2 +- science/thermofun/pkg-plist | 2 +- security/libpreludedb/pkg-plist | 4 +- security/libpwquality/pkg-plist | 2 +- security/py-gpgme/pkg-plist | 114 +- security/py-greenbone-feed-sync/pkg-plist | 56 +- security/py-notus-scanner/pkg-plist | 224 +- security/py-ospd-openvas/pkg-plist | 176 +- security/py-pass-audit/pkg-plist | 20 +- security/py-ssh-audit/pkg-plist | 128 +- security/py-yara-python-dex/pkg-plist | 2 +- security/sssd2/pkg-plist | 6 +- security/suricata/pkg-plist | 90 +- security/wazuh-manager/pkg-plist | 37016 ++++++++++++------------- sysutils/bareos-server/pkg-plist | 4 +- sysutils/bareos-server/pkg-plist.client | 2 +- sysutils/bareos22-server/pkg-plist | 4 +- sysutils/bareos22-server/pkg-plist.client | 2 +- sysutils/bareos23-server/pkg-plist | 4 +- sysutils/bareos23-server/pkg-plist.client | 2 +- sysutils/py-overlord/pkg-plist | 164 +- sysutils/syslog-ng/Makefile | 34 +- sysutils/webmin/pkg-plist | 4 +- sysutils/xen-tools/pkg-plist | 6 +- textproc/ibus/pkg-plist | 20 +- textproc/py-faust-cchardet/Makefile | 2 +- textproc/py-genshi/Makefile | 2 +- textproc/py-hunspell/Makefile | 2 +- textproc/py-libxml2/pkg-plist | 8 +- textproc/py-sphinx-material/pkg-plist | 8 +- textproc/py-wordcloud/pkg-plist | 2 +- textproc/redland-bindings/Makefile | 2 +- textproc/redland-bindings/pkg-plist | 2 +- www/npm-node22/pkg-plist | 232 +- www/pacparser/pkg-plist | 4 +- www/py-beautifulsoup/pkg-plist | 128 +- www/py-css-html-js-minify/pkg-plist | 12 +- www/py-seafdav/pkg-plist | 192 +- x11-toolkits/nanogui/pkg-plist | 2 +- x11-toolkits/py-tkinter/Makefile | 6 +- x11-wm/qtile/pkg-plist | 8 +- x11/alacarte/pkg-plist | 36 +- x11/kitty/pkg-plist | 1032 +- x11/menulibre/pkg-plist | 80 +- x11/xpra/pkg-plist | 2288 +- 331 files changed, 100105 insertions(+), 100079 deletions(-)
I plan to commit this port itself after the new quarterly branches. Supporting infrastructure should be in before. This way the fallout, which there will be a lot of, can be contained within the main branch. After the highest-impact fallout is resolved, this can land in quarterly. There will be a new tracking bug opened to deal with fallout similar to bug 285957. Already one big item to tackle is getting cython3 to build (somehow it doesn't build right now) and switching as many direct consumers to it, as this causes way too many higher-order consumers to get skipped.
Created attachment 262764 [details] Update to 3.13.6 Update to 3.13.6
There is now a staging error with the free-threaded variant. The threaded ABI flag is not being passed properly, probably after another bmake update in -CURRENT.
Created attachment 262981 [details] Update to 3.13.7 Update to 3.13.7
Created attachment 264408 [details] Update to 3.13.8 Update to 3.13.8
Created attachment 264601 [details] Update to 3.13.9 Update to 3.13.9
Any update on this topic? I know a lot of people that are waiting for python 3.13. Maybe we can accomplish this in time for 15.0-RELEASE.
I think we should skip 3.13 and move to 3.14 right away, to have one version less to care about. It's an enormous burden the way we do it and that our Python folks in FreeBSD haven't managed to commit it is the best example we should constrain our workload. https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=282176
Not so fast. What has to happen here also goes into 3.14, particularly the free-threaded mode which is actually a separate ABI. I will write up the details later.
This PR is two years old, you (python@) have had one year before the release and one year after it. So you do give up 3.13 and move the efforts directly to 3.14. You (python@) wasted half of 3.13's lifetime with NOT getting 3.13 into ports for various nonsense excuses trying to do a 200% solution, and adding something that's past half of its life already is only giving you (python@) more excuses why 3.14, 3.15, 3.16 will not happen. Please get your act together and stop resisting a 95% solution of ONE new Python going in. Either you commit 3.13 until mid November or you skip it. And please stop pretending we can mop up everything the Python community gave up on years ago. We can't have the entire Cheese Shop (aka PyPI.org) up and running. Python 3.13 should have been default for 9 if not 11 - 12 months.
(In reply to Matthias Andree from comment #39) I can only agree and just repeat that FreeBSD is losing its (already not too strong) positions in some areas due to this python saga. The current situation is both ridiculous by itself and causes people trying to bring or keep FreeBSD in some areas to be seen as outright outcasts.
Reviewing some of the older excuses, 3.13 had free-threaded as experimental, so is no excuse to stop the 3.13 vanilla version. Then we don't have the experiment in FreeBSD. It's matured and can be solved after the 3.14 mainline is in.
A commit in branch main references this bug: URL: https://cgit.FreeBSD.org/ports/commit/?id=edcf1d7d57b44e838648ae0695afd23a43275fb7 commit edcf1d7d57b44e838648ae0695afd23a43275fb7 Author: Wen Heping <wen@FreeBSD.org> AuthorDate: 2025-04-06 04:05:12 +0000 Commit: Charlie Li <vishwin@FreeBSD.org> CommitDate: 2025-11-01 22:40:56 +0000 lang/python313: add What's new: https://docs.python.org/3/whatsnew/3.13.html Most notably, introduce free-threaded mode. As this mode changes the ABI, the entire distribution lives in a separate hierarchy, and thus a new child port (lang/python313t) and FLAVOR (py313t) are introduced. Co-authored-by: vishwin PR: 274671 Differential Revision: https://reviews.freebsd.org/D49680 Mk/Uses/python.mk | 2 +- Mk/bsd.default-versions.mk | 2 +- lang/Makefile | 2 + lang/python313/Makefile (new) | 181 + lang/python313/Makefile.version (new) | 7 + lang/python313/distinfo (new) | 3 + .../libressl/patch-Modules___hashopenssl.c (new) | 26 + lang/python313/files/patch-Makefile.pre.in (new) | 62 + .../files/patch-Misc__python-config.sh.in (new) | 11 + .../files/patch-Tools_jit___llvm.py (new) | 31 + .../files/patch-Tools_jit___targets.py (new) | 12 + lang/python313/files/patch-configure (new) | 11 + lang/python313/files/pkg-message.in (new) | 12 + lang/python313/pkg-descr (new) | 2 + lang/python313/pkg-plist (new) | 7913 ++++++++++++++++++++ lang/python313t/Makefile (new) | 16 + 16 files changed, 8291 insertions(+), 2 deletions(-)
The last issue that prevented this from landing dealt with ensuring that the correct variant of this Python version built and packaged properly. Most notably, the `python` or `python3` value of ${DEFAULT_VERSIONS} should not have affected whether the resulting PKGNAME would be correct or staging and packaging would behave itself. Earlier during this cycle I committed support into the framework to allow for Python versions that are not fully numeric, ie 3.13t. Previously the framework assumed that versions are only numeric and thus numeric comparison operators worked and made sense. Once it became clear that free-threaded mode required its own FLAVOR and thus a separate port, adjustments to the version comparison and flavour generation logic had to happen. So since then, theoretically the py313 and py313t separate flavours have been possible. The showstopper from having the lang/ ports committed at that same time stemmed from this new support but in a different way. If lang/python313t is to be built and DEFAULT_VERSIONS+=python=3.13t and DEFAULT_VERSIONS+=python3=3.13t, the version comparison logic doesn't fire and thus ${PYTHON_VER} et al are correct at 3.13t. The trouble lies when ${DEFAULT_VERSIONS} and the desired lang/python port versions differ: the version comparison logic intended for *consumers*, especially the flavoured ports, comes into play, which means the `t` is immediately stripped so that the comparisons happen on fully-numeric values. This path makes sense for consumers since they need to determine whether or not a particular version or range is supported (3.13 and 3.13t for numerical comparison and compatibility purposes are the same version). Unfortunately there is not really a way to put the `t` back into ${PYTHON_VER} once this finishes without there being a flavour defined, so building say lang/python313t in this case would result in PYTHON_VER=3.13 instead of 3.13t. This ends up messing with the resulting ${PKGNAME}, ${SUB_FILES} and the plist which ultimately results in failed staging or packaging. Mitigating around this was incredibly frustrating and is why it took so long. Not proud of how long this took at all. Also not proud of how the explanation had to come after everything worked (and thus committed) because of the amount of moving parts in make(1) variables, which also made it nearly impossible to accept any offers of help. But now we have support for the free-threaded mode starting here at 3.13. 3.14 has developed this support further and hopefully the prematurely-committed port will catch up soon. The generally incremental nature of CPython is why this needed to be committed first; the port development cycles also follow this pattern of starting from the previous version in a new copy.
It does not build in poudriere for me: --- ./Modules/_blake2/blake2s_impl.c --- --- Modules/expat/xmlparse.o --- --- Modules/expat/xmlrole.o --- --- Modules/expat/xmltok.o --- --- ./Modules/_blake2/blake2s_impl.c --- python3 ./Modules/_blake2/blake2b2s.py sh: python3: not found --- python-gdb.py --- --- Programs/_testembed.o --- --- build/scripts-3.13/idle3.13 --- --- ./Modules/_blake2/blake2s_impl.c --- *** [./Modules/_blake2/blake2s_impl.c] Error code 127 make: stopped in /wrkdirs/usr/ports/lang/python313/work/Python-3.13.9 --- Modules/expat/xmlrole.o --- cc -pthread -c -I./Modules/expat -fno-strict-overflow -Wsign-compare -Wunreachable-code -DNDEBUG -O2 -pipe -fstack-protector-strong -fno-strict-aliasing -flto=thin -g -std=c11 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -I./Include/internal -I./Include/internal/mimalloc -I. -I./Include -I/usr/local/include -I/usr/local/include -fPIC -fPIC -o Modules/expat/xmlrole.o ./Modules/expat/xmlrole.c --- Modules/expat/xmltok.o --- cc -pthread -c -I./Modules/expat -fno-strict-overflow -Wsign-compare -Wunreachable-code -DNDEBUG -O2 -pipe -fstack-protector-strong -fno-strict-aliasing -flto=thin -g -std=c11 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -I./Include/internal -I./Include/internal/mimalloc -I. -I./Include -I/usr/local/include -I/usr/local/include -fPIC -fPIC -o Modules/expat/xmltok.o ./Modules/expat/xmltok.c --- Modules/expat/xmlparse.o --- cc -pthread -c -I./Modules/expat -fno-strict-overflow -Wsign-compare -Wunreachable-code -DNDEBUG -O2 -pipe -fstack-protector-strong -fno-strict-aliasing -flto=thin -g -std=c11 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -I./Include/internal -I./Include/internal/mimalloc -I. -I./Include -I/usr/local/include -I/usr/local/include -fPIC -fPIC -o Modules/expat/xmlparse.o ./Modules/expat/xmlparse.c --- python-gdb.py --- install -m 0644 ./Tools/gdb/libpython.py python-gdb.py --- Programs/_testembed.o --- cc -pthread -c -fno-strict-overflow -Wsign-compare -Wunreachable-code -DNDEBUG -O2 -pipe -fstack-protector-strong -fno-strict-aliasing -flto=thin -g -std=c11 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -I./Include/internal -I./Include/internal/mimalloc -I. -I./Include -I/usr/local/include -I/usr/local/include -fPIC -DPy_BUILD_CORE -o Programs/_testembed.o ./Programs/_testembed.c --- build/scripts-3.13/idle3.13 --- sed -e "s,/usr/bin/env python3,/usr/local/bin/python3.13," < ./Tools/scripts/idle3 > build/scripts-3.13/idle3.13 1 error make: stopped in /wrkdirs/usr/ports/lang/python313/work/Python-3.13.9 ===> Compilation failed unexpectedly. Try to set MAKE_JOBS_UNSAFE=yes and rebuild before reporting the failure to the maintainer. *** Error code 1 Stop. make: stopped in /usr/ports/lang/python313 build of lang/python313 | python313-3.13.9 ended at 2025-11-03T10:14:38+01:00 build time: 00:00:08 !!! build failure encountered !!! [00:00:10] Error: Build failed in phase: build [00:00:10] [14amd64-default] [2025-11-03_10h14m28s] [failed/build] Time: 00:00:09
devel/commitizen and textproc/py-towncrier uses PYTHON_VER as numeric and it prevents making ports index. diff --git a/devel/commitizen/Makefile b/devel/commitizen/Makefile index 42cff50d24ed..1c259db61f51 100644 --- a/devel/commitizen/Makefile +++ b/devel/commitizen/Makefile @@ -32,6 +32,6 @@ NO_ARCH= yes .include <bsd.port.mk> -.if ${PYTHON_MAJOR_VER} == 3 && ${PYTHON_VER:E} < 10 +.if ${PYTHON_MAJOR_VER} == 3 && ${PYTHON_BASEVER:E} < 10 PY_RDEPS+= importlib-metadata>=8.0.0:devel/py-importlib-metadata .endif diff --git a/textproc/py-towncrier/Makefile b/textproc/py-towncrier/Makefile index 5a358a1aa2ba..40b1316c1aba 100644 --- a/textproc/py-towncrier/Makefile +++ b/textproc/py-towncrier/Makefile @@ -25,7 +25,7 @@ NO_ARCH= yes .include <bsd.port.pre.mk> -.if defined(PYTHON_VER) && ${PYTHON_VER} < 3.10 +.if defined(PYTHON_BASEVER) && ${PYTHON_BASEVER} < 3.10 BUILD_DEPENDS+= ${PYTHON_PKGNAMEPREFIX}importlib-metadata>=7.1.0:devel/py-importlib-metadata@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}importlib-resources>=6.4.0:devel/py-importlib-resources@${PY_FLAVOR} RUN_DEPENDS+= ${PYTHON_PKGNAMEPREFIX}importlib-metadata>=7.1.0:devel/py-importlib-metadata@${PY_FLAVOR} \
I really wonder if all this effort to already accommodate for the free-threaded build is worth it. Only the tiniest fraction of users will be interested while it's still very much a WIP. Those who do want to try it will not need a package but happily compile their own interpreter. Even though most of the work has been done(?) now, wouldn't it be better to just throw an error in case of 3.13t and assume 3.13 after that, to keep things simple in the short term? If all goes well, around 3.15 or 3.16 might be a good time to re-apply these version related patches. Until then, it causes needless friction IMO, as demonstrated above. Hardly any Linux distribution ships 3.13t yet?
(In reply to Yasuhito FUTATSUKI from comment #45) I have applied your patches manually in my local ports tree.
(In reply to Jordan Ostreff from comment #47) Perhaps the part of textproc/py-towncrier of the patch does not work as original author expected until Python 3.9 had gone, because 3.9 > 3.10 in numeric. Also both case in devel/commitizen and textproc/py-towncrier, the conditionals themselves useless because all those conditionals always false for all supported python version.
A commit in branch main references this bug: URL: https://cgit.FreeBSD.org/ports/commit/?id=e0cbe081481d26c9722afdd48fa4ff2675b9e899 commit e0cbe081481d26c9722afdd48fa4ff2675b9e899 Author: Charlie Li <vishwin@FreeBSD.org> AuthorDate: 2025-11-04 14:43:25 +0000 Commit: Charlie Li <vishwin@FreeBSD.org> CommitDate: 2025-11-04 14:43:25 +0000 lang/python313: fix blake2s_impl regen mismatch The only difference between "stock" and regenerated blake2s_impl.c is where a variable is declared in py_blake2s_new_impl(). Patch the stock file to the regenerated version so the regeneration script does not get called. Reported by: fluffy, jan[at]glaubitz[dot]org PR: 274671 .../files/patch-Modules___blake2_blake2s__impl.c (new) | 14 ++++++++++++++ lang/python313t/Makefile | 8 -------- 2 files changed, 14 insertions(+), 8 deletions(-)