prosody, prosodyctl, util.dependencies: Split checking and logging of dependencies so we can check hard deps before the config and logging is loaded

Mon, 20 Dec 2010 14:06:16 +0000

author
Matthew Wild <mwild1@gmail.com>
date
Mon, 20 Dec 2010 14:06:16 +0000
changeset 3904
f93163081b3c
parent 3903
5924197aa163
child 3905
9222dad9e1e8

prosody, prosodyctl, util.dependencies: Split checking and logging of dependencies so we can check hard deps before the config and logging is loaded

prosody file | annotate | diff | comparison | revisions
prosodyctl file | annotate | diff | comparison | revisions
util/dependencies.lua file | annotate | diff | comparison | revisions
--- a/prosody	Sun Dec 19 20:28:58 2010 +0500
+++ b/prosody	Mon Dec 20 14:06:16 2010 +0000
@@ -35,6 +35,12 @@
 prosody = { events = require "util.events".new(); };
 local prosody = prosody;
 
+-- Check dependencies
+local dependencies = require "util.dependencies";
+if not dependencies.check_dependencies() then
+	os.exit(1);
+end
+
 -- Load the config-parsing module
 config = require "core.configmanager"
 
@@ -99,11 +105,8 @@
 	require "core.loggingmanager"
 end
 
-function check_dependencies()
-	-- Check runtime dependencies
-	if not require "util.dependencies".check_dependencies() then
-		os.exit(1);
-	end
+function log_dependency_warnings()
+	dependencies.log_warnings();
 end
 
 function sandbox_require()
@@ -442,13 +445,13 @@
 -- previous steps to have already been performed
 read_config();
 init_logging();
-check_dependencies();
 sandbox_require();
 set_function_metatable();
 load_libraries();
 init_global_state();
 read_version();
 log("info", "Hello and welcome to Prosody version %s", prosody.version);
+log_dependency_warnings();
 load_secondary_libraries();
 init_data_store();
 init_global_protection();
--- a/prosodyctl	Sun Dec 19 20:28:58 2010 +0500
+++ b/prosodyctl	Mon Dec 20 14:06:16 2010 +0000
@@ -41,6 +41,11 @@
 };
 local prosody = prosody;
 
+local dependencies = require "util.dependencies";
+if not dependencies.check_dependencies() then
+	os.exit(1);
+end
+
 config = require "core.configmanager"
 
 do
@@ -94,9 +99,7 @@
 
 require "core.loggingmanager"
 
-if not require "util.dependencies".check_dependencies() then
-	os.exit(1);
-end
+dependencies.log_warnings();
 
 local data_path = config.get("*", "core", "data_path") or CFG_DATADIR or "data";
 require "util.datamanager".set_data_path(data_path);
--- a/util/dependencies.lua	Sun Dec 19 20:28:58 2010 +0500
+++ b/util/dependencies.lua	Mon Dec 20 14:06:16 2010 +0000
@@ -78,11 +78,6 @@
 				["luarocks"] = "luarocks install luasec";
 				["Source"] = "http://www.inf.puc-rio.br/~brunoos/luasec/";
 			}, "SSL/TLS support will not be available");
-	else
-		local major, minor, veryminor, patched = ssl._VERSION:match("(%d+)%.(%d+)%.?(%d*)(M?)");
-		if not major or ((tonumber(major) == 0 and (tonumber(minor) or 0) <= 3 and (tonumber(veryminor) or 0) <= 2) and patched ~= "M") then
-			log("error", "This version of LuaSec contains a known bug that causes disconnects, see http://prosody.im/doc/depends");
-		end
 	end
 	
 	local encodings, err = softreq "util.encodings"
@@ -121,5 +116,13 @@
 	return not fatal;
 end
 
+function log_warnings()
+	if ssl then
+		local major, minor, veryminor, patched = ssl._VERSION:match("(%d+)%.(%d+)%.?(%d*)(M?)");
+		if not major or ((tonumber(major) == 0 and (tonumber(minor) or 0) <= 3 and (tonumber(veryminor) or 0) <= 2) and patched ~= "M") then
+			log("error", "This version of LuaSec contains a known bug that causes disconnects, see http://prosody.im/doc/depends");
+		end
+	end
+end
 
 return _M;

mercurial