# lua interpreter
%lua %( \
	[[ -x /usr/bin/lua ]] && echo lua || \
	for v in 5.3 5.1; do \
		[[ -x /usr/bin/lua$v ]] && echo lua$v && break; \
	done \
)

# evaluate current_lua_version
%current_lua_version %( \
	%lua -e 'print(_VERSION:match(" (5%%.[123])$"))' 2> /dev/null \
)

#common lua macros
%lua51_modulesdir_noarch %_datadir/lua/5.1
%lua51_modulesdir %_libdir/lua/5.1
%lua53_modulesdir_noarch %_datadir/lua/5.3
%lua53_modulesdir %_libdir/lua/5.3
%lua_modulesdir_noarch %_datadir/lua/%current_lua_version
%lua_modulesdir %_libdir/lua/%current_lua_version

%lua_path_add_buildroot \
export LUA_PATH="%buildroot%lua_modulesdir_noarch/?.lua;%buildroot%lua_modulesdir_noarch/?/init.lua;%lua_modulesdir_noarch/?.lua;%lua_modulesdir_noarch/?/init.lua;%buildroot%lua_modulesdir/?.lua;%buildroot%lua_modulesdir_noarch/?/init.lua;%lua_modulesdir/?.lua;%lua_modulesdir_noarch/?/init.lua" ; \
export LUA_CPATH="%buildroot%lua_modulesdir/?.so;%buildroot%lua_modulesdir/loadall.so;%lua_modulesdir/?.so;%lua_modulesdir/loadall.so"

# inter-version macros
%lua_modules_make_available_for_older_versions() \
find %buildroot%lua_modulesdir -type f | egrep -q . && echo "Using this macro for arch-dep packages is prohibited" && false ; \
for v in 5.1; do ( mkdir -p %buildroot%_datadir/lua/$v ; cd %buildroot%_datadir/lua/$v ; ln -s ../5.3/* . ) ; done

# LuaRocks-related macros
%luarocks_dbdir %_prefix/lib/luarocks/rocks

%luarocks_make() \
mkdir -p %buildroot%luarocks_dbdir ; \
cp -a %luarocks_dbdir/manifest %buildroot%luarocks_dbdir ||: ; \
find %luarocks_dbdir -mindepth 1 -maxdepth 1 -type d ! -name %oname -exec ln -s {} %buildroot%luarocks_dbdir \\; ; \
%lua %_bindir/luarocks make --local --to=%buildroot%prefix %* ; \
rename `echo %oname-%oversion | tr '.-' '_'`- '' %buildroot%lua_modulesdir/* %buildroot%lua_modulesdir_noarch/* ||: \
subst "s|%buildroot||g" %buildroot%_bindir/* ||: ; \
for f in `find %buildroot%lua_modulesdir | grep \.so$`; do \
_rpath=`chrpath -l "$f" | cut -d= -f2 | sed -r 's|%_libdir:?||'` ; \
chrpath -r "$_rpath" "$f" ||: ; \
done ; \
echo Sanity checks for cross-Lua builds \
if [ -d %luarocks_dbdir/%oname ]; then for f in `ls %buildroot%lua_modulesdir_noarch/`; do diff --no-dereference -qr %lua53_modulesdir_noarch/$f %buildroot%lua_modulesdir_noarch/$f ; done ; fi \
if [ -d %luarocks_dbdir/%oname ]; then diff --no-dereference -qr %luarocks_dbdir/%oname %buildroot%luarocks_dbdir/%oname | egrep -v '(%oname/%oversion/doc|/rock_manifest differ)' | egrep . ||: ; fi \

# %1 is the dir name to move
%luarocks_move_docs() \
rm -rf docs_from_rockstree ; \
mv %buildroot%luarocks_dbdir/%oname/%oversion/%1/ docs_from_rockstree ; \
ln -s %_docdir/%name-%version %buildroot%luarocks_dbdir/%oname/%oversion/%1

