Skip to contentSkip to conversation

lua: fix pkg-config file

PATCH New Jörg Krause 4 participants 9 messages Jul 31, 2017 – Sep 5, 2017

lore
Share & tools
lore
#0 lore raw

PATCH 1/2 lua: fix pkg-config file

When Lua is linked with additional libraries, these libraries should go into the pkg-config file as well.

Otherwise, linking swupdate with the lua library fails:

```
/home/buildroot/output/host/arm-buildroot-linux-gnueabihf/sysroot/usr/lib/liblua.so: undefined reference to `dlopen'
/home/buildroot/output/host/arm-buildroot-linux-gnueabihf/sysroot/usr/lib/liblua.so: undefined reference to `dlclose'
/home/buildroot/output/host/arm-buildroot-linux-gnueabihf/sysroot/usr/lib/liblua.so: undefined reference to `dlerror'
/home/buildroot/output/host/arm-buildroot-linux-gnueabihf/sysroot/usr/lib/liblua.so: undefined reference to `dlsym'
```
---
 package/lua/5.2.4/0004-lua-pc.patch | 4 +++-
 package/lua/5.3.4/0004-lua-pc.patch | 4 +++-
 package/lua/lua.mk                  | 8 ++++----
 3 files changed, 10 insertions(+), 6 deletions(-)
package/lua/5.2.4/0004-lua-pc.patch +3 -1
index 62acb201f2..31ff61157a 100644
@@ -1,6 +1,8 @@
 add lua.pc
 
 Signed-off-by: Francois Perrad <[email protected]>
+[J?rg Krause: add @MYLIBS@]
+Signed-off-by: J?rg Krause <[email protected]>
 
 Index: b/etc/lua.pc
 ===================================================================
@@ -34,7 +36,7 @@ Index: b/etc/lua.pc
 +Description: An Extensible Extension Language
 +Version: ${R}
 +Requires: 
-+Libs: -L${libdir} -llua -lm
++Libs: -L${libdir} -llua -lm @MYLIBS@
 +Cflags: -I${includedir}
 +
 +# (end of lua.pc)
package/lua/5.3.4/0004-lua-pc.patch +3 -1
index 615a7db8fc..11258329d1 100644
@@ -1,6 +1,8 @@
 add lua.pc
 
 Signed-off-by: Francois Perrad <[email protected]>
+[J?rg Krause: add @MYLIBS@]
+Signed-off-by: J?rg Krause <[email protected]>
 
 Index: b/etc/lua.pc
 ===================================================================
@@ -34,7 +36,7 @@ Index: b/etc/lua.pc
 +Description: An Extensible Extension Language
 +Version: ${R}
 +Requires:
-+Libs: -L${libdir} -llua -lm
++Libs: -L${libdir} -llua -lm @MYLIBS@
 +Cflags: -I${includedir}
 +
 +# (end of lua.pc)
package/lua/lua.mk +4 -4
index 93339ad9ce..0692c53764 100644
@@ -86,8 +86,8 @@ endef
 
 define LUA_INSTALL_STAGING_CMDS
 	$(TARGET_MAKE_ENV) $(MAKE) INSTALL_TOP="$(STAGING_DIR)/usr" -C $(@D) install
-	$(INSTALL) -m 0644 -D $(@D)/etc/lua.pc \
-		$(STAGING_DIR)/usr/lib/pkgconfig/lua.pc
+	sed -e "s/@MYLIBS@/$(LUA_MYLIBS)/g" $(@D)/etc/lua.pc \
+		> $(STAGING_DIR)/usr/lib/pkgconfig/lua.pc
 endef
 
 define LUA_INSTALL_TARGET_CMDS
@@ -96,8 +96,8 @@ endef
 
 define HOST_LUA_INSTALL_CMDS
 	$(HOST_MAKE_ENV) $(MAKE) INSTALL_TOP="$(HOST_DIR)" -C $(@D) install
