From 3e11bbebada8e0a566c0e7bde1d97f938cd1221d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Vavru=C5=A1a?= <marek.vavrusa@nic.cz> Date: Thu, 5 Mar 2015 18:23:20 +0100 Subject: [PATCH] tests: cleanup module loading to fix broken tests --- .gitignore | 6 ------ lib/module.c | 26 ++++++++++++++------------ platform.mk | 2 +- tests/test_integration.c | 1 - tests/tests.mk | 4 ++-- 5 files changed, 17 insertions(+), 22 deletions(-) diff --git a/.gitignore b/.gitignore index 8211894e7..80b17c24c 100644 --- a/.gitignore +++ b/.gitignore @@ -30,9 +30,3 @@ /aclocal.m4 /ltmain.sh /ylwrap - -# CMake files -/CMakeCache.txt -/CMakeFiles -/Makefile -/cmake_install.cmake diff --git a/lib/module.c b/lib/module.c index 109f16ad9..c57349b10 100644 --- a/lib/module.c +++ b/lib/module.c @@ -121,25 +121,27 @@ int kr_module_load(struct kr_module *module, const char *name, const char *path) } /* Load all symbols. */ - module_api_cb *module_api = NULL; - auto_free char *module_prefix = kr_strcatdup(2, name, "_"); - *(void **) (&module_api) = load_symbol(module->lib, module_prefix, "api"); + auto_free char *module_prefix = kr_strcatdup(2, name, "_"); *(void **) (&module->init) = load_symbol(module->lib, module_prefix, "init"); *(void **) (&module->deinit) = load_symbol(module->lib, module_prefix, "deinit"); *(void **) (&module->config) = load_symbol(module->lib, module_prefix, "config"); *(void **) (&module->layer) = load_symbol(module->lib, module_prefix, "layer"); - /* Module initializer not found, attempt to load as Go shared library. */ - if (module_api == NULL) { - int ret = load_libgo(module, &module_api); - if (ret != 0) { - return ret; + /* API check for non-built-in libraries. */ + if (module->lib != RTLD_DEFAULT) { + module_api_cb *module_api = NULL; + *(void **) (&module_api) = load_symbol(module->lib, module_prefix, "api"); + if (module_api == NULL) { + int ret = load_libgo(module, &module_api); + if (ret != 0) { + return ret; + } } - } - /* Check module API version (if declared). */ - if (module_api && module_api() != KR_MODULE_API) { - return kr_error(ENOTSUP); + /* Check module API version (if declared). */ + if (module_api && module_api() != KR_MODULE_API) { + return kr_error(ENOTSUP); + } } /* Initialize module */ diff --git a/platform.mk b/platform.mk index 3720949e4..58c2c8abf 100644 --- a/platform.mk +++ b/platform.mk @@ -90,7 +90,7 @@ endef # Find binary define find_bin ifeq ($$(strip $$($(1)_BIN)),) - HAS_$(1) := $(shell $(1) --version >/dev/null && echo yes || echo no) + HAS_$(1) := $(shell $(1) --version > /dev/null 2>&1 && echo yes || echo no) else HAS_$(1) := yes $(1) := $$($(1)_BIN) diff --git a/tests/test_integration.c b/tests/test_integration.c index 21d8201a0..b2425b9bc 100644 --- a/tests/test_integration.c +++ b/tests/test_integration.c @@ -52,7 +52,6 @@ static PyObject* init(PyObject* self, PyObject* args) #define CACHE_SIZE 100*1024 mm_ctx_init(&global_mm); kr_context_init(&global_context, &global_mm); - kr_context_register(&global_context, "hints"); kr_context_register(&global_context, "iterate"); kr_context_register(&global_context, "itercache"); global_tmpdir = test_tmpdir_create(); diff --git a/tests/tests.mk b/tests/tests.mk index 299b5eed7..d6ccc6ec6 100644 --- a/tests/tests.mk +++ b/tests/tests.mk @@ -42,9 +42,9 @@ $(eval $(call make_shared,_test_integration,tests)) # Preload mock library insert_libs := tests/libmock_calls$(LIBEXT):modules/hints/hints$(LIBEXT) ifeq ($(PLATFORM),Darwin) - preload_libs := @DYLD_FORCE_FLAT_NAMESPACE=1 DYLD_INSERT_LIBRARIES=$(insert_libs) + preload_libs := @DYLD_FORCE_FLAT_NAMESPACE=1 DYLD_INSERT_LIBRARIES="$(insert_libs)" else - preload_libs := @LD_PRELOAD=$(insert_libs) + preload_libs := @LD_PRELOAD="$(subst :, ,$(insert_libs))" endif # Targets -- GitLab