From 073db87d448354024c663a695be2e4c62e8f506d Mon Sep 17 00:00:00 2001 From: Matthew Wild Date: Thu, 26 Feb 2009 02:42:47 +0000 Subject: Better handling of found, but unloadable, core libraries (eg. undefined symbols) --- util/dependencies.lua | 30 ++++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) (limited to 'util/dependencies.lua') diff --git a/util/dependencies.lua b/util/dependencies.lua index 09b7b018..6ba5f670 100644 --- a/util/dependencies.lua +++ b/util/dependencies.lua @@ -9,7 +9,7 @@ local fatal; -local function softreq(...) local ok, lib = pcall(require, ...); if ok then return lib; else return nil; end end +local function softreq(...) local ok, lib = pcall(require, ...); if ok then return lib; else return nil, lib; end end local function missingdep(name, sources, msg) print(""); @@ -51,19 +51,37 @@ if not ssl then end end -local encodings = softreq "util.encodings" +local encodings, err = softreq "util.encodings" if not encodings then - missingdep("util.encodings", { ["Windows"] = "Make sure you have encodings.dll from the Prosody distribution in util/"; + if err:match("not found") then + missingdep("util.encodings", { ["Windows"] = "Make sure you have encodings.dll from the Prosody distribution in util/"; ["GNU/Linux"] = "Run './configure' and 'make' in the Prosody source directory to build util/encodings.so"; }); + else + print "***********************************" + print("util/encodings couldn't be loaded. Check that you have a recent version of libidn"); + print "" + print("The full error was:"); + print(err) + print "***********************************" + end fatal = true; end -local encodings = softreq "util.hashes" -if not encodings then - missingdep("util.hashes", { ["Windows"] = "Make sure you have hashes.dll from the Prosody distribution in util/"; +local hashes, err = softreq "util.hashes" +if not hashes then + if err:match("not found") then + missingdep("util.hashes", { ["Windows"] = "Make sure you have hashes.dll from the Prosody distribution in util/"; ["GNU/Linux"] = "Run './configure' and 'make' in the Prosody source directory to build util/hashes.so"; }); + else + print "***********************************" + print("util/hashes couldn't be loaded. Check that you have a recent version of OpenSSL (libcrypto in particular)"); + print "" + print("The full error was:"); + print(err) + print "***********************************" + end fatal = true; end -- cgit v1.2.3