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.
30 files changed
tree: 99e54b5caadf3f2c1d8828d1d6056da2c0823cf1
  1. .github/
  2. ext_libraries/
  3. ext_sources/
  4. extras/
  5. main/
  6. test/
  7. .asf.yaml
  8. .gitignore
  9. .pre-commit-config.yaml
  10. AOO-trunk.md
  11. LICENSE
  12. Makefile
  13. README.md
  14. requirements-dev.txt
README.md

Apache OpenOffice®

The Apache OpenOffice project (AOO) provides a full featured office productivity suite based on open standards. It is the continuation of the OpenOffice.org project.

For detailed information about Apache OpenOffice please visit the Project Website.

Apache OpenOffice is a very large project with many components and mainly implemented in C++ but also in Java, Perl, Python and other languages.

Currently supported platforms include:

  • Microsoft Windows
  • macOS (OS X)
  • Linux variants
  • FreeBSD
  • OS/2

OpenOffice is used by millions of users worldwide and with more than 398 million downloads it is one of the most successful open source projects.

Getting the latest sources via Git

You can always checkout the latest source via Git using the following command:

git clone https://gitbox.apache.org/repos/asf/openoffice.git aoo

For further information visit https://openoffice.apache.org/source.html.

Building Apache OpenOffice

Apache OpenOffice is a big project and depends on several other external libraries.
The list of prerequisites varies for the different platforms.

A comprehensive and complete building guide can be found in the Project Wiki.

With having all prerequisites in place you can simply run

cd aoo/main
autoconf
./configure <configure_switches>
./bootstrap
source *.Set.sh
cd instsetoo_native
build --all

Note that building OpenOffice can take several hours.

The default build will produce a setup version (e.g. setup program on Windows, dmg on macOS, rpm and deb packages on Linux) and an archived version.
The output can be found in the directory in instsetoo_native/<output_dir>/Apache_OpenOffice/...