As
commit a545badd65
Author: Stephan Bergmann <sbergman@redhat.com>
Date: Thu Feb 16 18:15:04 2012 +0100
Work around macro redefinition warning
already did for pyuno/source/module/pyuno_dlopenwrapper.c ,
also include the <Python.h> header first
in more pyuno source files.
Quoting from the Python/C API reference manual about include
files [1]:
> Note: Since Python may define some pre-processor definitions
> which affect the standard headers on some systems, you must
> include Python.h before any standard headers are included.
This avoids build errors like the following otherwise seen
on Debian testing after a glibc update from 2.42-17 to 2.43-3:
In file included from /home/michi/development/git/libreoffice/pyuno/source/module/pyuno_struct.cxx:28:
In file included from /home/michi/development/git/libreoffice/pyuno/source/module/pyuno_impl.hxx:26:
In file included from /home/michi/development/git/libreoffice/workdir/UnpackedTarball/python3/Include/Python.h:14:
/home/michi/development/git/libreoffice/workdir/UnpackedTarball/python3/pyconfig.h:1985:9: error: '_POSIX_C_SOURCE' macro redefined [-Werror,-Wmacro-redefined]
1985 | #define _POSIX_C_SOURCE 200809L
| ^
/usr/include/features.h:319:10: note: previous definition is here
319 | # define _POSIX_C_SOURCE 202405L
| ^
[1] https://docs.python.org/3/c-api/intro.html#include-files
Change-Id: I4ae90cfc9b92b559181d3884cdc8d51ee11f922d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209871
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Python UNO Bindings
UNO bindings for the Python programming language.
To have much joy debugging Python extensions you need to:
- a) edit
pythonloader.pyin your install settingDEBUG=1at the top - b)
touch pyuno/source/module/pyuno_runtime.cxxandmake debug=trueinpyuno
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.