executables: Reject Lua 5.1 early
authorKim Alvefur <zash@zash.se>
Sat, 02 Jul 2022 17:27:39 +0200
changeset 12582 10bb58ad5583
parent 12581 f888c84b2284
child 12585 6ee9071c0a1f
executables: Reject Lua 5.1 early Prevents attempting to load libraries that may no longer be found and crashing with a traceback. Platforms like Debian where multiple Lua versions can be installed at the same time and 'lua' pointing to one of the installed interpreters via symlinks, there's the possibility that prosody/prosodyctl may be invoked with Lua 5.1, which will no longer have any of the rest of Prosody libraries available to be require(), and thus would immediately fail with an unfriendly traceback. Checking and aborting early with a friendlier message and reference to more information is better. Part of #1600
prosody
prosodyctl
--- a/prosody	Tue Jul 05 14:59:47 2022 +0200
+++ b/prosody	Sat Jul 02 17:27:39 2022 +0200
@@ -44,6 +44,12 @@
 end
 
 
+-- Check before first require, to preempt the probable failure
+if _VERSION < "Lua 5.2" then
+	io.stderr:write("Prosody is no longer compatible with Lua 5.1\n")
+	io.stderr:write("See https://prosody.im/doc/depends#lua for more information\n")
+	return os.exit(1);
+end
 
 local startup = require "util.startup";
 local async = require "util.async";
--- a/prosodyctl	Tue Jul 05 14:59:47 2022 +0200
+++ b/prosodyctl	Sat Jul 02 17:27:39 2022 +0200
@@ -44,6 +44,13 @@
 
 -----------
 
+-- Check before first require, to preempt the probable failure
+if _VERSION < "Lua 5.2" then
+	io.stderr:write("Prosody is no longer compatible with Lua 5.1\n")
+	io.stderr:write("See https://prosody.im/doc/depends#lua for more information\n")
+	return os.exit(1);
+end
+
 local startup = require "util.startup";
 startup.prosodyctl();