#!/bin/sh # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # $Source: src/build/citest/build-script $ # # OpenPOWER HostBoot Project # # Contributors Listed Below - COPYRIGHT 2014,2019 # [+] International Business Machines Corp. # # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or # implied. See the License for the specific language governing # permissions and limitations under the License. # # IBM_PROLOG_END_TAG usage=" $(basename "$0") [-h|--help] [--skipCxxTests] [--skipCopyrightCheck] Description: The original use of this script was for the Hostboot standalone CI job, so by default it will run a copyright check, then compile hostboot and populate an ODE sandbox and run the CXX test suite in standalone simics. Flags have been added to skip the copyright checks and the cxx tests for cases where we only want to get a populated sandbox. Expectations: This script is expected to be ran from the top level of the hostboot directory. (ie src/build/citest/build-script ). It will look at env variables PROJECT_ROOT, WORKSPACE, SANDBOXNAME, SANDBOXROOT, CHIP, PNOR, CONFIG_FILE, and HOSTBOOT_PROFILE. Optional Flags: -h|--help shows this help text --skipCxxTests skips the execution of the cxx test suite --skipCopyrightCheck skips the execution of the copyright check " if [ -z $PROJECT_ROOT ]; then source "$WORKSPACE/env.bash" fi while [[ $# -gt 0 ]] do key="$1" case $key in --skipCopyrightCheck) SKIP_CR_CHECK=1 shift # past argument ;; --skipCxxTests) SKIP_CXX_TESTS=1 shift # past argument ;; -h|--help) echo "$usage" exit 0 ;; *) echo " !!! Invalid argument \"$1\" passed into ${0} !!!!" echo "$usage" exit 22 ;; esac done echo "SKIP_CR_CHECK = ${SKIP_CR_CHECK}" echo "SKIP_CXX_TESTS = ${SKIP_CXX_TESTS}" source "$PROJECT_ROOT/src/build/citest/setup-env" echo "#--------------------------------" echo "SANDBOXROOT=$SANDBOXROOT" echo "SANDBOXNAME=$SANDBOXNAME" echo "CHIP=$CHIP" echo "PNOR=$PNOR" echo "CONFIG_FILE=$CONFIG_FILE" echo "#--------------------------------" #export HOSTBOOT_DEBUG=1 #-- Ensure printkd / tracd is compiled in. # Force simics into Secure Mode export SECURITY_HW_POLICY="1" if [ -z "$SKIP_CR_CHECK" ]; then # Check copyright. check-copyright > copyright.log 2>&1 if [ $? -eq 0 ]; then echo "----Copyright check succeeded." cat copyright.log else echo "----Copyright check failed." cat copyright.log exit -1 fi fi # Create simics sandbox. create-sandbox > create-sandbox.log 2>&1 & CREATESANDBOX_PID=$! # normal build is empty quotes build_opt="" # code coverage if [[ ! -z "${HOSTBOOT_PROFILE}" ]]; then build_opt="gcov" # static analysis elif [[ ! -z "${HOSTBOOT_CPPCHECK}" ]]; then build_opt="cppcheck" COMPILE_ONLY=1 fi # Build Hostboot start_time=$(date) echo "#--------------------------------" printf "\n\n$(date): STARTED running \"make -j32 $build_opt\"\n\n" echo "#--------------------------------" make -j32 $build_opt || exit -1 make_rc=$? echo "#--------------------------------" printf "\n\nrc=$make_rc: $(date): FINISHED running (\"make -j32 $build_opt\" was started at $start_time)\n\n" echo "#--------------------------------" if [[ ! -z "${COMPILE_ONLY}" ]]; then echo "Compile only" exit $make_rc fi # Check sandbox create completion. wait $CREATESANDBOX_PID if [ $? -eq 0 ]; then echo "----Sandbox creation succeeded, here is the log." cat create-sandbox.log else echo "----Sandbox creation failed." cat create-sandbox.log exit -1 fi # Add Hostboot files to simics sandbox. start_time=$(date) echo "#--------------------------------" printf "\n\n$start_time: STARTED running populate-sandbox....\n\n" echo "#--------------------------------" populate-sandbox || exit -1 echo "#--------------------------------" printf "\n\nrc=$?: $(date): FINISHED running (\"populate-sandbox\" was started at $start_time)\n\n" echo "#--------------------------------" if [ -z "$SKIP_CXX_TESTS" ]; then if [ "$CHIP" == "FSPBUILD" ]; then # Start errl parser building. start_time=$(date) printf "\n\n$start_time: STARTED running \"build-errl-parsers\"\n\n" build-errl-parsers > errl-parsers.log 2>&1 & ERRLPARSERS_PID=$! # Check errl parser completion. wait $ERRLPARSERS_PID if [ $? -ne 0 ]; then echo "----Error parsers failed." cat errl-parsers.log exit -1 else printf "\n\n$(date): FINISHED running (\"build-errl-parsers\" was started at $start_time)\n\n" fi else printf "2) CHIP=$CHIP" echo "CHIP3=$CHIP" # Start CxxTest Simics execution. start_time=$(date) echo "#--------------------------------" printf "\n\n$start_time: STARTED running cxxtest-start.sh....\n\n" echo "#--------------------------------" cxxtest-start.sh || exit -1 echo "#--------------------------------" printf "\n\nrc=$?: $(date): FINISHED running (\"cxxtest-start.sh\" was started at $start_time)\n\n" echo "#--------------------------------" fi fi if [[ ! -z "${HOSTBOOT_PROFILE}" ]]; then # Generate the code coverage report. Located obj/gcov_report # Jenkins will artifact and can display html report start_time=$(date) echo "#--------------------------------" printf "\n\n$start_time: STARTED running \"make lcov\"\n\n" echo "#--------------------------------" make lcov || exit -1 echo "#--------------------------------" printf "\n\nrc=$?: $(date): FINISHED running (\"make lcov\" was started at $start_time)\n\n" echo "#--------------------------------" fi