package/luvi: add upstream patch to fix runtime issue with CMake 3.12+
PATCH 1/1 package/luvi: add upstream patch to fix runtime issue with CMake 3.12+
luvi fails to run when it was build with CMake 3.12+:
```
[string "return require('init')(...)"]:1: module 'init' not found:
no field package.preload['init']
no file './init.lua'
no file '/usr/share/luajit-2.0.5/init.lua'
no file '/usr/local/share/lua/5.1/init.lua'
no file '/usr/local/share/lua/5.1/init/init.lua'
no file '/usr/share/lua/5.1/init.lua'
no file '/usr/share/lua/5.1/init/init.lua'
no file './init.so'
no file '/usr/local/lib/lua/5.1/init.so'
no file '/usr/lib/lua/5.1/init.so'
no file '/usr/local/lib/lua/5.1/loadall.so'
```Looking at link.txt for the luvi executable shows that -rdynamic is not set anymore in CMake 3.12. This has the effect, that symbols are missing in the .dynsym section in the binary.
The patch, sets ENABLE_EXPORTS to true in CMakeLists.txt to force setting -rdynamic explicitly.
Upstream status: b8781653dcb8815a3019a77baf4f3b7f7a255ebe
--- ...i-executable-needs-to-export-symbols.patch | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 package/luvi/0002-luvi-executable-needs-to-export-symbols.patch
package/luvi/0002-luvi-executable-needs-to-export-symbols.patch new file +53 -0
@@ -0,0 +1,53 @@ +From 1ea2c1e372ab59b9a633a51f0dcefc24328528f1 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?J=C3=B6rg=20Krause?= <[email protected]> +Date: Mon, 10 Sep 2018 08:18:38 +0200 +Subject: [PATCH] luvi executable needs to export symbols +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Using CMake 3.12 running luvi fails with: + +``` +[string "return require('init')(...)"]:1: module 'init' not found: + no field package.preload['init'] + no file './init.lua' + no file '/usr/share/luajit-2.0.5/init.lua' + no file '/usr/local/share/lua/5.1/init.lua' + no file '/usr/local/share/lua/5.1/init/init.lua' + no file '/usr/share/lua/5.1/init.lua' + no file '/usr/share/lua/5.1/init/init.lua' + no file './init.so' + no file '/usr/local/lib/lua/5.1/init.so' + no file '/usr/lib/lua/5.1/init.so' + no file '/usr/local/lib/lua/5.1/loadall.so' +``` + +Looking at link.txt for the luvi executable shows that `-rdynamic` is +not set anymore in CMake 3.12. This has the effect, that symbols are +missing in the `.dynsym` section. + +Therefore, set `ENABLE_EXPORTS` to true which set `-rdynamic` explicitly. + +Upstream status: b8781653dcb8815a3019a77baf4f3b7f7a255ebe + +Signed-off-by: J?rg Krause <[email protected]> +--- + CMakeLists.txt | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index e141f8e..8219d0b 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -158,6 +158,7 @@ if("${CMAKE_SYSTEM_NAME}" MATCHES "Linux") + endif() + + target_link_libraries(luvi ${LUVI_LIBRARIES} ${EXTRA_LIBS} ${CMAKE_THREAD_LIBS_INIT}) ++set_target_properties(luvi PROPERTIES ENABLE_EXPORTS ON) + + ############################################################################### + ## Installation Targets +-- +2.19.1 +
Signature · 1 line
2.20.0
Thomas Petazzoni
AppliedPATCH 1/1 package/luvi: add upstream patch to fix runtime issue with CMake 3.12+
Hello,
Quoted 24 lines · J?rg Krause
luvi fails to run when it was build with CMake 3.12+:
``` [string "return require('init')(...)"]:1: module 'init' not found: no field package.preload['init'] no file './init.lua' no file '/usr/share/luajit-2.0.5/init.lua' no file '/usr/local/share/lua/5.1/init.lua' no file '/usr/local/share/lua/5.1/init/init.lua' no file '/usr/share/lua/5.1/init.lua' no file '/usr/share/lua/5.1/init/init.lua' no file './init.so' no file '/usr/local/lib/lua/5.1/init.so' no file '/usr/lib/lua/5.1/init.so' no file '/usr/local/lib/lua/5.1/loadall.so' ```Looking at link.txt for the luvi executable shows that
-rdynamicis not set anymore in CMake 3.12. This has the effect, that symbols are missing in the.dynsymsection in the binary.The patch, sets
ENABLE_EXPORTSto true in CMakeLists.txt to force setting-rdynamicexplicitly.
Quoted 7 lines
Upstream status:
b8781653dcb8815a3019a77baf4f3b7f7a255ebeSigned-off-by J?rg Krause <[email protected]>--- ...i-executable-needs-to-export-symbols.patch | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 package/luvi/0002-luvi-executable-needs-to-export-symbols.patch
Applied to master, thanks.
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com
PATCH 1/1 package/luvi: add upstream patch to fix runtime issue with CMake 3.12+
In reply to Jörg KrauseQuoted 22 lines
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
"J?rg" == J?rg Krause <[email protected]> writes:
luvi fails to run when it was build with CMake 3.12+:
``` [string "return require('init')(...)"]:1: module 'init' not found: no field package.preload['init'] no file './init.lua' no file '/usr/share/luajit-2.0.5/init.lua' no file '/usr/local/share/lua/5.1/init.lua' no file '/usr/local/share/lua/5.1/init/init.lua' no file '/usr/share/lua/5.1/init.lua' no file '/usr/share/lua/5.1/init/init.lua' no file './init.so' no file '/usr/local/lib/lua/5.1/init.so' no file '/usr/lib/lua/5.1/init.so' no file '/usr/local/lib/lua/5.1/loadall.so' ```Looking at link.txt for the luvi executable shows that
-rdynamicis not set anymore in CMake 3.12. This has the effect, that symbols are missing in the.dynsymsection in the binary.
Quoted 6 lines
The patch, sets
ENABLE_EXPORTSto true in CMakeLists.txt to force setting-rdynamicexplicitly.Upstream status:
b8781653dcb8815a3019a77baf4f3b7f7a255ebeSigned-off-by J?rg Krause <[email protected]>
Committed to 2018.02.x, 2018.08.x and 2018.11.x, thanks.
Signature · 1 line
Bye, Peter Korsgaard