Browse Source

[Minor] Allow to detect torch support from Lua

pull/1791/head
Vsevolod Stakhov 8 years ago
parent
commit
be8b130d14
  1. 1
      CMakeLists.txt
  2. 1
      config.h.in
  3. 36
      src/lua/lua_config.c

1
CMakeLists.txt

@ -1267,6 +1267,7 @@ IF(ENABLE_TORCH MATCHES "ON")
ADD_SUBDIRECTORY(contrib/torch/paths)
ADD_SUBDIRECTORY(contrib/torch/torch7)
ADD_SUBDIRECTORY(contrib/torch/nn)
SET(WITH_TORCH 1)
ELSE()
MESSAGE(FATAL_ERROR "Cannot enable torch without luajit")
ENDIF()

1
config.h.in

@ -137,6 +137,7 @@
#cmakedefine WITH_SNOWBALL 1
#cmakedefine WITH_SQLITE 1
#cmakedefine WITH_SYSTEM_HIREDIS 1
#cmakedefine WITH_TORCH 1
#cmakedefine DISABLE_PTHREAD_MUTEX 1

36
src/lua/lua_config.c

@ -639,6 +639,14 @@ LUA_FUNCTION_DEF (config, set_peak_cb);
*/
LUA_FUNCTION_DEF (config, get_cpu_flags);
/***
* @method rspamd_config:has_torch()
* Returns true if Rspamd is compiled with torch support and the runtime CPU
* supports sse4.2 required for torch.
* @return {boolean} true if torch is compiled and supported
*/
LUA_FUNCTION_DEF (config, has_torch);
static const struct luaL_reg configlib_m[] = {
LUA_INTERFACE_DEF (config, get_module_opt),
LUA_INTERFACE_DEF (config, get_mempool),
@ -686,6 +694,7 @@ static const struct luaL_reg configlib_m[] = {
LUA_INTERFACE_DEF (config, add_example),
LUA_INTERFACE_DEF (config, set_peak_cb),
LUA_INTERFACE_DEF (config, get_cpu_flags),
LUA_INTERFACE_DEF (config, get_cpu_flags),
{"__tostring", rspamd_lua_class_tostring},
{"__newindex", lua_config_newindex},
{NULL, NULL}
@ -2869,6 +2878,33 @@ lua_config_get_cpu_flags (lua_State *L)
return 1;
}
static gint
lua_config_has_torch (lua_State *L)
{
struct rspamd_config *cfg = lua_check_config (L, 1);
struct rspamd_cryptobox_library_ctx *crypto_ctx;
if (cfg != NULL) {
crypto_ctx = cfg->libs_ctx->crypto_ctx;
#ifndef WITH_TORCH
lua_pushboolean (L, false);
(void)crypto_ctx;
#else
if (crypto_ctx->cpu_config & CPUID_SSE42) {
lua_pushboolean (L, true);
}
else {
lua_pushboolean (L, false);
}
#endif
}
else {
return luaL_error (L, "invalid arguments");
}
return 1;
}
static gint
lua_monitored_alive (lua_State *L)
{

Loading…
Cancel
Save