From 1a6c5ee351e979a3fbfabe8472eff743fef20f8d Mon Sep 17 00:00:00 2001 From: Stefan Seyfried Date: Sun, 26 Jan 2014 00:16:30 +0100 Subject: [PATCH] Revert "- rewrite Lua handling" This reverts commit ed048eebddb8c5c03c8c5a911c091059a635ee80. It broke static linked lua+luaposix completely, which is useful for debugging and thus should be kept working. Origin commit data ------------------ Branch: ni/coolstream Commit: https://github.com/neutrino-images/ni-neutrino/commit/f10057118fa7c43f99b0b7d7fab124d8a35aede2 Author: Stefan Seyfried Date: 2014-01-26 (Sun, 26 Jan 2014) ------------------ This commit was generated by Migit --- configure.ac | 37 ++++++++++++++++++++----------------- src/gui/luainstance.cpp | 35 +++++++++++++++++++++++++++++++++-- 2 files changed, 53 insertions(+), 19 deletions(-) diff --git a/configure.ac b/configure.ac index 6c6401ac4..45043c41c 100644 --- a/configure.ac +++ b/configure.ac @@ -95,6 +95,16 @@ TUXBOX_APPS_LIB_PKGCONFIG(AVFORMAT,libavformat) TUXBOX_APPS_LIB_PKGCONFIG(AVCODEC,libavcodec) TUXBOX_APPS_LIB_PKGCONFIG(AVUTIL,libavutil) +# either use dynamic lualib in package lua (openSUSE) +# ... or in package lua5.2 (debian-derivates) +# ... and if all fails, assume it is in the linker path (cross build) +PKG_CHECK_MODULES([LUA], [lua >= 5.2], echo "lua >= 5.2 found", [ + PKG_CHECK_MODULES([LUA], [lua5.2 >= 5.2], echo "lua5.2 found", [ + echo "=> lualib not found, assuming static lua in linker path..." + LUA_LIBS="-llua -ldl" + ]) +]) + #TUXBOX_APPS_LIB_PKGCONFIG(CONFIGFILE,tuxbox-configfile) #TUXBOX_APPS_LIB_PKGCONFIG(CONNECTION,tuxbox-connection) #TUXBOX_APPS_LIB_PKGCONFIG(EVENTSERVER,tuxbox-eventserver) @@ -152,23 +162,6 @@ if test "$enable_upnp" = "yes"; then AC_DEFINE(ENABLE_UPNP,1,[include UPNP support - currently broken]) fi -# Lua - embeddable scripting language -AC_ARG_ENABLE(lua, - AS_HELP_STRING(--enable-lua,include Lua support), - ,[enable_lua=no]) - -AM_CONDITIONAL(ENABLE_LUA,test "$enable_lua" = "yes") -if test "$enable_lua" = "yes"; then - AC_DEFINE(ENABLE_LUA,1,[include Lua support]) - PKG_CHECK_MODULES([LUA], [lua >= 5.2], echo "lua >= 5.2 found", [ - PKG_CHECK_MODULES([LUA], [lua5.2 >= 5.2], echo "lua5.2 found", [ - echo "=> lualib not found, assuming static lua in linker path..." - LUA_LIBS="-llua -ldl" - AC_DEFINE(STATIC_LUAPOSIX,1,[Define to 1 for static lua build.]) - ]) - ]) -fi - AC_ARG_ENABLE(cleanup, [ --enable-cleanup enable cleanup on exit], [AC_DEFINE(EXIT_CLEANUP,1,[enable cleanup on exit])]) @@ -186,6 +179,16 @@ if test "$enable_testmenu" = "yes"; then AC_DEFINE(ENABLE_TEST_MENU,1,[include test menu in neutrino main menu - not recommended for general users!]) fi + +AC_ARG_ENABLE(lua, + AS_HELP_STRING(--enable-lua,enable LUA support)) + +AM_CONDITIONAL(ENABLE_LUA,test "$enable_lua" = "yes") +if test "$enable_lua" = "yes"; then + AC_DEFINE(ENABLE_LUA,1,[include LUA support]) +fi + + if test "$BOXTYPE" = "coolstream"; then if test -e ${srcdir}/lib/libcoolstream/nevis_ir.h; then AC_DEFINE(HAVE_COOLSTREAM_NEVIS_IR_H,1,[Define to 1 if you have the header file.]) diff --git a/src/gui/luainstance.cpp b/src/gui/luainstance.cpp index 08d8f1a95..087a3b26b 100644 --- a/src/gui/luainstance.cpp +++ b/src/gui/luainstance.cpp @@ -347,12 +347,35 @@ const luaL_Reg CLuaInstance::methods[] = { NULL, NULL } }; -#ifdef STATIC_LUAPOSIX +#ifndef DYNAMIC_LUAPOSIX /* hack: we link against luaposix, which is included in our * custom built lualib */ extern "C" { LUAMOD_API int (luaopen_posix_c) (lua_State *L); } +#else +static int dolibrary (lua_State *L, const char *name) +{ + int status = 0; + const char *msg = ""; + lua_getglobal(L, "require"); + lua_pushstring(L, name); + status = lua_pcall(L, 1, 0, 0); + if (status && !lua_isnil(L, -1)) + { + msg = lua_tostring(L, -1); + if (NULL == msg) + { + msg = "(error object is not a string)"; + } + fprintf(stderr, "[CLuaInstance::%s] error in dolibrary: %s (%s)\n", __func__, name,msg); + lua_pop(L, 1); + } + else + { + printf("[CLuaInstance::%s] loaded library: %s\n", __func__, name); + } + return status; +} #endif - /* load basic functions and register our own C callbacks */ void CLuaInstance::registerFunctions() { @@ -361,6 +384,14 @@ void CLuaInstance::registerFunctions() luaopen_io(lua); luaopen_string(lua); luaopen_math(lua); +#ifndef DYNAMIC_LUAPOSIX +#if !HAVE_COOL_HARDWARE + luaopen_posix_c(lua); +#endif +#else + dolibrary(lua,"posix"); +#endif + lua_newtable(lua); int methodtable = lua_gettop(lua); luaL_newmetatable(lua, className);