office-gobmx/pyuno
Justin Luth daa04d405a allow build with python 3.12.0: initialize new tp_watched
This fixes the build failure after I updated Ubuntu 24.04 (alpha),
which upgraded python 3.11.7 to python 3.12.0, causing the error:

libreoffice/pyuno/source/module/pyuno_callable.cxx:249:1:
error: missing initializer for member ‘_typeobject::tp_watched’
[-Werror=missing-field-initializers]
...

I gleaned this information from a July 2023 commit for
https://github.com/xbmc/xbmc/issues/23503

tp_watched was added in upstream commit python/cpython@82ccbf6
82ccbf69a8

This change first appeared in Python v3.12.0a1

Change-Id: If82ff1eb47d66d2669d90d6e00e0feff3c55b5ca
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164775
Tested-by: Jenkins
Reviewed-by: Justin Luth <jluth@mail.com>
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
2024-03-13 17:45:49 +01:00
..
demo tdf#158803 Fix issues detected by pyflakes 2023-12-27 13:48:47 +01:00
doc
inc
qa/pytests tdf#97361 Make unittests more pythonic: XIndexAccess 2024-01-23 14:00:46 +01:00
source allow build with python 3.12.0: initialize new tp_watched 2024-03-13 17:45:49 +01:00
zipcore Define a name for the extended path buffer size, instead of a literal 2024-02-26 05:59:10 +01:00
CustomTarget_python_shell.mk
CustomTarget_pyuno_pythonloader_ini.mk
Executable_python.mk
IwyuFilter_pyuno.yaml
Library_pythonloader.mk Use less boost_headers in low level libraries 2024-03-06 21:23:17 +01:00
Library_pyuno.mk Use less boost_headers in low level libraries 2024-03-06 21:23:17 +01:00
Library_pyuno_wrapper.mk
Makefile
Module_pyuno.mk
Package_python_scripts.mk
Package_python_shell.mk
Package_pyuno_pythonloader_ini.mk
PythonTest_pyuno_pytests_insertremovecells.mk
PythonTest_pyuno_pytests_testcollections.mk
PythonTest_pyuno_pytests_testssl.mk
Rdb_pyuno.mk
README.md

Python UNO Bindings

UNO bindings for the Python programming language.

To have much joy debugging Python extensions you need to:

  • a) edit pythonloader.py in your install setting DEBUG=1 at the top
  • b) touch pyuno/source/module/pyuno_runtime.cxx and make debug=true in pyuno

Then you'll start to see your exceptions on the console instead of them getting lost at the UNO interface.

Python also comes with a gdb script libpython$(PYTHON_VERSION_MAJOR).$(PYTHON_VERSION_MINOR)m.so.1.0-gdb.py that is copied to instdir and will be auto-loaded by gdb; it provides commands like py-bt to get a Python-level backtrace, and py-print to print Python variables.

Another way to debug Python code is to use pdb: edit some initialization function to insert import pdb; pdb.set_trace() (somewhere so that it is executed early), then run soffice from a terminal and a command-line Python debugger will appear where you can set Python-level breakpoints.