| #
27dee00e
|
| 30-Jun-2026 |
Jim Jagielski <jimjag@gmail.com> |
Python 3 migration: baseline 3.11.15, complete pyuno bridge and build files
Migrate the bundled Python from 2.7.18 to 3.11.15 (Unix/macOS first; Windows build deferred to a future modern-MSVC effort
Python 3 migration: baseline 3.11.15, complete pyuno bridge and build files
Migrate the bundled Python from 2.7.18 to 3.11.15 (Unix/macOS first; Windows build deferred to a future modern-MSVC effort). This completes the source- and build-level migration; only the full-tree build gate (link pyuno against bundled libpython3.11, run a macro / bridgetest round-trip) remains.
Version baseline: - pyversion.mk, pyversion_dmake.mk: PYMAJOR/PYMINOR/PYMICRO -> 3/11/15.
pyuno C++ bridge (collapse the 2012 dual-version scaffolding to Py3-only): - pyuno_util.cxx: ustring2PyUnicode/pyString2ustring use a single UTF-8 round-trip (PyUnicode_DecodeUTF8 / PyUnicode_AsUTF8AndSize); drop the removed-in-3.12 Py_UNICODE_SIZE / PyUnicode_FromUnicode / AS_UNICODE paths. Remove now-dead ustring2PyString. - pyuno_type.cxx: PyUnicode_FromKindAndData for char; PyUnicode_GetLength / PyUnicode_ReadChar instead of the 3.12-removed GetSize / AsUnicode. - pyuno.cxx, pyuno_module.cxx, pyuno_runtime.cxx, pyuno_callable.cxx, pyuno_except.cxx, pyuno_impl.hxx, pyuno_dlopenwrapper.c: remove all PY_MAJOR_VERSION < 3 branches, PyInt_*, Py_InitModule, initpyuno, and the PyEval_InitThreads() no-ops; PyInit_pyuno is the sole module entry point. PyUnicode_AsUTF8 results are held as const char* (3.11 signature). PyTypeObject initializers normalised to the unconditional Py3 layout.
configure.ac: - AM_PATH_PYTHON([2.7]) -> ([3.11]); macOS hexversion floor 2.7.1 -> 3.11.0 (51118080); Py2 'print sys.version' -> print(); distutils.sysconfig -> sysconfig (distutils removed in 3.12).
Bundled-Python build: - makefile.mk: TARFILE_MD5 for Python-3.11.15; drop obsolete freebsd/ssl/ solaris patches; feed the solver's bundled OpenSSL to setup.py via python_CFLAGS/python_LDFLAGS; guard (retain) the deferred Windows msvs9 blocks. - Regenerated python-3.11.15-{sysbase,nohardlink}.patch and refreshed python-md5.patch / python-solver-before-std.patch against 3.11.15. Removed the orphaned 2.7.18 msvs9/sysbase/nohardlink and dead solaris patches. - prj/d.lst: Py3.11 stdlib layout (drop Py2-only lib-old/compiler/hotshot/ plat-linux2/bsddb/lib-tk/config; python3.11 paths; libpython3.11.*).
pythonscript.py: - Detect common Python 2 syntax in stored macros at compile() time and raise a clear "port to Python 3" message instead of a bare SyntaxError traceback.
Verified on macOS arm64: bundled CPython 3.11.15 with these patches configures, builds, and installs; _ssl/_hashlib/hashlib import and work; the changed pyuno C-API patterns compile clean against real 3.11 headers (-Wall -Wextra -Werror); all shipped .py files compile under 3.11.15.
show more ...
|