-	$(INSTALL) -m 0644 -D $(@D)/etc/lua.pc \
-		$(HOST_DIR)/lib/pkgconfig/lua.pc
+	sed -e "s/@MYLIBS@/$(HOST_LUA_MYLIBS)/g" $(@D)/etc/lua.pc \
+		> $(HOST_DIR)/lib/pkgconfig/lua.pc
 endef
 
 $(eval $(generic-package))
Signature · 1 line
2.13.3
#1 lore raw

PATCH 2/2 swupdate: support for Lua 5.1 is broken

Before commit 87b6ac1478821351c92f7ca1c3154550e4713b28 support for Lua was always disabled by the default config file:

```
CONFIG_LUA is not set
```

The commit removed this setting and Lua support is now enabled if a Lua interpreter is enabled. As the swupdate build system uses pkg-config to check for the lua library by default (LUAPKG="lua") this throws a lot of undefined referenced in case LuaJIT is uses as Lua interpreter, e.g.:

```
corelib/lib.a(lua_interface.o): In function `l_info':
lua_interface.c:(.text.l_info+0x14): undefined reference to `luaL_checklstring'
```

However, since version 2017.07 support for Lua 5.1 is broken in swupdate. Therefore, remove support for Lua 5.1 and LuaJIT in the swupdate package for now until upstream might fix this issue.

Reported upstream:
https://groups.google.com/forum/#!topic/swupdate/WAm8npAOd6o

Fixes:
http://autobuild.buildroot.net/results/df2/df2a71efe5af52d7b8721a355c49934b1be197a3/
http://autobuild.buildroot.net/results/400/4006225c8a47eb0b56399c83bd6d00406a0f62c2/
http://autobuild.buildroot.net/results/098/098f9d6cd905359adac4fb15e1d54c5022757325/
http://autobuild.buildroot.net/results/e5f/e5f6f99d96d9c661454335e7f931a03c3ae6a9e2/
http://autobuild.buildroot.net/results/f3a/f3a0abe8d5e35c85da40d20dab260c28506a0d4c/

---
 package/swupdate/Config.in   | 7 ++-----
 package/swupdate/swupdate.mk | 4 ++--
 2 files changed, 4 insertions(+), 7 deletions(-)
package/swupdate/Config.in +2 -5
index dbc69f1fe8..7a0f9d12e5 100644
@@ -4,7 +4,7 @@ config BR2_PACKAGE_SWUPDATE
 	depends on BR2_USE_MMU # fork()
 	# swupdate requires a parser and uses libconfig as default
 	select BR2_PACKAGE_LIBCONFIG if !BR2_PACKAGE_JSON_C && \
-		!BR2_PACKAGE_HAS_LUAINTERPRETER
+		!BR2_PACKAGE_LUA_5_2 && !BR2_PACKAGE_LUA_5_3
 	help
 	  swupdate provides a reliable way to update the software on an
 	  embedded system.
@@ -19,11 +19,8 @@ config BR2_PACKAGE_SWUPDATE
 	  use your own modified configuration, you have to select the
 	  necessary packages manually:
 
-	  * Select BR2_PACKAGE_LUA or BR2_PACKAGE_LUAJIT if you want
+	  * Select BR2_PACKAGE_LUA_5_2 or BR2_PACKAGE_LUA_5_3 if you want
 	    to have Lua support.
-	    CONFIG_HANDLER_IN_LUA is not supported in LuaJIT or Lua 5.1.
-	    Note that for LuaJIT support, you need to set
-	    CONFIG_LUAVERSION="jit-5.1".
 	  * Select BR2_LIBCURL if you want to use the download feature.
 	  * Select BR2_PACKAGE_OPENSSL is you want to add encryption support.
 	  * Select BR2_PACKAGE_MTD if you want to use swupdate with UBI
package/swupdate/swupdate.mk +2 -2
index ee92adddf0..fbb092da05 100644
@@ -39,8 +39,8 @@ else
 SWUPDATE_MAKE_ENV += HAVE_LIBCURL=n
 endif
 
