* SOFTWARE.
*/
-#define BT_LOG_OUTPUT_LEVEL python_plugin_provider_log_level
#define BT_LOG_TAG "PLUGIN-PY"
-#include <babeltrace/logging-internal.h>
-
-/*
- * Must be before the rest because some of the headers below could
- * contain logging statements which need this symbol when expanded.
- */
-static int python_plugin_provider_log_level = BT_LOG_NONE;
+#include "logging.h"
#include <babeltrace/babeltrace-internal.h>
#include <babeltrace/compiler-internal.h>
} python_state = PYTHON_STATE_NOT_INITED;
static PyObject *py_try_load_plugin_module_func = NULL;
-
-static
-void __attribute__((constructor)) logging_ctor(void)
-{
- python_plugin_provider_log_level =
- bt_log_get_level_from_env("BABELTRACE_PYTHON_PLUGIN_PROVIDER_LOG_LEVEL");
-}
+static bool python_was_initialized_by_us;
static
void print_python_traceback_warn(void)
}
if (!Py_IsInitialized()) {
+ BT_LOGI_STR("Python interpreter is not initialized: initializing Python interpreter.");
Py_InitializeEx(0);
+ python_was_initialized_by_us = true;
BT_LOGI("Initialized Python interpreter: version=\"%s\"",
Py_GetVersion());
+ } else {
+ BT_LOGI("Python interpreter is already initialized: version=\"%s\"",
+ Py_GetVersion());
}
py_bt2_py_plugin_mod = PyImport_ImportModule("bt2.py_plugin");
__attribute__((destructor)) static
void fini_python(void) {
- if (Py_IsInitialized()) {
+ if (Py_IsInitialized() && python_was_initialized_by_us) {
if (py_try_load_plugin_module_func) {
Py_DECREF(py_try_load_plugin_module_func);
py_try_load_plugin_module_func = NULL;