> (... revisiting old thread about my problems with compiling
> apache/mod_perl as DSO on Tru64 unix)
My problem is still not solved but I get it up to the point where it
probably lies in some customary modules (which does not behave
correctly when unloaded/reloaded) and is not directly related to
apache/mod_perl.
As I got the minimal success (some simple mod_perl application
worked), I report here the way I compiled perl/apache/mod_perl in
that case. Maybe it will help someone in similar situation.
Below I cite the main parts of the script I used (with unnecessary
details omitted):
WORK_DIR=$HOME/tools_src
DIST_DIR=$HOME/DOWNLOAD
INST_DIR=$HOME/tools
PERL_INST_DIR=$INST_DIR/perl
APACHE_INST_DIR=$INST_DIR/apache
############################################################
PERL_VERSION=perl-5.6.1
APACHE_VERSION=apache_1.3.27
MOD_PERL_VERSION=mod_perl-1.27
LIBAPREQ_VERSION=libapreq-1.0
DIGEST_MD5_VERSION=Digest-MD5-2.20
MIME_BASE64_VERSION=MIME-Base64-2.12
# ... cut a lot of other modules which are out-of-topic here
#################################################################
unpack() {
if [ -d $1 ]; then
rm -rf $1
fi
echo -n "Unpacking $1..."
gunzip -c $DIST_DIR/$1.tar.gz | tar xf -
echo "done"
}
#################################################################
if [ ! -d $WORK_DIR ]; then
mkdir -p $WORK_DIR
fi
if [ ! -d $INST_DIR ]; then
mkdir -p $INST_DIR
fi
#################################################################
cd $WORK_DIR
unpack $PERL_VERSION
cd $PERL_VERSION
# Some commments:
# -Uinstallusrbinperl in my case I use customary install directory
# -Uuseshrplib there is a makefile problem and compilation error
# when we define it (which we try to patch below, so please
# experiment if you like)
# -Uusemymalloc on 64bit platforms it is recommended according to some docs
# -Ubincompat5005 we don't want coredumps caused by name conflicts
# of malloc/free
# -Dusemultiplicity it helps a bit with DSO reloading
sh Configure -des -Dprefix=$PERL_INST_DIR -Uinstallusrbinperl \
-Uuseshrplib -Uusemymalloc -Ubincompat5005 \
-Dusemultiplicity
make
make test
make install
#---- don't forget it when installing outside defaults
PATH=$PERL_INST_DIR/bin:$PATH; export PATH
#################################################################
build_module() {
MOD=$1
cd $WORK_DIR
unpack $MOD
cd $WORK_DIR/$MOD
perl Makefile.PL $2 $3 $4 $5 $6 $7 $8 $9
make
make test
make install
}
build_module $DIGEST_MD5_VERSION
build_module $MIME_BASE64_VERSION
# ... cut others ...
#################################################################
unpack $APACHE_VERSION
unpack $MOD_PERL_VERSION
cd $WORK_DIR/$MOD_PERL_VERSION
perl Makefile.PL $PERL_MOD_DBG $PLTRACE \
APACHE_SRC=../$APACHE_VERSION/src \
APACHE_PREFIX=$APACHE_INST_DIR \
USE_APACI=1 \
USE_DSO=1 \
DO_HTTPD=1 \
ALL_HOOKS=1 \
EVERYTHING=1 \
APACI_ARGS="--enable-module=so,\
--prefix=$APACHE_INST_DIR,\
--enable-module=access,--enable-shared=access,\
--enable-module=actions,--enable-shared=actions,\
--enable-module=alias,--enable-shared=alias,\
--enable-module=asis,--enable-shared=asis,\
--enable-module=auth,--enable-shared=auth,\
--enable-module=auth_anon,--enable-shared=auth_anon,\
--enable-module=auth_db,--enable-shared=auth_db,\
--enable-module=auth_dbm,--enable-shared=auth_dbm,\
--enable-module=autoindex,--enable-shared=autoindex,\
--enable-module=cern_meta,--enable-shared=cern_meta,\
--enable-module=cgi,--enable-shared=cgi,\
--enable-module=digest,--enable-shared=digest,\
--enable-module=dir,--enable-shared=dir,\
--enable-module=env,--enable-shared=env,\
--enable-module=example,--enable-shared=example,\
--enable-module=expires,--enable-shared=expires,\
--enable-module=headers,--enable-shared=headers,\
--enable-module=imap,--enable-shared=imap,\
--enable-module=include,--enable-shared=include,\
--enable-module=info,--enable-shared=info,\
--enable-module=log_agent,--enable-shared=log_agent,\
--enable-module=log_config,--enable-shared=log_config,\
--enable-module=log_referer,--enable-shared=log_referer,\
--enable-module=mime,--enable-shared=mime,\
--enable-module=mime_magic,--enable-shared=mime_magic,\
--enable-module=mmap_static,--enable-shared=mmap_static,\
--enable-module=negotiation,--enable-shared=negotiation,\
--enable-module=proxy,--enable-shared=proxy,\
--enable-module=rewrite,--enable-shared=rewrite,\
--enable-module=setenvif,--enable-shared=setenvif,\
--enable-module=speling,--enable-shared=speling,\
--enable-module=status,--enable-shared=status,\
--enable-module=unique_id,--enable-shared=unique_id,\
--enable-module=userdir,--enable-shared=userdir,\
--enable-module=usertrack,--enable-shared=usertrack,\
--enable-module=vhost_alias,--enable-shared=vhost_alias,\
"
# Correcting the makefile error resulting in compilation error when
# perl is compiled with shared library
perl -i.orig -pe 's/-Wl,-rpath,/-rpath /' \
../$APACHE_VERSION/src/modules/perl/Makefile
make
make test
make install
# libperl.so name for mod_perl is plain stupid, let's follow the Debian way
echo -n "Renaming libperl.so to mod_perl.so, use this name in httpd.conf"
mv $APACHE_INST_DIR/libexec/libperl.so $APACHE_INST_DIR/libexec/mod_perl.so
echo "Done"
#######################################################################
# Modules dependent from modperl....
cd $WORK_DIR
build_module $LIBAPREQ_VERSION