#!/bin/bash #/* # * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more # * contributor license agreements. See the NOTICE file distributed with # * this work for additional information regarding copyright ownership. # * The OpenAirInterface Software Alliance licenses this file to You under # * the OAI Public License, Version 1.1 (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.openairinterface.org/?page_id=698 # * # * 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. # *------------------------------------------------------------------------------- # * For more information about the OpenAirInterface (OAI) Software Alliance: # * contact@openairinterface.org # */ function report_build_usage { echo "OAI CI VM script" echo " Original Author: Raphael Defosseux" echo "" echo "Usage:" echo "------" echo " oai-ci-vm-tool report-build [OPTIONS]" echo "" command_options_usage } function trigger_usage { echo "OAI CI VM script" echo " Original Author: Raphael Defosseux" echo "" echo " --trigger merge-request OR -mr" echo " --trigger push OR -pu" echo " Specify trigger action of the Jenkins job. Either a merge-request event or a push event." echo "" } function details_table { echo "

$1

" >> $3 echo " " >> $3 echo " " >> $3 echo " " >> $3 echo " " >> $3 echo " " >> $3 echo " " >> $3 echo " " >> $3 LIST_MESSAGES=`egrep "error:|warning:" $2 | egrep -v "jobserver unavailable|Clock skew detected.|disabling jobserver mode"` COMPLETE_MESSAGE="start" for MESSAGE in $LIST_MESSAGES do if [[ $MESSAGE == *"/home/ubuntu/tmp"* ]] || [[ $MESSAGE == *"/tmp/CI-eNB"* ]] then FILENAME=`echo $MESSAGE | sed -e "s#^/home/ubuntu/tmp/##" -e "s#^.*/tmp/CI-eNB/##" | awk -F ":" '{print $1}'` LINENB=`echo $MESSAGE | awk -F ":" '{print $2}'` if [ "$COMPLETE_MESSAGE" != "start" ] then COMPLETE_MESSAGE=`echo $COMPLETE_MESSAGE | sed -e "s#‘#'#g" -e "s#’#'#g"` echo " " >> $3 echo " " >> $3 fi echo " " >> $3 echo " " >> $3 echo " " >> $3 else if [[ $MESSAGE == *"warning:"* ]] || [[ $MESSAGE == *"error:"* ]] then MSGTYPE=`echo $MESSAGE | sed -e "s#:##g"` echo " " >> $3 COMPLETE_MESSAGE="" else COMPLETE_MESSAGE=$COMPLETE_MESSAGE" "$MESSAGE fi fi done if [ "$COMPLETE_MESSAGE" != "start" ] then COMPLETE_MESSAGE=`echo $COMPLETE_MESSAGE | sed -e "s#‘#'#g" -e "s#’#'#g"` echo " " >> $3 echo " " >> $3 fi echo "
FileLine NumberStatusMessage
$COMPLETE_MESSAGE
$FILENAME$LINENB$MSGTYPE$COMPLETE_MESSAGE
" >> $3 } function summary_table_header { echo "

$1

