package/apache: fix dynamic build for mod_lua
PATCH 1/1 package/apache: fix dynamic build for mod_lua
Fixes
/accts/mlweber1/rclinux/rc-buildroot-test/scripts/instance-1/output/host/sparc64-buildroot-linux-gnu/sysroot/usr/lib/liblua.so: undefined reference to dlopen' /accts/mlweber1/rclinux/rc-buildroot-test/scripts/instance-1/output/host/sparc64-buildroot-linux-gnu/sysroot/usr/lib/liblua.so: undefined reference to dlclose' /accts/mlweber1/rclinux/rc-buildroot-test/scripts/instance-1/output/host/sparc64-buildroot-linux-gnu/sysroot/usr/lib/liblua.so: undefined reference to dlerror' /accts/mlweber1/rclinux/rc-buildroot-test/scripts/instance-1/output/host/sparc64-buildroot-linux-gnu/sysroot/usr/lib/liblua.so: undefined reference to dlsym'
detected by autobuilder:
http://autobuild.buildroot.net/results/cc1/cc13f4cef9cf6f18615d58f1d83b233812f19fa0/
--- package/apache/apache.mk | 4 ++++ 1 file changed, 4 insertions(+)
package/apache/apache.mk +4 -0
@@ -61,6 +61,10 @@ APACHE_CONF_OPTS += \ --enable-lua \ --with-lua=$(STAGING_DIR)/usr APACHE_DEPENDENCIES += lua +# liblua uses dlopen when dynamically linked +ifneq ($(BR2_STATIC_LIBS),y) +APACHE_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -ldl" +endif else APACHE_CONF_OPTS += --disable-lua endif
Signature · 1 line
2.14.2
PATCH 1/1 package/apache: fix dynamic build for mod_lua
Hello,
package/apache/apache.mk APACHE_CONF_OPTS += \ · line 67
Quoted 5 lines · Bernd Kuhls
APACHE_DEPENDENCIES+= luapackage/apache/apache.mk +4
-0+# liblua uses dlopen when dynamically linked +ifneq ($(BR2_STATIC_LIBS),y) +APACHE_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -ldl" +endif
As usual, I don't like this. Apache uses pkg-config to query for the availability of Lua, and this should return "the right thing" without the need for hacks. See modules/lua/config.m4:
if test -n "$PKGCONFIG" -a -z "$lua_path" \
&& $PKGCONFIG --atleast-version=5.1 lua; then
LUA_LIBS="$PKGCONFIG --libs lua"
LUA_CFLAGS="$PKGCONFIG --cflags lua" LUA_VERSION="$PKGCONFIG --modversion lua" AC_MSG_NOTICE([using Lua $LUA_VERSION configuration from pkg-config])
So we need to understand why this doesn't work.
In the failing build, host-pkgconf was built before apache, so pkg-config was available. But apache didn't use it, I believe because we pass a non_empty lua_path.
Could you try to pass --with-lua instead of --with-lua=$(STAGING_DIR) ? That should convince the stuff to use pkg-config to detect Lua, which will get the compiler flags from lua.pc, and hopefully they will contain the -ldl.
Thanks,
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Bootlin (formerly Free Electrons) Embedded Linux and Kernel engineering https://bootlin.com