guix-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: gnu: Have lua-5.1 compile a .so


From: lemonnierk
Subject: Re: gnu: Have lua-5.1 compile a .so
Date: Thu, 11 Sep 2014 10:12:59 +0200
User-agent: Mutt/1.5.22 (2013-10-16)

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 <address@hidden>
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 <address@hidden>
+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 address@hidden(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!
> 
> address@hidden 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

Attachment: signature.asc
Description: Digital signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]