" >> ./build_results.html if [ -f $2/build_final_status.log ] then if [ `grep -c COMMAND $2/build_final_status.log` -eq 1 ] then COMMAND=`grep COMMAND $2/build_final_status.log | sed -e "s#COMMAND: ##"` else COMMAND="Unknown" fi if [ `grep -c BUILD_OK $2/build_final_status.log` -eq 1 ] then echo "
" >> ./build_results.html echo " $COMMAND " >> ./build_results.html echo " BUILD was SUCCESSFUL " >> ./build_results.html echo "
" >> ./build_results.html else echo "
" >> ./build_results.html echo " $COMMAND " >> ./build_results.html echo " BUILD was a FAILURE! " >> ./build_results.html echo "
" >> ./build_results.html fi else echo "
" >> ./build_results.html echo " COULD NOT DETERMINE BUILD FINAL STATUS! " >> ./build_results.html echo "
" >> ./build_results.html fi echo " " >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html } function summary_table_row { echo " " >> ./build_results.html echo " " >> ./build_results.html } function summary_table_footer { echo "
ElementStatusNb ErrorsNb Warnings
$1" >> ./build_results.html if [ -f $2 ] then BUILD_STATUS=`egrep -c "$3" $2` if [ $BUILD_STATUS -eq 1 ] then echo " OK" >> ./build_results.html else echo " KO" >> ./build_results.html fi NB_ERRORS=`egrep -c "error:" $2` if [ $NB_ERRORS -eq 0 ] then echo " $NB_ERRORS" >> ./build_results.html else echo " $NB_ERRORS" >> ./build_results.html fi NB_WARNINGS=`egrep "warning:" $2 | egrep -v "jobserver unavailable|Clock skew detected.|disabling jobserver mode" | egrep -c "warning:"` if [ $NB_WARNINGS -eq 0 ] then echo " $NB_WARNINGS" >> ./build_results.html else if [ $NB_WARNINGS -gt 20 ] then echo " $NB_WARNINGS" >> ./build_results.html else echo " $NB_WARNINGS" >> ./build_results.html fi fi if [ $NB_ERRORS -ne 0 ] || [ $NB_WARNINGS -ne 0 ] then details_table "$1" $2 $4 fi else echo " Unknown" >> ./build_results.html echo " --" >> ./build_results.html echo " --" >> ./build_results.html fi echo "
" >> ./build_results.html } function sca_summary_table_header { echo "

$2

