Hi, According to someone on stackoverflow, "The lua team does not include support for shared libraries by default because doing so in a portable manner is not simple." http://stackoverflow.com/questions/20848275/compiling-lua-create-so-files But I believe all distributions have some kind of way of getting that .so. Here is the patch : From 81f659884cf02d0d63846b45be5f93d794a9e092 Mon Sep 17 00:00:00 2001 From: Kevin Lemonnier Date: Thu, 11 Sep 2014 03:12:39 +0200 Subject: [PATCH] gnu: Have lua-5.1 compile a .so * gnu/packages/patches/lua51-liblua-so.patch: New file * gnu/packages/lua.scm: Use of lua51-liblua-so.patch in lua-5.1 --- gnu/packages/lua.scm | 3 +- gnu/packages/patches/lua51-liblua-so.patch | 65 ++++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+), 1 deletion(-) create mode 100644 gnu/packages/patches/lua51-liblua-so.patch diff --git a/gnu/packages/lua.scm b/gnu/packages/lua.scm index a85c120..92ffc22 100644 --- a/gnu/packages/lua.scm +++ b/gnu/packages/lua.scm @@ -75,7 +75,8 @@ for configuration, scripting, and rapid prototyping.") (uri (string-append "http://www.lua.org/ftp/lua-" version ".tar.gz")) (sha256 - (base32 "0cskd4w0g6rdm2q8q3i4n1h3j8kylhs3rq8mxwl9vwlmlxbgqh16")))))) + (base32 "0cskd4w0g6rdm2q8q3i4n1h3j8kylhs3rq8mxwl9vwlmlxbgqh16")) + (patches (list (search-patch "lua51-liblua-so.patch"))))))) (define-public luajit (package diff --git a/gnu/packages/patches/lua51-liblua-so.patch b/gnu/packages/patches/lua51-liblua-so.patch new file mode 100644 index 0000000..4442858 --- /dev/null +++ b/gnu/packages/patches/lua51-liblua-so.patch @@ -0,0 +1,65 @@ + +Patch the two Makefile to also create liblua.so +Original patch by Allan McRae +for Archlinux + + +diff -ruN lua-5.1.5/Makefile lua-5.1.5-new/Makefile +--- lua-5.1.5/Makefile 2012-02-10 10:50:23.000000000 +0100 ++++ lua-5.1.5-new/Makefile 2014-09-10 20:17:28.913951433 +0200 +@@ -43,7 +43,7 @@ + # What to install. + TO_BIN= lua luac + TO_INC= lua.h luaconf.h lualib.h lauxlib.h ../etc/lua.hpp +-TO_LIB= liblua.a ++TO_LIB= liblua.a liblua.so liblua.so.${V} + TO_MAN= lua.1 luac.1 + + # Lua version and release. +@@ -53,7 +53,7 @@ + all: $(PLAT) + + $(PLATS) clean: +- cd src && $(MAKE) $@ ++ cd src && $(MAKE) $@ V=$(V) R=$(R) + + test: dummy + src/lua test/hello.lua +diff -ruN lua-5.1.5/src/Makefile lua-5.1.5-new/src/Makefile +--- lua-5.1.5/src/Makefile 2012-02-13 21:41:22.000000000 +0100 ++++ lua-5.1.5-new/src/Makefile 2014-09-10 20:16:09.982952152 +0200 +@@ -8,7 +8,7 @@ + PLAT= none + + CC= gcc +-CFLAGS= -O2 -Wall $(MYCFLAGS) ++CFLAGS= -O2 -Wall $(MYCFLAGS) -fPIC + AR= ar rcu + RANLIB= ranlib + RM= rm -f +@@ -34,9 +34,10 @@ + + LUAC_T= luac + LUAC_O= luac.o print.o ++LUA_SO= liblua.so + + ALL_O= $(CORE_O) $(LIB_O) $(LUA_O) $(LUAC_O) +-ALL_T= $(LUA_A) $(LUA_T) $(LUAC_T) ++ALL_T= $(LUA_A) $(LUA_T) $(LUAC_T) $(LUA_SO) + ALL_A= $(LUA_A) + + default: $(PLAT) +@@ -57,6 +58,13 @@ + $(LUAC_T): $(LUAC_O) $(LUA_A) + $(CC) -o $@ $(MYLDFLAGS) $(LUAC_O) $(LUA_A) $(LIBS) + ++$(LUA_SO): $(CORE_O) $(LIB_O) ++ $(CC) -shared -ldl -Wl,-soname,$(LUA_SO).$(V) -o $@.$(R) $? -lm $(MYLDFLAGS) ++ ln -sf $(LUA_SO).$(R) $(LUA_SO).$(V) ++ ln -sf $(LUA_SO).$(R) $(LUA_SO) ++ ++ ++ + clean: + $(RM) $(ALL_T) $(ALL_O) + -- 1.8.4 On Thu, Sep 11, 2014 at 10:02:08AM +0200, Ludovic Courtès wrote: > Hello! > > lemonnierk@ulrar.net skribis: > > > While working on getting weechat to build with the lua plugin enabled, > > I noticed the lua package doesn't produce a liblua.so file. So here is > > a patch to make it do so. It's basically the same patch as in ArchLinux, > > with a few differences like actually installing the .so file. > > I think the comments of Eric and Cyril need to be addressed. > > Other than that, I’m wondering: is there a reason why upstream Lua > doesn’t install a shared library by default? Is it because the normal > way to use it is to include the source in the package that uses it? > > IOW, is it OK to diverge from upstream? > > If in doubt, it’s probably fine, IMO, but I just wanted to make sure. > > Thanks, > Ludo’. -- Kevin Lemonnier PGP Fingerprint : C123 47CA 9E64 FCF0 3907