[1/7] gnu: lua: Build with support for dynamic libraries.

Message ID 20160822193918.27397-2-rekado@elephly.net
State New
Headers

Commit Message

Ricardo Wurmus Aug. 22, 2016, 7:39 p.m. UTC
  * gnu/packages/lua.scm (lua)[arguments]: Use regular build phase and add
make-flags.
---
 gnu/packages/lua.scm | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)
  

Comments

Leo Famulari Aug. 22, 2016, 8:05 p.m. UTC | #1
On Mon, Aug 22, 2016 at 09:39:12PM +0200, Ricardo Wurmus wrote:
> * gnu/packages/lua.scm (lua)[arguments]: Use regular build phase and add
> make-flags.

LGTM. I tried to make this change early in my involvement with Guix, but
my knowledge of the subject and ability to communicate the problem were
too limited.
  
gno Aug. 23, 2016, 12:02 a.m. UTC | #2
On Mon, 22 Aug 2016 21:39:12 +0200
Ricardo Wurmus <rekado@elephly.net> wrote:

> * gnu/packages/lua.scm (lua)[arguments]: Use regular build phase and
> add make-flags.
> ---
>  gnu/packages/lua.scm | 10 ++++++----
>  1 file changed, 6 insertions(+), 4 deletions(-)
> 
> diff --git a/gnu/packages/lua.scm b/gnu/packages/lua.scm
> index b4b5dee..52606f4 100644
> --- a/gnu/packages/lua.scm
> +++ b/gnu/packages/lua.scm
> @@ -4,6 +4,7 @@
>  ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
>  ;;; Copyright © 2014 Andreas Enge <andreas@enge.fr>
>  ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
> +;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
>  ;;;
>  ;;; This file is part of GNU Guix.
>  ;;;
> @@ -44,14 +45,15 @@
>      (inputs `(("readline" ,readline)))
>      (arguments
>       '(#:modules ((guix build gnu-build-system)
> -                    (guix build utils)
> -                    (srfi srfi-1))
> +                  (guix build utils)
> +                  (srfi srfi-1))
>         #:test-target "test"
> +       #:make-flags
> +       '("CFLAGS=-fPIC -DLUA_DL_DLOPEN -DLUA_USE_POSIX"
> +         "linux")
>         #:phases
>         (modify-phases %standard-phases
>           (delete 'configure)
> -         (replace 'build
> -           (lambda _ (zero? (system* "make" "CFLAGS=-fPIC"
> "linux")))) (replace 'install
>             (lambda* (#:key outputs #:allow-other-keys)
>               (let ((out (assoc-ref outputs "out")))


This doesn't work for me - lua-lgi still complains about lua not being
able to dynamically load. But this does work:

(replace 'build
  (lambda _ (zero? (system* "make"
     "LDFLAGS=-ldl" "CFLAGS=-fPIC -DLUA_USE_DLOPEN" "linux"))))

I tried adding LDFLAGS in #make-flags to no avail.
  
Ricardo Wurmus Aug. 28, 2016, 8:23 a.m. UTC | #3
gno <gnopap@gmail.com> writes:

> On Mon, 22 Aug 2016 21:39:12 +0200
> Ricardo Wurmus <rekado@elephly.net> wrote:
>
>> * gnu/packages/lua.scm (lua)[arguments]: Use regular build phase and
>> add make-flags.
>> ---
>>  gnu/packages/lua.scm | 10 ++++++----
>>  1 file changed, 6 insertions(+), 4 deletions(-)
>> 
>> diff --git a/gnu/packages/lua.scm b/gnu/packages/lua.scm
>> index b4b5dee..52606f4 100644
>> --- a/gnu/packages/lua.scm
>> +++ b/gnu/packages/lua.scm
>> @@ -4,6 +4,7 @@
>>  ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
>>  ;;; Copyright © 2014 Andreas Enge <andreas@enge.fr>
>>  ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
>> +;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
>>  ;;;
>>  ;;; This file is part of GNU Guix.
>>  ;;;
>> @@ -44,14 +45,15 @@
>>      (inputs `(("readline" ,readline)))
>>      (arguments
>>       '(#:modules ((guix build gnu-build-system)
>> -                    (guix build utils)
>> -                    (srfi srfi-1))
>> +                  (guix build utils)
>> +                  (srfi srfi-1))
>>         #:test-target "test"
>> +       #:make-flags
>> +       '("CFLAGS=-fPIC -DLUA_DL_DLOPEN -DLUA_USE_POSIX"
>> +         "linux")
>>         #:phases
>>         (modify-phases %standard-phases
>>           (delete 'configure)
>> -         (replace 'build
>> -           (lambda _ (zero? (system* "make" "CFLAGS=-fPIC"
>> "linux")))) (replace 'install
>>             (lambda* (#:key outputs #:allow-other-keys)
>>               (let ((out (assoc-ref outputs "out")))
>
>
> This doesn't work for me - lua-lgi still complains about lua not being
> able to dynamically load. But this does work:
>
> (replace 'build
>   (lambda _ (zero? (system* "make"
>      "LDFLAGS=-ldl" "CFLAGS=-fPIC -DLUA_USE_DLOPEN" "linux"))))
>
> I tried adding LDFLAGS in #make-flags to no avail.

I don’t have a package for “lua-lgi” so I cannot reproduce this.  All I
can say is that it appears to work in the case of prosody.  Without
LUA_DL_DLOPEN defined Lua will not even attempt to load dynamic
libraries.

~~ Ricardo
  
Leo Famulari Aug. 30, 2016, 6:37 a.m. UTC | #4
On Tue, Aug 23, 2016 at 02:02:40AM +0200, gno wrote:
> On Mon, 22 Aug 2016 21:39:12 +0200
> Ricardo Wurmus <rekado@elephly.net> wrote:
> > +       #:make-flags
> > +       '("CFLAGS=-fPIC -DLUA_DL_DLOPEN -DLUA_USE_POSIX"
> > +         "linux")
> 
> This doesn't work for me - lua-lgi still complains about lua not being
> able to dynamically load. But this does work:
> 
> (replace 'build
>   (lambda _ (zero? (system* "make"
>      "LDFLAGS=-ldl" "CFLAGS=-fPIC -DLUA_USE_DLOPEN" "linux"))))
> 
> I tried adding LDFLAGS in #make-flags to no avail.

Based on my reading of the Makefile (and the 'src/Makefile'), I think we
should be using MYCFLAGS and MYLDFLAGS.

CFLAGS and LDFLAGS include MYCFLAGS and MYLDFLAGS, respectively, but
they also include some default flags and platform-dependent flags. By
setting CFLAGS and LDFLAGS directly, we lose those default and
platform-dependent values.

By the way, '-ldl' does get passed to GCC in 'src/Makefile', but I don't
think it gets passed to the linker, although my knowledge here is not
strong.
  
Efraim Flashner Aug. 30, 2016, 7:33 p.m. UTC | #5
On Tue, Aug 30, 2016 at 10:44:24AM +0200, gno wrote:
> 
> (damn, i keep forgetting adding guix devel to CC)
> 

I just hit 'reply-all' and hope it works.
  

Patch

diff --git a/gnu/packages/lua.scm b/gnu/packages/lua.scm
index b4b5dee..52606f4 100644
--- a/gnu/packages/lua.scm
+++ b/gnu/packages/lua.scm
@@ -4,6 +4,7 @@ 
 ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2014 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -44,14 +45,15 @@ 
     (inputs `(("readline" ,readline)))
     (arguments
      '(#:modules ((guix build gnu-build-system)
-                    (guix build utils)
-                    (srfi srfi-1))
+                  (guix build utils)
+                  (srfi srfi-1))
        #:test-target "test"
+       #:make-flags
+       '("CFLAGS=-fPIC -DLUA_DL_DLOPEN -DLUA_USE_POSIX"
+         "linux")
        #:phases
        (modify-phases %standard-phases
          (delete 'configure)
-         (replace 'build
-           (lambda _ (zero? (system* "make" "CFLAGS=-fPIC" "linux"))))
          (replace 'install
            (lambda* (#:key outputs #:allow-other-keys)
              (let ((out (assoc-ref outputs "out")))