From df9db467c8361b960305cab98ee6e793d907c75e Mon Sep 17 00:00:00 2001 From: Jonathan Rajotte Date: Thu, 11 Jul 2019 17:45:56 -0400 Subject: [PATCH] Fix: cygwin does not honour LD_LIBRARY_PATH Cygwin, just like Windows, relies on PATH to find libraries. Error: 15:16:01 FAIL: python-plugin-provider/test_python_plugin_provider 1 - test_python_plugin_provider (unittest.loader._FailedTest) 15:16:01 # python-plugin-provider/test_python_plugin_provider: Traceback (most recent call last): 15:16:01 # python-plugin-provider/test_python_plugin_provider: File "/usr/lib/python3.6/unittest/case.py", line 59, in testPartExecutor 15:16:01 # python-plugin-provider/test_python_plugin_provider: yield 15:16:01 # python-plugin-provider/test_python_plugin_provider: File "/usr/lib/python3.6/unittest/case.py", line 605, in run 15:16:01 # python-plugin-provider/test_python_plugin_provider: testMethod() 15:16:01 # python-plugin-provider/test_python_plugin_provider: File "/usr/lib/python3.6/unittest/loader.py", line 34, in testFailure 15:16:01 # python-plugin-provider/test_python_plugin_provider: raise self._exception 15:16:01 # python-plugin-provider/test_python_plugin_provider: ImportError: Failed to import test module: test_python_plugin_provider 15:16:01 # python-plugin-provider/test_python_plugin_provider: Traceback (most recent call last): 15:16:01 # python-plugin-provider/test_python_plugin_provider: File "/cygdrive/c/Users/jenkins/workspace/babeltrace_master_winbuild/arch/cygwin/build/std/conf/std/src/babeltrace/src/bindings/python/bt2/build/build_lib/bt2/native_bt.py", line 14, in swig_import_helper 15:16:01 # python-plugin-provider/test_python_plugin_provider: return importlib.import_module(mname) 15:16:01 # python-plugin-provider/test_python_plugin_provider: File "/usr/lib/python3.6/importlib/__init__.py", line 126, in import_module 15:16:01 # python-plugin-provider/test_python_plugin_provider: return _bootstrap._gcd_import(name[level:], package, level) 15:16:01 # python-plugin-provider/test_python_plugin_provider: File "", line 994, in _gcd_import 15:16:01 # python-plugin-provider/test_python_plugin_provider: File "", line 971, in _find_and_load 15:16:01 # python-plugin-provider/test_python_plugin_provider: File "", line 955, in _find_and_load_unlocked 15:16:01 # python-plugin-provider/test_python_plugin_provider: File "", line 658, in _load_unlocked 15:16:01 # python-plugin-provider/test_python_plugin_provider: File "", line 571, in module_from_spec 15:16:01 # python-plugin-provider/test_python_plugin_provider: File "", line 922, in create_module 15:16:01 # python-plugin-provider/test_python_plugin_provider: File "", line 219, in _call_with_frames_removed 15:16:01 # python-plugin-provider/test_python_plugin_provider: ImportError: No such file or directory 15:16:01 # python-plugin-provider/test_python_plugin_provider: During handling of the above exception, another exception occurred: 15:16:01 # python-plugin-provider/test_python_plugin_provider: Traceback (most recent call last): 15:16:01 # python-plugin-provider/test_python_plugin_provider: File "/usr/lib/python3.6/unittest/loader.py", line 428, in _find_test_path 15:16:01 # python-plugin-provider/test_python_plugin_provider: module = self._get_module_from_name(name) 15:16:01 # python-plugin-provider/test_python_plugin_provider: File "/usr/lib/python3.6/unittest/loader.py", line 369, in _get_module_from_name 15:16:01 # python-plugin-provider/test_python_plugin_provider: __import__(name) 15:16:01 # python-plugin-provider/test_python_plugin_provider: File "/cygdrive/c/Users/jenkins/workspace/babeltrace_master_winbuild/arch/cygwin/build/std/conf/std/src/babeltrace/tests/python-plugin-provider/test_python_plugin_provider.py", line 20, in 15:16:01 # python-plugin-provider/test_python_plugin_provider: import bt2 15:16:01 # python-plugin-provider/test_python_plugin_provider: File "/cygdrive/c/Users/jenkins/workspace/babeltrace_master_winbuild/arch/cygwin/build/std/conf/std/src/babeltrace/src/bindings/python/bt2/build/build_lib/bt2/__init__.py", line 26, in 15:16:01 # python-plugin-provider/test_python_plugin_provider: from bt2.clock_class import * 15:16:01 # python-plugin-provider/test_python_plugin_provider: File "/cygdrive/c/Users/jenkins/workspace/babeltrace_master_winbuild/arch/cygwin/build/std/conf/std/src/babeltrace/src/bindings/python/bt2/build/build_lib/bt2/clock_class.py", line 23, in 15:16:01 # python-plugin-provider/test_python_plugin_provider: from bt2 import native_bt, object, utils 15:16:01 # python-plugin-provider/test_python_plugin_provider: File "/cygdrive/c/Users/jenkins/workspace/babeltrace_master_winbuild/arch/cygwin/build/std/conf/std/src/babeltrace/src/bindings/python/bt2/build/build_lib/bt2/native_bt.py", line 17, in 15:16:01 # python-plugin-provider/test_python_plugin_provider: _native_bt = swig_import_helper() 15:16:01 # python-plugin-provider/test_python_plugin_provider: File "/cygdrive/c/Users/jenkins/workspace/babeltrace_master_winbuild/arch/cygwin/build/std/conf/std/src/babeltrace/src/bindings/python/bt2/build/build_lib/bt2/native_bt.py", line 16, in swig_import_helper 15:16:01 # python-plugin-provider/test_python_plugin_provider: return importlib.import_module('_native_bt') 15:16:01 # python-plugin-provider/test_python_plugin_provider: File "/usr/lib/python3.6/importlib/__init__.py", line 126, in import_module 15:16:01 # python-plugin-provider/test_python_plugin_provider: return _bootstrap._gcd_import(name[level:], package, level) 15:16:01 # python-plugin-provider/test_python_plugin_provider: ModuleNotFoundError: No module named '_native_bt' Change-Id: Ife8ce952a9dc34a78f3ee293e52a13c7f8a1310d Signed-off-by: Jonathan Rajotte Reviewed-on: https://review.lttng.org/c/babeltrace/+/1694 Reviewed-by: Michael Jeanson Reviewed-by: Philippe Proulx Tested-by: jenkins --- doc/bindings/python/Makefile.am | 6 +++++- tests/utils/utils.sh | 5 ++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/doc/bindings/python/Makefile.am b/doc/bindings/python/Makefile.am index 4c7f4300..f87c02a0 100644 --- a/doc/bindings/python/Makefile.am +++ b/doc/bindings/python/Makefile.am @@ -12,7 +12,11 @@ all-local: $(SPHINX_HTML_TARGET) $(SPHINX_DIRHTML_TARGET) PYTHON_BT2_BUILD_LIB_DIR = $(abs_top_builddir)/src/bindings/python/bt2/build/build_lib PP = $(PYTHON_BT2_BUILD_LIB_DIR) LLP = $(abs_top_builddir)/src/lib/.libs -SPHINXBUILD = PYTHONPATH="$(PP)" LD_LIBRARY_PATH="$(LLP)" DYLD_LIBRARY_PATH="$(LLP)" $(PYTHON) -m sphinx + +# PATH is used as a replacement for LD_LIBRARY_PATH on Windows build +# (CYGWIN, MINGW). +# DYLD_LIBRARY_PATH is used a replacement for LD_LIBRARY_PATH on MacOSX build. +SPHINXBUILD = PATH="$(LLP):$$PATH" PYTHONPATH="$(PP)" LD_LIBRARY_PATH="$(LLP)" DYLD_LIBRARY_PATH="$(LLP)" $(PYTHON) -m sphinx SPHINX_SRC = $(wildcard $(SPHINX_SOURCE_DIR)/*.rst) $(SPHINX_HTML_TARGET): $(SPHINX_SRC) diff --git a/tests/utils/utils.sh b/tests/utils/utils.sh index 487d7e7e..6463164d 100644 --- a/tests/utils/utils.sh +++ b/tests/utils/utils.sh @@ -40,6 +40,9 @@ if [ "x${BT_OS_TYPE:-}" = "x" ]; then Linux) BT_OS_TYPE="linux" ;; + CYGWIN*) + BT_OS_TYPE="cygwin" + ;; *) BT_OS_TYPE="unsupported" ;; @@ -228,7 +231,7 @@ run_python_bt2() { local main_lib_path="${BT_TESTS_BUILDDIR}/../src/lib/.libs" # Set the library search path so the python interpreter can load libbabeltrace2 - if [ "$BT_OS_TYPE" = "mingw" ]; then + if [ "$BT_OS_TYPE" = "mingw" ] || [ "$BT_OS_TYPE" = "cygwin" ]; then lib_search_var="PATH" lib_search_path="${main_lib_path}:${PATH:-}" elif [ "$BT_OS_TYPE" = "darwin" ]; then -- 2.34.1