all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: lemonnierk@ulrar.net
To: "Ludovic Courtès" <ludo@gnu.org>
Cc: guix-devel@gnu.org
Subject: Re: gnu: Have lua-5.1 compile a .so
Date: Thu, 11 Sep 2014 10:12:59 +0200	[thread overview]
Message-ID: <20140911081259.GH31169@luwin.ulrar.net> (raw)
In-Reply-To: <87r3ziwpof.fsf@gnu.org>

[-- Attachment #1: Type: text/plain, Size: 4462 bytes --]

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 <lemonnierk@ulrar.net>
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 <allan@archlinux.org>
+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

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

  reply	other threads:[~2014-09-11  8:13 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-09-10 22:31 gnu: Have lua-5.1 compile a .so lemonnierk
2014-09-10 22:42 ` Cyril Roelandt
2014-09-10 23:09 ` Eric Bavier
2014-09-11  8:02 ` Ludovic Courtès
2014-09-11  8:12   ` lemonnierk [this message]
2014-09-11 10:02     ` Ludovic Courtès
2014-09-11 10:12       ` lemonnierk

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20140911081259.GH31169@luwin.ulrar.net \
    --to=lemonnierk@ulrar.net \
    --cc=guix-devel@gnu.org \
    --cc=ludo@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.