util/dependencies.lua

Mon, 23 Nov 2009 02:58:42 +0000

author
Matthew Wild <mwild1@gmail.com>
date
Mon, 23 Nov 2009 02:58:42 +0000
changeset 2146
5c54097ef84a
parent 1523
841d61be198f
child 2158
0ef04962e112
permissions
-rw-r--r--

util.dependencies: Make the commands line up properly in the "missing dependency" output. Yes, this was the commit you didn't know you were waiting for!

1523
841d61be198f Remove version number from copyright headers
Matthew Wild <mwild1@gmail.com>
parents: 894
diff changeset
1 -- Prosody IM
760
90ce865eebd8 Update copyright notices for 2009
Matthew Wild <mwild1@gmail.com>
parents: 759
diff changeset
2 -- Copyright (C) 2008-2009 Matthew Wild
90ce865eebd8 Update copyright notices for 2009
Matthew Wild <mwild1@gmail.com>
parents: 759
diff changeset
3 -- Copyright (C) 2008-2009 Waqas Hussain
519
cccd610a0ef9 Insert copyright/license headers
Matthew Wild <mwild1@gmail.com>
parents: 449
diff changeset
4 --
758
b1885732e979 GPL->MIT!
Matthew Wild <mwild1@gmail.com>
parents: 743
diff changeset
5 -- This project is MIT/X11 licensed. Please see the
b1885732e979 GPL->MIT!
Matthew Wild <mwild1@gmail.com>
parents: 743
diff changeset
6 -- COPYING file in the source package for more information.
519
cccd610a0ef9 Insert copyright/license headers
Matthew Wild <mwild1@gmail.com>
parents: 449
diff changeset
7 --
cccd610a0ef9 Insert copyright/license headers
Matthew Wild <mwild1@gmail.com>
parents: 449
diff changeset
8
cccd610a0ef9 Insert copyright/license headers
Matthew Wild <mwild1@gmail.com>
parents: 449
diff changeset
9
408
eb1a0960cefb Friendlier messages on missing dependencies
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10 local fatal;
eb1a0960cefb Friendlier messages on missing dependencies
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11
839
c45b5072f773 Better handling of found, but unloadable, core libraries (eg. undefined symbols)
Matthew Wild <mwild1@gmail.com>
parents: 760
diff changeset
12 local function softreq(...) local ok, lib = pcall(require, ...); if ok then return lib; else return nil, lib; end end
408
eb1a0960cefb Friendlier messages on missing dependencies
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
13
eb1a0960cefb Friendlier messages on missing dependencies
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
14 local function missingdep(name, sources, msg)
409
2269e9cbe153 Add MD5 to the list of checked dependencies
Matthew Wild <mwild1@gmail.com>
parents: 408
diff changeset
15 print("");
2269e9cbe153 Add MD5 to the list of checked dependencies
Matthew Wild <mwild1@gmail.com>
parents: 408
diff changeset
16 print("**************************");
408
eb1a0960cefb Friendlier messages on missing dependencies
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
17 print("Prosody was unable to find "..tostring(name));
eb1a0960cefb Friendlier messages on missing dependencies
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
18 print("This package can be obtained in the following ways:");
eb1a0960cefb Friendlier messages on missing dependencies
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
19 print("");
2146
5c54097ef84a util.dependencies: Make the commands line up properly in the "missing dependency" output. Yes, this was the commit you didn't know you were waiting for!
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
20 local longest_platform = 0;
5c54097ef84a util.dependencies: Make the commands line up properly in the "missing dependency" output. Yes, this was the commit you didn't know you were waiting for!
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
21 for platform in pairs(sources) do
5c54097ef84a util.dependencies: Make the commands line up properly in the "missing dependency" output. Yes, this was the commit you didn't know you were waiting for!
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
22 longest_platform = math.max(longest_platform, #platform);
5c54097ef84a util.dependencies: Make the commands line up properly in the "missing dependency" output. Yes, this was the commit you didn't know you were waiting for!
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
23 end
5c54097ef84a util.dependencies: Make the commands line up properly in the "missing dependency" output. Yes, this was the commit you didn't know you were waiting for!
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
24 for platform, source in pairs(sources) do
5c54097ef84a util.dependencies: Make the commands line up properly in the "missing dependency" output. Yes, this was the commit you didn't know you were waiting for!
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
25 print("", platform..":"..(" "):rep(4+longest_platform-#platform)..source);
408
eb1a0960cefb Friendlier messages on missing dependencies
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
26 end
410
5ce6801ad2e4 Trivial whitespace fix in the missing dependency message
Matthew Wild <mwild1@gmail.com>
parents: 409
diff changeset
27 print("");
408
eb1a0960cefb Friendlier messages on missing dependencies
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
28 print(msg or (name.." is required for Prosody to run, so we will now exit."));
526
b1d90f7d074a Fill blank with URL
Matthew Wild <mwild1@gmail.com>
parents: 519
diff changeset
29 print("More help can be found on our website, at http://prosody.im/doc/depends");
409
2269e9cbe153 Add MD5 to the list of checked dependencies
Matthew Wild <mwild1@gmail.com>
parents: 408
diff changeset
30 print("**************************");
2269e9cbe153 Add MD5 to the list of checked dependencies
Matthew Wild <mwild1@gmail.com>
parents: 408
diff changeset
31 print("");
408
eb1a0960cefb Friendlier messages on missing dependencies
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
32 end
eb1a0960cefb Friendlier messages on missing dependencies
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
33
eb1a0960cefb Friendlier messages on missing dependencies
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
34 local lxp = softreq "lxp"
eb1a0960cefb Friendlier messages on missing dependencies
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
35
eb1a0960cefb Friendlier messages on missing dependencies
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
36 if not lxp then
eb1a0960cefb Friendlier messages on missing dependencies
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
37 missingdep("luaexpat", { ["Ubuntu 8.04 (Hardy)"] = "sudo apt-get install liblua5.1-expat0"; ["luarocks"] = "luarocks install luaexpat"; });
eb1a0960cefb Friendlier messages on missing dependencies
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
38 fatal = true;
eb1a0960cefb Friendlier messages on missing dependencies
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
39 end
eb1a0960cefb Friendlier messages on missing dependencies
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
40
eb1a0960cefb Friendlier messages on missing dependencies
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
41 local socket = softreq "socket"
eb1a0960cefb Friendlier messages on missing dependencies
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
42
eb1a0960cefb Friendlier messages on missing dependencies
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
43 if not socket then
eb1a0960cefb Friendlier messages on missing dependencies
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
44 missingdep("luasocket", { ["Ubuntu 8.04 (Hardy)"] = "sudo apt-get install liblua5.1-socket2"; ["luarocks"] = "luarocks install luasocket"; });
eb1a0960cefb Friendlier messages on missing dependencies
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
45 fatal = true;
eb1a0960cefb Friendlier messages on missing dependencies
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
46 end
eb1a0960cefb Friendlier messages on missing dependencies
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
47
eb1a0960cefb Friendlier messages on missing dependencies
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
48 local ssl = softreq "ssl"
eb1a0960cefb Friendlier messages on missing dependencies
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
49
eb1a0960cefb Friendlier messages on missing dependencies
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
50 if not ssl then
413
4b61529d0884 Refuse to run without SSL/TLS unless run_without_ssl is set in config
Matthew Wild <mwild1@gmail.com>
parents: 410
diff changeset
51 if config.get("*", "core", "run_without_ssl") then
4b61529d0884 Refuse to run without SSL/TLS unless run_without_ssl is set in config
Matthew Wild <mwild1@gmail.com>
parents: 410
diff changeset
52 log("warn", "Running without SSL support because run_without_ssl is defined in the config");
4b61529d0884 Refuse to run without SSL/TLS unless run_without_ssl is set in config
Matthew Wild <mwild1@gmail.com>
parents: 410
diff changeset
53 else
4b61529d0884 Refuse to run without SSL/TLS unless run_without_ssl is set in config
Matthew Wild <mwild1@gmail.com>
parents: 410
diff changeset
54 missingdep("LuaSec", { ["Source"] = "http://www.inf.puc-rio.br/~brunoos/luasec/" }, "SSL/TLS support will not be available");
4b61529d0884 Refuse to run without SSL/TLS unless run_without_ssl is set in config
Matthew Wild <mwild1@gmail.com>
parents: 410
diff changeset
55 end
408
eb1a0960cefb Friendlier messages on missing dependencies
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
56 end
eb1a0960cefb Friendlier messages on missing dependencies
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
57
839
c45b5072f773 Better handling of found, but unloadable, core libraries (eg. undefined symbols)
Matthew Wild <mwild1@gmail.com>
parents: 760
diff changeset
58 local encodings, err = softreq "util.encodings"
742
b9f59372eb4e util.dependencies: Show useful messages when our own libraries are not found, too
Matthew Wild <mwild1@gmail.com>
parents: 615
diff changeset
59 if not encodings then
839
c45b5072f773 Better handling of found, but unloadable, core libraries (eg. undefined symbols)
Matthew Wild <mwild1@gmail.com>
parents: 760
diff changeset
60 if err:match("not found") then
c45b5072f773 Better handling of found, but unloadable, core libraries (eg. undefined symbols)
Matthew Wild <mwild1@gmail.com>
parents: 760
diff changeset
61 missingdep("util.encodings", { ["Windows"] = "Make sure you have encodings.dll from the Prosody distribution in util/";
742
b9f59372eb4e util.dependencies: Show useful messages when our own libraries are not found, too
Matthew Wild <mwild1@gmail.com>
parents: 615
diff changeset
62 ["GNU/Linux"] = "Run './configure' and 'make' in the Prosody source directory to build util/encodings.so";
b9f59372eb4e util.dependencies: Show useful messages when our own libraries are not found, too
Matthew Wild <mwild1@gmail.com>
parents: 615
diff changeset
63 });
839
c45b5072f773 Better handling of found, but unloadable, core libraries (eg. undefined symbols)
Matthew Wild <mwild1@gmail.com>
parents: 760
diff changeset
64 else
c45b5072f773 Better handling of found, but unloadable, core libraries (eg. undefined symbols)
Matthew Wild <mwild1@gmail.com>
parents: 760
diff changeset
65 print "***********************************"
c45b5072f773 Better handling of found, but unloadable, core libraries (eg. undefined symbols)
Matthew Wild <mwild1@gmail.com>
parents: 760
diff changeset
66 print("util/encodings couldn't be loaded. Check that you have a recent version of libidn");
c45b5072f773 Better handling of found, but unloadable, core libraries (eg. undefined symbols)
Matthew Wild <mwild1@gmail.com>
parents: 760
diff changeset
67 print ""
c45b5072f773 Better handling of found, but unloadable, core libraries (eg. undefined symbols)
Matthew Wild <mwild1@gmail.com>
parents: 760
diff changeset
68 print("The full error was:");
c45b5072f773 Better handling of found, but unloadable, core libraries (eg. undefined symbols)
Matthew Wild <mwild1@gmail.com>
parents: 760
diff changeset
69 print(err)
c45b5072f773 Better handling of found, but unloadable, core libraries (eg. undefined symbols)
Matthew Wild <mwild1@gmail.com>
parents: 760
diff changeset
70 print "***********************************"
c45b5072f773 Better handling of found, but unloadable, core libraries (eg. undefined symbols)
Matthew Wild <mwild1@gmail.com>
parents: 760
diff changeset
71 end
743
99ef95e119ad util.dependencies: Not finding our own libraries is fatal
Matthew Wild <mwild1@gmail.com>
parents: 742
diff changeset
72 fatal = true;
742
b9f59372eb4e util.dependencies: Show useful messages when our own libraries are not found, too
Matthew Wild <mwild1@gmail.com>
parents: 615
diff changeset
73 end
b9f59372eb4e util.dependencies: Show useful messages when our own libraries are not found, too
Matthew Wild <mwild1@gmail.com>
parents: 615
diff changeset
74
839
c45b5072f773 Better handling of found, but unloadable, core libraries (eg. undefined symbols)
Matthew Wild <mwild1@gmail.com>
parents: 760
diff changeset
75 local hashes, err = softreq "util.hashes"
c45b5072f773 Better handling of found, but unloadable, core libraries (eg. undefined symbols)
Matthew Wild <mwild1@gmail.com>
parents: 760
diff changeset
76 if not hashes then
c45b5072f773 Better handling of found, but unloadable, core libraries (eg. undefined symbols)
Matthew Wild <mwild1@gmail.com>
parents: 760
diff changeset
77 if err:match("not found") then
c45b5072f773 Better handling of found, but unloadable, core libraries (eg. undefined symbols)
Matthew Wild <mwild1@gmail.com>
parents: 760
diff changeset
78 missingdep("util.hashes", { ["Windows"] = "Make sure you have hashes.dll from the Prosody distribution in util/";
742
b9f59372eb4e util.dependencies: Show useful messages when our own libraries are not found, too
Matthew Wild <mwild1@gmail.com>
parents: 615
diff changeset
79 ["GNU/Linux"] = "Run './configure' and 'make' in the Prosody source directory to build util/hashes.so";
b9f59372eb4e util.dependencies: Show useful messages when our own libraries are not found, too
Matthew Wild <mwild1@gmail.com>
parents: 615
diff changeset
80 });
839
c45b5072f773 Better handling of found, but unloadable, core libraries (eg. undefined symbols)
Matthew Wild <mwild1@gmail.com>
parents: 760
diff changeset
81 else
c45b5072f773 Better handling of found, but unloadable, core libraries (eg. undefined symbols)
Matthew Wild <mwild1@gmail.com>
parents: 760
diff changeset
82 print "***********************************"
c45b5072f773 Better handling of found, but unloadable, core libraries (eg. undefined symbols)
Matthew Wild <mwild1@gmail.com>
parents: 760
diff changeset
83 print("util/hashes couldn't be loaded. Check that you have a recent version of OpenSSL (libcrypto in particular)");
c45b5072f773 Better handling of found, but unloadable, core libraries (eg. undefined symbols)
Matthew Wild <mwild1@gmail.com>
parents: 760
diff changeset
84 print ""
c45b5072f773 Better handling of found, but unloadable, core libraries (eg. undefined symbols)
Matthew Wild <mwild1@gmail.com>
parents: 760
diff changeset
85 print("The full error was:");
c45b5072f773 Better handling of found, but unloadable, core libraries (eg. undefined symbols)
Matthew Wild <mwild1@gmail.com>
parents: 760
diff changeset
86 print(err)
c45b5072f773 Better handling of found, but unloadable, core libraries (eg. undefined symbols)
Matthew Wild <mwild1@gmail.com>
parents: 760
diff changeset
87 print "***********************************"
c45b5072f773 Better handling of found, but unloadable, core libraries (eg. undefined symbols)
Matthew Wild <mwild1@gmail.com>
parents: 760
diff changeset
88 end
743
99ef95e119ad util.dependencies: Not finding our own libraries is fatal
Matthew Wild <mwild1@gmail.com>
parents: 742
diff changeset
89 fatal = true;
742
b9f59372eb4e util.dependencies: Show useful messages when our own libraries are not found, too
Matthew Wild <mwild1@gmail.com>
parents: 615
diff changeset
90 end
409
2269e9cbe153 Add MD5 to the list of checked dependencies
Matthew Wild <mwild1@gmail.com>
parents: 408
diff changeset
91
408
eb1a0960cefb Friendlier messages on missing dependencies
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
92 if fatal then os.exit(1); end

mercurial