diff --git a/utils/collectd/Makefile b/utils/collectd/Makefile index fea646dd9..04c68d4d3 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,)) 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);