Replace assert() -> BT_ASSERT() and some preconditions with BT_ASSERT_PRE()
[babeltrace.git] / lib / plugin / plugin.c
index 2a76815cdccf0a2618d4d3e0f31567f3b509d52a..59b8727381c2c59efa39d183bb1e91544c5c68f7 100644 (file)
@@ -39,6 +39,7 @@
 #include <babeltrace/graph/component-class.h>
 #include <babeltrace/graph/component-class-internal.h>
 #include <babeltrace/types.h>
+#include <babeltrace/assert-internal.h>
 #include <glib.h>
 #include <unistd.h>
 #include <stdlib.h>
 static
 struct bt_plugin_set *(*bt_plugin_python_create_all_from_file_sym)(const char *path) =
        bt_plugin_python_create_all_from_file;
+
+static
+void init_python_plugin_provider(void) {}
 #else /* BT_BUILT_IN_PYTHON_PLUGIN_SUPPORT */
 static GModule *python_plugin_provider_module;
 static
 struct bt_plugin_set *(*bt_plugin_python_create_all_from_file_sym)(const char *path);
 
-__attribute__((constructor)) static
+static
 void init_python_plugin_provider(void) {
+       if (bt_plugin_python_create_all_from_file_sym != NULL) {
+               return;
+       }
+
        BT_LOGD_STR("Loading Python plugin provider module.");
        python_plugin_provider_module =
-               g_module_open(PYTHON_PLUGIN_PROVIDER_FILENAME,
-                       G_MODULE_BIND_LOCAL);
+               g_module_open(PYTHON_PLUGIN_PROVIDER_FILENAME, 0);
        if (!python_plugin_provider_module) {
-               BT_LOGI("Cannot find `%s`: continuing without Python plugin support.",
-                       PYTHON_PLUGIN_PROVIDER_FILENAME);
+               BT_LOGI("Cannot open `%s`: %s: continuing without Python plugin support.",
+                       PYTHON_PLUGIN_PROVIDER_FILENAME, g_module_error());
                return;
        }
 
@@ -170,6 +177,7 @@ struct bt_plugin_set *bt_plugin_create_all_from_file(const char *path)
        }
 
        /* Try Python plugins if support is available */
+       init_python_plugin_provider();
        if (bt_plugin_python_create_all_from_file_sym) {
                plugin_set = bt_plugin_python_create_all_from_file_sym(path);
                if (plugin_set) {
@@ -706,8 +714,8 @@ struct bt_component_class *bt_plugin_get_component_class_by_name_and_type(
                enum bt_component_class_type comp_class_cand_type =
                        bt_component_class_get_type(comp_class_candidate);
 
-               assert(comp_class_cand_name);
-               assert(comp_class_cand_type >= 0);
+               BT_ASSERT(comp_class_cand_name);
+               BT_ASSERT(comp_class_cand_type >= 0);
 
                if (strcmp(name, comp_class_cand_name) == 0 &&
                                comp_class_cand_type == type) {
This page took 0.025668 seconds and 4 git commands to generate.