#!/bin/bash #---------------------------- #---------------------------- # Color table # Black 0;30 Dark Gray 1;30 # Blue 0;34 Light Blue 1;34 # Green 0;32 Light Green 1;32 # Cyan 0;36 Light Cyan 1;36 # Red 0;31 Light Red 1;31 # Purple 0;35 Light Purple 1;35 # Brown 0;33 Yellow 1;33 # Light Gray 0;37 White 1;37 # No Color 0 set -a CBlack='\e[0;30m' CDarkGray='\e[1;30m' CBlue='\e[0;34m' CLightBlue='\e[1;34m' CGreen='\e[0;32m' CLightGreen='\e[1;32m' CCyan='\e[0;36m' CLightCyan='\e[1;36m' CRed='\e[0;31m' CLightRed='\e[1;31m' CPurple='\e[0;35m' CLightPurple='\e[1;35m' CBrown='\e[0;33m' CYellow='\e[1;33m' CGray='\e[0;37m' CWhite='\e[1;37m' CNone='\e[0m' set +a #---------------------------- function init_common() { # Check script folder export SCRIPT_DIR=$(dirname $(readlink -f "$0")) # Prevent the script to be run from TDE packaging repo REPO_URL=$(git config --get remote.origin.url 2>/dev/null) if [ ! -z "$REPO_URL" ] && [ -z "${REPO_URL##*tde-packaging}" ]; then echo -e "${CYellow} --- ERROR ---${CNone}" echo "This script cannot be run from the TDE packaging repository." echo "Please follow the instructions provided, then rerun this script." exit 1 fi # Read config settings CFG_FILE=$SCRIPT_DIR/_config.sh if [ -f "$CFG_FILE" ]; then . "$CFG_FILE" else echo -e "${CYellow} --- NOTE ---${CNone}" echo "Creating TDE build configuration file from template as $CFG_FILE." echo "Please check and modify as required, then rerun this script." cp "$SCRIPT_DIR/internals/_config_template.sh" "$CFG_FILE" exit 2 fi # TDE root folder must exist if [ ! -d "$TDE_DIR" ]; then echo -e "${CYellow} --- ERROR ---${CNone}" echo "A valid TDE root folder could not be located. Something is wrong with your configuration" echo "in the config file $CFG_FILE" echo "Please check and modify the TDE_DIR variable as required, then rerun this script." exit 3 fi # Search for main TDE repo cd "$TDE_DIR/$CFG_GIT_TDE_MAIN" &>/dev/null CURR_DIR=$(git rev-parse --show-toplevel 2>/dev/null) if [ -z "$CURR_DIR" ]; then echo -e "${CYellow} --- ERROR ---${CNone}" echo "Main TDE repo could not be located. Something is wrong with your configuration" echo "in the config file $CFG_FILE" echo "Please check and modify the TDE_DIR variable as required, then rerun this script." exit 4 fi # Search for TDE packaging repo cd "$TDE_DIR/$CFG_GIT_TDE_PACKAGING" &>/dev/null CURR_DIR=$(git rev-parse --show-toplevel 2>/dev/null) if [ -z "$CURR_DIR" ]; then echo -e "${CYellow} --- ERROR ---${CNone}" echo "TDE packaging repo could not be located. Something is wrong with your configuration" echo "in the config file $CFG_FILE" echo "Please check and modify the TDE_DIR variable as required, then rerun this script." exit 5 fi # Make sure we have selected a supported distribution DISTS_FILE=$SCRIPT_DIR/internals/distro_list.txt if [ ! -f "$DISTS_FILE" ]; then echo -e "${CYellow} --- NOTE ---${CNone}" echo "Could not find the list of supported distributions." echo "Please check the file $DISTS_FILE exists, then rerun this script." exit 6 fi export DISTRO_FOUND=${DISTRO_FOUND:-"n"} if [ "$DISTRO_FOUND" != "y" ]; then # Need to use a "here string" otherwise if the DISTRO_FOUND value is modified # inside the while loop, this would not remember after the loop. while read l_distro l_version l_name l_rel_suffix; do if [ "$l_distro" = "$DISTRO" -a "$l_name" = "$DISTRO_NAME" ]; then export DISTRO_FOUND="y" export DISTRO_VERSION="$l_version" export REL_SUFFIX="$l_rel_suffix" break fi done <<< $(cat $DISTS_FILE | grep -E "^(\s*[^#\s]+\s+[^\s]+.*)$") fi if [ "$DISTRO_FOUND" != "y" ]; then echo -e "${CYellow} --- NOTE ---${CNone}" echo "The specified distribution ($DISTRO $DISTRO_NAME) is not supported." echo "Something is wrong with your configuration ($CFG_FILE)" echo "or with the list of supported distributions ($DISTS_FILE)." echo "Please check the DISTRO and DISTRO_NAME variables, then rerun this script." exit 7 fi export SCRIPT_LOG_DIR=$TDE_DIR/$CFG_SCRIPT_LOG_DIR export LOG_RESULT_FILENAME="$SCRIPT_LOG_DIR/build_result.log" # Log result into the common build logfile cd "$SCRIPT_DIR" } #---------------------------- # Save execution start time # Parameters: # $1 - timer number function exec_time_start() { _ET_start_var="_ET_start_$1" eval "$_ET_start_var=`date +%s.%N`" } #---------------------------- # Save execution stop time and set $2 to the execution time # in the format: dd/hh:mm:ss.mmm # Parameters: # $1 - timer number # $2 - result variable name function exec_time_stop() { _ET_start_var="_ET_start_$1" _ET_stop_var="_ET_stop_$1" eval "$_ET_stop_var=`date +%s.%N`" _ET_diff=`echo "${!_ET_stop_var} - ${!_ET_start_var}" | bc` _ET_days=`echo "$_ET_diff/86400" | bc` _ET_diff_day=`echo "$_ET_diff-86400*$_ET_days" | bc` _ET_hours=`echo "$_ET_diff_day/3600" | bc` _ET_diff_hour=`echo "$_ET_diff_day-3600*$_ET_hours" | bc` _ET_mins=`echo "$_ET_diff_hour/60" | bc` _ET_secs=`echo "$_ET_diff_hour-60*$_ET_mins" | bc` local _resultvar=$2 eval "$_resultvar=`printf \"%02d/%02d:%02d:%06.3f\" $_ET_days $_ET_hours $_ET_mins $_ET_secs`" }