* [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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox