You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tde-packaging/debian/_buildscripts/local/scripts/_build_common.sh

162 lines
5.2 KiB
Bash

#!/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
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'
#----------------------------
function init_common()
{
# Check script folder
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/build_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/_build_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/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
SCRIPT_LOG_DIR=$TDE_DIR/$CFG_SCRIPT_LOG_DIR
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`"
}