-ifeq ($(BR2_PACKAGE_HAS_LUAINTERPRETER),y)
-SWUPDATE_DEPENDENCIES += luainterpreter host-pkgconf
+ifeq ($(BR2_PACKAGE_LUA_5_2)$(BR2_PACKAGE_LUA_5_3),y)
+SWUPDATE_DEPENDENCIES += lua host-pkgconf
 SWUPDATE_MAKE_ENV += HAVE_LUA=y
 else
 SWUPDATE_MAKE_ENV += HAVE_LUA=n
Signature · 1 line
2.13.3
#2 lore raw

PATCH 2/2 swupdate: support for Lua 5.1 is broken

Hello,

Quoted 12 lines · J?rg Krause

Before commit 87b6ac1478821351c92f7ca1c3154550e4713b28 support for Lua was always disabled by the default config file:

```
CONFIG_LUA is not set
```

The commit removed this setting and Lua support is now enabled if a Lua interpreter is enabled. As the swupdate build system uses pkg-config to check for the lua library by default (LUAPKG="lua") this throws a lot of undefined referenced in case LuaJIT is uses as Lua interpreter, e.g.:

Quoted 8 lines
```
corelib/lib.a(lua_interface.o): In function `l_info':
lua_interface.c:(.text.l_info+0x14): undefined reference to `luaL_checklstring'
```

However, since version 2017.07 support for Lua 5.1 is broken in swupdate. Therefore, remove support for Lua 5.1 and LuaJIT in the swupdate package for now until upstream might fix this issue.

Isn't it better to revert the bump to 2017.07 instead of removing functionality that people could be relying on ?

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com
#3 lore raw

PATCH 2/2 swupdate: support for Lua 5.1 is broken

Hi Thomas,

Quoted 25 lines · Thomas Petazzoni

Hello,

Quoted 22 lines · J?rg Krause

Before commit 87b6ac1478821351c92f7ca1c3154550e4713b28 support for Lua
was always disabled by the default config file:

```
CONFIG_LUA is not set
```

The commit removed this setting and Lua support is now enabled if a Lua
interpreter is enabled. As the swupdate build system uses pkg- config to check
for the lua library by default (LUAPKG="lua") this throws a lot of undefined referenced in case LuaJIT is uses as Lua interpreter, e.g.:

```
corelib/lib.a(lua_interface.o): In function `l_info':
lua_interface.c:(.text.l_info+0x14): undefined reference to
`luaL_checklstring'
```
Quoted 8 lines
Quoted 5 lines

However, since version 2017.07 support for Lua 5.1 is broken in swupdate. Therefore,
remove support for Lua 5.1 and LuaJIT in the swupdate package for now
until upstream might fix this issue.

Isn't it better to revert the bump to 2017.07 instead of removing functionality that people could be relying on ?

Lua 5.1 and LuaJIT were never supported if CONFIG_HANDLER_IN_LUA was selected. Upstream changed the functionality that the Lua code used when enabling CONFIG_HANDLER_IN_LUA is now used in more common places and therefore enabled if CONFIG_LUA is enabled.

That's why, I should have reword the commit message to: "Lua 5.1 is not supported" instead of "broken".

I am asking the Stefano Babic, the swupdate maintainer, if he is interested in enabling Lua 5.1 support. For now, swupdate is explicitly tested using Lua 5.3.

Best regards,
J?rg Krause

#4 lore raw

PATCH 2/2 swupdate: support for Lua 5.1 is broken

Hi Thomas,
Hi Jordan,

Quoted 45 lines · J?rg Krause

Hi Thomas,

Quoted 28 lines · Thomas Petazzoni

Hello,

Quoted 25 lines · J?rg Krause

Before commit 87b6ac1478821351c92f7ca1c3154550e4713b28 support for
Lua
was always disabled by the default config file:

```
CONFIG_LUA is not set
```

The commit removed this setting and Lua support is now enabled if a
Lua
interpreter is enabled. As the swupdate build system uses pkg- config to check
for the lua library by default (LUAPKG="lua") this throws a lot of
undefined referenced in case LuaJIT is uses as Lua interpreter, e.g.:

