From be86e43e2202a45307535564c0458e5ffe86af6e Mon Sep 17 00:00:00 2001 From: Florian Eckert Date: Thu, 24 Jan 2019 13:53:17 +0100 Subject: [PATCH 1/2] collectd: enable lua support This will enable the lua support for collectd. The new package name is collectd-mod-lua Signed-off-by: Florian Eckert --- utils/collectd/Makefile | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/utils/collectd/Makefile b/utils/collectd/Makefile index 71dee4285..9084f515a 100644 --- a/utils/collectd/Makefile +++ b/utils/collectd/Makefile @@ -53,7 +53,6 @@ COLLECTD_PLUGINS_DISABLED:= \ ipvs \ java \ log_logstash \ - lua \ lvm \ lpar \ madwifi \ @@ -138,6 +137,7 @@ COLLECTD_PLUGINS_SELECTED:= \ iwinfo \ load \ logfile \ + lua \ match_empty_counter \ match_hashed \ match_regex \ @@ -196,7 +196,11 @@ endef define Package/collectd $(call Package/collectd/Default) - DEPENDS:= +libpthread +zlib +libltdl +libip4tc + DEPENDS:= +libpthread \ + +zlib \ + +libltdl \ + +libip4tc \ + +PACKAGE_collectd-mod-lua:liblua MENU:=1 endef @@ -226,7 +230,12 @@ CONFIGURE_ARGS+= \ CONFIGURE_VARS+= \ CFLAGS="$$$$CFLAGS $(FPIC)" \ LDFLAGS="$$$$LDFLAGS -lm -lz" \ - KERNEL_DIR="$(LINUX_DIR)" \ + KERNEL_DIR="$(LINUX_DIR)" + +ifneq ($(CONFIG_PACKAGE_collectd-mod-lua),) +CONFIGURE_VARS+= \ + LDFLAGS="$$$$LDFLAGS -llua" +endif ifneq ($(CONFIG_PACKAGE_COLLECTD_ENCRYPTED_NETWORK),) CONFIGURE_ARGS+= \ @@ -360,6 +369,7 @@ $(eval $(call BuildPlugin,irq,interrupt usage input,irq,)) $(eval $(call BuildPlugin,iwinfo,libiwinfo wireless statistics,iwinfo,+PACKAGE_collectd-mod-iwinfo:libiwinfo)) $(eval $(call BuildPlugin,load,system load input,load,)) $(eval $(call BuildPlugin,logfile,log files output,logfile,)) +$(eval $(call BuildPlugin,lua,lua input/output,lua,+PACKAGE_collectd-mod-lua:liblua)) $(eval $(call BuildPlugin,match-empty-counter,empty-counter match,match_empty_counter,)) $(eval $(call BuildPlugin,match-hashed,hashed match,match_hashed,)) $(eval $(call BuildPlugin,match-regex,regex match,match_regex,)) From 30db5cc1c17424acaaaee24366e57ca7e704b484 Mon Sep 17 00:00:00 2001 From: Florian Eckert Date: Tue, 19 Feb 2019 10:25:58 +0100 Subject: [PATCH 2/2] collectd: fix lua callback registration If you want to register more than one lua plugin, you cannot start the collectd. You get always the error message: "The read function "lua/(null)" is already registered. Check for duplicates in your configuration!" This is not what I expect and what the documenation says. With this change it is now possible to registrate more then one lua Script. See https://github.com/collectd/collectd/pull/2379 Signed-off-by: Florian Eckert --- .../930-fix-lua-callback-registration.patch | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 utils/collectd/patches/930-fix-lua-callback-registration.patch diff --git a/utils/collectd/patches/930-fix-lua-callback-registration.patch b/utils/collectd/patches/930-fix-lua-callback-registration.patch new file mode 100644 index 000000000..bffe656e0 --- /dev/null +++ b/utils/collectd/patches/930-fix-lua-callback-registration.patch @@ -0,0 +1,42 @@ +--- a/src/lua.c ++++ b/src/lua.c +@@ -281,9 +281,6 @@ static int lua_cb_register_read(lua_Stat + + luaL_checktype(L, 1, LUA_TFUNCTION); + +- char function_name[DATA_MAX_NAME_LEN]; +- snprintf(function_name, sizeof(function_name), "lua/%s", lua_tostring(L, 1)); +- + int callback_id = clua_store_callback(L, 1); + if (callback_id < 0) + return luaL_error(L, "%s", "Storing callback function failed"); +@@ -298,6 +295,9 @@ static int lua_cb_register_read(lua_Stat + if (cb == NULL) + return luaL_error(L, "%s", "calloc failed"); + ++ char function_name[DATA_MAX_NAME_LEN]; ++ snprintf(function_name, sizeof(function_name), "lua/%p", thread); ++ + cb->lua_state = thread; + cb->callback_id = callback_id; + cb->lua_function_name = strdup(function_name); +@@ -325,9 +325,6 @@ static int lua_cb_register_write(lua_Sta + + luaL_checktype(L, 1, LUA_TFUNCTION); + +- char function_name[DATA_MAX_NAME_LEN] = ""; +- snprintf(function_name, sizeof(function_name), "lua/%s", lua_tostring(L, 1)); +- + int callback_id = clua_store_callback(L, 1); + if (callback_id < 0) + return luaL_error(L, "%s", "Storing callback function failed"); +@@ -342,6 +339,9 @@ static int lua_cb_register_write(lua_Sta + if (cb == NULL) + return luaL_error(L, "%s", "calloc failed"); + ++ char function_name[DATA_MAX_NAME_LEN] = ""; ++ snprintf(function_name, sizeof(function_name), "lua/%p", thread); ++ + cb->lua_state = thread; + cb->callback_id = callback_id; + cb->lua_function_name = strdup(function_name);