summaryrefslogtreecommitdiff
path: root/solenv/gbuild
diff options
context:
space:
mode:
authorStephan Bergmann <sbergman@redhat.com>2020-09-24 17:44:23 +0200
committerStephan Bergmann <sbergman@redhat.com>2020-09-24 20:37:56 +0200
commit5d67dcc922f831d91424cae8d8758f067a6781b0 (patch)
tree4bc5748974dc2f9a95b82b0941e4212a9d47b4a3 /solenv/gbuild
parentcc2060fb21d48d775e5a85b9080c10589ab7287e (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.mk7
-rw-r--r--solenv/gbuild/PythonTest.mk6
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),, \