```
corelib/lib.a(lua_interface.o): In function `l_info':
lua_interface.c:(.text.l_info+0x14): undefined reference to
`luaL_checklstring'
```
Quoted 8 lines
Quoted 5 lines

However, since version 2017.07 support for Lua 5.1 is broken in swupdate. Therefore,
remove support for Lua 5.1 and LuaJIT in the swupdate package for now
until upstream might fix this issue.

Isn't it better to revert the bump to 2017.07 instead of removing functionality that people could be relying on ?

Lua 5.1 and LuaJIT were never supported if CONFIG_HANDLER_IN_LUA was selected. Upstream changed the functionality that the Lua code used when enabling CONFIG_HANDLER_IN_LUA is now used in more common places and therefore enabled if CONFIG_LUA is enabled.

Quoted 8 lines

That's why, I should have reword the commit message to: "Lua 5.1 is not
supported" instead of "broken".

I am asking the Stefano Babic, the swupdate maintainer, if he is interested in enabling Lua 5.1 support. For now, swupdate is explicitly
tested using Lua 5.3.

Stefano confirmed that he has no plans in adding support for Lua 5.1/LuaJIT himself, but patches are welcome [1].

@Jordan: You've added a patch to allow configuring swupdate with LuaJIT last year. If you're still interested in support for LuaJIT, please contact the swupdate maintainer on the swupdate mailing list.

[1] https://groups.google.com/d/msg/swupdate/WAm8npAOd6o/hPWMMkV_AAAJ

J?rg

#5 lore raw

PATCH 2/2 swupdate: support for Lua 5.1 is broken

In reply to Jörg Krause
Quoted 24 lines · J?rg Krause

Before commit 87b6ac1478821351c92f7ca1c3154550e4713b28 support for Lua was always disabled by the default config file:

```
CONFIG_LUA is not set
```

The commit removed this setting and Lua support is now enabled if a Lua interpreter is enabled. As the swupdate build system uses pkg-config to check for the lua library by default (LUAPKG="lua") this throws a lot of undefined referenced in case LuaJIT is uses as Lua interpreter, e.g.:

```
corelib/lib.a(lua_interface.o): In function `l_info':
lua_interface.c:(.text.l_info+0x14): undefined reference to `luaL_checklstring'
```

However, since version 2017.07 support for Lua 5.1 is broken in swupdate. Therefore, remove support for Lua 5.1 and LuaJIT in the swupdate package for now until upstream might fix this issue.

Reported upstream:
https://groups.google.com/forum/#!topic/swupdate/WAm8npAOd6o

Quoted 8 lines

Fixes:
http://autobuild.buildroot.net/results/df2/df2a71efe5af52d7b8721a355c49934b1be197a3/
http://autobuild.buildroot.net/results/400/4006225c8a47eb0b56399c83bd6d00406a0f62c2/
http://autobuild.buildroot.net/results/098/098f9d6cd905359adac4fb15e1d54c5022757325/
http://autobuild.buildroot.net/results/e5f/e5f6f99d96d9c661454335e7f931a03c3ae6a9e2/
http://autobuild.buildroot.net/results/f3a/f3a0abe8d5e35c85da40d20dab260c28506a0d4c/

Applied to master after updating the commit message as you suggested, thanks.

Regards,
Arnout

Signature · 6 lines
Arnout Vandecappelle                          arnout at mind be
Senior Embedded Software Architect            +32-16-286500
Essensium/Mind                                http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium           BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF
#6 lore raw

PATCH 1/2 lua: fix pkg-config file

In reply to Jörg Krause

Hello,

Quoted 5 lines · J?rg Krause

When Lua is linked with additional libraries, these libraries should go into the pkg-config file as well.

Otherwise, linking swupdate with the lua library fails:

Quoted 8 lines
```
/home/buildroot/output/host/arm-buildroot-linux-gnueabihf/sysroot/usr/lib/liblua.so: undefined reference to `dlopen'
/home/buildroot/output/host/arm-buildroot-linux-gnueabihf/sysroot/usr/lib/liblua.so: undefined reference to `dlclose'
/home/buildroot/output/host/arm-buildroot-linux-gnueabihf/sysroot/usr/lib/liblua.so: undefined reference to `dlerror'
/home/buildroot/output/host/arm-buildroot-linux-gnueabihf/sysroot/usr/lib/liblua.so: undefined reference to `dlsym'
```

