[Tarantool-patches] [PATCH 38/43] build: export src/box/box.cc symbols

Vladislav Shpilevoy v.shpilevoy at tarantool.org
Sun Apr 12 03:13:20 MSK 2020


Exports functions visible to the public C API and used by
src/box/lua/schema.lua via FFI.

It is worth mentioning why box_export_syms() does not aggregate
all the other box_*_export_syms(). This is because there is a
broken dependency between main.cc and 'box' static lib.

'box' uses functions 'tarantool_uptime()' and 'load_cfg()', which
are defined in main.cc. When box_export_syms() tries to aggregate
symbols from its submodules, this break explodes. And its fix is
not as a trival as it seems, so it is postponed.

Part of #2971
---
 extra/exports  | 14 --------------
 src/box/box.cc | 22 ++++++++++++++++++++++
 src/exports.c  |  2 ++
 3 files changed, 24 insertions(+), 14 deletions(-)

diff --git a/extra/exports b/extra/exports
index 51420a322..81c92f503 100644
--- a/extra/exports
+++ b/extra/exports
@@ -2,20 +2,6 @@
 
 # Module API
 
-box_return_tuple
-box_space_id_by_name
-box_index_id_by_name
-box_select
-box_insert
-box_replace
-box_delete
-box_update
-box_upsert
-box_truncate
-box_sequence_next
-box_sequence_current
-box_sequence_set
-box_sequence_reset
 box_error_type
 box_error_code
 box_error_message
diff --git a/src/box/box.cc b/src/box/box.cc
index 0c15ba5e9..c8c78b3ce 100644
--- a/src/box/box.cc
+++ b/src/box/box.cc
@@ -2544,3 +2544,25 @@ box_reset_stat(void)
 	engine_reset_stat();
 	space_foreach(box_reset_space_stat, NULL);
 }
+
+extern "C" void **
+box_export_syms(void)
+{
+	static void *syms[] = {
+		(void *)box_delete,
+		(void *)box_index_id_by_name,
+		(void *)box_insert,
+		(void *)box_replace,
+		(void *)box_return_tuple,
+		(void *)box_select,
+		(void *)box_sequence_current,
+		(void *)box_sequence_next,
+		(void *)box_sequence_reset,
+		(void *)box_sequence_set,
+		(void *)box_space_id_by_name,
+		(void *)box_truncate,
+		(void *)box_update,
+		(void *)box_upsert,
+	};
+	return syms;
+}
diff --git a/src/exports.c b/src/exports.c
index 7fc38f642..109398bf1 100644
--- a/src/exports.c
+++ b/src/exports.c
@@ -49,6 +49,7 @@
  */
 
 EXPORT(base64_export_syms);
+EXPORT(box_export_syms);
 EXPORT(box_index_export_syms);
 EXPORT(box_key_def_export_syms);
 EXPORT(box_lua_export_syms);
@@ -82,6 +83,7 @@ export_syms(void)
 {
 	void *syms[] = {
 		base64_export_syms,
+		box_export_syms,
 		box_index_export_syms,
 		box_key_def_export_syms,
 		box_lua_export_syms,
-- 
2.21.1 (Apple Git-122.3)



More information about the Tarantool-patches mailing list