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.
162 lines
5.2 KiB
Bash
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`"
|
|
}
|