[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: [ANN] luaprompt 0.6
- From: Dimitris Papavasiliou <dpapavas@...>
- Date: Sat, 13 Jun 2015 16:46:14 +0300
On 06/12/2015 09:38 PM, Brigham Toskin wrote:
Here's what I'm seeing if I install the whole thing from scratch for lua
5.3 specifically. The include directories for the lua headers are
correctly versioned to 5.3, but I'm not seeing it linked explicitly with
any particular liblua at build time, so it should use the default for
the interpreter that loads it (5.3).
Yes, the module resolves Lua-related symbols from the interpreter when
it's loaded by it.
What I would guess is happening, based on the -L and -rpath options that
get set, is it's finding the system default /usr/lib/libreadline.dylib
before the one under /opt/local/lib, and it doesn't match what
libhistory is expecting (which isn't installed at all under /usr). But
what I don't understand is why it works under 5.2, which uses the same
-L and -rpath directives. Thoughts?
libhistory is actually provided by readline. It's not available in
/usr/lib because libedit packages both libraries in the same shared
object. Try building adding READLINE_DIR=/opt/local to the build
command line. You technically only specify the location of the history
library. That should be enough, since the readline library resides in
the same place and it wouldn't make much sense to pass the same path
twice to ld, but perhaps it will have some other effect. I'm not very
familiar with LuaRocks' build process.
You can see what libraries the module links against with:
$ ldd /usr/local/lib/lua/5.3/prompt.so
See what happens when you pass READLINE_DIR=/opt/local. If the module
still gets linked against /usr/lib/* libraries, then I'm afraid LuaRocks
doesn't handle the case where you have multiple libraries with the same
name installed, correctly. It probably should pass the explicitly
specified library paths before the default paths, but from what I see,
it doesn't. I'll try to set up a similar case in my system and see what
happens.
Now, regarding Lua 5.1 and LuaJIT: I can use the same module, built
against Lua 5.1 with both. Your missing symbols indicate that you
somehow try to load a module compiled for Lua 5.2. I can see the path
mentions 5.1 in both cases but on my system the missing symbols are only
mentioned in the 5.2 module:
dimitris@debian:~$ nm -a /usr/local/lib/lua/5.2/prompt.so | grep
"luaL_\(loadbuffer\|setfuncs\)"
U luaL_loadbufferx
U luaL_setfuncs
dimitris@debian:~$ nm -a /usr/local/lib/lua/5.1/prompt.so | grep
"luaL_\(loadbuffer\|setfuncs\)"
U luaL_loadbuffer
Perhaps you haven't configured LuaRocks correctly somehow?