File

tools/tb2err @ 12578:10bb58ad5583

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
author Kim Alvefur <zash@zash.se>
date Sat, 02 Jul 2022 17:27:39 +0200
parent 11191:13e2ac7b5798
child 13063:414952def2d3
line wrap: on
line source

#!/usr/bin/env lua-any
-- Lua-Versions: 5.3 5.2 5.1
-- traceback to errors.err for vim -q
local path_sep = package.config:sub(1,1);
for line in io.lines() do
	local src, err = line:match("%s*(%S+)(:%d+: .*)")
	if src then
		src = src:gsub("\\", path_sep);
		local cut = src:match("/()core/")
			or src:match("/()net/")
			or src:match("/()util/")
			or src:match("/()modules/")
			or src:match("/()plugins/")
			or src:match("/()prosody[ctl]*$") 
		if cut then
			src = src:sub(cut);
		end
		src = src:gsub("^modules/", "plugins/")
		io.write(src, err, "\n");
	end
end