Mercurial > prosody-hg
comparison util/dependencies.lua @ 10906:a1fed82c44b9
util.dependencies: Use util.human.io.table to replace custom layout code
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Thu, 04 Jun 2020 17:30:44 +0100 |
| parents | 29c1a3bf1d29 |
| children | 80733851be8b |
comparison
equal
deleted
inserted
replaced
| 10905:709255e332d8 | 10906:a1fed82c44b9 |
|---|---|
| 5 -- This project is MIT/X11 licensed. Please see the | 5 -- This project is MIT/X11 licensed. Please see the |
| 6 -- COPYING file in the source package for more information. | 6 -- COPYING file in the source package for more information. |
| 7 -- | 7 -- |
| 8 | 8 |
| 9 local function softreq(...) local ok, lib = pcall(require, ...); if ok then return lib; else return nil, lib; end end | 9 local function softreq(...) local ok, lib = pcall(require, ...); if ok then return lib; else return nil, lib; end end |
| 10 local platform_table = require "util.human.io".table({ { width = 15, align = "right" }, { width = "100%" } }); | |
| 10 | 11 |
| 11 -- Required to be able to find packages installed with luarocks | 12 -- Required to be able to find packages installed with luarocks |
| 12 if not softreq "luarocks.loader" then -- LuaRocks 2.x | 13 if not softreq "luarocks.loader" then -- LuaRocks 2.x |
| 13 softreq "luarocks.require"; -- LuaRocks <1.x | 14 softreq "luarocks.require"; -- LuaRocks <1.x |
| 14 end | 15 end |
| 18 print(""); | 19 print(""); |
| 19 print("**************************"); | 20 print("**************************"); |
| 20 print("Prosody was unable to find "..tostring(name)); | 21 print("Prosody was unable to find "..tostring(name)); |
| 21 print("This package can be obtained in the following ways:"); | 22 print("This package can be obtained in the following ways:"); |
| 22 print(""); | 23 print(""); |
| 23 local longest_platform = 0; | 24 for _, row in ipairs(sources) do |
| 24 for platform in pairs(sources) do | 25 print(platform_table(row)); |
| 25 longest_platform = math.max(longest_platform, #platform); | |
| 26 end | |
| 27 for platform, source in pairs(sources) do | |
| 28 print("", platform..":"..(" "):rep(4+longest_platform-#platform)..source); | |
| 29 end | 26 end |
| 30 print(""); | 27 print(""); |
| 31 print(msg or (name.." is required for Prosody to run, so we will now exit.")); | 28 print(msg or (name.." is required for Prosody to run, so we will now exit.")); |
| 32 print("More help can be found on our website, at https://prosody.im/doc/depends"); | 29 print("More help can be found on our website, at https://prosody.im/doc/depends"); |
| 33 print("**************************"); | 30 print("**************************"); |
| 47 | 44 |
| 48 local lxp, err = softreq "lxp" | 45 local lxp, err = softreq "lxp" |
| 49 | 46 |
| 50 if not lxp then | 47 if not lxp then |
| 51 missingdep("luaexpat", { | 48 missingdep("luaexpat", { |
| 52 ["Debian/Ubuntu"] = "sudo apt-get install lua-expat"; | 49 { "Debian/Ubuntu", "sudo apt-get install lua-expat" }; |
| 53 ["luarocks"] = "luarocks install luaexpat"; | 50 { "luarocks", "luarocks install luaexpat" }; |
| 54 ["Source"] = "http://matthewwild.co.uk/projects/luaexpat/"; | 51 { "Source", "http://matthewwild.co.uk/projects/luaexpat/" }; |
| 55 }, nil, err); | 52 }, nil, err); |
| 56 fatal = true; | 53 fatal = true; |
| 57 end | 54 end |
| 58 | 55 |
| 59 local socket, err = softreq "socket" | 56 local socket, err = softreq "socket" |
| 60 | 57 |
| 61 if not socket then | 58 if not socket then |
| 62 missingdep("luasocket", { | 59 missingdep("luasocket", { |
| 63 ["Debian/Ubuntu"] = "sudo apt-get install lua-socket"; | 60 { "Debian/Ubuntu", "sudo apt-get install lua-socket" }; |
| 64 ["luarocks"] = "luarocks install luasocket"; | 61 { "luarocks", "luarocks install luasocket" }; |
| 65 ["Source"] = "http://www.tecgraf.puc-rio.br/~diego/professional/luasocket/"; | 62 { "Source", "http://www.tecgraf.puc-rio.br/~diego/professional/luasocket/" }; |
| 66 }, nil, err); | 63 }, nil, err); |
| 67 fatal = true; | 64 fatal = true; |
| 68 elseif not socket.tcp4 then | 65 elseif not socket.tcp4 then |
| 69 -- COMPAT LuaSocket before being IP-version agnostic | 66 -- COMPAT LuaSocket before being IP-version agnostic |
| 70 socket.tcp4 = socket.tcp; | 67 socket.tcp4 = socket.tcp; |
| 72 end | 69 end |
| 73 | 70 |
| 74 local lfs, err = softreq "lfs" | 71 local lfs, err = softreq "lfs" |
| 75 if not lfs then | 72 if not lfs then |
| 76 missingdep("luafilesystem", { | 73 missingdep("luafilesystem", { |
| 77 ["luarocks"] = "luarocks install luafilesystem"; | 74 { "luarocks", "luarocks install luafilesystem" }; |
| 78 ["Debian/Ubuntu"] = "sudo apt-get install lua-filesystem"; | 75 { "Debian/Ubuntu", "sudo apt-get install lua-filesystem" }; |
| 79 ["Source"] = "http://www.keplerproject.org/luafilesystem/"; | 76 { "Source", "http://www.keplerproject.org/luafilesystem/" }; |
| 80 }, nil, err); | 77 }, nil, err); |
| 81 fatal = true; | 78 fatal = true; |
| 82 end | 79 end |
| 83 | 80 |
| 84 local ssl, err = softreq "ssl" | 81 local ssl, err = softreq "ssl" |
| 85 | 82 |
| 86 if not ssl then | 83 if not ssl then |
| 87 missingdep("LuaSec", { | 84 missingdep("LuaSec", { |
| 88 ["Debian/Ubuntu"] = "sudo apt-get install lua-sec"; | 85 { "Debian/Ubuntu", "sudo apt-get install lua-sec" }; |
| 89 ["luarocks"] = "luarocks install luasec"; | 86 { "luarocks", "luarocks install luasec" }; |
| 90 ["Source"] = "https://github.com/brunoos/luasec"; | 87 { "Source", "https://github.com/brunoos/luasec" }; |
| 91 }, "SSL/TLS support will not be available", err); | 88 }, "SSL/TLS support will not be available", err); |
| 92 end | 89 end |
| 93 | 90 |
| 94 local bit, err = softreq"util.bitcompat"; | 91 local bit, err = softreq"util.bitcompat"; |
| 95 | 92 |
| 96 if not bit then | 93 if not bit then |
| 97 missingdep("lua-bitops", { | 94 missingdep("lua-bitops", { |
| 98 ["Debian/Ubuntu"] = "sudo apt-get install lua-bitop"; | 95 { "Debian/Ubuntu", "sudo apt-get install lua-bitop" }; |
| 99 ["luarocks"] = "luarocks install luabitop"; | 96 { "luarocks", "luarocks install luabitop" }; |
| 100 ["Source"] = "http://bitop.luajit.org/"; | 97 { "Source", "http://bitop.luajit.org/" }; |
| 101 }, "WebSocket support will not be available", err); | 98 }, "WebSocket support will not be available", err); |
| 102 end | 99 end |
| 103 | 100 |
| 104 local encodings, err = softreq "util.encodings" | 101 local encodings, err = softreq "util.encodings" |
| 105 if not encodings then | 102 if not encodings then |
| 106 if err:match("module '[^']*' not found") then | 103 if err:match("module '[^']*' not found") then |
| 107 missingdep("util.encodings", { | 104 missingdep("util.encodings", { |
| 108 ["Windows"] = "Make sure you have encodings.dll from the Prosody distribution in util/"; | 105 { "Windows", "Make sure you have encodings.dll from the Prosody distribution in util/" }; |
| 109 ["GNU/Linux"] = "Run './configure' and 'make' in the Prosody source directory to build util/encodings.so"; | 106 { "GNU/Linux", "Run './configure' and 'make' in the Prosody source directory to build util/encodings.so" }; |
| 110 }); | 107 }); |
| 111 else | 108 else |
| 112 print "***********************************" | 109 print "***********************************" |
| 113 print("util/encodings couldn't be loaded. Check that you have a recent version of libidn"); | 110 print("util/encodings couldn't be loaded. Check that you have a recent version of libidn"); |
| 114 print "" | 111 print "" |
| 121 | 118 |
| 122 local hashes, err = softreq "util.hashes" | 119 local hashes, err = softreq "util.hashes" |
| 123 if not hashes then | 120 if not hashes then |
| 124 if err:match("module '[^']*' not found") then | 121 if err:match("module '[^']*' not found") then |
| 125 missingdep("util.hashes", { | 122 missingdep("util.hashes", { |
| 126 ["Windows"] = "Make sure you have hashes.dll from the Prosody distribution in util/"; | 123 { "Windows", "Make sure you have hashes.dll from the Prosody distribution in util/" }; |
| 127 ["GNU/Linux"] = "Run './configure' and 'make' in the Prosody source directory to build util/hashes.so"; | 124 { "GNU/Linux", "Run './configure' and 'make' in the Prosody source directory to build util/hashes.so" }; |
| 128 }); | 125 }); |
| 129 else | 126 else |
| 130 print "***********************************" | 127 print "***********************************" |
| 131 print("util/hashes couldn't be loaded. Check that you have a recent version of OpenSSL (libcrypto in particular)"); | 128 print("util/hashes couldn't be loaded. Check that you have a recent version of OpenSSL (libcrypto in particular)"); |
| 132 print "" | 129 print "" |
