* [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 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
* [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
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