From d8faca69a6339d21e97ceee4def69082b9c0acba Mon Sep 17 00:00:00 2001 From: Sergey Bronnikov <sergeyb@tarantool.org> Date: Fri, 14 Apr 2023 14:44:59 +0300 Subject: [PATCH] lua: implement stubs for etcd client To enable etcd client set the following CMake variables: - ENABLE_ETCD_CLIENT: ON - ETCD_CLIENT_DIR: path to a directory with etcd client Lua source files If ENABLE_ETCD_CLIENT is unset, then a stub implementation is built, which spits an error on attempt require etcd-client. Needed for https://github.com/tarantool/tarantool-ee/issues/443 MSG="stubs for enterprise version, no user-visible changes" NO_CHANGELOG=MSG NO_DOC=MSG NO_TEST=MSG --- src/CMakeLists.txt | 17 +++++++++++++++++ src/lua/init.c | 38 ++++++++++++++++++++++++++++++++++++++ src/trivia/config.h.cmake | 1 + 3 files changed, 56 insertions(+) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 8f00d69170..bfa2ba999c 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -73,6 +73,23 @@ lua_source(lua_sources lua/compat.lua compat_lua) if (ENABLE_COMPRESS_MODULE) lua_source(lua_sources ${COMPRESS_MODULE_LUA_SOURCE} compress_lua) endif() +if (ENABLE_ETCD_CLIENT) + lua_source(lua_sources ${ETCD_CLIENT_DIR}/etcd-client/client/auth_http.lua etcd_client_client_auth_http_lua) + lua_source(lua_sources ${ETCD_CLIENT_DIR}/etcd-client/client/http.lua etcd_client_client_http_lua) + lua_source(lua_sources ${ETCD_CLIENT_DIR}/etcd-client/client/jsstream.lua etcd_client_client_jsstream_lua) + lua_source(lua_sources ${ETCD_CLIENT_DIR}/etcd-client/client/pool.lua etcd_client_client_pool_lua) + lua_source(lua_sources ${ETCD_CLIENT_DIR}/etcd-client/error/etcd.lua etcd_client_error_etcd_lua) + lua_source(lua_sources ${ETCD_CLIENT_DIR}/etcd-client/error/http.lua etcd_client_error_http_lua) + lua_source(lua_sources ${ETCD_CLIENT_DIR}/etcd-client/grpc_json.lua etcd_client_grpc_json_lua) + lua_source(lua_sources ${ETCD_CLIENT_DIR}/etcd-client/init.lua etcd_client_init_lua) + lua_source(lua_sources ${ETCD_CLIENT_DIR}/etcd-client/math.lua etcd_client_math_lua) + lua_source(lua_sources ${ETCD_CLIENT_DIR}/etcd-client/protocol.lua etcd_client_protocol_lua) + lua_source(lua_sources ${ETCD_CLIENT_DIR}/etcd-client/subscribe/auto.lua etcd_client_subscribe_auto_lua) + lua_source(lua_sources ${ETCD_CLIENT_DIR}/etcd-client/subscribe/once.lua etcd_client_subscribe_once_lua) + lua_source(lua_sources ${ETCD_CLIENT_DIR}/etcd-client/txn.lua etcd_client_txn_lua) + lua_source(lua_sources ${ETCD_CLIENT_DIR}/etcd-client/utils.lua etcd_client_utils_lua) + lua_source(lua_sources ${ETCD_CLIENT_DIR}/etcd-client/version.lua etcd_client_version_lua) +endif() # 3rd party lua sources lua_source(lua_sources ../third_party/luafun/fun.lua fun_lua) diff --git a/src/lua/init.c b/src/lua/init.c index aba0160d14..c2d5dd53ec 100644 --- a/src/lua/init.c +++ b/src/lua/init.c @@ -271,6 +271,23 @@ extern char minifio_lua[], luarocks_util_lua[], luarocks_core_util_lua[] #endif /* defined(EMBED_LUAROCKS) */ +#if ENABLE_ETCD_CLIENT + , etcd_client_client_auth_http_lua[], + etcd_client_client_http_lua[], + etcd_client_client_jsstream_lua[], + etcd_client_client_pool_lua[], + etcd_client_error_etcd_lua[], + etcd_client_error_http_lua[], + etcd_client_grpc_json_lua[], + etcd_client_init_lua[], + etcd_client_math_lua[], + etcd_client_protocol_lua[], + etcd_client_subscribe_auto_lua[], + etcd_client_subscribe_once_lua[], + etcd_client_txn_lua[], + etcd_client_utils_lua[], + etcd_client_version_lua[] +#endif ; static const char *lua_modules[] = { @@ -340,6 +357,27 @@ static const char *lua_modules[] = { "internal.print", print_lua, "internal.pairs", pairs_lua, "luadebug", luadebug_lua, +#if ENABLE_ETCD_CLIENT + /* + * Module components order is important here: components that required + * other modules must be loaded first. + */ + "etcd-client.version", etcd_client_version_lua, + "etcd-client.utils", etcd_client_utils_lua, + "etcd-client.math", etcd_client_math_lua, + "etcd-client.txn", etcd_client_txn_lua, + "etcd-client.grpc_json", etcd_client_grpc_json_lua, + "etcd-client.protocol", etcd_client_protocol_lua, + "etcd-client.subscribe.auto", etcd_client_subscribe_auto_lua, + "etcd-client.subscribe.once", etcd_client_subscribe_once_lua, + "etcd-client.error.etcd", etcd_client_error_etcd_lua, + "etcd-client.error.http", etcd_client_error_http_lua, + "etcd-client.client.pool", etcd_client_client_pool_lua, + "etcd-client.client.jsstream", etcd_client_client_jsstream_lua, + "etcd-client.client.http", etcd_client_client_http_lua, + "etcd-client.client.auth_http", etcd_client_client_auth_http_lua, + "etcd-client", etcd_client_init_lua, +#endif NULL }; diff --git a/src/trivia/config.h.cmake b/src/trivia/config.h.cmake index 7c5c79e592..213c235e0a 100644 --- a/src/trivia/config.h.cmake +++ b/src/trivia/config.h.cmake @@ -291,6 +291,7 @@ #cmakedefine ENABLE_READ_VIEW 1 #cmakedefine ENABLE_SECURITY 1 #cmakedefine ENABLE_COMPRESS_MODULE 1 +#cmakedefine ENABLE_ETCD_CLIENT 1 #cmakedefine EXPORT_LIBCURL_SYMBOLS 1 -- GitLab