From: Leo Famulari <leo@famulari.name>
To: guix-devel@gnu.org
Subject: Re: [PATCH 1/1] gnu: lua: Build with dynamic library support.
Date: Wed, 28 Oct 2015 18:47:20 -0400 [thread overview]
Message-ID: <1446072440.2753757.423058985.0E24BE56@webmail.messagingengine.com> (raw)
In-Reply-To: <1446003135.1901797.421991889.3664784B@webmail.messagingengine.com>
[-- Attachment #1: Type: text/plain, Size: 3211 bytes --]
I'm still working on this but I found something interesting that I want
to ask the list about. Attached is a diff of the build logs for lua-5.1
from master and lua-5.1 for the patch I sent upthread.
You may notice that they share the `make` invocation, but that gcc is
being invoked with different flags. Does anyone know why that is
happening?
I decided to compare the log files after analyzing the lua-5.1 Makefile
and realizing that my original patch should make no difference for
lua-5.1 (it would make a difference for lua-5.2). And if that is the
case, why am I getting different results?
The missing '-DLUA_USE_LINUX' is the issue for the lua-5.1 in master.
That flag specifies the use of dlopen, among other things.
On Tue, Oct 27, 2015, at 23:32, Leo Famulari wrote:
> Calling all Lua experts! Or even somebody that has used Lua before! ;)
>
> I studied the lua-5.1 and lua-5.2 Makefiles more carefully and I will
> split this up into separate packages for each version, with some
> changes.
>
> On Tue, Oct 27, 2015, at 11:48, Ludovic Courtès wrote:
> > By “fixing the flags”, do you mean that the .so that we have for 5.1
> > does not actually contain position-independent code? That CFLAGS was
> > ignored?
>
> I'm not sure about the state of our lua-5.1's liblua.so. How to test it?
>
> These changes are about building Lua so that it can load Lua libraries
> dynamically. Currently, the lua-5.1 we package lacks this feature.
> Possibly the lua-5.2 is the same way.
>
> > > I will have to look into it again. I tested the results by starting the
> > > Lua interpreter while linking a shared library:
> > > $ lua -lssl
> >
> > I’m not familiar with Lua; what does this command do?
>
> `lua` starts the interactive lua interpreter. Giving it the argument
> `-lname` calls "require('name') before executing script. Typically used
> to load libraries." (quoted from them Lua man page). Some helpful people
> in the Prosody chatroom suggested it as a simple way to test if a Lua
> interpreter can load dynamic libraries or not. Our lua-5.1 can't:
> $ ll `which lua`
> lrwxrwxrwx 7 root guixbuild 61 Dec 31 1969
> /var/guix/profiles/per-user/leo/guix-profile/bin/lua ->
> /gnu/store/fl27mjm8kxp0rj989cd8mj67qjvl0jr3-lua-5.1.5/bin/lua
> $ lua -lssl
> lua: error loading module 'ssl.core' from file
> '/home/leo/.guix-profile/usr/lib/lua/5.1/ssl.so':
> dynamic libraries not enabled; check your Lua installation
> stack traceback:
> [C]: ?
> [C]: in function 'require'
> /home/leo/.guix-profile/usr/share/lua/5.1/ssl.lua:7: in main
> chunk
> [C]: ?
> [C]: ?
>
> > I thought the goal was to get liblua.so for 5.2, but this seems to be
> > testing something else?
>
> By default, building Lua does not create liblua.so, which is why the
> lua51-liblua-so.patch is there. I can look into a similar patch for 5.2.
>
> Also, we need to set up the search paths to help Lua find Lua libraries.
> That can be configured at build time. I figured I would try to get a
> working Lua interpreter in master before working on those things, but I
> am open to guidance.
>
> Revised patches forthcoming.
>
> Leo
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: master-contrib.diff --]
[-- Type: text/x-diff; name="master-contrib.diff", Size: 11616 bytes --]
--- lua-5.1-master.log 2015-10-28 00:55:35.056412401 -0400
+++ lua-5.1-contrib.log 2015-10-28 18:17:29.127392079 -0400
@@ -1,6 +1,3 @@
-The following derivation will be built:
- /gnu/store/djjyfzi09p8ikjq03vv7rkscjmg9sxq8-lua-5.1.5.drv
-@ build-started /gnu/store/djjyfzi09p8ikjq03vv7rkscjmg9sxq8-lua-5.1.5.drv - x86_64-linux /usr/local/var/log/guix/drvs/dj//jyfzi09p8ikjq03vv7rkscjmg9sxq8-lua-5.1.5.drv.bz2
starting phase `set-paths'
environment variable `PATH' set to `/gnu/store/xz8c9ihn3p1d8xqkhzf54bjvjqzvqkc0-tar-1.28/bin:/gnu/store/8m7mgixi5539vqrr1vd1nrvh96vjl66j-gzip-1.6/bin:/gnu/store/yq9vkx7f4zw17gs6b09bg4arcgmmjgxn-bzip2-1.0.6/bin:/gnu/store/hk31a1xlgf6n3yi1yzbdyd2bnjmxc60m-xz-5.0.4/bin:/gnu/store/wl84nj6x2mz7zf5r0ajx5gpi0p689ags-file-5.22/bin:/gnu/store/p1h463zxk0f56jl7snw7s8wxvz1k542q-diffutils-3.3/bin:/gnu/store/0xm4q87qi07gcig4riflrf65vyk1k0mp-patch-2.7.5/bin:/gnu/store/g55pwwrmgi58n1yr57m7vc0y69v1ba89-sed-4.2.2/bin:/gnu/store/7fk9v37a5q4r5sygywq0q0qg7iqrj517-findutils-4.4.2/bin:/gnu/store/k8qgvgwn5anbfy8r70h938kxgd46cyxx-gawk-4.1.3/bin:/gnu/store/021rg9bs7xivw0acp1yr0rxw6mf3h64d-grep-2.21/bin:/gnu/store/mnwjrkbfzkb5ifhqf8hssf3cxfvg11l6-coreutils-8.24/bin:/gnu/store/22k2zmc74dvnri91ma0lwxyyhfi1srk0-make-4.1/bin:/gnu/store/311nvir0pz1mhf0mgsmfrw00qfj7yq0j-bash-4.3.39/bin:/gnu/store/k6r37137lfpg3l3igi50c7lj2za7kqly-ld-wrapper-0/bin:/gnu/store/y5psndwpbbkjrf856x757psb708y62dn-binutils-2.25.1/bin:/gnu/store/hddjjpkfvwaf1j1q3qwpvby0rid3k8by-gcc-4.9.3/bin:/gnu/store/qv7bk62c22ms9i11dhfl71hnivyc82k2-glibc-2.22/bin:/gnu/store/qv7bk62c22ms9i11dhfl71hnivyc82k2-glibc-2.22/sbin:/gnu/store/ksgpmjqi9l8z012n18zbac1bijs1jdrn-readline-6.3/bin:/gnu/store/mahpzasbp7i0v7aqq8970rl7paq5mwln-ncurses-6.0/bin'
environment variable `CPATH' set to `/gnu/store/yq9vkx7f4zw17gs6b09bg4arcgmmjgxn-bzip2-1.0.6/include:/gnu/store/hk31a1xlgf6n3yi1yzbdyd2bnjmxc60m-xz-5.0.4/include:/gnu/store/wl84nj6x2mz7zf5r0ajx5gpi0p689ags-file-5.22/include:/gnu/store/k8qgvgwn5anbfy8r70h938kxgd46cyxx-gawk-4.1.3/include:/gnu/store/22k2zmc74dvnri91ma0lwxyyhfi1srk0-make-4.1/include:/gnu/store/y5psndwpbbkjrf856x757psb708y62dn-binutils-2.25.1/include:/gnu/store/hddjjpkfvwaf1j1q3qwpvby0rid3k8by-gcc-4.9.3/include:/gnu/store/qv7bk62c22ms9i11dhfl71hnivyc82k2-glibc-2.22/include:/gnu/store/ksgpmjqi9l8z012n18zbac1bijs1jdrn-readline-6.3/include:/gnu/store/lyn2331ilik14yy2jqhndshvxmv9r6w5-linux-libre-headers-3.14.37/include:/gnu/store/mahpzasbp7i0v7aqq8970rl7paq5mwln-ncurses-6.0/include'
@@ -127,83 +124,77 @@
phase `patch-generated-file-shebangs' succeeded after 0.0 seconds
starting phase `build'
cd src && make linux V=5.1 R=5.1.5
-make[1]: Entering directory '/tmp/nix-build-lua-5.1.5.drv-0/lua-5.1.5/src'
+make[1]: Entering directory '/home/leo/tmp/nix-build-lua-5.1.5.drv-0/lua-5.1.5/src'
make all MYCFLAGS=-DLUA_USE_LINUX MYLIBS="-Wl,-E -ldl -lreadline -lhistory -lncurses"
-make[2]: Entering directory '/tmp/nix-build-lua-5.1.5.drv-0/lua-5.1.5/src'
-gcc -fPIC -c -o lapi.o lapi.c
-gcc -fPIC -c -o lcode.o lcode.c
-gcc -fPIC -c -o ldebug.o ldebug.c
-gcc -fPIC -c -o ldo.o ldo.c
-gcc -fPIC -c -o ldump.o ldump.c
-gcc -fPIC -c -o lfunc.o lfunc.c
-gcc -fPIC -c -o lgc.o lgc.c
-gcc -fPIC -c -o llex.o llex.c
-gcc -fPIC -c -o lmem.o lmem.c
-gcc -fPIC -c -o lobject.o lobject.c
-gcc -fPIC -c -o lopcodes.o lopcodes.c
-gcc -fPIC -c -o lparser.o lparser.c
-gcc -fPIC -c -o lstate.o lstate.c
-gcc -fPIC -c -o lstring.o lstring.c
-gcc -fPIC -c -o ltable.o ltable.c
-gcc -fPIC -c -o ltm.o ltm.c
-gcc -fPIC -c -o lundump.o lundump.c
-gcc -fPIC -c -o lvm.o lvm.c
-gcc -fPIC -c -o lzio.o lzio.c
-gcc -fPIC -c -o lauxlib.o lauxlib.c
-gcc -fPIC -c -o lbaselib.o lbaselib.c
-gcc -fPIC -c -o ldblib.o ldblib.c
-gcc -fPIC -c -o liolib.o liolib.c
-gcc -fPIC -c -o lmathlib.o lmathlib.c
-gcc -fPIC -c -o loslib.o loslib.c
-gcc -fPIC -c -o ltablib.o ltablib.c
-gcc -fPIC -c -o lstrlib.o lstrlib.c
-gcc -fPIC -c -o loadlib.o loadlib.c
-gcc -fPIC -c -o linit.o linit.c
+make[2]: Entering directory '/home/leo/tmp/nix-build-lua-5.1.5.drv-0/lua-5.1.5/src'
+gcc -O2 -Wall -DLUA_USE_LINUX -fPIC -c -o lapi.o lapi.c
+gcc -O2 -Wall -DLUA_USE_LINUX -fPIC -c -o lcode.o lcode.c
+gcc -O2 -Wall -DLUA_USE_LINUX -fPIC -c -o ldebug.o ldebug.c
+gcc -O2 -Wall -DLUA_USE_LINUX -fPIC -c -o ldo.o ldo.c
+gcc -O2 -Wall -DLUA_USE_LINUX -fPIC -c -o ldump.o ldump.c
+gcc -O2 -Wall -DLUA_USE_LINUX -fPIC -c -o lfunc.o lfunc.c
+gcc -O2 -Wall -DLUA_USE_LINUX -fPIC -c -o lgc.o lgc.c
+gcc -O2 -Wall -DLUA_USE_LINUX -fPIC -c -o llex.o llex.c
+gcc -O2 -Wall -DLUA_USE_LINUX -fPIC -c -o lmem.o lmem.c
+gcc -O2 -Wall -DLUA_USE_LINUX -fPIC -c -o lobject.o lobject.c
+gcc -O2 -Wall -DLUA_USE_LINUX -fPIC -c -o lopcodes.o lopcodes.c
+gcc -O2 -Wall -DLUA_USE_LINUX -fPIC -c -o lparser.o lparser.c
+gcc -O2 -Wall -DLUA_USE_LINUX -fPIC -c -o lstate.o lstate.c
+gcc -O2 -Wall -DLUA_USE_LINUX -fPIC -c -o lstring.o lstring.c
+gcc -O2 -Wall -DLUA_USE_LINUX -fPIC -c -o ltable.o ltable.c
+gcc -O2 -Wall -DLUA_USE_LINUX -fPIC -c -o ltm.o ltm.c
+gcc -O2 -Wall -DLUA_USE_LINUX -fPIC -c -o lundump.o lundump.c
+gcc -O2 -Wall -DLUA_USE_LINUX -fPIC -c -o lvm.o lvm.c
+gcc -O2 -Wall -DLUA_USE_LINUX -fPIC -c -o lzio.o lzio.c
+gcc -O2 -Wall -DLUA_USE_LINUX -fPIC -c -o lauxlib.o lauxlib.c
+gcc -O2 -Wall -DLUA_USE_LINUX -fPIC -c -o lbaselib.o lbaselib.c
+gcc -O2 -Wall -DLUA_USE_LINUX -fPIC -c -o ldblib.o ldblib.c
+gcc -O2 -Wall -DLUA_USE_LINUX -fPIC -c -o liolib.o liolib.c
+gcc -O2 -Wall -DLUA_USE_LINUX -fPIC -c -o lmathlib.o lmathlib.c
+gcc -O2 -Wall -DLUA_USE_LINUX -fPIC -c -o loslib.o loslib.c
+gcc -O2 -Wall -DLUA_USE_LINUX -fPIC -c -o ltablib.o ltablib.c
+gcc -O2 -Wall -DLUA_USE_LINUX -fPIC -c -o lstrlib.o lstrlib.c
+gcc -O2 -Wall -DLUA_USE_LINUX -fPIC -c -o loadlib.o loadlib.c
+gcc -O2 -Wall -DLUA_USE_LINUX -fPIC -c -o linit.o linit.c
ar rcu liblua.a lapi.o lcode.o ldebug.o ldo.o ldump.o lfunc.o lgc.o llex.o lmem.o lobject.o lopcodes.o lparser.o lstate.o lstring.o ltable.o ltm.o lundump.o lvm.o lzio.o lauxlib.o lbaselib.o ldblib.o liolib.o lmathlib.o loslib.o ltablib.o lstrlib.o loadlib.o linit.o # DLL needs all object files
ar: `u' modifier ignored since `D' is the default (see `U')
ranlib liblua.a
-gcc -fPIC -c -o lua.o lua.c
+gcc -O2 -Wall -DLUA_USE_LINUX -fPIC -c -o lua.o lua.c
gcc -o lua lua.o liblua.a -lm -Wl,-E -ldl -lreadline -lhistory -lncurses
-liblua.a(loslib.o): In function `os_tmpname':
-loslib.c:(.text+0x1a5): warning: the use of `tmpnam' is dangerous, better use `mkstemp'
-gcc -fPIC -c -o luac.o luac.c
-gcc -fPIC -c -o print.o print.c
+gcc -O2 -Wall -DLUA_USE_LINUX -fPIC -c -o luac.o luac.c
+gcc -O2 -Wall -DLUA_USE_LINUX -fPIC -c -o print.o print.c
gcc -o luac luac.o print.o liblua.a -lm -Wl,-E -ldl -lreadline -lhistory -lncurses
gcc -shared -ldl -Wl,-soname,liblua.so.5.1 -o liblua.so.5.1.5 lapi.o lcode.o ldebug.o ldo.o ldump.o lfunc.o lgc.o llex.o lmem.o lobject.o lopcodes.o lparser.o lstate.o lstring.o ltable.o ltm.o lundump.o lvm.o lzio.o lauxlib.o lbaselib.o ldblib.o liolib.o lmathlib.o loslib.o ltablib.o lstrlib.o loadlib.o linit.o -lm
-loslib.o: In function `os_tmpname':
-loslib.c:(.text+0x1a5): warning: the use of `tmpnam' is dangerous, better use `mkstemp'
ln -sf liblua.so.5.1.5 liblua.so.5.1
ln -sf liblua.so.5.1.5 liblua.so
-make[2]: Leaving directory '/tmp/nix-build-lua-5.1.5.drv-0/lua-5.1.5/src'
-make[1]: Leaving directory '/tmp/nix-build-lua-5.1.5.drv-0/lua-5.1.5/src'
-phase `build' succeeded after 1.6 seconds
+make[2]: Leaving directory '/home/leo/tmp/nix-build-lua-5.1.5.drv-0/lua-5.1.5/src'
+make[1]: Leaving directory '/home/leo/tmp/nix-build-lua-5.1.5.drv-0/lua-5.1.5/src'
+phase `build' succeeded after 5.1 seconds
starting phase `check'
src/lua test/hello.lua
Hello world, from Lua 5.1!
phase `check' succeeded after 0.0 seconds
starting phase `install'
-cd src && mkdir -p /gnu/store/fl27mjm8kxp0rj989cd8mj67qjvl0jr3-lua-5.1.5/bin /gnu/store/fl27mjm8kxp0rj989cd8mj67qjvl0jr3-lua-5.1.5/include /gnu/store/fl27mjm8kxp0rj989cd8mj67qjvl0jr3-lua-5.1.5/lib /gnu/store/fl27mjm8kxp0rj989cd8mj67qjvl0jr3-lua-5.1.5/share/man/man1 /gnu/store/fl27mjm8kxp0rj989cd8mj67qjvl0jr3-lua-5.1.5/share/lua/5.1 /gnu/store/fl27mjm8kxp0rj989cd8mj67qjvl0jr3-lua-5.1.5/lib/lua/5.1
-cd src && install -p -m 0755 lua luac /gnu/store/fl27mjm8kxp0rj989cd8mj67qjvl0jr3-lua-5.1.5/bin
-cd src && install -p -m 0644 lua.h luaconf.h lualib.h lauxlib.h ../etc/lua.hpp /gnu/store/fl27mjm8kxp0rj989cd8mj67qjvl0jr3-lua-5.1.5/include
-cd src && install -p -m 0644 liblua.a liblua.so liblua.so.5.1 /gnu/store/fl27mjm8kxp0rj989cd8mj67qjvl0jr3-lua-5.1.5/lib
-cd doc && install -p -m 0644 lua.1 luac.1 /gnu/store/fl27mjm8kxp0rj989cd8mj67qjvl0jr3-lua-5.1.5/share/man/man1
+cd src && mkdir -p /gnu/store/v51lrdxh8h09bf5d3ml92g9nkxqmympr-lua-5.1.5/bin /gnu/store/v51lrdxh8h09bf5d3ml92g9nkxqmympr-lua-5.1.5/include /gnu/store/v51lrdxh8h09bf5d3ml92g9nkxqmympr-lua-5.1.5/lib /gnu/store/v51lrdxh8h09bf5d3ml92g9nkxqmympr-lua-5.1.5/share/man/man1 /gnu/store/v51lrdxh8h09bf5d3ml92g9nkxqmympr-lua-5.1.5/share/lua/5.1 /gnu/store/v51lrdxh8h09bf5d3ml92g9nkxqmympr-lua-5.1.5/lib/lua/5.1
+cd src && install -p -m 0755 lua luac /gnu/store/v51lrdxh8h09bf5d3ml92g9nkxqmympr-lua-5.1.5/bin
+cd src && install -p -m 0644 lua.h luaconf.h lualib.h lauxlib.h ../etc/lua.hpp /gnu/store/v51lrdxh8h09bf5d3ml92g9nkxqmympr-lua-5.1.5/include
+cd src && install -p -m 0644 liblua.a liblua.so liblua.so.5.1 /gnu/store/v51lrdxh8h09bf5d3ml92g9nkxqmympr-lua-5.1.5/lib
+cd doc && install -p -m 0644 lua.1 luac.1 /gnu/store/v51lrdxh8h09bf5d3ml92g9nkxqmympr-lua-5.1.5/share/man/man1
phase `install' succeeded after 0.0 seconds
starting phase `patch-shebangs'
phase `patch-shebangs' succeeded after 0.0 seconds
starting phase `strip'
-stripping binaries in "/gnu/store/fl27mjm8kxp0rj989cd8mj67qjvl0jr3-lua-5.1.5/lib" with "strip" and flags ("--strip-debug")
-stripping binaries in "/gnu/store/fl27mjm8kxp0rj989cd8mj67qjvl0jr3-lua-5.1.5/bin" with "strip" and flags ("--strip-debug")
-phase `strip' succeeded after 0.0 seconds
+stripping binaries in "/gnu/store/v51lrdxh8h09bf5d3ml92g9nkxqmympr-lua-5.1.5/lib" with "strip" and flags ("--strip-debug")
+stripping binaries in "/gnu/store/v51lrdxh8h09bf5d3ml92g9nkxqmympr-lua-5.1.5/bin" with "strip" and flags ("--strip-debug")
+phase `strip' succeeded after 0.1 seconds
starting phase `validate-runpath'
-validating RUNPATH of 2 binaries in "/gnu/store/fl27mjm8kxp0rj989cd8mj67qjvl0jr3-lua-5.1.5/lib"...
-validating RUNPATH of 2 binaries in "/gnu/store/fl27mjm8kxp0rj989cd8mj67qjvl0jr3-lua-5.1.5/bin"...
+validating RUNPATH of 2 binaries in "/gnu/store/v51lrdxh8h09bf5d3ml92g9nkxqmympr-lua-5.1.5/lib"...
+validating RUNPATH of 2 binaries in "/gnu/store/v51lrdxh8h09bf5d3ml92g9nkxqmympr-lua-5.1.5/bin"...
phase `validate-runpath' succeeded after 0.0 seconds
starting phase `validate-documentation-location'
phase `validate-documentation-location' succeeded after 0.0 seconds
starting phase `delete-info-dir-file'
phase `delete-info-dir-file' succeeded after 0.0 seconds
starting phase `compress-documentation'
-compressing documentation in '/gnu/store/fl27mjm8kxp0rj989cd8mj67qjvl0jr3-lua-5.1.5/share/man' with "gzip" and flags ("--best" "--no-name")
+compressing documentation in '/gnu/store/v51lrdxh8h09bf5d3ml92g9nkxqmympr-lua-5.1.5/share/man' with "gzip" and flags ("--best" "--no-name")
phase `compress-documentation' succeeded after 0.0 seconds
-@ build-succeeded /gnu/store/djjyfzi09p8ikjq03vv7rkscjmg9sxq8-lua-5.1.5.drv -
-/gnu/store/fl27mjm8kxp0rj989cd8mj67qjvl0jr3-lua-5.1.5
next prev parent reply other threads:[~2015-10-28 22:47 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-10-27 3:56 [PATCH 0/1] lua: Build with dynamic library support Leo Famulari
2015-10-27 3:56 ` [PATCH 1/1] gnu: " Leo Famulari
2015-10-27 12:47 ` Ludovic Courtès
2015-10-27 14:13 ` Leo Famulari
2015-10-27 15:48 ` Ludovic Courtès
2015-10-28 3:32 ` Leo Famulari
2015-10-28 22:47 ` Leo Famulari [this message]
2015-10-29 20:49 ` Ludovic Courtès
2015-10-29 20:46 ` Ludovic Courtès
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=1446072440.2753757.423058985.0E24BE56@webmail.messagingengine.com \
--to=leo@famulari.name \
--cc=guix-devel@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.