From ef56c689570380dc0808b4c7e21195b759b10155 Mon Sep 17 00:00:00 2001 From: David Seifert Date: Wed, 15 May 2019 11:28:38 +0200 Subject: 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 --- dev-lua/toluapp/Manifest | 1 + .../toluapp-1.0.93_p20190513-fix-multilib.patch | 37 ++ .../files/toluapp-1.0.93_p20190513-lua5.3.patch | 534 +++++++++++++++++++++ dev-lua/toluapp/toluapp-1.0.93_p20190513.ebuild | 29 ++ 4 files changed, 601 insertions(+) create mode 100644 dev-lua/toluapp/files/toluapp-1.0.93_p20190513-fix-multilib.patch create mode 100644 dev-lua/toluapp/files/toluapp-1.0.93_p20190513-lua5.3.patch create mode 100644 dev-lua/toluapp/toluapp-1.0.93_p20190513.ebuild diff --git a/dev-lua/toluapp/Manifest b/dev-lua/toluapp/Manifest index de46d05a2e79..e76de25ee333 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 000000000000..21ebc4992382 --- /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 000000000000..4da3e33e7fec --- /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 000000000000..d6f8c841fb1a --- /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" -- cgit v1.2.3-65-gdbad