" >> ./build_results.html NB_ERRORS=`egrep -c "severity=\"error\"" $1` NB_WARNINGS=`egrep -c "severity=\"warning\"" $1` ADDED_ERRORS="0" ADDED_WARNINGS="0" FINAL_LOG=`echo $1 | sed -e "s#cppcheck\.xml#build_final_status.log#"` if [ `grep -c COMMAND $FINAL_LOG` -eq 1 ] then COMMAND=`grep COMMAND $FINAL_LOG | sed -e "s#COMMAND: ##"` else COMMAND="Unknown" fi if [ $MR_TRIG -eq 1 ] then if [ -d ../../cppcheck_archives ] then if [ -d ../../cppcheck_archives/$JOB_NAME ] then ADDED_ERRORS=`diff $1 ../../cppcheck_archives/$JOB_NAME/cppcheck.xml | egrep --color=never "^<" | egrep -c "severity=\"error"` ADDED_WARNINGS=`diff $1 ../../cppcheck_archives/$JOB_NAME/cppcheck.xml | egrep --color=never "^<" | egrep -c "severity=\"warning"` fi fi local TOTAL_NUMBER=$[$ADDED_ERRORS+$ADDED_WARNINGS] if [ -f $JENKINS_WKSP/oai_cppcheck_added_errors.txt ]; then rm -f $JENKINS_WKSP/oai_cppcheck_added_errors.txt; fi echo "$TOTAL_NUMBER" > $JENKINS_WKSP/oai_cppcheck_added_errors.txt fi if [ $NB_ERRORS -eq 0 ] && [ $NB_WARNINGS -eq 0 ] then echo "
" >> ./build_results.html echo " $COMMAND

" >> ./build_results.html echo " CPPCHECK found NO error and NO warning " >> ./build_results.html echo "
" >> ./build_results.html else if [ $NB_ERRORS -eq 0 ] then echo "
" >> ./build_results.html echo " $COMMAND

" >> ./build_results.html if [ $PU_TRIG -eq 1 ] then echo " CPPCHECK found NO error and $NB_WARNINGS warnings " >> ./build_results.html fi if [ $MR_TRIG -eq 1 ] then if [ $ADDED_WARNINGS -eq 0 ] then echo " CPPCHECK found NO error and $NB_WARNINGS warnings " >> ./build_results.html else echo " CPPCHECK found NO error and $NB_WARNINGS warnings " >> ./build_results.html fi fi echo "
" >> ./build_results.html else echo "
" >> ./build_results.html echo " $COMMAND

" >> ./build_results.html if [ $PU_TRIG -eq 1 ] then echo " CPPCHECK found $NB_ERRORS errors and $NB_WARNINGS warnings " >> ./build_results.html fi if [ $MR_TRIG -eq 1 ] then if [ $ADDED_ERRORS -eq 0 ] && [ $ADDED_WARNINGS -eq 0 ] then echo " CPPCHECK found $NB_ERRORS errors and $NB_WARNINGS warnings " >> ./build_results.html else echo " CPPCHECK found $NB_ERRORS errors and $NB_WARNINGS warnings " >> ./build_results.html echo "
" >> ./build_results.html echo "
" >> ./build_results.html echo " This Merge Request may have introduced up to $ADDED_ERRORS errors and $ADDED_WARNINGS warnings.
" >> ./build_results.html fi fi echo "
" >> ./build_results.html fi fi if [ $PU_TRIG -eq 1 ] then if [ -d ../../cppcheck_archives ] then if [ -d ../../cppcheck_archives/$JOB_NAME ] then cp $1 ../../cppcheck_archives/$JOB_NAME fi fi fi echo " " >> ./build_results.html echo "
" >> ./build_results.html echo "
" >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html echo "0" > ccp_error_cnt.txt } function sca_summary_table_row { echo " " >> ./build_results.html echo " " >> ./build_results.html if [ -f $1 ] then NB_ERRORS=`egrep "severity=\"error\"" $1 | egrep -c "id=\"$3\""` echo " " >> ./build_results.html echo " " >> ./build_results.html if [ -f ccp_error_cnt.txt ] then TOTAL_ERRORS=`cat ccp_error_cnt.txt` TOTAL_ERRORS=$((TOTAL_ERRORS + NB_ERRORS)) echo $TOTAL_ERRORS > ccp_error_cnt.txt fi else echo " " >> ./build_results.html echo " " >> ./build_results.html fi echo " " >> ./build_results.html } function sca_summary_table_footer { if [ -f $1 ] then NB_ERRORS=`egrep -c "severity=\"error\"" $1` NB_WARNINGS=`egrep -c "severity=\"warning\"" $1` if [ -f ccp_error_cnt.txt ] then echo " " >> ./build_results.html echo " " >> ./build_results.html TOTAL_ERRORS=`cat ccp_error_cnt.txt` TOTAL_ERRORS=$((NB_ERRORS - TOTAL_ERRORS)) echo " " >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html rm -f ccp_error_cnt.txt fi echo " " >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html else echo " " >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html if [ -f ccp_error_cnt.txt ] then rm -f ccp_error_cnt.txt fi fi echo " " >> ./build_results.html echo "
Error / Warning TypeNb ErrorsNb Warnings
$2$NB_ERRORSN/AUnknownUnknown
Others$TOTAL_ERRORS$NB_WARNINGS
Total$NB_ERRORS$NB_WARNINGS
TotalUnknownUnknown
" >> ./build_results.html echo "

Full details in zipped artifact (cppcheck/cppcheck.xml)

" >> ./build_results.html echo "

Graphical Interface tool : cppcheck-gui -l cppcheck/cppcheck.xml

" >> ./build_results.html if [ $MR_TRIG -eq 1 ] then if [ $ADDED_ERRORS -ne 0 ] || [ $ADDED_WARNINGS -ne 0 ] then echo " " >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html SEVERITY="none" POTENTIAL_FILES=`diff $1 ../../cppcheck_archives/$JOB_NAME/cppcheck.xml | egrep --color=never "^<" | egrep "location file|severity" | sed -e "s# #@#g"` for POT_FILE in $POTENTIAL_FILES do if [ `echo $POT_FILE | grep -c location` -eq 1 ] then FILENAME=`echo $POT_FILE | sed -e "s#^.*file=\"##" -e "s#\"@line.*/>##"` LINE=`echo $POT_FILE | sed -e "s#^.*line=\"##" -e "s#\"/>##"` if [[ $SEVERITY != *"none" ]] then echo " " >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html fi else SEVERITY=`echo $POT_FILE | sed -e "s#^.*severity=\"##" -e "s#\"@msg=.*##"` MESSAGE=`echo $POT_FILE | sed -e "s#^.*msg=\"##" -e "s#\"@verbose=.*##" -e "s#@# #g"` fi done echo "
Potential File(s) impacted by added errors/warningsLine NumberSeverityMessage
$FILENAME$LINE$SEVERITY$MESSAGE
" >> ./build_results.html fi fi echo "
" >> ./build_results.html } function report_build { echo "############################################################" echo "OAI CI VM script" echo "############################################################" echo "JENKINS_WKSP = $JENKINS_WKSP" echo "GIT_URL = $GIT_URL" cd ${JENKINS_WKSP} echo "" > ./build_results.html echo "" >> ./build_results.html echo "" >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html echo " Build Results for $JOB_NAME job build #$BUILD_ID" >> ./build_results.html echo " " >> ./build_results.html echo "" >> ./build_results.html echo "
" >> ./build_results.html echo "
" >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html echo "
" >> ./build_results.html echo " " >> ./build_results.html echo " \"\"" >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html echo " Job Summary -- Job: $JOB_NAME -- Build-ID: $BUILD_ID" >> ./build_results.html echo "
" >> ./build_results.html echo "
" >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html if [ $PU_TRIG -eq 1 ]; then echo " " >> ./build_results.html; fi if [ $MR_TRIG -eq 1 ]; then echo " " >> ./build_results.html; fi echo " " >> ./build_results.html if [ $PU_TRIG -eq 1 ] then echo " " >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html if [ -e .git/CI_COMMIT_MSG ] then echo " " >> ./build_results.html echo " " >> ./build_results.html MSG=`cat .git/CI_COMMIT_MSG` echo " " >> ./build_results.html echo " " >> ./build_results.html fi fi if [ $MR_TRIG -eq 1 ] then echo " " >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html if [ -e .git/CI_COMMIT_MSG ] then echo " " >> ./build_results.html echo " " >> ./build_results.html MSG=`cat .git/CI_COMMIT_MSG` echo " " >> ./build_results.html echo " " >> ./build_results.html fi echo " " >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html fi echo "
Build Start Time (UTC)TEMPLATE_BUILD_TIME
GIT Repository$GIT_URL
Job TriggerPush EventMerge-Request
Branch$SOURCE_BRANCH
Commit ID$SOURCE_COMMIT_ID
Commit Message$MSG
Source Branch$SOURCE_BRANCH
Source Commit ID$SOURCE_COMMIT_ID
Source Commit Message$MSG
Target Branch$TARGET_BRANCH
Target Commit ID$TARGET_COMMIT_ID
" >> ./build_results.html echo "

Build Summary

" >> ./build_results.html echo "

OAI Coding / Formatting Guidelines Check

" >> ./build_results.html if [ -f ./header-files-w-incorrect-define.txt ] then NB_FILES_IN_ERROR=`wc -l ./header-files-w-incorrect-define.txt | sed -e "s@ .*@@"` if [ $NB_FILES_IN_ERROR -eq 0 ] then echo "
" >> ./build_results.html if [ $MR_TRIG -eq 1 ]; then echo " No Issue for CIRCULAR DEPENDENCY PROTECTION in modified files" >> ./build_results.html; fi if [ $PU_TRIG -eq 1 ]; then echo " No Issue for CIRCULAR DEPENDENCY PROTECTION in the whole repository" >> ./build_results.html; fi echo "
" >> ./build_results.html else echo "
" >> ./build_results.html if [ $MR_TRIG -eq 1 ]; then echo " ${NB_FILES_IN_ERROR} modified files MAY NOT HAVE CIRCULAR DEPENDENCY PROTECTION" >> ./build_results.html; fi if [ $PU_TRIG -eq 1 ]; then echo " ${NB_FILES_IN_ERROR} files in repository MAY NOT HAVE CIRCULAR DEPENDENCY PROTECTION in the whole repository" >> ./build_results.html; fi echo "
" >> ./build_results.html echo " " >> ./build_results.html echo "
" >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html awk '{if($0 ~/error in/){print " "};if($0 ~/files with same/){print " "}}' ./header-files-w-incorrect-define.txt >> ./build_results.html echo "
Potential IssueImpacted FileIncorrect Macro
error in declaration"$4""$5"
files with same #define"$5""$6"
" >> ./build_results.html echo "
" >> ./build_results.html echo "
" >> ./build_results.html fi fi if [ -f ./files-w-gnu-gpl-license-banner.txt ] then NB_FILES_IN_ERROR=`wc -l ./files-w-gnu-gpl-license-banner.txt | sed -e "s@ .*@@"` if [ $NB_FILES_IN_ERROR -ne 0 ] then echo "
" >> ./build_results.html if [ $MR_TRIG -eq 1 ]; then echo " ${NB_FILES_IN_ERROR} modified files HAVE a GNU GPL license banner" >> ./build_results.html; fi if [ $PU_TRIG -eq 1 ]; then echo " ${NB_FILES_IN_ERROR} files in repository HAVE a GNU GPL license banner" >> ./build_results.html; fi echo "
" >> ./build_results.html echo " " >> ./build_results.html echo "
" >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html awk '{print " "}' ./files-w-gnu-gpl-license-banner.txt >> ./build_results.html echo "
Filename
"$1"
" >> ./build_results.html echo "
" >> ./build_results.html echo "
" >> ./build_results.html fi fi if [ -f ./files-w-suspect-banner.txt ] then NB_FILES_IN_ERROR=`wc -l ./files-w-suspect-banner.txt | sed -e "s@ .*@@"` if [ $NB_FILES_IN_ERROR -ne 0 ] then echo "
" >> ./build_results.html if [ $MR_TRIG -eq 1 ]; then echo " ${NB_FILES_IN_ERROR} modified files HAVE a suspect license banner" >> ./build_results.html; fi if [ $PU_TRIG -eq 1 ]; then echo " ${NB_FILES_IN_ERROR} files in repository HAVE a suspect license banner" >> ./build_results.html; fi echo "
" >> ./build_results.html echo " " >> ./build_results.html echo "
" >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html echo " " >> ./build_results.html awk '{print " "}' ././files-w-suspect-banner.txt >> ./build_results.html echo "
Filename
"$1"
" >> ./build_results.html echo "
" >> ./build_results.html echo "
" >> ./build_results.html fi fi echo "

Ubuntu 16.04 LTS -- Summary

" >> ./build_results.html if [ -f archives/gnb_usrp/nr-softmodem.txt ] then summary_table_header "OAI Build: 5G NR gNB -- USRP option" ./archives/gnb_usrp summary_table_row "5G NR SoftModem" ./archives/gnb_usrp/nr-softmodem.txt "Built target nr-softmodem" ./gnb_usrp_row1.html summary_table_row "Coding" ./archives/gnb_usrp/coding.txt "Built target coding" ./gnb_usrp_row2.html summary_table_row "OAI USRP device if" ./archives/gnb_usrp/oai_usrpdevif.txt "Built target oai_usrpdevif" ./gnb_usrp_row3.html summary_table_row "OAI ETHERNET transport" ./archives/gnb_usrp/oai_eth_transpro.txt "Built target oai_eth_transpro" ./gnb_usrp_row4.html summary_table_row "Parameters Lib Config" ./archives/gnb_usrp/params_libconfig.txt "Built target params_libconfig" ./gnb_usrp_row6.html summary_table_footer fi if [ -f archives/nr_ue_usrp/nr-uesoftmodem.txt ] then summary_table_header "OAI Build: 5G NR UE -- USRP option" ./archives/nr_ue_usrp summary_table_row "5G NR UE SoftModem" ./archives/nr_ue_usrp/nr-uesoftmodem.txt "Built target nr-uesoftmodem" ./nr_ue_usrp_row1.html summary_table_row "Coding" ./archives/nr_ue_usrp/coding.txt "Built target coding" ./nr_ue_usrp_row2.html summary_table_row "OAI USRP device if" ./archives/nr_ue_usrp/oai_usrpdevif.txt "Built target oai_usrpdevif" ./nr_ue_usrp_row3.html summary_table_row "OAI ETHERNET transport" ./archives/nr_ue_usrp/oai_eth_transpro.txt "Built target oai_eth_transpro" ./nr_ue_usrp_row4.html summary_table_row "Parameters Lib Config" ./archives/nr_ue_usrp/params_libconfig.txt "Built target params_libconfig" ./nr_ue_usrp_row6.html summary_table_footer fi if [ -e ./archives/red_hat ] then echo "

Red Hat Enterprise Linux Server release 7.6) -- Summary

" >> ./build_results.html summary_table_header "OAI Build: 4G LTE eNB -- USRP option (RHEL)" ./archives/red_hat summary_table_row "LTE SoftModem" ./archives/red_hat/lte-softmodem.txt "Built target lte-softmodem" ./enb_usrp_rh_row1.html summary_table_row "Coding" ./archives/red_hat/coding.txt "Built target coding" ./enb_usrp_rh_row2.html summary_table_row "OAI USRP device if" ./archives/red_hat/oai_usrpdevif.txt "Built target oai_usrpdevif" ./enb_usrp_rh_row3.html summary_table_row "Parameters Lib Config" ./archives/red_hat/params_libconfig.txt "Built target params_libconfig" ./enb_usrp_rh_row4.html summary_table_footer fi echo "

Details

" >> ./build_results.html echo " " >> ./build_results.html echo "
" >> ./build_results.html if [ -f ./enb_eth_row1.html ] || [ -f ./enb_eth_row2.html ] || [ -f ./enb_eth_row3.html ] || [ -f ./enb_eth_row4.html ] || [ -f ./enb_eth_row5.html ] || [ -f ./enb_eth_row6.html ] || [ -f ./enb_eth_row7.html ] then for DETAILS_TABLE in `ls ./enb_eth_row*.html` do cat $DETAILS_TABLE >> ./build_results.html done fi if [ -f ./ue_eth_row1.html ] || [ -f ./ue_eth_row2.html ] || [ -f ./ue_eth_row3.html ] || [ -f ./ue_eth_row4.html ] || [ -f ./ue_eth_row5.html ] || [ -f ./ue_eth_row6.html ] || [ -f ./ue_eth_row7.html ] || [ -f ./ue_eth_row8.html ] || [ -f ./ue_eth_row9.html ] || [ -f ./ue_eth_row9a.html ] || [ -f ./ue_eth_row9b.html ] then for DETAILS_TABLE in `ls ./ue_eth_row*.html` do cat $DETAILS_TABLE >> ./build_results.html done fi if [ -f ./gnb_usrp_row1.html ] || [ -f ./gnb_usrp_row2.html ] || [ -f ./gnb_usrp_row3.html ] || [ -f ./gnb_usrp_row4.html ] then for DETAILS_TABLE in `ls ./gnb_usrp_row*.html` do cat $DETAILS_TABLE >> ./build_results.html done fi if [ -f ./nr_ue_usrp_row1.html ] || [ -f ./nr_ue_usrp_row2.html ] || [ -f ./nr_ue_usrp_row3.html ] || [ -f ./nr_ue_usrp_row4.html ] then for DETAILS_TABLE in `ls ./nr_ue_usrp_row*.html` do cat $DETAILS_TABLE >> ./build_results.html done fi rm -f ./*_row*.html echo "
" >> ./build_results.html echo "

" >> ./build_results.html echo "
End of Build Report -- Copyright 2018 OpenAirInterface. All Rights Reserved.
" >> ./build_results.html echo "
" >> ./build_results.html echo "" >> ./build_results.html }