# TODO: files list macros

# lua interpreter
%lua %( \
	[[ -x /usr/bin/lua ]] && echo lua || \
	for v in 5.4 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%%.[1234])$"))' 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
%lua54_modulesdir_noarch %_datadir/lua/5.4
%lua54_modulesdir %_libdir/lua/5.4
%lua_anyver_modulesdir_noarch %_datadir/lua/*
%lua_anyver_modulesdir %_libdir/lua/*
%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"

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

%luarocks_versions_installed %( \
	ls /usr/bin/luarocks-[0-9]* | \
	sed 's|/usr/bin/luarocks-||' | \
	tr '\\n' ' ' | \
	sed 's| $||' \
)

# Garbage if multiple %%luarocks_versions_installed (should fail the build, TODO: deprecate)
%luarocks_dbdir %luarocks_dbdir_prefix-%luarocks_versions_installed

%luarocks_make() \
for v in %luarocks_versions_installed; do \
	mkdir -p %buildroot%luarocks_dbdir_prefix-$v ; \
	cp -a %luarocks_dbdir_prefix-$v/manifest %buildroot%luarocks_dbdir_prefix-$v ||: ; \
	find %luarocks_dbdir_prefix-$v -mindepth 1 -maxdepth 1 -type d ! -name %oname -exec ln -s {} %buildroot%luarocks_dbdir_prefix-$v \\; ; \
	luarocks-$v make --local --to=%buildroot%prefix %* ; \
	find %buildroot%luarocks_dbdir_prefix-$v -maxdepth 1 -type l -exec rm -f {} \\; \
	find %buildroot%_bindir -maxdepth 1 -type f -name '*[A-Za-z]' -exec cp -a {} {}-$v \\; ||: \
done ; \
echo Post-make fixes ; \
rename `echo %oname-%oversion | tr '.-' '_'`- '' %buildroot{%_libdir,%_datadir}/lua/*/* ||: ; \
subst "s|%buildroot||g" %buildroot%_bindir/* ||: ; \
for f in `find %buildroot%_libdir/lua/ | grep \.so$`; do \
	_rpath=`chrpath -l "$f" | cut -d= -f2 | sed -r 's|%_libdir:?||'` ; \
	chrpath -r "$_rpath" "$f" ||: ; \
done ; \

# "Sanity checks for multi-Lua builds" removed\
#TODO: add to repocop tests:
#1. if noarch files identical
#2. if %luarocks_dbdir_prefix-* files identical exept '(%oname/%oversion/doc|/rock_manifest differ)'

#TODO: move multiple dirs (doc, samples, test, ...)
# %1 is the dir name to move
%luarocks_move_docs() \
rm -rf docs_from_rockstree ; mkdir -p docs_from_rockstree ; \
for v in %luarocks_versions_installed; do \
	mv -f %buildroot%luarocks_dbdir_prefix-$v/%oname/%oversion/%1/* docs_from_rockstree/ ||: ; \
	rm -rf %buildroot%luarocks_dbdir_prefix-$v/%oname/%oversion/%1 ; \
	ln -s %_docdir/lua$v-module-%oname-%version %buildroot%luarocks_dbdir_prefix-$v/%oname/%oversion/%1 ; \
done ; \

