multiple apache module packages fail on %{_libdir} on x86_64 on FC5

Paul Wouters paul at xelerance.com
Tue Sep 26 06:11:15 UTC 2006


( filed as https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=208059 but posting
here anyway, as it might cause faulty builds for extras apache modules as well)

(someone prob needs to approve the fedora-devel-list CC:, if it doesnt' auto bounce)

I was in the process of making a new apache module (mod_auth_radius). A problem I
ran into was that despite using %{_libdir}, the module would install in
/usr/lib/httpd/modules instead of /usr/lib64/httpd/modules. This is on an FC5
xenu build with xenguest-install.py on a P4 with an x86_64 kernel.

I checked what I could have done wrong by testing two random other modules from
extras, mod_cband and mod_security. They turned out to suffer from the same
problem, they also install in the wrong directory.

So I decided to look at a core module, and picked mod_auth_mysql, which turns
out to not even build on x86_64, with a failure to link against libmysqlclient,
which is indeed a missing Require (which I bugzilla'ed), but after installing
both mysqlclient10 and mysqlclient14, it still couldnt't find the proper
library.

So I picked mod_auth_pgsql. That compiled fine, but I already had it installed
from binary. I peeked:

# rpm -ql mod_auth_pgsql
/etc/httpd/conf.d/auth_pgsql.conf
/usr/lib64/httpd/modules/mod_auth_pgsql.so
/usr/share/doc/mod_auth_pgsql-2.0.3
/usr/share/doc/mod_auth_pgsql-2.0.3/INSTALL
/usr/share/doc/mod_auth_pgsql-2.0.3/README
/var/www/manual/mod/mod_auth_pgsql.html

Then I checked my freshly build package:

# rpm -qlp /usr/src/redhat/RPMS/x86_64/mod_auth_pgsql-2.0.3-2.3.x86_64.rpm
/usr/doc/mod_auth_pgsql-2.0.3
/usr/doc/mod_auth_pgsql-2.0.3/INSTALL
/usr/doc/mod_auth_pgsql-2.0.3/README
/usr/etc/httpd/conf.d/auth_pgsql.conf
/usr/lib/httpd/modules/mod_auth_pgsql.so
/var/www/manual/mod/mod_auth_pgsql.html


This leads me to believe that the current apxs in httpd-devel is subtly
broken. Note this is a freshly installed FC5 with updates.

Part of my spec file (which matches other mod_* packages)

%build
/usr/sbin/apxs -Wc,"%{optflags}" -c mod_auth_radius-2.0.c

%install
rm -rf %{buildroot}
mkdir -p %{buildroot}%{_libdir}/httpd/modules/
mkdir -p %{buildroot}/%{_sysconfdir}/httpd/conf.d/
install -p .libs/mod_auth_radius-2.0.so %{buildroot}/%{_libdir}/httpd/modules/
install -m644 %{SOURCE1} %{buildroot}/%{_sysconfdir}/httpd/conf.d/

relevant bits of output:

+ cd /usr/src/redhat/BUILD
+ cd mod_auth_radius-1.5.7
+ /usr/sbin/apxs '-Wc,-O2 -g' -c mod_auth_radius-2.0.c
/usr/lib64/apr-1/build/libtool --silent --mode=compile gcc -prefer-pic -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic  -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE -pthread -I/usr/include/httpd  -I/usr/include/apr-1   -I/usr/include/apr-1  -O2 -g  -c -o mod_auth_radius-2.0.lo mod_auth_radius-2.0.c && touch mod_auth_radius-2.0.slo

/usr/lib64/apr-1/build/libtool --silent --mode=link gcc -o mod_auth_radius-2.0.la  -rpath /usr/lib64/httpd/modules -module -avoid-version    mod_auth_radius-2.0.lo
+ exit 0
Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.599
+ umask 022
+ cd /usr/src/redhat/BUILD
+ cd mod_auth_radius-1.5.7
+ rm -rf /var/tmp/mod_auth_radius-1.5.7-1-root-
+ mkdir -p /var/tmp/mod_auth_radius-1.5.7-1-root-/usr/lib/httpd/modules/
+ mkdir -p /var/tmp/mod_auth_radius-1.5.7-1-root-//usr/etc/httpd/conf.d/
+ install -p .libs/mod_auth_radius-2.0.so /var/tmp/mod_auth_radius-1.5.7-1-root-//usr/lib/httpd/modules/
+ install -m644 /usr/src/redhat/SOURCES/mod_auth_radius.conf /var/tmp/mod_auth_radius-1.5.7-1-root-//usr/etc/httpd/conf.d/
+ exit 0

As can be seen, apxs seems to reference /usr/lib64/httpd/modules while building, but /var/tmp/mod_auth_radius-1.5.7-1-root-//usr/lib/httpd/modules/ when installing.

Paul




More information about the fedora-extras-list mailing list