[lxc-devel] [PATCH] lua: prepare for Lua 5.2
Dwight Engen
dwight.engen at oracle.com
Thu Sep 5 13:34:14 UTC 2013
On Thu, 5 Sep 2013 08:11:57 -0500
Serge Hallyn <serge.hallyn at ubuntu.com> wrote:
> Hi Dwight,
>
> do you have time to review/ack these (3, so far) lua patches?
>
> (I probably don't know enough to do so)
Yeah I've taken a look. I had already done an update similar to the
first two and was just getting ready to post after some more testing.
Natanael, would you mind taking a look at how I did the update and see
if it works for you? I've integrated the fixes you've done into
what I had, but I did the autoconf stuff a bit different (the
INSTALL_[CL]MOD pkg-config variables don't exist on Fedora/Oracle so I
did it more like lua-filesystem does) and also had to fix up that
there is no lxc subdir in cgroup anymore.
> thanks,
> -serge
>
> Quoting Natanael Copa (ncopa at alpinelinux.org):
> > Adjust code for Lua 5.2 and keep compatibility with Lua 5.1.
> >
> > We also fix a bug in the parsing of /proc/mounts while here.
> >
> > Signed-off-by: Natanael Copa <ncopa at alpinelinux.org>
> > ---
> > src/lua-lxc/core.c | 10 ++++++++--
> > src/lua-lxc/lxc.lua | 18 ++++++++++++++----
> > 2 files changed, 22 insertions(+), 6 deletions(-)
> >
> > diff --git a/src/lua-lxc/core.c b/src/lua-lxc/core.c
> > index 9ccbab4..d404707 100644
> > --- a/src/lua-lxc/core.c
> > +++ b/src/lua-lxc/core.c
> > @@ -25,9 +25,15 @@
> > #define _GNU_SOURCE
> > #include <lua.h>
> > #include <lauxlib.h>
> > +#include <assert.h>
> > #include <string.h>
> > #include <lxc/lxccontainer.h>
> >
> > +#if LUA_VERSION_NUM < 502
> > +#define luaL_newlib(L,l) (lua_newtable(L), luaL_register(L,NULL,l))
> > +#define luaL_setfuncs(L,l,n) (assert(n==0),
> > luaL_register(L,NULL,l)) +#endif
> > +
> > #ifdef NO_CHECK_UDATA
> > #define checkudata(L,i,tname) lua_touserdata(L, i)
> > #else
> > @@ -389,7 +395,7 @@ static int lxc_lib_uninit(lua_State *L) {
> > LUALIB_API int luaopen_lxc_core(lua_State *L) {
> > /* this is where we would initialize liblxc.so if we needed to
> > */
> > - luaL_register(L, "lxc", lxc_lib_methods);
> > + luaL_newlib(L, lxc_lib_methods);
> >
> > lua_newuserdata(L, 0);
> > lua_newtable(L); /* metatable */
> > @@ -401,12 +407,12 @@ LUALIB_API int luaopen_lxc_core(lua_State *L)
> > { lua_rawset(L, -3);
> >
> > luaL_newmetatable(L, CONTAINER_TYPENAME);
> > + luaL_setfuncs(L, lxc_container_methods, 0);
> > lua_pushvalue(L, -1); /* push metatable */
> > lua_pushstring(L, "__gc");
> > lua_pushcfunction(L, container_gc);
> > lua_settable(L, -3);
> > lua_setfield(L, -2, "__index"); /* metatable.__index =
> > metatable */
> > - luaL_register(L, NULL, lxc_container_methods);
> > lua_pop(L, 1);
> > return 1;
> > }
> > diff --git a/src/lua-lxc/lxc.lua b/src/lua-lxc/lxc.lua
> > index b48eb76..4ef1ff9 100755
> > --- a/src/lua-lxc/lxc.lua
> > +++ b/src/lua-lxc/lxc.lua
> > @@ -32,6 +32,11 @@ local lxc_path
> > local cgroup_path
> > local log_level = 3
> >
> > +-- lua 5.1 compat
> > +if table.unpack == nil then
> > + table.unpack = unpack
> > +end
> > +
> > -- the following two functions can be useful for debugging
> > function printf(...)
> > local function wrapper(...) io.write(string.format(...)) end
> > @@ -89,6 +94,9 @@ function cgroup_path_get()
> > while true do
> > local c
> > line = f:read()
> > + if line == nil then
> > + break
> > + end
> > c = line:split(" ", 6)
> > if (c[1] == "cgroup") then
> > cgroup_path = dirname(c[2])
> > @@ -283,7 +291,7 @@ function container:stat_get_ints(controller,
> > item, coords) table.insert(result, val)
> > end
> > end
> > - return unpack(result)
> > + return table.unpack(result)
> > end
> >
> > -- read an integer from a cgroup file
> > @@ -356,10 +364,10 @@ function container:stats_get(total)
> > return stat
> > end
> >
> > -
> > +local M = { container = container }
> >
> > -- return configured containers found in LXC_PATH directory
> > -function containers_configured(names_only)
> > +function M.containers_configured(names_only)
> > local containers = {}
> >
> > for dir in lfs.dir(lxc_path) do
> > @@ -387,7 +395,7 @@ function containers_configured(names_only)
> > end
> >
> > -- return running containers found in cgroup fs
> > -function containers_running(names_only)
> > +function M.containers_running(names_only)
> > local containers = {}
> > local attr
> >
> > @@ -423,3 +431,5 @@ end
> >
> > lxc_path = core.default_config_path_get()
> > cgroup_path = cgroup_path_get()
> > +
> > +return M
> > --
> > 1.8.4
> >
> >
> > ------------------------------------------------------------------------------
> > Learn the latest--Visual Studio 2012, SharePoint 2013, SQL 2012,
> > more! Discover the easy way to master current and previous
> > Microsoft technologies and advance your career. Get an incredible
> > 1,500+ hours of step-by-step tutorial videos with LearnDevNow.
> > Subscribe today and save!
> > http://pubads.g.doubleclick.net/gampad/clk?id=58041391&iu=/4140/ostg.clktrk
> > _______________________________________________ Lxc-devel mailing
> > list Lxc-devel at lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/lxc-devel
More information about the lxc-devel
mailing list