* [Buildroot] [PATCH 1/2] package/luajit: build host variant dynamically
@ 2016-03-04 23:00 Romain Naour
2016-03-04 23:00 ` [Buildroot] [PATCH 2/2] package/efl: enable luajit support Romain Naour
2016-03-20 21:35 ` [Buildroot] [PATCH 1/2] package/luajit: build host variant dynamically Thomas Petazzoni
0 siblings, 2 replies; 5+ messages in thread
From: Romain Naour @ 2016-03-04 23:00 UTC (permalink / raw)
To: buildroot
While building libevas.so for the host-efl with luajit support, the link fail
when libluajit is build statically:
/usr/bin/ld: output/host/usr/lib/libluajit-5.1.a(ljamalg.o): relocation R_X86_64_32S against `.rodata' can not be used when making a shared object; recompile with -fPIC
output/host/usr/lib/libluajit-5.1.a: error adding symbols: Bad value
collect2: error: ld returned 1 exit status
Build luajit dynamically in order to build host-efl with luajit support.
Also we need to provide a rpath to HOST_DIR otherwise we hit the rpath sanity
check:
***
*** ERROR: package host-luajit installs executables without proper RPATH:
*** output/host/usr/bin/luajit
Signed-off-by: Romain Naour <romain.naour@gmail.com>
---
package/luajit/luajit.mk | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/package/luajit/luajit.mk b/package/luajit/luajit.mk
index d45598e..791ef37 100644
--- a/package/luajit/luajit.mk
+++ b/package/luajit/luajit.mk
@@ -64,8 +64,11 @@ define LUAJIT_INSTALL_SYMLINK
endef
LUAJIT_POST_INSTALL_TARGET_HOOKS += LUAJIT_INSTALL_SYMLINK
+# host-efl package needs host-luajit to be linked dynamically.
define HOST_LUAJIT_BUILD_CMDS
- $(MAKE) PREFIX="/usr" BUILDMODE=static -C $(@D) amalg
+ $(MAKE) PREFIX="/usr" BUILDMODE=dynamic \
+ TARGET_LDFLAGS="$(HOST_LDFLAGS) -Wl,-rpath,$(HOST_DIR)/usr/lib/" \
+ -C $(@D) amalg
endef
define HOST_LUAJIT_INSTALL_CMDS
--
2.5.0
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [Buildroot] [PATCH 2/2] package/efl: enable luajit support
2016-03-04 23:00 [Buildroot] [PATCH 1/2] package/luajit: build host variant dynamically Romain Naour
@ 2016-03-04 23:00 ` Romain Naour
2016-03-20 21:42 ` Thomas Petazzoni
2016-03-20 21:35 ` [Buildroot] [PATCH 1/2] package/luajit: build host variant dynamically Thomas Petazzoni
1 sibling, 1 reply; 5+ messages in thread
From: Romain Naour @ 2016-03-04 23:00 UTC (permalink / raw)
To: buildroot
The lua-old support is currently broken for Lua 5.2+ due to [1] and it's not
yet fixed with efl 1.17.
In order to bump to a newer efl version, we need to enable the luajit support
and use it by default.
We need to build Elua for the host to enable luajit support for the target.
[1] https://phab.enlightenment.org/T2728
Signed-off-by: Romain Naour <romain.naour@gmail.com>
---
package/efl/Config.in | 13 ++++++++++---
package/efl/efl.mk | 32 ++++++++++++++++++++++++--------
2 files changed, 34 insertions(+), 11 deletions(-)
diff --git a/package/efl/Config.in b/package/efl/Config.in
index 88e2c36..0851961 100644
--- a/package/efl/Config.in
+++ b/package/efl/Config.in
@@ -2,8 +2,10 @@ config BR2_PACKAGE_EFL
bool "efl"
depends on BR2_INSTALL_LIBSTDCPP
depends on BR2_PACKAGE_HAS_UDEV # libudev
+ depends on BR2_PACKAGE_HAS_LUAINTERPRETER # luajit or Lua 5.1
# https://phab.enlightenment.org/T2728
- depends on BR2_PACKAGE_LUA_5_1 # needs lua 5.1, broken with 5.2+
+ depends on !BR2_PACKAGE_LUA_5_2 # broken with 5.2+
+ depends on !BR2_PACKAGE_LUA_5_3 # broken with 5.2+
depends on BR2_TOOLCHAIN_HAS_THREADS # untested without threads
depends on BR2_USE_MMU
depends on BR2_USE_WCHAR # use wchar_t
@@ -186,6 +188,11 @@ comment "efl needs udev /dev management and a toolchain w/ C++, dynamic library,
|| BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR
depends on BR2_USE_MMU
-comment "efl needs lua 5.1"
- depends on !BR2_PACKAGE_LUA_5_1
+comment "efl needs a lua interpreter (luajit or lua 5.1)"
+ depends on !BR2_PACKAGE_HAS_LUAINTERPRETER
+ depends on BR2_USE_MMU
+
+comment "efl needs Lua 5.1"
+ depends on BR2_PACKAGE_LUA_5_2 # broken with 5.2+
+ depends on BR2_PACKAGE_LUA_5_3 # broken with 5.2+
depends on BR2_USE_MMU
diff --git a/package/efl/efl.mk b/package/efl/efl.mk
index 2ea2592..ed6cee6 100644
--- a/package/efl/efl.mk
+++ b/package/efl/efl.mk
@@ -19,8 +19,8 @@ EFL_LICENSE_FILES = \
EFL_INSTALL_STAGING = YES
-EFL_DEPENDENCIES = host-pkgconf host-efl dbus freetype jpeg lua udev \
- util-linux zlib
+EFL_DEPENDENCIES = host-pkgconf host-efl host-luainterpreter dbus freetype \
+ jpeg luainterpreter udev util-linux zlib
# Regenerate the autotools:
# - to fix an issue in eldbus-codegen: https://phab.enlightenment.org/T2718
@@ -32,16 +32,15 @@ EFL_GETTEXTIZE = YES
# --disable-sdl: disable sdl2 support.
# --disable-systemd: disable systemd support.
# --disable-xinput22: disable X11 XInput v2.2+ support.
-# --enable-lua-old: disable Elua and remove luajit dependency.
# --with-opengl=none: disable opengl support.
EFL_CONF_OPTS = \
--with-edje-cc=$(HOST_DIR)/usr/bin/edje_cc \
+ --with-elua=$(HOST_DIR)/usr/bin/elua \
--with-eolian-gen=$(HOST_DIR)/usr/bin/eolian_gen \
--disable-cxx-bindings \
--disable-sdl \
--disable-systemd \
--disable-xinput22 \
- --enable-lua-old \
--with-opengl=none
# Disable untested configuration warning.
@@ -49,6 +48,15 @@ ifeq ($(BR2_PACKAGE_EFL_HAS_RECOMMENDED_CONFIG),)
EFL_CONF_OPTS += --enable-i-really-know-what-i-am-doing-and-that-this-will-probably-break-things-and-i-will-fix-them-myself-and-send-patches-aba
endif
+# We need to build Elua for the host to enable luajit support for the target.
+# --disable-lua-old: build elua for the target.
+# --enable-lua-old: disable Elua and remove luajit dependency.
+ifeq ($(BR2_PACKAGE_LUAJIT),y)
+EFL_CONF_OPTS += --disable-lua-old
+else
+EFL_CONF_OPTS += --enable-lua-old
+endif
+
ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBMOUNT),y)
EFL_DEPENDENCIES += util-linux
EFL_CONF_OPTS += --enable-libmount
@@ -227,7 +235,8 @@ $(eval $(autotools-package))
# * host-freetype: for libevas
# * host-libglib2: for libecore
# * host-libjpeg, host-libpng: for libevas image loader
-# * host-lua: disable luajit dependency
+# * host-luainterpreter: host-luajit for Elua tool for the host
+# or host-lua for lua-old option
HOST_EFL_DEPENDENCIES = \
host-pkgconf \
host-dbus \
@@ -235,9 +244,18 @@ HOST_EFL_DEPENDENCIES = \
host-libglib2 \
host-libjpeg \
host-libpng \
- host-lua \
+ host-luainterpreter \
host-zlib
+# If luajit is enabled for the target, we need to build Elua for the host.
+# --disable-lua-old: build elua for the host.
+# --enable-lua-old: disable Elua and remove luajit dependency.
+ifeq ($(BR2_PACKAGE_LUAJIT),y)
+HOST_EFL_CONF_OPTS += --disable-lua-old
+else
+HOST_EFL_CONF_OPTS += --enable-lua-old
+endif
+
# Configure options:
# --disable-audio, --disable-multisense remove libsndfile dependency.
# --disable-cxx-bindings: disable C++11 bindings.
@@ -249,7 +267,6 @@ HOST_EFL_DEPENDENCIES = \
# --disable-physics: remove Bullet dependency.
# --enable-image-loader-gif=no: disable Gif dependency.
# --enable-image-loader-tiff=no: disable Tiff dependency.
-# --enable-lua-old: disable Elua and remove luajit dependency.
# --with-crypto=none: remove dependencies on openssl or gnutls.
# --with-x11=none: remove dependency on X.org.
# Yes I really know what I am doing.
@@ -267,7 +284,6 @@ HOST_EFL_CONF_OPTS += \
--enable-image-loader-jpeg=yes \
--enable-image-loader-png=yes \
--enable-image-loader-tiff=no \
- --enable-lua-old \
--with-crypto=none \
--with-glib=yes \
--with-opengl=none \
--
2.5.0
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [Buildroot] [PATCH 1/2] package/luajit: build host variant dynamically
2016-03-04 23:00 [Buildroot] [PATCH 1/2] package/luajit: build host variant dynamically Romain Naour
2016-03-04 23:00 ` [Buildroot] [PATCH 2/2] package/efl: enable luajit support Romain Naour
@ 2016-03-20 21:35 ` Thomas Petazzoni
1 sibling, 0 replies; 5+ messages in thread
From: Thomas Petazzoni @ 2016-03-20 21:35 UTC (permalink / raw)
To: buildroot
Hello,
On Sat, 5 Mar 2016 00:00:42 +0100, Romain Naour wrote:
> +# host-efl package needs host-luajit to be linked dynamically.
> define HOST_LUAJIT_BUILD_CMDS
> - $(MAKE) PREFIX="/usr" BUILDMODE=static -C $(@D) amalg
> + $(MAKE) PREFIX="/usr" BUILDMODE=dynamic \
> + TARGET_LDFLAGS="$(HOST_LDFLAGS) -Wl,-rpath,$(HOST_DIR)/usr/lib/" \
-Wl,-rpath,... is already in HOST_LDFLAGS, so adding it is not
necessary. Passing HOST_LDFLAGS is sufficient.
I've fixed that up, adjusted the commit log accordingly, and applied.
Thanks!
Thomas
--
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Buildroot] [PATCH 2/2] package/efl: enable luajit support
2016-03-04 23:00 ` [Buildroot] [PATCH 2/2] package/efl: enable luajit support Romain Naour
@ 2016-03-20 21:42 ` Thomas Petazzoni
2016-03-26 21:28 ` Romain Naour
0 siblings, 1 reply; 5+ messages in thread
From: Thomas Petazzoni @ 2016-03-20 21:42 UTC (permalink / raw)
To: buildroot
Hello,
On Sat, 5 Mar 2016 00:00:43 +0100, Romain Naour wrote:
> The lua-old support is currently broken for Lua 5.2+ due to [1] and it's not
> yet fixed with efl 1.17.
>
> In order to bump to a newer efl version, we need to enable the luajit support
> and use it by default.
>
> We need to build Elua for the host to enable luajit support for the target.
>
> [1] https://phab.enlightenment.org/T2728
I don't really understand the discussion in this bug report, and it
seems like you got no feedback. Maybe the explanation was not clear
enough as to which cases work / don't work.
In the below, I wonder if it's worth to support Lua 5.1 at all.
Supporting Luajit would make the whole thing a lot simpler, no? Do we
really care enough to offer the possibility of using Lua instead of
Luajit, when recent versions of Lua are in fact not supported?
> diff --git a/package/efl/Config.in b/package/efl/Config.in
> index 88e2c36..0851961 100644
> --- a/package/efl/Config.in
> +++ b/package/efl/Config.in
> @@ -2,8 +2,10 @@ config BR2_PACKAGE_EFL
> bool "efl"
> depends on BR2_INSTALL_LIBSTDCPP
> depends on BR2_PACKAGE_HAS_UDEV # libudev
> + depends on BR2_PACKAGE_HAS_LUAINTERPRETER # luajit or Lua 5.1
> # https://phab.enlightenment.org/T2728
> - depends on BR2_PACKAGE_LUA_5_1 # needs lua 5.1, broken with 5.2+
> + depends on !BR2_PACKAGE_LUA_5_2 # broken with 5.2+
> + depends on !BR2_PACKAGE_LUA_5_3 # broken with 5.2+
I'd prefer:
depends on BR2_PACKAGE_HAS_LUAINTERPRETER && \
!BR2_PACKAGE_LUA_5_2 && !BR2_PACKAGE_LUA_5_3
> depends on BR2_TOOLCHAIN_HAS_THREADS # untested without threads
> depends on BR2_USE_MMU
> depends on BR2_USE_WCHAR # use wchar_t
> @@ -186,6 +188,11 @@ comment "efl needs udev /dev management and a toolchain w/ C++, dynamic library,
> || BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR
> depends on BR2_USE_MMU
>
> -comment "efl needs lua 5.1"
> - depends on !BR2_PACKAGE_LUA_5_1
> +comment "efl needs a lua interpreter (luajit or lua 5.1)"
> + depends on !BR2_PACKAGE_HAS_LUAINTERPRETER
> + depends on BR2_USE_MMU
> +
> +comment "efl needs Lua 5.1"
> + depends on BR2_PACKAGE_LUA_5_2 # broken with 5.2+
> + depends on BR2_PACKAGE_LUA_5_3 # broken with 5.2+
> depends on BR2_USE_MMU
I don't think two comments are needed. Only one is enough:
comment "elf needs a lua interpreter (luajit or lua 5.1)"
depends on BR2_USE_MMU
depends on !BR2_PACKAGE_HAS_LUAINTERPRETER || \
BR2_PACKAGE_LUA_5_2 || BR2_PACKAGE_LUA_5_3
> +# We need to build Elua for the host to enable luajit support for the target.
> +# --disable-lua-old: build elua for the target.
> +# --enable-lua-old: disable Elua and remove luajit dependency.
> +ifeq ($(BR2_PACKAGE_LUAJIT),y)
> +EFL_CONF_OPTS += --disable-lua-old
> +else
> +EFL_CONF_OPTS += --enable-lua-old
> +endif
I must say I don't really understand this comment, and why you're
adding --disable-lua-old/--enable-lua-old to both the target and host
EFL configure options, in both cases depending on BR2_PACKAGE_LUAJIT.
Here, you are saying "We need to build Elua for the host", but the
below code is changing the configuration options for the target variant
of EFL, which looks weird.
> +# If luajit is enabled for the target, we need to build Elua for the host.
> +# --disable-lua-old: build elua for the host.
> +# --enable-lua-old: disable Elua and remove luajit dependency.
> +ifeq ($(BR2_PACKAGE_LUAJIT),y)
> +HOST_EFL_CONF_OPTS += --disable-lua-old
> +else
> +HOST_EFL_CONF_OPTS += --enable-lua-old
> +endif
Ditto.
Thomas
--
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Buildroot] [PATCH 2/2] package/efl: enable luajit support
2016-03-20 21:42 ` Thomas Petazzoni
@ 2016-03-26 21:28 ` Romain Naour
0 siblings, 0 replies; 5+ messages in thread
From: Romain Naour @ 2016-03-26 21:28 UTC (permalink / raw)
To: buildroot
Hi Thomas, All,
Le 20/03/2016 22:42, Thomas Petazzoni a ?crit :
> Hello,
>
> On Sat, 5 Mar 2016 00:00:43 +0100, Romain Naour wrote:
>> The lua-old support is currently broken for Lua 5.2+ due to [1] and it's not
>> yet fixed with efl 1.17.
>>
>> In order to bump to a newer efl version, we need to enable the luajit support
>> and use it by default.
>>
>> We need to build Elua for the host to enable luajit support for the target.
>>
>> [1] https://phab.enlightenment.org/T2728
>
> I don't really understand the discussion in this bug report, and it
> seems like you got no feedback. Maybe the explanation was not clear
> enough as to which cases work / don't work.
Actually, I'm wondering how 6124d0733657e425001ce51f526aea3bb8dc54e7 was tested
with Lua 5.2 and Lua 5.3 since it doesn't link with any of them. Also it break
the Lua 5.1 support.
>
> In the below, I wonder if it's worth to support Lua 5.1 at all.
> Supporting Luajit would make the whole thing a lot simpler, no? Do we
> really care enough to offer the possibility of using Lua instead of
> Luajit, when recent versions of Lua are in fact not supported?
Ok, since I have no proper fixes for Lua "old" support, let switch to luajit
support only.
>
>> diff --git a/package/efl/Config.in b/package/efl/Config.in
>> index 88e2c36..0851961 100644
>> --- a/package/efl/Config.in
>> +++ b/package/efl/Config.in
>> @@ -2,8 +2,10 @@ config BR2_PACKAGE_EFL
>> bool "efl"
>> depends on BR2_INSTALL_LIBSTDCPP
>> depends on BR2_PACKAGE_HAS_UDEV # libudev
>> + depends on BR2_PACKAGE_HAS_LUAINTERPRETER # luajit or Lua 5.1
>> # https://phab.enlightenment.org/T2728
>> - depends on BR2_PACKAGE_LUA_5_1 # needs lua 5.1, broken with 5.2+
>> + depends on !BR2_PACKAGE_LUA_5_2 # broken with 5.2+
>> + depends on !BR2_PACKAGE_LUA_5_3 # broken with 5.2+
>
> I'd prefer:
>
> depends on BR2_PACKAGE_HAS_LUAINTERPRETER && \
> !BR2_PACKAGE_LUA_5_2 && !BR2_PACKAGE_LUA_5_3
>
>> depends on BR2_TOOLCHAIN_HAS_THREADS # untested without threads
>> depends on BR2_USE_MMU
>> depends on BR2_USE_WCHAR # use wchar_t
>> @@ -186,6 +188,11 @@ comment "efl needs udev /dev management and a toolchain w/ C++, dynamic library,
>> || BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR
>> depends on BR2_USE_MMU
>>
>> -comment "efl needs lua 5.1"
>> - depends on !BR2_PACKAGE_LUA_5_1
>> +comment "efl needs a lua interpreter (luajit or lua 5.1)"
>> + depends on !BR2_PACKAGE_HAS_LUAINTERPRETER
>> + depends on BR2_USE_MMU
>> +
>> +comment "efl needs Lua 5.1"
>> + depends on BR2_PACKAGE_LUA_5_2 # broken with 5.2+
>> + depends on BR2_PACKAGE_LUA_5_3 # broken with 5.2+
>> depends on BR2_USE_MMU
>
> I don't think two comments are needed. Only one is enough:
>
> comment "elf needs a lua interpreter (luajit or lua 5.1)"
> depends on BR2_USE_MMU
> depends on !BR2_PACKAGE_HAS_LUAINTERPRETER || \
> BR2_PACKAGE_LUA_5_2 || BR2_PACKAGE_LUA_5_3
>
>> +# We need to build Elua for the host to enable luajit support for the target.
>> +# --disable-lua-old: build elua for the target.
>> +# --enable-lua-old: disable Elua and remove luajit dependency.
>> +ifeq ($(BR2_PACKAGE_LUAJIT),y)
>> +EFL_CONF_OPTS += --disable-lua-old
>> +else
>> +EFL_CONF_OPTS += --enable-lua-old
>> +endif
>
> I must say I don't really understand this comment, and why you're
> adding --disable-lua-old/--enable-lua-old to both the target and host
> EFL configure options, in both cases depending on BR2_PACKAGE_LUAJIT.
>
> Here, you are saying "We need to build Elua for the host", but the
> below code is changing the configuration options for the target variant
> of EFL, which looks weird.
If we enable luajit support for the target (with --disable-lua-old option), we
need to build elua tool for the host. We have to specify the path to elua with
--with-elua=$(HOST_DIR)/usr/bin/elua otherwise elua build for the target is used
while crosscrompiling. That is why we also need to use --disable-lua-old option
for host-efl to build elua for the host.
If the luajit support is disabled, elua is not build at all. So we can remove
host-luajit dependency and use --enable-lua-old.
But let use unconditionally luajit support and use --disable-lua-old for
host-efl and efl.
Best regards,
Romain
>
>> +# If luajit is enabled for the target, we need to build Elua for the host.
>> +# --disable-lua-old: build elua for the host.
>> +# --enable-lua-old: disable Elua and remove luajit dependency.
>> +ifeq ($(BR2_PACKAGE_LUAJIT),y)
>> +HOST_EFL_CONF_OPTS += --disable-lua-old
>> +else
>> +HOST_EFL_CONF_OPTS += --enable-lua-old
>> +endif
>
> Ditto.
>
> Thomas
>
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2016-03-26 21:28 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-03-04 23:00 [Buildroot] [PATCH 1/2] package/luajit: build host variant dynamically Romain Naour
2016-03-04 23:00 ` [Buildroot] [PATCH 2/2] package/efl: enable luajit support Romain Naour
2016-03-20 21:42 ` Thomas Petazzoni
2016-03-26 21:28 ` Romain Naour
2016-03-20 21:35 ` [Buildroot] [PATCH 1/2] package/luajit: build host variant dynamically Thomas Petazzoni
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.