Skip to contentSkip to conversation

package/apache: fix dynamic build for mod_lua

PATCH New Bernd Kuhls 2 participants 2 messages Apr 1, 2018

lore
Share & tools
lore
#0 lore raw

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
index 3b39be4a40..6632d0b6ce 100644
@@ -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
#1 lore raw

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 += lua

package/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