forked from brl/citadel
526 lines
12 KiB
Bash
526 lines
12 KiB
Bash
#!/bin/sh
|
|
|
|
# Copyright (C) 2012 Wind River Systems, Inc.
|
|
#
|
|
# This program is free software; you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License version 2 as
|
|
# published by the Free Software Foundation.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
# See the GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program; if not, write to the Free Software
|
|
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
|
|
|
|
WORK_DIR="/opt/lsb-test"
|
|
|
|
if [ `id -u` -ne 0 ]
|
|
then
|
|
cat << EOF
|
|
In order to install and run LSB testsuite, you need administrator privileges.
|
|
You are currently running this script as an unprivileged user.
|
|
|
|
EOF
|
|
exit 1
|
|
fi
|
|
|
|
ARCH=`uname -m`
|
|
if [ ${ARCH} != "i686" ] && [ ${ARCH} != "x86_64" ] && [ ${ARCH} != "ppc" ] && [ ${ARCH} != "ppc64" ]
|
|
then
|
|
echo "Error: Unsupported architecture"
|
|
exit 1
|
|
fi
|
|
|
|
which rpm
|
|
if [ $? -ne 0 ]
|
|
then
|
|
echo "No rpm command found"
|
|
exit 1
|
|
fi
|
|
|
|
RET=0
|
|
|
|
cd ${WORK_DIR} || exit 1
|
|
# Step 1: Download the LSB Packages
|
|
echo ""
|
|
echo "Download LSB packages..."
|
|
echo ""
|
|
|
|
if [ ! -e ./packages_list ]
|
|
then
|
|
echo "Error: Could not find packages list" >&2
|
|
exit 1
|
|
fi
|
|
|
|
. ./packages_list
|
|
|
|
PACKAGES_DIR="/var/opt/lsb/test/manager/packages/ftp.linuxfoundation.org/pub/lsb"
|
|
|
|
BASE_PACKAGES_DIR="${PACKAGES_DIR}/base/${LSB_RELEASE}/binary"
|
|
RUNTIME_BASE_PACKAGES_DIR="${PACKAGES_DIR}/test_suites/released-all/binary/runtime"
|
|
RUNTIME_PACKAGES_DIR="${PACKAGES_DIR}/test_suites/${LSB_RELEASE}/binary/runtime"
|
|
APP_PACKAGES_DIR="${PACKAGES_DIR}/app-battery/${LSB_RELEASE}/${LSB_ARCH}"
|
|
APP_TESTFILES_DIR="${PACKAGES_DIR}/app-battery/tests"
|
|
SNAPSHOTS_TESTFILES_DIR="${PACKAGES_DIR}/snapshots/appbat/tests"
|
|
|
|
if [ ! -d ${PACKAGES_DIR} ]
|
|
then
|
|
mkdir -p ${PACKAGES_DIR}
|
|
fi
|
|
|
|
if [ ! -d ${BASE_PACKAGES_DIR} ]
|
|
then
|
|
mkdir -p ${BASE_PACKAGES_DIR}
|
|
fi
|
|
|
|
if [ ! -d ${RUNTIME_BASE_PACKAGES_DIR} ]
|
|
then
|
|
mkdir -p ${RUNTIME_BASE_PACKAGES_DIR}
|
|
fi
|
|
|
|
if [ ! -d ${RUNTIME_PACKAGES_DIR} ]
|
|
then
|
|
mkdir -p ${RUNTIME_PACKAGES_DIR}
|
|
fi
|
|
|
|
if [ ! -d ${APP_PACKAGES_DIR} ]
|
|
then
|
|
mkdir -p ${APP_PACKAGES_DIR}
|
|
fi
|
|
|
|
if [ ! -d ${APP_TESTFILES_DIR} ]
|
|
then
|
|
mkdir -p ${APP_TESTFILES_DIR}
|
|
fi
|
|
|
|
# Official download server list. You can replace them with your own server.
|
|
SERVER_IPADDR="140.211.169.23"
|
|
SERVER_NAME="ftp.linuxfoundation.org"
|
|
|
|
if ! `grep -F -q "${SERVER_NAME}" /etc/hosts`; then
|
|
echo "${SERVER_IPADDR} ${SERVER_NAME} ${SERVER_NAME}" >> /etc/hosts
|
|
fi
|
|
|
|
#ping -c 5 ${SERVER_NAME}
|
|
#if [ $? -ne 0 ]
|
|
#then
|
|
# echo "The server: ${SERVER_NAME} is unreachable"
|
|
# exit 1
|
|
#fi
|
|
|
|
SERVER1="\
|
|
http://${SERVER_NAME}/pub/lsb/base/released-all/binary"
|
|
SERVER2="\
|
|
http://${SERVER_NAME}/pub/lsb/test_suites/released-all/binary/runtime"
|
|
SERVER3="\
|
|
http://${SERVER_NAME}/pub/lsb/test_suites/${LSB_RELEASE}/binary/runtime"
|
|
SERVER4="\
|
|
http://${SERVER_NAME}/pub/lsb/app-battery/${LSB_RELEASE}/${LSB_ARCH}"
|
|
SERVER5="\
|
|
http://${SERVER_NAME}/pub/lsb/app-battery/tests"
|
|
|
|
# We using "curl" as a download tool, "wget" is an alternative.
|
|
CURL=`which curl`
|
|
WGET=`which wget`
|
|
if [ ! -z ${CURL} ]
|
|
then
|
|
DOWNLOAD_CMD="${CURL} -R -L -f --retry 3 --retry-delay 4 --connect-timeout 180 --compressed -C - -o"
|
|
elif [ ! -z ${WGET} ]
|
|
then
|
|
DOWNLOAD_CMD="${WGET} -c -t 5 -O"
|
|
else
|
|
echo "Can not find a download tool, please install curl or wget."
|
|
exit 1
|
|
fi
|
|
|
|
cd ${BASE_PACKAGES_DIR}
|
|
for pkg in ${BASE_PACKAGES_LIST}; do
|
|
if [ ! -f ${pkg} ]
|
|
then
|
|
#${DOWNLOAD_CMD} ${pkg}".#part" ${SERVER1}/${pkg} > /dev/null 2>&1
|
|
${DOWNLOAD_CMD} ${pkg}".#part" ${SERVER1}/${pkg}
|
|
if [ $? -eq 0 ]
|
|
then
|
|
mv -f ${pkg}".#part" ${pkg}
|
|
echo "Download ${pkg} successfully."
|
|
else
|
|
echo "Download ${pkg} failed."
|
|
RET=1
|
|
fi
|
|
fi
|
|
done
|
|
|
|
cd ${RUNTIME_BASE_PACKAGES_DIR}
|
|
for pkg in ${RUNTIME_BASE_PACKAGES_LIST}; do
|
|
if [ ! -f ${pkg} ]
|
|
then
|
|
#${DOWNLOAD_CMD} ${pkg}".#part" ${SERVER2}/${pkg} > /dev/null 2>&1
|
|
${DOWNLOAD_CMD} ${pkg}".#part" ${SERVER2}/${pkg}
|
|
if [ $? -eq 0 ]
|
|
then
|
|
mv -f ${pkg}".#part" ${pkg}
|
|
echo "Download ${pkg} successfully."
|
|
else
|
|
echo "Download ${pkg} failed."
|
|
RET=1
|
|
fi
|
|
fi
|
|
done
|
|
|
|
cd ${RUNTIME_PACKAGES_DIR}
|
|
for pkg in ${RUNTIME_PACKAGES_LIST}; do
|
|
if [ ! -f ${pkg} ]
|
|
then
|
|
#${DOWNLOAD_CMD} ${pkg}".#part" ${SERVER3}/${pkg} > /dev/null 2>&1
|
|
${DOWNLOAD_CMD} ${pkg}".#part" ${SERVER3}/${pkg}
|
|
if [ $? -eq 0 ]
|
|
then
|
|
mv -f ${pkg}".#part" ${pkg}
|
|
echo "Download ${pkg} successfully."
|
|
else
|
|
echo "Download ${pkg} failed."
|
|
RET=1
|
|
fi
|
|
fi
|
|
done
|
|
|
|
cd ${APP_PACKAGES_DIR}
|
|
for pkg in ${APP_PACKAGES_LIST}; do
|
|
if [ ! -f ${pkg} ]
|
|
then
|
|
#${DOWNLOAD_CMD} ${pkg}".#part" ${SERVER4}/${pkg} > /dev/null 2>&1
|
|
${DOWNLOAD_CMD} ${pkg}".#part" ${SERVER4}/${pkg}
|
|
if [ $? -eq 0 ]
|
|
then
|
|
mv -f ${pkg}".#part" ${pkg}
|
|
echo "Download ${pkg} successfully."
|
|
else
|
|
echo "Download ${pkg} failed."
|
|
RET=1
|
|
fi
|
|
fi
|
|
done
|
|
|
|
cd ${APP_TESTFILES_DIR}
|
|
for pkg in ${APP_TESTFILES_LIST}; do
|
|
if [ ! -f ${pkg} ]
|
|
then
|
|
#${DOWNLOAD_CMD} ${pkg}".#part" ${SERVER5}/${pkg} > /dev/null 2>&1
|
|
${DOWNLOAD_CMD} ${pkg}".#part" ${SERVER5}/${pkg}
|
|
if [ $? -eq 0 ]
|
|
then
|
|
mv -f ${pkg}".#part" ${pkg}
|
|
echo "Download ${pkg} successfully."
|
|
else
|
|
echo "Download ${pkg} failed."
|
|
RET=1
|
|
fi
|
|
fi
|
|
done
|
|
|
|
if [ ${RET} -ne 0 ]
|
|
then
|
|
echo "Download some packages failed. Please download them again."
|
|
exit 1
|
|
fi
|
|
|
|
# Step 2: Install the LSB Packages
|
|
echo ""
|
|
echo "Install LSB packages..."
|
|
echo ""
|
|
|
|
# Kill lighttpd
|
|
ps aux | grep "lighttpd" | grep -v -q "grep"
|
|
if [ $? -eq 0 ]
|
|
then
|
|
killall lighttpd >/dev/null 2>&1
|
|
fi
|
|
|
|
# Start avahi-daemon
|
|
ps aux | grep "avahi-daemon" | grep -v -q "grep"
|
|
if [ $? -ne 0 ]
|
|
then
|
|
/etc/init.d/avahi-daemon start >/dev/null 2>&1
|
|
fi
|
|
|
|
LSB_START_CMD="/opt/lsb/test/manager/bin/dist-checker-start.pl"
|
|
LSB_STOP_CMD="/opt/lsb/test/manager/bin/dist-checker-stop.pl"
|
|
|
|
PLATFORM_FILE="/etc/rpm/platform"
|
|
|
|
RPM_INSTALL_CMD="rpm --quiet --nodeps --replacepkgs --nosignature -i --ignoreos"
|
|
RPM_INSTALL_CMD_NOSCRIPTS="rpm --quiet --nodeps --replacepkgs --noscripts --nosignature -i --ignoreos"
|
|
|
|
# If the lsb has been started, stop it first.
|
|
if [ -x ${LSB_STOP_CMD} ]
|
|
then
|
|
${LSB_STOP_CMD}
|
|
fi
|
|
|
|
if [ ! -d /etc/rpm ]
|
|
then
|
|
mkdir -p /etc/rpm
|
|
fi
|
|
|
|
if [ ! -f ${PLATFORM_FILE} ]
|
|
then
|
|
touch ${PLATFORM_FILE}
|
|
fi
|
|
|
|
if ! `grep -F -q "noarch-suse" ${PLATFORM_FILE}`; then
|
|
if [ ${ARCH} = i686 ];then
|
|
echo "i486-suse" >> ${PLATFORM_FILE}
|
|
echo "i486-noarch" >> ${PLATFORM_FILE}
|
|
echo "i486-pc" >> ${PLATFORM_FILE}
|
|
echo "noarch-suse" >> ${PLATFORM_FILE}
|
|
elif [ ${ARCH} = x86_64 ]; then
|
|
echo "i486-suse" >> ${PLATFORM_FILE}
|
|
echo "i486-noarch" >> ${PLATFORM_FILE}
|
|
echo "i486-pc" >> ${PLATFORM_FILE}
|
|
echo "i486-.*-linux.*" >> ${PLATFORM_FILE}
|
|
echo "noarch-suse" >> ${PLATFORM_FILE}
|
|
echo "${ARCH}-suse" >> ${PLATFORM_FILE}
|
|
echo "${ARCH}-noarch" >> ${PLATFORM_FILE}
|
|
echo "${ARCH}-pc" >> ${PLATFORM_FILE}
|
|
else
|
|
echo "${ARCH}-suse" >> ${PLATFORM_FILE}
|
|
echo "${ARCH}-noarch" >> ${PLATFORM_FILE}
|
|
echo "${ARCH}-pc" >> ${PLATFORM_FILE}
|
|
echo "noarch-suse" >> ${PLATFORM_FILE}
|
|
fi
|
|
fi
|
|
|
|
if [ -d ${BASE_PACKAGES_DIR} ]
|
|
then
|
|
cd ${BASE_PACKAGES_DIR}
|
|
for pkg in ${BASE_PACKAGES_LIST}
|
|
do
|
|
rpm --quiet -q ${pkg%\.*}
|
|
if [ $? -ne 0 ]; then
|
|
$RPM_INSTALL_CMD ${pkg}
|
|
fi
|
|
done
|
|
fi
|
|
|
|
if [ -d ${RUNTIME_BASE_PACKAGES_DIR} ]
|
|
then
|
|
cd ${RUNTIME_BASE_PACKAGES_DIR}
|
|
for pkg in ${RUNTIME_BASE_PACKAGES_LIST}
|
|
do
|
|
rpm --quiet -q ${pkg%\.*}
|
|
if [ $? -ne 0 ]; then
|
|
$RPM_INSTALL_CMD ${pkg}
|
|
fi
|
|
done
|
|
fi
|
|
|
|
if [ -d ${RUNTIME_PACKAGES_DIR} ]
|
|
then
|
|
cd ${RUNTIME_PACKAGES_DIR}
|
|
for pkg in ${RUNTIME_PACKAGES_LIST}
|
|
do
|
|
rpm --quiet -q ${pkg%\.*}
|
|
if [ $? -ne 0 ]; then
|
|
$RPM_INSTALL_CMD ${pkg}
|
|
fi
|
|
done
|
|
fi
|
|
|
|
if [ -d ${APP_PACKAGES_DIR} ]
|
|
then
|
|
cd ${APP_PACKAGES_DIR}
|
|
for pkg in ${APP_PACKAGES_LIST}
|
|
do
|
|
echo "${pkg}" | grep -q "apache\|xpdf"
|
|
if [ $? -eq 0 ]
|
|
then
|
|
rpm --quiet -q ${pkg%\.*}
|
|
if [ $? -ne 0 ]; then
|
|
$RPM_INSTALL_CMD_NOSCRIPTS ${pkg}
|
|
fi
|
|
else
|
|
rpm --quiet -q ${pkg%\.*}
|
|
if [ $? -ne 0 ]; then
|
|
$RPM_INSTALL_CMD ${pkg}
|
|
fi
|
|
fi
|
|
done
|
|
fi
|
|
|
|
if [ ! -d ${SNAPSHOTS_TESTFILES_DIR} ]
|
|
then
|
|
mkdir -p ${SNAPSHOTS_TESTFILES_DIR}
|
|
fi
|
|
|
|
if [ -d ${APP_TESTFILES_DIR} ]
|
|
then
|
|
cd ${APP_TESTFILES_DIR}
|
|
for pkg in ${APP_TESTFILES_LIST}
|
|
do
|
|
cp -f ${pkg} ${SNAPSHOTS_TESTFILES_DIR}
|
|
done
|
|
fi
|
|
|
|
cd ${WORK_DIR}
|
|
|
|
# Step 3: Set environment
|
|
echo ""
|
|
echo "Set environment..."
|
|
echo ""
|
|
|
|
check ()
|
|
{
|
|
if [ $? -eq 0 ]
|
|
then
|
|
echo "PASS"
|
|
else
|
|
echo "FAIL"
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
echo ""
|
|
echo "---------------------------------"
|
|
echo "Create the Dirnames on target"
|
|
|
|
if [ ! -d /etc/rpm/sysinfo ]
|
|
then
|
|
mkdir -p /etc/rpm/sysinfo
|
|
fi
|
|
|
|
cat > /etc/rpm/sysinfo/Dirnames << EOF
|
|
/etc/opt/lsb
|
|
/home/tet/LSB.tools
|
|
/opt/lsb-tet3-lite/lib/ksh
|
|
/opt/lsb-tet3-lite/lib/perl
|
|
/opt/lsb-tet3-lite/lib/posix_sh
|
|
/opt/lsb-tet3-lite/lib/tet3
|
|
/opt/lsb-tet3-lite/lib/xpg3sh
|
|
/opt/lsb/appbat/lib/python2.4/site-packages/qm
|
|
/opt/lsb/appbat/lib/python2.4/site-packages/qm/external
|
|
/opt/lsb/appbat/lib/python2.4/site-packages/qm/external/DocumentTemplate
|
|
/opt/lsb/appbat/lib/python2.4/site-packages/qm/test
|
|
/opt/lsb/appbat/lib/python2.4/site-packages/qm/test/classes
|
|
/opt/lsb/appbat/lib/python2.4/site-packages/qm/test/web
|
|
/opt/lsb/test/doc
|
|
/opt/lsb/test/lib
|
|
/opt/lsb/test/qm/diagnostics
|
|
/opt/lsb/test/qm/doc
|
|
/opt/lsb/test/qm/doc/test/html
|
|
/opt/lsb/test/qm/doc/test/print
|
|
/opt/lsb/test/qm/dtml
|
|
/opt/lsb/test/qm/dtml/test
|
|
/opt/lsb/test/qm/messages/test
|
|
/opt/lsb/test/qm/tutorial/test/tdb
|
|
/opt/lsb/test/qm/tutorial/test/tdb/QMTest
|
|
/opt/lsb/test/qm/web
|
|
/opt/lsb/test/qm/web/images
|
|
/opt/lsb/test/qm/web/stylesheets
|
|
/opt/lsb/test/qm/xml
|
|
/opt/lsb/test/share
|
|
/usr/share/doc/lsb-runtime-test
|
|
/var/opt/lsb
|
|
/opt/lsb/test/desktop
|
|
/opt/lsb/test/desktop/fontconfig
|
|
/opt/lsb/test/desktop/freetype
|
|
/opt/lsb/test/desktop/gtkvts
|
|
/opt/lsb/test/desktop/libpng
|
|
/opt/lsb/test/desktop/xft
|
|
/opt/lsb/test/desktop/xml
|
|
/opt/lsb/test/desktop/xrender
|
|
|
|
|
|
EOF
|
|
|
|
if [ -f /etc/rpm/sysinfo/Dirnames ]
|
|
then
|
|
echo "Success to creat Dirnames file"
|
|
else
|
|
echo "Fail to creat Dirnames file"
|
|
fi
|
|
|
|
[ -x /sbin/ldconfig ] && {
|
|
echo ""
|
|
echo "---------------------------------"
|
|
echo "Update cache"
|
|
/sbin/ldconfig
|
|
check;
|
|
}
|
|
|
|
# Check loop device
|
|
if [ ! -b /dev/loop0 ]
|
|
then
|
|
insmod /lib/modules/`uname -r`/kernel/drivers/block/loop.ko
|
|
if [ $? != 0 ];then
|
|
echo "Insmod loop.ko failed."
|
|
fi
|
|
fi
|
|
|
|
# Resolve localhost
|
|
LOCALHOST=`hostname`
|
|
if ! `grep -F -q "$LOCALHOST" /etc/hosts`; then
|
|
echo "127.0.0.1 $LOCALHOST" >> /etc/hosts
|
|
fi
|
|
|
|
# Workaround to add part of locales for LSB test
|
|
localedef -i de_DE -f ISO-8859-1 de_DE
|
|
localedef -i de_DE -f ISO-8859-15 de_DE.ISO-8859-15
|
|
localedef -i de_DE -f UTF-8 de_DE.UTF-8
|
|
localedef -i de_DE@euro -f ISO-8859-15 de_DE@euro
|
|
localedef -i en_HK -f ISO-8859-1 en_HK
|
|
localedef -i en_PH -f ISO-8859-1 en_PH
|
|
localedef -i en_US -f ISO-8859-15 en_US.ISO-8859-15
|
|
localedef -i en_US -f ISO-8859-1 en_US.ISO-8859-1
|
|
localedef -i en_US -f ISO-8859-1 en_US
|
|
localedef -i en_US -f UTF-8 en_US.UTF-8
|
|
localedef -i en_US -f ISO-8859-1 en_US.ISO8859-1
|
|
localedef -i es_MX -f ISO-8859-1 es_MX
|
|
localedef -i fr_FR -f ISO-8859-1 fr_FR
|
|
localedef -i it_IT -f ISO-8859-1 it_IT
|
|
localedef -i ja_JP -f EUC-JP ja_JP.eucjp
|
|
localedef -i se_NO -f UTF-8 se_NO.UTF-8
|
|
localedef -i ta_IN -f UTF-8 ta_IN
|
|
localedef -i es_ES -f ISO-8859-1 es_ES
|
|
localedef -i fr_FR@euro -f ISO-8859-1 fr_FR@euro
|
|
localedef -i is_IS -f UTF-8 is_IS.UTF-8
|
|
localedef -i zh_TW -f BIG5 zh_TW.BIG5
|
|
localedef -i en_US -f ISO-8859-15 en_US.ISO-8859-15
|
|
|
|
echo ""
|
|
echo "Installation done!"
|
|
echo ""
|
|
|
|
# Step 4: Start LSB test
|
|
if [ -x ${LSB_START_CMD} ]
|
|
then
|
|
${LSB_START_CMD}
|
|
fi
|
|
|
|
echo "---------------------------------"
|
|
echo "Run all the certification version of LSB Tests"
|
|
echo "---------------------------------"
|
|
|
|
LSB_DIST_CHECKER="/opt/lsb/test/manager/utils/dist-checker.pl"
|
|
SESSION="${WORK_DIR}/session"
|
|
if [ ! -e ${SESSION} ]
|
|
then
|
|
echo "Error: Could not find session file."
|
|
echo "You must run LSB test from webbrower."
|
|
exit 1
|
|
fi
|
|
|
|
if [ -x ${LSB_DIST_CHECKER} ]
|
|
then
|
|
${LSB_DIST_CHECKER} -v2 -f ${SESSION}
|
|
check
|
|
fi
|
|
|
|
echo ""
|
|
echo "LSB test complete. Please check the log file in /var/opt/lsb/test/manager/results/"
|
|
echo ""
|
|
|