On Tue, 26 Sep 2006, Paul Wouters wrote:
An update on this. It is not apache specific. It seems the stock FC5 xenguest-install.py
on x86_64, despite running the proper 64bit kernel/userland, is somehow using /usr/lib
as %{_libdir}. This is odd, as it is a virgin xenguest install from a x86_86 xen0, where
the xen0 properly expands %{_libdir} to /usr/lib64, but the installed xenU does not.
I've changed the bugzilla item to the xen component.
Paul
Date: Tue, 26 Sep 2006 08:11:15 +0200 (CEST)
From: Paul Wouters <paul(a)xelerance.com>
Cc: fedora-devel-list(a)redhat.com
To: Discussion related to Fedora Extras <fedora-extras-list(a)redhat.com>
Subject: multiple apache module packages fail on %{_libdir} on x86_64 on FC5
( 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