mirror of
https://github.com/openembedded/meta-openembedded.git
synced 2026-07-15 16:07:26 +00:00
sysdig: Use LuaJIT headers to match the linked LuaJIT library
csysdig fails to link when stock Lua is also present in the sysroot:
ld.lld: error: undefined symbol: luaL_openselectedlibs
>>> referenced by chisel.cpp:1190
ld.lld: error: undefined symbol: lua_pcallk
ld.lld: error: undefined symbol: lua_setglobal
sysdig's chisel code does #include "lua.h" and links against LuaJIT
(lua${JIT}), but the recipe-sysroot also carries stock Lua headers
(openembedded-core lua installs lua.h into ${includedir}). Those headers
win the include search over ${includedir}/luajit-2.1, so the chisel
objects are compiled against stock Lua while the binary links
libluajit-5.1.so. In Lua >= 5.4.4 luaL_openlibs is a macro for
luaL_openselectedlibs and lua_setglobal/lua_pcallk are real symbols,
none of which LuaJIT (a Lua 5.1 ABI) provides, hence the undefined
references. -DLUA_INCLUDE_DIR does not help: sysdig's luajit.cmake only
consults it in its stock-Lua fallback, not when it finds LuaJIT.
Prepend ${STAGING_INCDIR}/luajit-2.1 to CFLAGS/CXXFLAGS. These land in
CMAKE_CXX_FLAGS, which precede CMake's generated -I includes, so LuaJIT's
lua.h is found first and matches the linked library.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
This commit is contained in:
@@ -62,9 +62,18 @@ EXTRA_OECMAKE = "\
|
||||
-DCREATE_TEST_TARGETS=OFF \
|
||||
"
|
||||
|
||||
# sysdig's chisel code does #include "lua.h". The recipe-sysroot also carries
|
||||
# stock Lua headers (openembedded-core lua installs lua.h into ${includedir}),
|
||||
# which are ABI-incompatible with the LuaJIT library sysdig links against: in
|
||||
# Lua >= 5.4.4 luaL_openlibs is a macro for luaL_openselectedlibs and
|
||||
# lua_setglobal/lua_pcallk are real symbols, none of which LuaJIT provides.
|
||||
# sysdig's luajit.cmake only honours LUA_INCLUDE_DIR in its stock-Lua fallback,
|
||||
# not when it finds LuaJIT, and the LuaJIT include dir does not win the search
|
||||
# order, so lua.h resolves to the stock header and the link fails. Put the
|
||||
# LuaJIT include dir first so its lua.h is used and matches the linked library.
|
||||
#Add include dir to find driver_config.h
|
||||
CXXFLAGS:append = " -I${WORKDIR}/driver_Make/driver/src"
|
||||
CFLAGS:append = " -I${WORKDIR}/driver_Make/driver/src"
|
||||
CXXFLAGS:append = " -I${STAGING_INCDIR}/luajit-2.1 -I${WORKDIR}/driver_Make/driver/src"
|
||||
CFLAGS:append = " -I${STAGING_INCDIR}/luajit-2.1 -I${WORKDIR}/driver_Make/driver/src"
|
||||
|
||||
#To fix do_package QA Issue
|
||||
do_compile:append() {
|
||||
|
||||
Reference in New Issue
Block a user