diff options
author | Patrick Williams <patrick@stwcx.xyz> | 2015-09-15 22:41:29 +0300 |
---|---|---|
committer | Patrick Williams <patrick@stwcx.xyz> | 2015-09-15 22:41:29 +0300 |
commit | 21f9b84b4b729fbd7acbd465e7a3f726e4d20f91 (patch) | |
tree | eb2d091d427ca0813b445509d59cc8e27e8ad25f /yocto-poky/meta/recipes-extended/lsb/lsbtest/LSB_Test.sh | |
parent | 101cef31e2bf54c678501155cd2106251acbd076 (diff) | |
parent | c124f4f2e04dca16a428a76c89677328bc7bf908 (diff) | |
download | openbmc-21f9b84b4b729fbd7acbd465e7a3f726e4d20f91.tar.xz |
Merge commit 'c124f4f2e04dca16a428a76c89677328bc7bf908' as 'yocto-poky'
Diffstat (limited to 'yocto-poky/meta/recipes-extended/lsb/lsbtest/LSB_Test.sh')
-rw-r--r-- | yocto-poky/meta/recipes-extended/lsb/lsbtest/LSB_Test.sh | 526 |
1 files changed, 526 insertions, 0 deletions
diff --git a/yocto-poky/meta/recipes-extended/lsb/lsbtest/LSB_Test.sh b/yocto-poky/meta/recipes-extended/lsb/lsbtest/LSB_Test.sh new file mode 100644 index 000000000..b9971a17d --- /dev/null +++ b/yocto-poky/meta/recipes-extended/lsb/lsbtest/LSB_Test.sh @@ -0,0 +1,526 @@ +#!/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/${LSB_RELEASE}/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" +RPM_INSTALL_CMD_NOSCRIPTS="rpm --quiet --nodeps --replacepkgs --noscripts --nosignature -i" + +# 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/qt3 +/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 "" + |