diff options
author | Stephan Bergmann <sbergman@redhat.com> | 2020-09-24 17:44:23 +0200 |
---|---|---|
committer | Stephan Bergmann <sbergman@redhat.com> | 2020-09-24 20:37:56 +0200 |
commit | 5d67dcc922f831d91424cae8d8758f067a6781b0 (patch) | |
tree | 4bc5748974dc2f9a95b82b0941e4212a9d47b4a3 /solenv/gbuild | |
parent | cc2060fb21d48d775e5a85b9080c10589ab7287e (diff) |
PythonTest CPPUNITTRACE='gdb --args' needs to tunnel setting LD_LIBRARY_PATH
...so that it doesn't affect gdb itself, just like CppunitTest already did.
Otherwise, e.g.
make PythonTest_sc_python CPPUNITTRACE='gdb --args'
in a Linux ASan and --enable-python=fully-internal build on Fedora 32 would fail
with
> gdb: symbol lookup error: instdir/program/libpython3.8.so.1.0: undefined symbol: __asan_option_detect_stack_use_after_return
as /usr/bin/gdb would try to use LO's instdir/program/libpython3.8.so.1.0
instead of /usr/lib64/libpython3.8.so.1.0.
So, at least on Linux, the gb_PythonTest_PRECOMMAND settings are now passed into
the test process either directly upfront (if gb_PythonTest_GDBTRACE is not set)
or tunneled past gdb via gb_PythonTest_GDBTRACE (if it is set). At least on
some platforms, gb_PythonTest_PRECOMMAND has a different value than
gb_CppunitTest_CPPTESTPRECOMMAND, so gb_CppunitTest_GDBTRACE would reflect the
settings from gb_CppunitTest_CPPTESTPRECOMMAND but not from
gb_PythonTest_PRECOMMAND, so introduce a new gb_PythonTest_GDBTRACE (which is to
gb_PythonTest_PRECOMMAND what gb_CppunitTest_GDBTRACE is to
gb_CppunitTest_CPPTESTPRECOMMAND).
macOS with its split gb_CppunitTest_{,PRE,POST}GDBTRACE variables will likely
need some work to adopt that to PythonTest, but which is rather orthogonal to
this change, so just note that as a TODO for now.
Change-Id: I7e6681de638095cb58b44de381248ae7326ce412
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/103345
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
Diffstat (limited to 'solenv/gbuild')
-rw-r--r-- | solenv/gbuild/CppunitTest.mk | 7 | ||||
-rw-r--r-- | solenv/gbuild/PythonTest.mk | 6 |
2 files changed, 11 insertions, 2 deletions
diff --git a/solenv/gbuild/CppunitTest.mk b/solenv/gbuild/CppunitTest.mk index 356b4317ab4f..cd28e578cc1e 100644 --- a/solenv/gbuild/CppunitTest.mk +++ b/solenv/gbuild/CppunitTest.mk @@ -28,14 +28,21 @@ ifneq ($(filter gdb,$(CPPUNITTRACE)),) gb_CppunitTest_GDBTRACE := $(subst gdb,\ gdb -return-child-result -ex "add-auto-load-safe-path $(INSTDIR)" -ex "set environment $(subst =, ,$(gb_CppunitTest_CPPTESTPRECOMMAND))" $(gb_CppunitTest_malloc_check) $(gb_CppunitTest_DEBUGCPPUNIT),\ $(CPPUNITTRACE)) +gb_PythonTest_GDBTRACE := $(subst gdb,\ + gdb -return-child-result -ex "add-auto-load-safe-path $(INSTDIR)" -ex "set environment $(subst =, ,$(gb_PythonTest_PRECOMMAND))" $(gb_CppunitTest_malloc_check) $(gb_CppunitTest_DEBUGCPPUNIT),\ + $(CPPUNITTRACE)) else ifneq ($(filter lldb,$(CPPUNITTRACE)),) gb_CppunitTest_PREGDBTRACE := lo_dyldpathfile=$(call var2file,$(shell $(gb_MKTEMP)),500,settings set target.env-vars $(gb_CppunitTest_CPPTESTPRECOMMAND)) gb_CppunitTest_GDBTRACE := $(subst lldb,\ lldb -s $$lo_dyldpathfile $(gb_CppunitTest_malloc_check),\ $(CPPUNITTRACE)) gb_CppunitTest_POSTGDBTRACE := rm $$lo_dyldpathfile +#TODO: PythonTest.mk probably needs to handle gb_CppunitTest_PREGDBTRACE and +# gb_CppunitTest_POSTGDBTRACE in addition to gb_PythonTest_GDBTRACE (aka gb_CppunitTest_GDBTRACE): +gb_PythonTest_GDBTRACE := $(gb_CppunitTest_GDBTRACE) else gb_CppunitTest_GDBTRACE := $(CPPUNITTRACE) +gb_PythonTest_GDBTRACE := $(gb_CppunitTest_GDBTRACE) endif ifneq ($(strip $(DEBUGCPPUNIT)),TRUE) gb_CppunitTest__interactive := $(true) diff --git a/solenv/gbuild/PythonTest.mk b/solenv/gbuild/PythonTest.mk index 52ecbffe7f1c..998df0767d2c 100644 --- a/solenv/gbuild/PythonTest.mk +++ b/solenv/gbuild/PythonTest.mk @@ -9,6 +9,8 @@ # PythonTest class +# (gb_PythonTest_GDBTRACE is defined alongside gb_CppunitTest_GDBTRACE in CppunitTest.mk) + gb_PythonTest_UNITTESTFAILED ?= $(GBUILDDIR)/platform/unittest-failed-default.sh ifeq ($(SYSTEM_PYTHON),) @@ -46,7 +48,7 @@ else $(if $(gb_CppunitTest__interactive),, \ $(if $(value gb_CppunitTest_postprocess), \ rm -fr $@.core && mkdir $@.core && cd $@.core &&)) \ - ($(gb_PythonTest_PRECOMMAND) \ + ($(if $(filter gdb,$(gb_PythonTest_GDBTRACE)),,$(gb_PythonTest_PRECOMMAND)) \ $(if $(G_SLICE),G_SLICE=$(G_SLICE)) \ $(if $(GLIBCXX_FORCE_NEW),GLIBCXX_FORCE_NEW=$(GLIBCXX_FORCE_NEW)) \ $(DEFS) \ @@ -57,7 +59,7 @@ else TestUserDir="$(call gb_Helper_make_url,$(dir $(call gb_PythonTest_get_target,$*)))" \ PYTHONDONTWRITEBYTECODE=1 \ $(gb_TEST_ENV_VARS) \ - $(ICECREAM_RUN) $(gb_CppunitTest_GDBTRACE) $(gb_CppunitTest_VALGRINDTOOL) $(gb_CppunitTest_RR) \ + $(ICECREAM_RUN) $(gb_PythonTest_GDBTRACE) $(gb_CppunitTest_VALGRINDTOOL) $(gb_CppunitTest_RR) \ $(gb_PythonTest_COMMAND) \ $(if $(PYTHON_TEST_NAME),$(PYTHON_TEST_NAME),$(MODULES)) \ $(if $(gb_CppunitTest__interactive),, \ |