Is this fixing an autobuilder issue ? I guess it should fix the ones you mention in PATCH 2/2, but obviously only for the supported Lua versions.

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com
#7 lore raw

PATCH 1/2 lua: fix pkg-config file

Hi Thomas,

Quoted 23 lines · Thomas Petazzoni

Hello,

Quoted 20 lines · J?rg Krause

When Lua is linked with additional libraries, these libraries should go
into the pkg-config file as well.

Otherwise, linking swupdate with the lua library fails:

```
/home/buildroot/output/host/arm-buildroot-linux-
gnueabihf/sysroot/usr/lib/liblua.so: undefined reference to
`dlopen'
/home/buildroot/output/host/arm-buildroot-linux-
gnueabihf/sysroot/usr/lib/liblua.so: undefined reference to
`dlclose'
/home/buildroot/output/host/arm-buildroot-linux-
gnueabihf/sysroot/usr/lib/liblua.so: undefined reference to
`dlerror'
/home/buildroot/output/host/arm-buildroot-linux-
gnueabihf/sysroot/usr/lib/liblua.so: undefined reference to `dlsym'
```
Quoted 5 lines
Quoted 1 line

Is this fixing an autobuilder issue ? I guess it should fix the ones you mention in PATCH 2/2, but obviously only for the supported Lua versions.

It is an autobuilder issue indeed, but it was not detected the date I wrote the patch. The autobuilder issues concerning swupdate until that date where Lua 5.1/LuaJIT related. I noticed the issue using the Linaro
Toolchain for armhf.

There is now a report of an autobuilder from yesterday:
http://autobuild.buildroot.net/results/1c3/1c349cc5904868e4def292b9fbfa
164828e46156/

Not all toolchains are producing the issue (only glibc ones?):

                armv5-ctng-linux-gnueabi [ 1/47]: FAILED
              armv7-ctng-linux-gnueabihf [ 2/47]: FAILED
                        br-aarch64-glibc [ 3/47]: FAILED
                           br-arcle-hs38 [ 4/47]: OK
                            br-arm-basic [ 5/47]: OK
                  br-arm-cortex-a9-glibc [ 6/47]: FAILED
                   br-arm-cortex-a9-musl [ 7/47]: OK
                             br-arm-full [ 9/47]: OK
                      br-arm-full-static [11/47]: OK
                   br-i386-pentium4-full [13/47]: OK
                br-i386-pentium-mmx-musl [14/47]: OK
                      br-m68k-68040-full [16/47]: OK
                    br-microblazeel-full [17/47]: OK
                 br-mips32r6-el-hf-glibc [18/47]: FAILED
                      br-mips64-n64-full [19/47]: OK
                 br-mips64r6-el-hf-glibc [20/47]: FAILED

J?rg

#8 lore raw

PATCH 1/2 lua: fix pkg-config file

In reply to Jörg Krause
Quoted 7 lines
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"J?rg" == J?rg Krause <[email protected]> writes:

When Lua is linked with additional libraries, these libraries should go into the pkg-config file as well.

Otherwise, linking swupdate with the lua library fails:

Quoted 8 lines
```
/home/buildroot/output/host/arm-buildroot-linux-gnueabihf/sysroot/usr/lib/liblua.so: undefined reference to `dlopen'
/home/buildroot/output/host/arm-buildroot-linux-gnueabihf/sysroot/usr/lib/liblua.so: undefined reference to `dlclose'
/home/buildroot/output/host/arm-buildroot-linux-gnueabihf/sysroot/usr/lib/liblua.so: undefined reference to `dlerror'
/home/buildroot/output/host/arm-buildroot-linux-gnueabihf/sysroot/usr/lib/liblua.so: undefined reference to `dlsym'
```

Committed to 2017.02.x, thanks.

Signature · 1 line
Bye, Peter Korsgaard