summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Seifert <soap@gentoo.org>2019-05-15 11:28:38 +0200
committerDavid Seifert <soap@gentoo.org>2019-05-15 11:28:38 +0200
commitef56c689570380dc0808b4c7e21195b759b10155 (patch)
tree74f8f47f21d150dbe0d26a90e2e6579584ad7e2a /dev-lua/toluapp
parentapp-emacs/ess: Install elisp source files. (diff)
downloadgentoo-ef56c689570380dc0808b4c7e21195b759b10155.tar.gz
gentoo-ef56c689570380dc0808b4c7e21195b759b10155.tar.bz2
gentoo-ef56c689570380dc0808b4c7e21195b759b10155.zip
dev-lua/toluapp: Use CMake for building
Closes: https://bugs.gentoo.org/399201 Closes: https://bugs.gentoo.org/590944 Closes: https://bugs.gentoo.org/648656 Closes: https://bugs.gentoo.org/679706 Package-Manager: Portage-2.3.66, Repoman-2.3.12 Signed-off-by: David Seifert <soap@gentoo.org>
Diffstat (limited to 'dev-lua/toluapp')
-rw-r--r--dev-lua/toluapp/Manifest1
-rw-r--r--dev-lua/toluapp/files/toluapp-1.0.93_p20190513-fix-multilib.patch37
-rw-r--r--dev-lua/toluapp/files/toluapp-1.0.93_p20190513-lua5.3.patch534
-rw-r--r--dev-lua/toluapp/toluapp-1.0.93_p20190513.ebuild29
4 files changed, 601 insertions, 0 deletions
diff --git a/dev-lua/toluapp/Manifest b/dev-lua/toluapp/Manifest
index de46d05a2e7..e76de25ee33 100644
--- a/dev-lua/toluapp/Manifest
+++ b/dev-lua/toluapp/Manifest
@@ -1 +1,2 @@
DIST tolua++-1.0.93.tar.bz2 163956 BLAKE2B e4ff54ec130036654446a6e1f5d487d40af9ebbf2fdb3a8ae055fd20768fad6434fdfd4f359369dbc3669565f54dad3d6957da06c6e029e6abe6a529861ff96e SHA512 d1ae56b2dd38437e0aef81d5230d1a954b8f914133cfa199a18193d05ecfd188ec2bbeec76e63846ef673dc89c12e47bfd9727c227b71833d622cc441c071013
+DIST toluapp-1.0.93_p20190513.tar.gz 248043 BLAKE2B 08db9f86f224c95532ede354d93317680beeacb7ab8c0e41ddd8ed785a682ab4a3664265d10fae7d36fab33864442fcb403985176a9c01797e29c72708500968 SHA512 5750f9d4bbb39832650ac6874c2933f4ed3ff5f6a40a2345ab795f6fea841ccdbc93cd1fee53ffc93db3cee43bfdb367fa1ec19cf0cd1f75edf6bdb8ee269442
diff --git a/dev-lua/toluapp/files/toluapp-1.0.93_p20190513-fix-multilib.patch b/dev-lua/toluapp/files/toluapp-1.0.93_p20190513-fix-multilib.patch
new file mode 100644
index 00000000000..21ebc499238
--- /dev/null
+++ b/dev-lua/toluapp/files/toluapp-1.0.93_p20190513-fix-multilib.patch
@@ -0,0 +1,37 @@
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -6,7 +6,7 @@
+
+ project ( toluapp C )
+ cmake_minimum_required ( VERSION 2.8 )
+-include ( cmake/dist.cmake )
++include ( GNUInstallDirs )
+
+ find_package ( Lua REQUIRED )
+ include_directories ( include src/lib ${LUA_INCLUDE_DIR} )
+@@ -19,7 +19,7 @@
+
+ add_library ( toluapp_lib ${SRC_LIBTOLUAPP} ${DEF_FILE} )
+ target_link_libraries ( toluapp_lib ${LUA_LIBRARIES} )
+-set_target_properties ( toluapp_lib PROPERTIES OUTPUT_NAME toluapp CLEAN_DIRECT_OUTPUT
++set_target_properties ( toluapp_lib PROPERTIES OUTPUT_NAME tolua++ CLEAN_DIRECT_OUTPUT
+ 1 )
+
+ # Build app
+@@ -27,10 +27,11 @@
+ set ( SRC_TOLUA src/bin/tolua.c src/bin/toluabind.c )
+ add_executable ( toluapp ${SRC_TOLUA} )
+ target_link_libraries ( toluapp toluapp_lib ${LUA_LIBRARIES} )
++set_target_properties ( toluapp PROPERTIES OUTPUT_NAME tolua++ )
+
+ # Install
+-install_library ( toluapp_lib )
+-install_executable ( toluapp )
+-install_header ( include/ )
+-install_data ( README INSTALL )
+-install_doc ( doc/ )
++install( TARGETS toluapp_lib DESTINATION ${CMAKE_INSTALL_LIBDIR} )
++install( TARGETS toluapp DESTINATION ${CMAKE_INSTALL_BINDIR} )
++install( DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} )
++install( FILES README DESTINATION ${CMAKE_INSTALL_DOCDIR} )
++install( DIRECTORY doc/ DESTINATION ${CMAKE_INSTALL_DOCDIR}/html )
diff --git a/dev-lua/toluapp/files/toluapp-1.0.93_p20190513-lua5.3.patch b/dev-lua/toluapp/files/toluapp-1.0.93_p20190513-lua5.3.patch
new file mode 100644
index 00000000000..4da3e33e7fe
--- /dev/null
+++ b/dev-lua/toluapp/files/toluapp-1.0.93_p20190513-lua5.3.patch
@@ -0,0 +1,534 @@
+Taken from https://aur.archlinux.org/cgit/aur.git/tree/tolua53.patch?h=tolua%2b%2b_5.3
+and slimmed down
+
+--- a/src/bin/lua/all.lua
++++ b/src/bin/lua/all.lua
+@@ -1,8 +1,8 @@
+ dofile(path.."compat-5.1.lua")
+ dofile(path.."compat.lua")
+-dofile(path.."basic.lua")
+ dofile(path.."feature.lua")
+ dofile(path.."verbatim.lua")
++dofile(path.."basic.lua")
+ dofile(path.."code.lua")
+ dofile(path.."typedef.lua")
+ dofile(path.."container.lua")
+--- a/src/bin/lua/basic.lua
++++ b/src/bin/lua/basic.lua
+@@ -75,8 +75,8 @@
+ end
+
+ function applyrenaming (s)
+- for i=1,getn(_renaming) do
+- local m,n = gsub(s,_renaming[i].old,_renaming[i].new)
++ for i,v in ipairs(_renaming) do
++ local m,n = gsub(s,v.old,v.new)
+ if n ~= 0 then
+ return m
+ end
+@@ -252,7 +252,8 @@
+ -- concatenate all parameters, following output rules
+ function concatparam (line, ...)
+ local i=1
+- while i<=arg.n do
++ local arg={...}
++ while i<=#arg do
+ if _cont and not strfind(_cont,'[%(,"]') and
+ strfind(arg[i],"^[%a_~]") then
+ line = line .. ' '
+@@ -263,7 +264,7 @@
+ end
+ i = i+1
+ end
+- if strfind(arg[arg.n],"[%/%)%;%{%}]$") then
++ if strfind(arg[#arg],"[%/%)%;%{%}]$") then
+ _cont=nil line = line .. '\n'
+ end
+ return line
+@@ -272,7 +273,8 @@
+ -- output line
+ function output (...)
+ local i=1
+- while i<=arg.n do
++ local arg = {...}
++ while i<=#arg do
+ if _cont and not strfind(_cont,'[%(,"]') and
+ strfind(arg[i],"^[%a_~]") then
+ write(' ')
+@@ -283,7 +285,7 @@
+ end
+ i = i+1
+ end
+- if strfind(arg[arg.n],"[%/%)%;%{%}]$") then
++ if strfind(arg[#arg],"[%/%)%;%{%}]$") then
+ _cont=nil write('\n')
+ end
+ end
+@@ -373,9 +375,10 @@
+
+ end
+
++
+ -- called to output an error message
+ function output_error_hook(...)
+- return string.format(...)
++ return string.format(table.unpack{...})
+ end
+
+ -- custom pushers
+--- a/src/bin/lua/class.lua
++++ b/src/bin/lua/class.lua
+@@ -92,7 +92,7 @@
+ self.btype = typevar(self.base)
+ self.ctype = 'const '..self.type
+ if self.extra_bases then
+- for i=1,table.getn(self.extra_bases) do
++ for i=1,#self.extra_bases do
+ self.extra_bases[i] = typevar(self.extra_bases[i])
+ end
+ end
+@@ -138,9 +138,9 @@
+ -- Expects the name, the base (array) and the body of the class.
+ function Class (n,p,b)
+
+- if table.getn(p) > 1 then
++ if #p > 1 then
+ b = string.sub(b, 1, -2)
+- for i=2,table.getn(p),1 do
++ for i=2,#p,1 do
+ b = b.."\n tolua_inherits "..p[i].." __"..p[i].."__;\n"
+ end
+ b = b.."\n}"
+--- a/src/bin/lua/clean.lua
++++ b/src/bin/lua/clean.lua
+@@ -19,14 +19,14 @@
+ }
+
+ function mask (s)
+- for i = 1,getn(MASK) do
++ for i = 1,#MASK do
+ s = gsub(s,MASK[i][2],MASK[i][1])
+ end
+ return s
+ end
+
+ function unmask (s)
+- for i = 1,getn(MASK) do
++ for i = 1,#MASK do
+ s = gsub(s,MASK[i][1],MASK[i][2])
+ end
+ return s
+--- a/src/bin/lua/compat-5.1.lua
++++ b/src/bin/lua/compat-5.1.lua
+@@ -25,10 +25,10 @@
+ end
+ end
+
+- local f = load(getfile, path)
++ local f, errmsg = load(getfile, path)
+ if not f then
+
+- error("error loading file "..path)
++ error("error loading file "..path ..": " .. errmsg)
+ end
+ return f()
+ end
+--- a/src/bin/lua/compat.lua
++++ b/src/bin/lua/compat.lua
+@@ -40,15 +40,13 @@
+ end
+ end
+
+-function dostring(s) return do_(loadstring(s)) end
++function dostring(s) return do_(load(s)) end
+ -- function dofile(s) return do_(loadfile(s)) end
+
+ -------------------------------------------------------------------
+ -- Table library
+ local tab = table
+-foreach = tab.foreach
+-foreachi = tab.foreachi
+-getn = tab.getn
++getn = function (tab) return #tab end
+ tinsert = tab.insert
+ tremove = tab.remove
+ sort = tab.sort
+@@ -78,7 +76,7 @@
+ frexp = math.frexp
+ ldexp = math.ldexp
+ log = math.log
+-log10 = math.log10
++log10 = function(val) return math.log(10, val) end
+ max = math.max
+ min = math.min
+ mod = math.mod
+@@ -177,17 +175,19 @@
+
+ function read (...)
+ local f = _INPUT
++ local arg = {...}
+ if rawtype(arg[1]) == 'userdata' then
+ f = tab.remove(arg, 1)
+ end
+- return f:read(unpack(arg))
++ return f:read(table.unpack(arg))
+ end
+
+ function write (...)
+ local f = _OUTPUT
++ local arg = {...}
+ if rawtype(arg[1]) == 'userdata' then
+ f = tab.remove(arg, 1)
+ end
+- return f:write(unpack(arg))
++ return f:write(table.unpack(arg))
+ end
+
+--- a/src/bin/lua/declaration.lua
++++ b/src/bin/lua/declaration.lua
+@@ -137,7 +137,7 @@
+ if b then
+
+ m = split_c_tokens(string.sub(m, 2, -2), ",")
+- for i=1, table.getn(m) do
++ for i=1, #m do
+ m[i] = string.gsub(m[i],"%s*([%*&])", "%1")
+ if not isbasic(m[i]) then
+ if not isenum(m[i]) then _, m[i] = applytypedef("", m[i]) end
+@@ -522,7 +522,7 @@
+ end
+
+ -- check the form: mod type* name
+- local s1 = gsub(s,"(%b\[\])",function (n) return gsub(n,'%*','\1') end)
++ local s1 = gsub(s,"(%b%[%])",function (n) return gsub(n,'%*','\1') end)
+ t = split_c_tokens(s1,'%*')
+ if t.n == 2 then
+ t[2] = gsub(t[2],'\1','%*') -- restore * in dimension expression
+--- a/src/bin/lua/feature.lua
++++ b/src/bin/lua/feature.lua
+@@ -132,7 +132,7 @@
+ if not fname or fname == '' then
+ fname = self.name
+ end
+- n = string.gsub(n..'_'.. (fname), "[<>:, \.%*&]", "_")
++ n = string.gsub(n..'_'.. (fname), "[<>:, \\.%*&]", "_")
+
+ return n
+ end
+--- a/src/bin/lua/function.lua
++++ b/src/bin/lua/function.lua
+@@ -520,7 +520,7 @@
+ function join(t, sep, first, last)
+
+ first = first or 1
+- last = last or table.getn(t)
++ last = last or #t
+ local lsep = ""
+ local ret = ""
+ local loop = false
+--- a/src/bin/lua/package.lua
++++ b/src/bin/lua/package.lua
+@@ -39,7 +39,7 @@
+ self.code = gsub(self.code,"\n%s*%$%]","\2")
+ self.code = gsub(self.code,"(%b\1\2)", function (c)
+ tinsert(L,c)
+- return "\n#["..getn(L).."]#"
++ return "\n#[".. #L .."]#"
+ end)
+ -- avoid preprocessing embedded C code
+ local C = {}
+@@ -47,14 +47,14 @@
+ self.code = gsub(self.code,"\n%s*%$%>","\4")
+ self.code = gsub(self.code,"(%b\3\4)", function (c)
+ tinsert(C,c)
+- return "\n#<"..getn(C)..">#"
++ return "\n#<".. #C ..">#"
+ end)
+ -- avoid preprocessing embedded C code
+ self.code = gsub(self.code,"\n%s*%$%{","\5") -- deal with embedded C code
+ self.code = gsub(self.code,"\n%s*%$%}","\6")
+ self.code = gsub(self.code,"(%b\5\6)", function (c)
+ tinsert(C,c)
+- return "\n#<"..getn(C)..">#"
++ return "\n#<".. #C..">#"
+ end)
+
+ --self.code = gsub(self.code,"\n%s*#[^d][^\n]*\n", "\n\n") -- eliminate preprocessor directives that don't start with 'd'
+@@ -64,7 +64,7 @@
+ local V = {}
+ self.code = gsub(self.code,"\n(%s*%$[^%[%]][^\n]*)",function (v)
+ tinsert(V,v)
+- return "\n#"..getn(V).."#"
++ return "\n#".. #V .."#"
+ end)
+
+ -- perform global substitution
+@@ -152,14 +152,14 @@
+ if flags.t then
+ output("#ifndef Mtolua_typeid\n#define Mtolua_typeid(L,TI,T)\n#endif\n")
+ end
+- foreach(_usertype,function(n,v)
++ for n,v in pairs(_usertype) do
+ if (not _global_classes[v]) or _global_classes[v]:check_public_access() then
+ output(' tolua_usertype(tolua_S,"',v,'");')
+ if flags.t then
+ output(' Mtolua_typeid(tolua_S,typeid(',v,'), "',v,'");')
+ end
+ end
+- end)
++ end
+ output('}')
+ output('\n')
+ end
+@@ -288,7 +288,7 @@
+ local t = {code=s}
+ extra = string.gsub(extra, "^%s*,%s*", "")
+ local pars = split_c_tokens(extra, ",")
+- include_file_hook(t, fn, unpack(pars))
++ include_file_hook(t, fn, table.unpack(pars))
+ return "\n\n" .. t.code
+ else
+ error('#Invalid include directive (use $cfile, $pfile, $lfile or $ifile)')
+@@ -322,7 +322,7 @@
+ table.insert(chunk, string.sub(line, 3) .. "\n")
+ else
+ local last = 1
+- for text, expr, index in string.gfind(line, "(.-)$(%b())()") do
++ for text, expr, index in string.gmatch(line, "(.-)$(%b())()") do
+ last = index
+ if text ~= "" then
+ table.insert(chunk, string.format('table.insert(__ret, %q )', text))
+@@ -334,10 +334,9 @@
+ end
+ end
+ table.insert(chunk, '\nreturn table.concat(__ret)\n')
+- local f,e = loadstring(table.concat(chunk))
++ local f,e = load(table.concat(chunk), nil, "t", _extra_parameters)
+ if e then
+ error("#"..e)
+ end
+- setfenv(f, _extra_parameters)
+ return f()
+ end
+--- a/src/bin/lua/template_class.lua
++++ b/src/bin/lua/template_class.lua
+@@ -22,7 +22,7 @@
+ for i =1 , types.n do
+
+ local Il = split_c_tokens(types[i], " ")
+- if table.getn(Il) ~= table.getn(self.args) then
++ if #Il ~= #self.args then
+ error("#invalid parameter count for "..types[i])
+ end
+ local bI = self.body
+@@ -31,16 +31,16 @@
+ --Tl[j] = findtype(Tl[j]) or Tl[j]
+ bI = string.gsub(bI, "([^_%w])"..self.args[j].."([^_%w])", "%1"..Il[j].."%2")
+ if self.parents then
+- for i=1,table.getn(self.parents) do
++ for i=1,#self.parents do
+ pI[i] = string.gsub(self.parents[i], "([^_%w]?)"..self.args[j].."([^_%w]?)", "%1"..Il[j].."%2")
+ end
+ end
+ end
+ --local append = "<"..string.gsub(types[i], "%s+", ",")..">"
+- local append = "<"..concat(Il, 1, table.getn(Il), ",")..">"
++ local append = "<"..concat(Il, 1, #Il, ",")..">"
+ append = string.gsub(append, "%s*,%s*", ",")
+ append = string.gsub(append, ">>", "> >")
+- for i=1,table.getn(pI) do
++ for i=1,#pI do
+ --pI[i] = string.gsub(pI[i], ">>", "> >")
+ pI[i] = resolve_template_types(pI[i])
+ end
+--- a/src/bin/tolua.c
++++ b/src/bin/tolua.c
+@@ -67,7 +67,11 @@
+ static void add_extra (lua_State* L, char* value) {
+ int len;
+ lua_getglobal(L, "_extra_parameters");
++#if LUA_VERSION_NUM > 501
++ len = lua_rawlen(L, -1);
++#else
+ len = luaL_getn(L, -1);
++#endif
+ lua_pushstring(L, value);
+ lua_rawseti(L, -2, len+1);
+ lua_pop(L, 1);
+@@ -145,7 +149,7 @@
+ }
+ lua_pop(L,1);
+ }
+-/* #define TOLUA_SCRIPT_RUN */
++#define TOLUA_SCRIPT_RUN
+ #ifndef TOLUA_SCRIPT_RUN
+ {
+ int tolua_tolua_open (lua_State* L);
+@@ -153,16 +157,17 @@
+ }
+ #else
+ {
+- char* p;
+- char path[BUFSIZ];
+- strcpy(path,argv[0]);
+- p = strrchr(path,'/');
+- if (p==NULL) p = strrchr(path,'\\');
+- p = (p==NULL) ? path : p+1;
+- sprintf(p,"%s","../src/bin/lua/");
+- lua_pushstring(L,path); lua_setglobal(L,"path");
+- strcat(path,"all.lua");
+- lua_dofile(L,path);
++ lua_pushstring(L, "/usr/share/toluapp/luapp/"); lua_setglobal(L,"path");
++ if (luaL_loadfile(L, "/usr/share/toluapp/luapp/all.lua") != 0) {
++ fprintf(stderr, "luaL_loadfile failed\n");
++ return 1;
++ }
++ if (lua_pcall(L, 0,0,0) != 0) {
++ const char *errmsg = lua_tostring(L, -1);
++ fprintf(stderr, "lua_pcall failed: %s\n", errmsg);
++ lua_pop(L, 1);
++ return 1;
++ }
+ }
+ #endif
+ return 0;
+--- a/src/lib/tolua_event.c
++++ b/src/lib/tolua_event.c
+@@ -23,12 +23,20 @@
+ static void storeatubox (lua_State* L, int lo)
+ {
+ #ifdef LUA_VERSION_NUM
++#if LUA_VERSION_NUM > 501
++ lua_getuservalue(L, lo);
++#else
+ lua_getfenv(L, lo);
++#endif
+ if (lua_rawequal(L, -1, TOLUA_NOPEER)) {
+ lua_pop(L, 1);
+ lua_newtable(L);
+ lua_pushvalue(L, -1);
++#if LUA_VERSION_NUM > 501
++ lua_setuservalue(L, lo); /* stack: k,v,table */
++#else
+ lua_setfenv(L, lo); /* stack: k,v,table */
++#endif
+ };
+ lua_insert(L, -3);
+ lua_settable(L, -3); /* on lua 5.1, we trade the "tolua_peers" lookup for a settable call */
+@@ -141,7 +149,11 @@
+ {
+ /* Access alternative table */
+ #ifdef LUA_VERSION_NUM /* new macro on version 5.1 */
++#if LUA_VERSION_NUM > 501
++ lua_getuservalue(L, 1);
++#else
+ lua_getfenv(L,1);
++#endif
+ if (!lua_rawequal(L, -1, TOLUA_NOPEER)) {
+ lua_pushvalue(L, 2); /* key */
+ lua_gettable(L, -2); /* on lua 5.1, we trade the "tolua_peers" lookup for a gettable call */
+@@ -420,6 +432,8 @@
+ */
+ TOLUA_API int class_gc_event (lua_State* L)
+ {
++ if (lua_type(L,1) == LUA_TUSERDATA)
++ {
+ void* u = *((void**)lua_touserdata(L,1));
+ int top;
+ /*fprintf(stderr, "collecting: looking at %p\n", u);*/
+@@ -427,7 +441,8 @@
+ lua_pushstring(L,"tolua_gc");
+ lua_rawget(L,LUA_REGISTRYINDEX);
+ */
+- lua_pushvalue(L, lua_upvalueindex(1));
++ lua_pushstring(L,"tolua_gc");
++ lua_rawget(L,LUA_REGISTRYINDEX); /* gc */
+ lua_pushlightuserdata(L,u);
+ lua_rawget(L,-2); /* stack: gc umt */
+ lua_getmetatable(L,1); /* stack: gc umt mt */
+@@ -456,6 +471,7 @@
+ lua_rawset(L,-5); /* stack: gc umt mt */
+ }
+ lua_pop(L,3);
++ }
+ return 0;
+ }
+
+--- a/src/lib/tolua_map.c
++++ b/src/lib/tolua_map.c
+@@ -262,8 +262,12 @@
+
+ lua_pop(L, 1);
+ lua_pushvalue(L, TOLUA_NOPEER);
+- };
++ }
++#if LUA_VERSION_NUM > 501
++ lua_setuservalue(L, -2);
++#else
+ lua_setfenv(L, -2);
++#endif
+
+ return 0;
+ };
+@@ -271,7 +275,11 @@
+ static int tolua_bnd_getpeer(lua_State* L) {
+
+ /* stack: userdata */
++#if LUA_VERSION_NUM > 501
++ lua_getuservalue(L, -1);
++#else
+ lua_getfenv(L, -1);
++#endif
+ if (lua_rawequal(L, -1, TOLUA_NOPEER)) {
+ lua_pop(L, 1);
+ lua_pushnil(L);
+@@ -411,7 +419,11 @@
+ lua_rawget(L,-2);
+ }
+ else
++#if LUA_VERSION_NUM > 501
++ lua_pushglobaltable(L);
++#else
+ lua_pushvalue(L,LUA_GLOBALSINDEX);
++#endif
+ }
+
+ /* End module
+@@ -445,7 +457,11 @@
+ else
+ {
+ /* global table */
++#if LUA_VERSION_NUM > 501
++ lua_pushglobaltable(L);
++#else
+ lua_pushvalue(L,LUA_GLOBALSINDEX);
++#endif
+ }
+ if (hasvar)
+ {
+@@ -473,7 +489,11 @@
+ else
+ {
+ /* global table */
++#if LUA_VERSION_NUM > 501
++ lua_pushglobaltable(L);
++#else
+ lua_pushvalue(L,LUA_GLOBALSINDEX);
++#endif
+ }
+ if (hasvar)
+ {
+--- a/src/lib/tolua_push.c
++++ b/src/lib/tolua_push.c
+@@ -79,7 +79,11 @@
+
+ #ifdef LUA_VERSION_NUM
+ lua_pushvalue(L, TOLUA_NOPEER);
++#if LUA_VERSION_NUM > 501
++ lua_setuservalue(L, -2);
++#else
+ lua_setfenv(L, -2);
++#endif
+ #endif
+ }
+ else
diff --git a/dev-lua/toluapp/toluapp-1.0.93_p20190513.ebuild b/dev-lua/toluapp/toluapp-1.0.93_p20190513.ebuild
new file mode 100644
index 00000000000..d6f8c841fb1
--- /dev/null
+++ b/dev-lua/toluapp/toluapp-1.0.93_p20190513.ebuild
@@ -0,0 +1,29 @@
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit cmake-utils
+
+MY_PN=${PN/pp/++}
+COMMIT_ID="b34075b76835b778bb6b2ce0aa224afd9d182887"
+
+DESCRIPTION="A tool to integrate C/C++ code with Lua"
+HOMEPAGE="https://github.com/LuaDist/toluapp"
+SRC_URI="https://github.com/LuaDist/toluapp/archive/${COMMIT_ID}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~ppc ~ppc64 ~sparc ~x86"
+IUSE=""
+
+RDEPEND=">=dev-lang/lua-5.1.1:=[deprecated]"
+DEPEND="${RDEPEND}"
+
+S="${WORKDIR}/${PN}-${COMMIT_ID}"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-1.0.93_p20190513-fix-multilib.patch
+ "${FILESDIR}"/${PN}-1.0.93_p20190513-lua5.3.patch
+)
+CMAKE_REMOVE_MODULES_LIST="dist.cmake lua.cmake FindLua.cmake"