Current File : //usr/share/lve/modlscapi/buildlsphp/php_build.template |
#!/bin/sh
###########
# need to replace the following
# PHP_BUILD_DIR = {PHP_BUILD_DIR}
# CP_BUILD_DIR = {CP_BUILD_DIR}
# PHP_VERSION = {PHP_VERSION}
# PHP_CONF_OPTIONS = {PHP_CONF_OPTIONS}
# LSWS_HOME = {LSWS_HOME}
############
check_errs()
{
if [ "${1}" -ne "0" ] ; then
echo "**ERROR** ${2}"
exit ${1}
fi
}
test_phpsrc_ok()
{
echo "Extracting PHP source archive: tar -zxf ${1}"
tar -zxf ${1}
if [ "$?" -ne "0" ] ; then
## remove bad copy
rm -f ${1}
echo "Could not extract PHP source archive"
return 1
fi
return 0
}
echo ""
echo "=============================================="
echo "Start building PHP {PHP_VERSION} with LSAPI"
echo "=============================================="
echo `date`
echo ""
ulimit -m unlimited
ulimit -v unlimited
if [ ! -e "{PHP_BUILD_DIR}" ] ; then
mkdir -p {PHP_BUILD_DIR}
check_errs $? "Could not create build directory {PHP_BUILD_DIR}"
fi
echo "Changing to build directory {PHP_BUILD_DIR}"
cd {PHP_BUILD_DIR}
check_errs $? "Could not get into build directory"
if [ -e php-{PHP_VERSION} ] ; then
rm -rf php-{PHP_VERSION}
check_errs $? "Could not delete old php directory"
fi
if [ -e "{CP_BUILD_DIR}/php-{PHP_VERSION}" ] ; then
echo "Detected php build directory for cPanel {CP_BUILD_DIR}/php-{PHP_VERSION}"
echo "Same source code will be copied over"
cp -rp "{CP_BUILD_DIR}/php-{PHP_VERSION}" php-{PHP_VERSION}
check_errs $? "Failed to copy over php source directory"
else
check_errs 1 "Cannot find php build directory for cPanel, please run EasyApache first to build PHP with correct options for Apache."
fi
echo ""
DOWNLOAD_URL="http://update.litespeedtech.com/ws/latest.php"
LSAPI_VERSION=`wget -q --output-document=- $DOWNLOAD_URL`
LSAPI_VERSION=`expr "$LSAPI_VERSION" : '.*PHP-LSAPI=\([0-9\.]*\)'`
echo "Query lastest LSAPI version: $LSAPI_VERSION"
if [ -e "php-litespeed-$LSAPI_VERSION.tgz" ] ; then
echo "php-litespeed-$LSAPI_VERSION.tgz already downloaded, use the saved copy"
else
DOWNLOAD_URL="https://www.litespeedtech.com/packages/lsapi/php-litespeed-$LSAPI_VERSION.tgz"
echo "Retrieving LSAPI archive"
wget -nv -O "php-litespeed-$LSAPI_VERSION.tgz" $DOWNLOAD_URL
check_errs $? "Could not retrieve LSAPI archive"
fi
cd php-{PHP_VERSION}/sapi
check_errs $? "Could not get into php/sapi directory"
if [ -e litespeed/Makefile.frag ] ; then
mv -f litespeed/Makefile.frag litespeed/Makefile.frag.package
fi
echo "Extracting LSAPI archive: tar -xzf php-litespeed-$LSAPI_VERSION.tgz"
tar -xzf "../../php-litespeed-$LSAPI_VERSION.tgz"
check_errs $? "Could not extract LSAPI archive"
if [ -e litespeed/Makefile.frag.package ] ; then
mv -f litespeed/Makefile.frag.package litespeed/Makefile.frag
fi
echo ""
echo "Finished gathering all the source code"
echo ""
echo "Generating configuration script"
cd ..
check_errs $? "Could not get into php directory"
sleep 1
touch ac*
check_errs $? "Could not touch ac*"
rm -rf autom4te.*
PHP_MAIN_VER=`expr "{PHP_VERSION}" : '\([0-9]*\.[0-9]*\)'`
PHP_MAIN_VER1=`expr "$PHP_MAIN_VER" : '\([0-9]*\)\.'`
PHP_MAIN_VER2=`expr "$PHP_MAIN_VER" : '[0-9]*\.\([0-9]*\)'`
BUILDCONF_FORCE=N
if [ "$PHP_MAIN_VER1" -lt "5" ] ; then
BUILDCONF_FORCE=Y
elif [ "$PHP_MAIN_VER1" = "5" ] && [ "$PHP_MAIN_VER2" -lt "3" ] ; then
BUILDCONF_FORCE=Y
fi
if [ "$BUILDCONF_FORCE" = "Y" ] ; then
./buildconf --force
check_errs $? "Could not generate configuration script for version prior to 5.3"
fi
rm config.cache
echo "Configuring PHP build (2-3 minutes)"
echo "{PHP_CONF_OPTIONS}"
OS=`uname -s`
if [ "x$OS" = "xFreeBSD" ]; then
CFLAGS='-O3' LDFLAGS='-L/usr/local/lib' {PHP_CONF_OPTIONS}
else
CFLAGS='-O3' {PHP_CONF_OPTIONS}
fi
check_errs $? "Could not configure PHP build"
cp -fp "{CP_BUILD_DIR}/php-{PHP_VERSION}/libtool" .
PLF=`uname -p`
if [ "x$PLF" = "xx86_64" ] ; then
# work around for libtool problem for linux
DLSCH=`grep 'sys_lib_dlsearch_path_spec="/lib /usr/lib ' libtool`
if [ "x$DLSCH" != "x" ] ; then
echo " .. work around for libtool problem: sys_lib_dlsearch_path_spec should use lib64"
cp libtool libtool.orig
sed -e 's/sys_lib_dlsearch_path_spec=\"\/lib \/usr\/lib /sys_lib_dlsearch_path_spec=\"\/lib64 \/usr\/lib64 /' libtool.orig > libtool
if [ "$?" -ne "0" ] ; then
echo " sed command error, please try to modify libtool manually using lib64 for line: sys_lib_dlsearch_path_spec=\"/lib /usr/lib\" "
fi
fi
fi
make clean
echo "Compiling PHP (5-10 minutes)"
echo `date`
make
check_errs $? "Could not compile PHP"
#make install
PHP_INI=/usr/local/lib/php.ini
ext=`grep '^zend_extension=".*\/ioncube' $PHP_INI`
if [ $? -eq 0 ]; then
cd {CP_BUILD_DIR}/ioncube*
if [ $? -eq 0 ]; then
echo "Build IonCube ..."
./cpanel-install
cd ..
fi
fi
ext=`grep '^extension="eaccelerator' $PHP_INI`
if [ $? -eq 0 ]; then
cd {CP_BUILD_DIR}/eaccelerator*
if [ $? -eq 0 ]; then
echo "Build eaccelerator ..."
echo " .. Special handling for eAccelerator: do not use spin lock, buggy"
echo " set mm_sem_spinlock=no and mm_sem_ipc=no in config.m4"
found=`find . -name "config.m4"`
for f in $found
do
cp $f $f.orig
sed -e 's/mm_sem_spinlock=yes/mm_sem_spinlock=no/' -e 's/mm_sem_ipc=yes/mm_sem_ipc=no/' $f.orig > $f
if [ "$?" -ne "0" ] ; then
echo " sed command error, please try to modify $f manually to avoid using spinlock"
fi
done
./cpanel-install
cd ..
fi
fi
ext=`grep '^extension="suhosin' $PHP_INI`
if [ $? -eq 0 ]; then
cd {CP_BUILD_DIR}/suhosin*
if [ $? -eq 0 ]; then
echo "Build suhosin ..."
./cpanel-install
cd ..
fi
fi
ext=`grep '^extension="ixed\.' $PHP_INI`
if [ $? -eq 0 ]; then
cd {CP_BUILD_DIR}/sourceguardian*
if [ $? -eq 0 ]; then
echo "Build sourceguardian ..."
./cpanel-install
cd ..
fi
fi
ext=`grep '^extension=".*homeloader\.' $PHP_INI`
if [ $? -eq 0 ]; then
cd {CP_BUILD_DIR}/userphp
if [ $? -eq 0 ]; then
echo "Build homeloader ..."
./configure
make install
cd ..
fi
fi
ext=`grep '^zend_extension=".*ZendOptimizer\.' $PHP_INI`
if [ $? -eq 0 ]; then
cd {CP_BUILD_DIR}/zendopt
if [ $? -eq 0 ]; then
echo "Build Zend Optimizer ..."
./cpanel-install
cd ..
fi
fi
cp -p /usr/local/lib/php.ini /usr/local/lib/php.ini-lsbak
sed -e "s/^extension_dir/;extension_dir/" /usr/local/lib/php.ini-lsbak > /usr/local/lib/php.ini
chmod a+r /usr/local/lib/php.ini
echo "copy compiled php binary to litespeed directory"
echo "cd /usr/local/bin/"
cd /usr/local/bin/
check_errs $? "cannot cd to /usr/local/bin/"
if [ -e "lsphp" ] ; then
mv lsphp lsphp.bak
fi
cp {PHP_BUILD_DIR}/php-{PHP_VERSION}/sapi/litespeed/php lsphp
check_errs $? "fail to copy lsphp from {PHP_BUILD_DIR}/php-{PHP_VERSION}/sapi/litespeed/php"
chmod a+rx lsphp
PHP_MAIN_VERSION=`expr "{PHP_VERSION}" : '\([0-9]*\)\.'`
#echo "ln -sf lsphp-{PHP_VERSION} lsphp$PHP_MAIN_VERSION"
#ln -sf lsphp-{PHP_VERSION} "lsphp$PHP_MAIN_VERSION"
#check_errs $? "fail to creat symbolic link"
echo ""
echo "=============================================="
echo "Finished building PHP {PHP_VERSION} with LSAPI"
echo "=============================================="
echo `date`
echo "**COMPLETE**"