refactor script

This commit is contained in:
2024-02-11 00:15:13 +01:00
parent 1ab259dc19
commit f81a5a4f4c
2 changed files with 428 additions and 292 deletions

View File

@@ -1,9 +1,25 @@
#!/bin/bash #!/bin/bash
## Function to replace the echo command
function my_echo() {
local no_term_output="$1"
# Clean up text
if [ "$no_term_output" == "true" ]; then
shift
fi
local cleaned_output=$(echo -e "${@}" | sed -r "s/\x1B\[[0-9;]*[a-zA-Z]//g")
# Write to log
echo "[ $(date '+%Y-%m-%d %H:%M:%S') ] - ${cleaned_output}" >> "$LOGFILE"
# Show on terminal
if [[ "$no_term_output" != "true" && -t 1 ]]; then
echo -e "${@}"
fi
}
# function for checking of valid machine(s) # function for checking of valid machine(s)
function is_valid_machine () function is_valid_machine ()
{ {
ISM=$1 local ISM=$1
for M in $MACHINES ; do for M in $MACHINES ; do
if [ "$ISM" == "$M" ] || [ "$MACHINE" == "all" ]; then if [ "$ISM" == "$M" ] || [ "$MACHINE" == "all" ]; then
echo true echo true
@@ -15,39 +31,53 @@ function is_valid_machine ()
} }
function do_exec() { function do_exec() {
DEX_ARG1=$1 local cmd="$1"
DEX_ARG2=$2 local exit_behavior="$2"
DEX_ARG3=$3 local show_output="$3"
# rm -f $TMP_LOGFILE local log_text
echo "[`date '+%Y%m%d_%H%M%S'`] EXEC: $DEX_ARG1" >> $LOGFILE local cmd_exit_status
if [ "$DEX_ARG3" == "show_output" ]; then
$DEX_ARG1 my_echo true "[EXEC] $cmd"
else
$DEX_ARG1 > /dev/null 2>> $TMP_LOGFILE # TODO: Evaluate alternatives to 'eval' for executing complex commands
fi # Using 'eval' here allows for dynamic execution of commands that may include
# echo -e "DEX_ARG1 [$DEX_ARG1] DEX_ARG2 [$DEX_ARG2] DEX_ARG3 [$DEX_ARG3]" # special characters, variable expansions, or other complexities that are
if test -f $TMP_LOGFILE; then # difficult to handle with direct execution methods. However, 'eval' comes with
LOGTEXT=`cat $TMP_LOGFILE` # significant security implications, especially when dealing with untrusted input.
echo > $TMP_LOGFILE # It executes the given string as a bash command, which can lead to code injection
fi # vulnerabilities if not carefully managed. This usage is a temporary solution to
if [ $? != 0 ]; then # achieve desired functionality and should be revisited to explore safer alternatives.
if [ "$DEX_ARG2" != "no_exit" ]; then if [[ "$show_output" == "show_output" ]]; then
if [ "$LOGTEXT" != "" ]; then eval $cmd 2>> "$TMP_LOGFILE"
echo -e "\033[31;1mERROR:\t\033[0m $LOGTEXT" else
echo "ERROR: $LOGTEXT" >> $LOGFILE eval $cmd > /dev/null 2>> "$TMP_LOGFILE"
fi fi
exit 1
else cmd_exit_status=${PIPESTATUS[0]} # Get exit status of the first command in the last pipe
if [ "$LOGTEXT" != "" ]; then
echo -e "\033[37;1mNOTE:\t\033[0m $LOGTEXT" if [[ -f "$TMP_LOGFILE" ]]; then
echo "NOTE: $LOGTEXT" >> $LOGFILE log_text=$(cat "$TMP_LOGFILE")
fi >> "$LOGFILE" # Clear TMP_LOGFILE after reading
fi fi
fi
if [[ $cmd_exit_status -ne 0 ]]; then
if [[ "$exit_behavior" != "no_exit" ]]; then
if [[ -n "$log_text" ]]; then
my_echo -e "\033[31;1mERROR:\033[0m $log_text"
my_echo "ERROR: $log_text" >> "$LOGFILE"
fi
exit 1
else
if [[ -n "$log_text" ]]; then
my_echo -e "\033[37;1mNOTE:\033[0m $log_text"
my_echo "NOTE: $log_text" >> "$LOGFILE"
fi
fi
fi
} }
function get_metaname () { function get_metaname () {
TMP_NAME=$1 local TMP_NAME=$1
if [ "$TMP_NAME" == "hd51" ] || [ "$TMP_NAME" == "bre2ze4k" ] || [ "$TMP_NAME" == "mutant51" ] || [ "$TMP_NAME" == "ax51" ]; then if [ "$TMP_NAME" == "hd51" ] || [ "$TMP_NAME" == "bre2ze4k" ] || [ "$TMP_NAME" == "mutant51" ] || [ "$TMP_NAME" == "ax51" ]; then
META_NAME="gfutures" META_NAME="gfutures"
@@ -66,60 +96,74 @@ function get_metaname () {
} }
# clone or update required branch for required meta-<layer> # clone or update required branch for required meta-<layer>
function clone_meta () { function fetch_meta() {
local layer_name="$1"
local branch_name="$2"
local layer_git_url="$3"
local branch_hash="$4"
local target_git_path="$5"
local patch_list="$6"
LAYER_NAME=$1 local GIT_SSH_COMMAND=""
BRANCH_NAME=$2 if [[ "$GIT_SSH_KEYFILE" != "" ]]; then
LAYER_GIT_URL=$3 export GIT_SSH_COMMAND="$SSH -i \"$GIT_SSH_KEYFILE\""
BRANCH_HASH=$4 fi
TARGET_GIT_PATH=$5
PATCH_LIST=$6
#echo -e "Parameters= $LAYER_NAME $BRANCH_NAME $LAYER_GIT_URL $BRANCH_HASH $TARGET_GIT_PATH $PATCH_LIST"
TMP_LAYER_BRANCH=$BRANCH_NAME if [[ ! -d "$target_git_path/.git" ]]; then
my_echo -e "Clone branch $branch_name from $layer_git_url into $target_git_path"
if test ! -d $TARGET_GIT_PATH/.git; then if do_exec "git clone -b "$branch_name" "$layer_git_url" "$target_git_path""; then
echo -e "\033[35;1mclone branch $BRANCH_NAME from $LAYER_GIT_URL\033[0m" do_exec "git -C "$target_git_path" checkout "$branch_hash" -b "$IMAGE_VERSION""
do_exec "git clone -b $BRANCH_NAME $LAYER_GIT_URL $TARGET_GIT_PATH" ' ' 'show_output' do_exec "git -C "$target_git_path" pull -r origin "$branch_name""
do_exec "git -C $TARGET_GIT_PATH checkout $BRANCH_HASH -b $IMAGE_VERSION" else
do_exec "git -C $TARGET_GIT_PATH pull -r origin $BRANCH_NAME" ' ' 'show_output' my_echo -e "\033[31;1mError cloning $layer_name from $layer_git_url\033[0m"
echo -e "\033[35;1mpatching $TARGET_GIT_PATH.\033[0m" return 1
for PF in $PATCH_LIST ; do
PATCH_FILE="$FILES_DIR/$PF"
echo -e "apply: $PATCH_FILE"
do_exec "git -C $TARGET_GIT_PATH am $PATCH_FILE" ' ' 'show_output'
done
else
TMP_LAYER_BRANCH=`git -C $TARGET_GIT_PATH rev-parse --abbrev-ref HEAD`
echo -e "\033[35;1mupdate $TARGET_GIT_PATH $TMP_LAYER_BRANCH\033[0m"
do_exec "git -C $TARGET_GIT_PATH stash" 'no_exit'
if [ "$TMP_LAYER_BRANCH" != "$BRANCH_NAME" ]; then
echo -e "switch from branch $TMP_LAYER_BRANCH to branch $BRANCH_NAME..."
do_exec "git -C $TARGET_GIT_PATH checkout $BRANCH_NAME"
fi fi
## Patching
#echo -e "\033[35;1mUPDATE:\033[0m\nupdate $LAYER_NAME from (branch $BRANCH_NAME) $LAYER_GIT_URL ..." if [[ -n "$patch_list" ]]; then
do_exec "git -C $TARGET_GIT_PATH pull -r origin $BRANCH_NAME" ' ' 'show_output' for patch_file in $patch_list; do
# First, check if the patch can be applied cleanly
if [ "$TMP_LAYER_BRANCH" != "$BRANCH_NAME" ]; then my_echo -e "Applying patch: $patch_file"
echo -e "\033[35;1mswitch back to branch $TMP_LAYER_BRANCH\033[0m" if do_exec "git -C "$target_git_path" apply --check "$FILES_DIR/$patch_file""; then
do_exec "git -C $TARGET_GIT_PATH checkout $TMP_LAYER_BRANCH" # Attempt to apply the patch if 'apply --check' was successful
echo -e "\033[35;1mrebase branch $BRANCH_NAME into branch $TMP_LAYER_BRANCH\033[0m" if ! do_exec "git -C "$target_git_path" am < "$FILES_DIR/$patch_file""; then
do_exec "git -C $TARGET_GIT_PATH rebase $BRANCH_NAME" ' ' 'show_output' # Error message if 'git am' fails
my_echo -e "\033[31;1mFailed to apply patch $patch_file to $layer_name\033[0m"
return 1
fi
else
# Message about skipping if 'apply --check' fails
my_echo -e "\033[33;1mSkipping patch $patch_file already applied or cannot be applied cleanly.\033[0m"
fi
done
fi fi
else
if [[ $DO_UPDATE == "$true" ]]; then
my_echo -e "Update $target_git_path on branch $branch_name"
if [[ $(git -C "$target_git_path" stash list) ]]; then
my_echo -e "Stashing changes in $target_git_path"
do_exec "git -C "$target_git_path" stash push --include-untracked"
local stash_applied=true
fi
do_exec "git -C "$target_git_path" checkout "$branch_name"" || do_exec "git -C "$target_git_path" checkout -b "$branch_name""
do_exec "git -C "$target_git_path" pull -r origin "$branch_name""
if [[ "$stash_applied" == true ]]; then
if do_exec "git -C "$target_git_path" stash pop"; then
my_echo -e "Stash applied successfully."
else
my_echo -e "\033[33;1mNote: Stash could not be applied. Manual intervention required.\033[0m"
return 1
fi
fi
fi
fi
do_exec "git -C $TARGET_GIT_PATH stash pop" 'no_exit' return 0
fi
return 0
} }
# clone/update required branch from tuxbox bsp layers # clone/update required branch from tuxbox bsp layers
function is_required_machine_layer () function is_required_machine_layer ()
{ {
HIM1=$1 local HIM1=$1
for M in $HIM1 ; do for M in $HIM1 ; do
if [ "$M" == "$MACHINE" ]; then if [ "$M" == "$MACHINE" ]; then
echo true echo true
@@ -132,7 +176,7 @@ function is_required_machine_layer ()
# get matching machine type from machine build id # get matching machine type from machine build id
function get_real_machine_type() { function get_real_machine_type() {
MACHINE_TYPE=$1 local MACHINE_TYPE=$1
if [ "$MACHINE_TYPE" == "mutant51" ] || [ "$MACHINE_TYPE" == "ax51" ] || [ "$MACHINE_TYPE" == "hd51" ]; then if [ "$MACHINE_TYPE" == "mutant51" ] || [ "$MACHINE_TYPE" == "ax51" ] || [ "$MACHINE_TYPE" == "hd51" ]; then
RMT_RES="hd51" RMT_RES="hd51"
elif [ "$MACHINE_TYPE" == "hd60" ] || [ "$MACHINE_TYPE" == "ax60" ]; then elif [ "$MACHINE_TYPE" == "hd60" ] || [ "$MACHINE_TYPE" == "ax60" ]; then
@@ -149,7 +193,7 @@ function get_real_machine_type() {
# get matching machine build id from machine type # get matching machine build id from machine type
function get_real_machine_id() { function get_real_machine_id() {
MACHINEBUILD=$1 local MACHINEBUILD=$1
if [ "$MACHINEBUILD" == "hd51" ]; then if [ "$MACHINEBUILD" == "hd51" ]; then
RMI_RES="ax51" RMI_RES="ax51"
elif [ "$MACHINEBUILD" == "hd60" ]; then elif [ "$MACHINEBUILD" == "hd60" ]; then
@@ -164,11 +208,11 @@ function get_real_machine_id() {
echo $RMI_RES echo $RMI_RES
} }
# function to create file enrties into a file, already existing entry will be ignored # function to create file entries into a file, already existing entry will be ignored
function set_file_entry () { function set_file_entry () {
FILE_NAME=$1 local FILE_NAME=$1
FILE_SEARCH_ENTRY=$2 local FILE_SEARCH_ENTRY=$2
FILE_NEW_ENTRY=$3 local FILE_NEW_ENTRY=$3
if test ! -f $FILE_NAME; then if test ! -f $FILE_NAME; then
echo $FILE_NEW_ENTRY > $FILE_NAME echo $FILE_NEW_ENTRY > $FILE_NAME
return 1 return 1
@@ -186,38 +230,39 @@ function set_file_entry () {
return 0 return 0
} }
# function to create configuration for box types # function to create configuration for box types
function create_local_config () { function create_local_config () {
CLC_ARG1=$1 local machine=$1
if [ "$CLC_ARG1" != "all" ]; then if [ "$machine" != "all" ]; then
MACHINE_BUILD_DIR=$BUILD_ROOT/$CLC_ARG1 MACHINE_BUILD_DIR=$BUILD_ROOT/$machine
do_exec "mkdir -p $BUILD_ROOT" do_exec "mkdir -p $BUILD_ROOT"
BACKUP_CONFIG_DIR="$BACKUP_PATH/$CLC_ARG1/conf" BACKUP_CONFIG_DIR="$BACKUP_PATH/$machine/conf"
do_exec "mkdir -p $BACKUP_CONFIG_DIR" do_exec "mkdir -p $BACKUP_CONFIG_DIR"
LOCAL_CONFIG_FILE_PATH=$MACHINE_BUILD_DIR/conf/local.conf LOCAL_CONFIG_FILE_PATH=$MACHINE_BUILD_DIR/conf/local.conf
if test -d $BUILD_ROOT_DIR/$CLC_ARG1; then if test -d $BUILD_ROOT_DIR/$machine; then
if test ! -L $BUILD_ROOT_DIR/$CLC_ARG1; then if test ! -L $BUILD_ROOT_DIR/$machine; then
# generate build/config symlinks for compatibility # generate build/config symlinks for compatibility
echo -e "\033[37;1m\tcreate compatible symlinks directory for $CLC_ARG1 environment ...\033[0m" my_echo -e "\033[37;1m\tcreate compatible symlinks directory for $machine environment ...\033[0m"
do_exec "mv -v $BUILD_ROOT_DIR/$CLC_ARG1 $BUILD_ROOT" do_exec "mv $BUILD_ROOT_DIR/$machine $BUILD_ROOT"
do_exec "ln -sv $MACHINE_BUILD_DIR $BUILD_ROOT_DIR/$CLC_ARG1" do_exec "ln -s $MACHINE_BUILD_DIR $BUILD_ROOT_DIR/$machine"
fi fi
fi fi
# generate default config # generate default config
if test ! -d $MACHINE_BUILD_DIR/conf; then if test ! -d $MACHINE_BUILD_DIR/conf; then
echo -e "\033[37;1m\tcreating build directory for $CLC_ARG1 environment ...\033[0m" my_echo -e "\033[37;1m\tcreating build directory for $machine environment ...\033[0m"
do_exec "cd $BUILD_ROOT_DIR" do_exec "cd $BUILD_ROOT_DIR"
do_exec ". ./oe-init-build-env $MACHINE_BUILD_DIR" do_exec ". ./oe-init-build-env $MACHINE_BUILD_DIR"
# we need a clean config file # we need a clean config file
if test -f $LOCAL_CONFIG_FILE_PATH & test ! -f $LOCAL_CONFIG_FILE_PATH.origin; then if test -f $LOCAL_CONFIG_FILE_PATH & test ! -f $LOCAL_CONFIG_FILE_PATH.origin; then
# so we save the origin local.conf # so we save the origin local.conf
do_exec "mv -v $LOCAL_CONFIG_FILE_PATH $LOCAL_CONFIG_FILE_PATH.origin" do_exec "mv $LOCAL_CONFIG_FILE_PATH $LOCAL_CONFIG_FILE_PATH.origin"
fi fi
do_exec "cd $BASEPATH" do_exec "cd $BASEPATH"
echo "[Desktop Entry]" > $BUILD_ROOT/.directory echo "[Desktop Entry]" > $BUILD_ROOT/.directory
@@ -230,36 +275,41 @@ function create_local_config () {
if test -f $LOCAL_CONFIG_FILE_PATH; then if test -f $LOCAL_CONFIG_FILE_PATH; then
HASHSTAMP=`MD5SUM $LOCAL_CONFIG_FILE_PATH` HASHSTAMP=`MD5SUM $LOCAL_CONFIG_FILE_PATH`
do_exec "cp -v $LOCAL_CONFIG_FILE_PATH $BACKUP_CONFIG_DIR/local.conf.$HASHSTAMP.$BACKUP_SUFFIX" do_exec "cp $LOCAL_CONFIG_FILE_PATH $BACKUP_CONFIG_DIR/local.conf.$HASHSTAMP.$BACKUP_SUFFIX"
# migrate settings after server switch # migrate settings after server switch
echo -e "migrate settings within $LOCAL_CONFIG_FILE_INC_PATH..." my_echo "migrate settings within $LOCAL_CONFIG_FILE_INC_PATH..."
sed -i -e 's|http://archiv.tuxbox-neutrino.org|https://n4k.sourceforge.io|' $LOCAL_CONFIG_FILE_INC_PATH do_exec "sed -i -e 's|http://archiv.tuxbox-neutrino.org|https://n4k.sourceforge.io|' $LOCAL_CONFIG_FILE_INC_PATH"
sed -i -e 's|https://archiv.tuxbox-neutrino.org|https://n4k.sourceforge.io|' $LOCAL_CONFIG_FILE_INC_PATH do_exec "sed -i -e 's|https://archiv.tuxbox-neutrino.org|https://n4k.sourceforge.io|' $LOCAL_CONFIG_FILE_INC_PATH"
sed -i -e 's|http://archiv.tuxbox-neutrino.org/sources|https://n4k.sourceforge.io/sources|' $LOCAL_CONFIG_FILE_INC_PATH do_exec "sed -i -e 's|http://archiv.tuxbox-neutrino.org/sources|https://n4k.sourceforge.io/sources|' $LOCAL_CONFIG_FILE_INC_PATH"
sed -i -e 's|https://archiv.tuxbox-neutrino.org/sources|https://n4k.sourceforge.io/sources|' $LOCAL_CONFIG_FILE_INC_PATH do_exec "sed -i -e 's|https://archiv.tuxbox-neutrino.org/sources|https://n4k.sourceforge.io/sources|' $LOCAL_CONFIG_FILE_INC_PATH"
sed -i -e 's|http://sstate.tuxbox-neutrino.org|https://n4k.sourceforge.io|' $LOCAL_CONFIG_FILE_INC_PATH do_exec "sed -i -e 's|http://sstate.tuxbox-neutrino.org|https://n4k.sourceforge.io|' $LOCAL_CONFIG_FILE_INC_PATH"
sed -i -e 's|https://sstate.tuxbox-neutrino.org|https://n4k.sourceforge.io|' $LOCAL_CONFIG_FILE_INC_PATH do_exec "sed -i -e 's|https://sstate.tuxbox-neutrino.org|https://n4k.sourceforge.io|' $LOCAL_CONFIG_FILE_INC_PATH"
sed -i -e 's|archiv.tuxbox-neutrino.org|n4k.sourceforge.io|' $LOCAL_CONFIG_FILE_INC_PATH do_exec "sed -i -e 's|archiv.tuxbox-neutrino.org|n4k.sourceforge.io|' $LOCAL_CONFIG_FILE_INC_PATH"
sed -i -e 's|sstate.tuxbox-neutrino.org|n4k.sourceforge.io|' $LOCAL_CONFIG_FILE_INC_PATH do_exec "sed -i -e 's|sstate.tuxbox-neutrino.org|n4k.sourceforge.io|' $LOCAL_CONFIG_FILE_INC_PATH"
echo -e "migrate settings within $LOCAL_CONFIG_FILE_PATH" my_echo "migrate settings within $LOCAL_CONFIG_FILE_PATH"
sed -i -e 's|http://archiv.tuxbox-neutrino.org|https://n4k.sourceforge.io|' $LOCAL_CONFIG_FILE_PATH do_exec "sed -i -e 's|http://archiv.tuxbox-neutrino.org|https://n4k.sourceforge.io|' $LOCAL_CONFIG_FILE_PATH"
sed -i -e 's|https://archiv.tuxbox-neutrino.org|https://n4k.sourceforge.io|' $LOCAL_CONFIG_FILE_PATH do_exec "sed -i -e 's|https://archiv.tuxbox-neutrino.org|https://n4k.sourceforge.io|' $LOCAL_CONFIG_FILE_PATH"
sed -i -e 's|http://archiv.tuxbox-neutrino.org/sources|https://n4k.sourceforge.io/sources|' $LOCAL_CONFIG_FILE_PATH do_exec "sed -i -e 's|http://archiv.tuxbox-neutrino.org/sources|https://n4k.sourceforge.io/sources|' $LOCAL_CONFIG_FILE_PATH"
sed -i -e 's|https://archiv.tuxbox-neutrino.org/sources|https://n4k.sourceforge.io/sources|' $LOCAL_CONFIG_FILE_PATH do_exec "sed -i -e 's|https://archiv.tuxbox-neutrino.org/sources|https://n4k.sourceforge.io/sources|' $LOCAL_CONFIG_FILE_PATH"
sed -i -e 's|http://sstate.tuxbox-neutrino.org|https://n4k.sourceforge.io|' $LOCAL_CONFIG_FILE_PATH do_exec "sed -i -e 's|http://sstate.tuxbox-neutrino.org|https://n4k.sourceforge.io|' $LOCAL_CONFIG_FILE_PATH"
sed -i -e 's|https://sstate.tuxbox-neutrino.org|https://n4k.sourceforge.io|' $LOCAL_CONFIG_FILE_PATH do_exec "sed -i -e 's|https://sstate.tuxbox-neutrino.org|https://n4k.sourceforge.io|' $LOCAL_CONFIG_FILE_PATH"
sed -i -e 's|archiv.tuxbox-neutrino.org|n4k.sourceforge.io|' $LOCAL_CONFIG_FILE_PATH do_exec "sed -i -e 's|archiv.tuxbox-neutrino.org|n4k.sourceforge.io|' $LOCAL_CONFIG_FILE_PATH"
sed -i -e 's|sstate.tuxbox-neutrino.org|n4k.sourceforge.io|' $LOCAL_CONFIG_FILE_PATH do_exec "sed -i -e 's|sstate.tuxbox-neutrino.org|n4k.sourceforge.io|' $LOCAL_CONFIG_FILE_PATH"
echo -e "\033[32;1mdone ...\033[0m\n" search_line="#UPDATE_SERVER_URL = \"http:\/\/@hostname@\""
add_line="UPDATE_SERVER_URL = \"http://$HTTP_ADDRESS\""
if ! grep -qF -- "$add_line" "$LOCAL_CONFIG_FILE_INC_PATH"; then
# Wenn nicht, füge die neue Zeile nach der spezifischen Zeile ein
sed -i -e "/$search_line/a $add_line" "$LOCAL_CONFIG_FILE_INC_PATH"
fi
fi fi
# add init note # add init note
@@ -269,18 +319,18 @@ function create_local_config () {
set_file_entry $LOCAL_CONFIG_FILE_PATH "$BASEPATH/local.conf.common.inc" "include $BASEPATH/local.conf.common.inc" set_file_entry $LOCAL_CONFIG_FILE_PATH "$BASEPATH/local.conf.common.inc" "include $BASEPATH/local.conf.common.inc"
# add line 2, machine type # add line 2, machine type
M_TYPE='MACHINE = "'`get_real_machine_type $CLC_ARG1`'"' M_TYPE='MACHINE = "'`get_real_machine_type $machine`'"'
if set_file_entry $LOCAL_CONFIG_FILE_PATH "MACHINE" "$M_TYPE" == 1; then if set_file_entry $LOCAL_CONFIG_FILE_PATH "MACHINE" "$M_TYPE" == 1; then
echo -e "\t\033[37;1m$LOCAL_CONFIG_FILE_PATH has been upgraded with entry: $M_TYPE \033[0m" my_echo -e "\t\033[37;1m$LOCAL_CONFIG_FILE_PATH has been upgraded with entry: $M_TYPE \033[0m"
fi fi
# add line 3, machine build # add line 3, machine build
M_ID='MACHINEBUILD = "'`get_real_machine_id $CLC_ARG1`'"' M_ID='MACHINEBUILD = "'`get_real_machine_id $machine`'"'
if set_file_entry $LOCAL_CONFIG_FILE_PATH "MACHINEBUILD" "$M_ID" == 1; then if set_file_entry $LOCAL_CONFIG_FILE_PATH "MACHINEBUILD" "$M_ID" == 1; then
echo -e "\t\033[37;1m$LOCAL_CONFIG_FILE_PATH has been upgraded with entry: $M_ID \033[0m" my_echo -e "\t\033[37;1m$LOCAL_CONFIG_FILE_PATH has been upgraded with entry: $M_ID \033[0m"
fi fi
else else
echo -e "\033[31;1mERROR:\033[0m:\ttemplate $BASEPATH/local.conf.common.inc not found..." my_echo -e "\033[31;1mERROR:\033[0m:\ttemplate $BASEPATH/local.conf.common.inc not found..."
exit 1 exit 1
fi fi
@@ -289,17 +339,17 @@ function create_local_config () {
# craete backup for bblayer.conf # craete backup for bblayer.conf
if test -f $BBLAYER_CONF_FILE; then if test -f $BBLAYER_CONF_FILE; then
HASHSTAMP=`MD5SUM $BBLAYER_CONF_FILE` HASHSTAMP=`MD5SUM $BBLAYER_CONF_FILE`
do_exec "cp -v $BBLAYER_CONF_FILE $BACKUP_CONFIG_DIR/bblayer.conf.$HASHSTAMP.$BACKUP_SUFFIX" do_exec "cp $BBLAYER_CONF_FILE $BACKUP_CONFIG_DIR/bblayer.conf.$HASHSTAMP.$BACKUP_SUFFIX"
fi fi
META_MACHINE_LAYER=meta-`get_metaname $CLC_ARG1` META_MACHINE_LAYER=meta-`get_metaname $machine`
# add layer entries into bblayer.conf # add layer entries into bblayer.conf
set_file_entry $BBLAYER_CONF_FILE "generated" '# auto generated entries by init script' set_file_entry $BBLAYER_CONF_FILE "generated" '# auto generated entries by init script'
LAYER_LIST=" $TUXBOX_LAYER_NAME $META_MACHINE_LAYER $OE_LAYER_NAME/meta-oe $OE_LAYER_NAME/meta-networking $PYTHON2_LAYER_NAME $QT5_LAYER_NAME " LAYER_LIST=" $TUXBOX_LAYER_NAME $META_MACHINE_LAYER $OE_LAYER_NAME/meta-oe $OE_LAYER_NAME/meta-networking $PYTHON2_LAYER_NAME $QT5_LAYER_NAME "
for LL in $LAYER_LIST ; do for LL in $LAYER_LIST ; do
if set_file_entry $BBLAYER_CONF_FILE $LL 'BBLAYERS += " '$BUILD_ROOT_DIR'/'$LL' "' == 1;then if set_file_entry $BBLAYER_CONF_FILE $LL 'BBLAYERS += " '$BUILD_ROOT_DIR'/'$LL' "' == 1;then
echo -e "\t\033[37;1m$BBLAYER_CONF_FILE has been upgraded with entry: $LL... \033[0m" my_echo -e "\t\033[37;1m$BBLAYER_CONF_FILE has been upgraded with entry: $LL... \033[0m"
fi fi
done done
fi fi
@@ -311,7 +361,7 @@ function create_dist_tree () {
# create dist dir # create dist dir
DIST_BASEDIR="$BASEPATH/dist/$IMAGE_VERSION" DIST_BASEDIR="$BASEPATH/dist/$IMAGE_VERSION"
if test ! -d "$DIST_BASEDIR"; then if test ! -d "$DIST_BASEDIR"; then
echo -e "\033[37;1mcreate dist directory:\033[0m $DIST_BASEDIR" my_echo -e "\033[37;1mcreate dist directory:\033[0m $DIST_BASEDIR"
do_exec "mkdir -p $DIST_BASEDIR" do_exec "mkdir -p $DIST_BASEDIR"
fi fi
@@ -319,7 +369,7 @@ function create_dist_tree () {
DIST_LIST=`ls $BUILD_ROOT` DIST_LIST=`ls $BUILD_ROOT`
for DL in $DIST_LIST ; do for DL in $DIST_LIST ; do
DEPLOY_DIR="$BUILD_ROOT/$DL/tmp/deploy" DEPLOY_DIR="$BUILD_ROOT/$DL/tmp/deploy"
do_exec "ln -sfv $DEPLOY_DIR $DIST_BASEDIR/$DL" do_exec "ln -sf $DEPLOY_DIR $DIST_BASEDIR/$DL"
if test -L "$DIST_BASEDIR/$DL/deploy"; then if test -L "$DIST_BASEDIR/$DL/deploy"; then
do_exec "unlink -v $DIST_BASEDIR/$DL/deploy" do_exec "unlink -v $DIST_BASEDIR/$DL/deploy"
fi fi
@@ -327,7 +377,7 @@ function create_dist_tree () {
} }
function MD5SUM () { function MD5SUM () {
MD5SUM_FILE=$1 local MD5SUM_FILE=$1
MD5STAMP=`md5sum $MD5SUM_FILE |cut -f 1 -d " "` MD5STAMP=`md5sum $MD5SUM_FILE |cut -f 1 -d " "`
echo $MD5STAMP echo $MD5STAMP
} }

424
init.sh
View File

@@ -2,16 +2,55 @@
source init.functions.sh source init.functions.sh
#set -x #set -x
BASEPATH=$(pwd) ## Comatible image version
TIMESTAMP=$(date '+%Y%m%d_%H%M%S')
# only current version
# IMAGE_VERSION=$(git -C $BASEPATH rev-parse --abbrev-ref HEAD)
IMAGE_VERSION="3.2.4" IMAGE_VERSION="3.2.4"
## global vars
BASEPATH=$(pwd)
SSH=$(which ssh)
GIT_SSH_KEYFILE=""
true="1"
false="0"
DO_UPDATE=$false
FILES_DIR="$BASEPATH/files" FILES_DIR="$BASEPATH/files"
HTTPD_DIST_HOSTNAME="localhost"
HTTPD_DIST_DIR="/var/www/html/dist"
USER_CALL="$0 $@"
# identical listings ## Basename of this script
NAME=$(basename $0)
## Timestamp for logging
TIMESTAMP=$(date '+%Y%m%d_%H%M%S')
## Logfile
LOG_PATH=$BASEPATH/log
mkdir -p $LOG_PATH
TMP_LOGFILE="$LOG_PATH/.$0-tmp.log"
rm -f $TMP_LOGFILE
LOGFILE_NAME="$NAME"_"$TIMESTAMP.log"
LOGFILE=$LOG_PATH/$LOGFILE_NAME
LOGFILE_LINK=$LOG_PATH/$NAME.log
echo "" > $LOGFILE
ln -sf $LOGFILE $LOGFILE_LINK
my_echo "true" "$USER_CALL"
## Current build env script version
VERSION=$(git -C $BASEPATH describe --tags 2>/dev/null)
if [ -z "$VERSION" ]; then
VERSION="$IMAGE_VERSION"
fi
INIT_VERSION="$NAME $VERSION"
## Preset required branches and revs
COMPATIBLE_BRANCH="gatesgarth"
COMPATIBLE_TAG="$IMAGE_VERSION"
YOCTO_SRCREV="bc71ec0"
PYTHON2_SRCREV="27d2aeb"
OE_SRCREV="f3f7a5f"
## Machines
# Identical listings
MACHINES_IDENTICAL_HD51="hd51 ax51 mutant51" MACHINES_IDENTICAL_HD51="hd51 ax51 mutant51"
MACHINES_IDENTICAL_H7="h7 zgemmah7" MACHINES_IDENTICAL_H7="h7 zgemmah7"
MACHINES_IDENTICAL_HD60="hd60 ax60" #TODO: move into gfutures MACHINES_IDENTICAL_HD60="hd60 ax60" #TODO: move into gfutures
@@ -24,62 +63,27 @@ MACHINES_HISI="$MACHINES_IDENTICAL_HD60 $MACHINES_IDENTICAL_HD61"
# airdigital listing # airdigital listing
MACHINES_AIRDIGITAL="$MACHINES_IDENTICAL_H7" MACHINES_AIRDIGITAL="$MACHINES_IDENTICAL_H7"
# edision listing # edision listing
#MACHINES_EDISION="osmio4k osmio4kplus" MACHINES_EDISION="osmio4k osmio4kplus"
# ceryon listing # ceryon listing
MACHINES_CERYON="e4hdultra" MACHINES_CERYON="e4hdultra"
# valid machine list # valid machine list
MACHINES="$MACHINES_GFUTURES $MACHINES_HISI $MACHINES_AIRDIGITAL $MACHINES_EDISION $MACHINES_CERYON" MACHINES="$MACHINES_GFUTURES $MACHINES_HISI $MACHINES_AIRDIGITAL $MACHINES_EDISION $MACHINES_CERYON"
HINT_SYNTAX='\033[37;1mUsage '$0' <machine>\033[0m' MACHINE="all" # default for MACHINE, if not set
HINT_MACHINES="<$MACHINES>, <all> or keep empty < >" HINT_MACHINES="Select a valid machine type (empty means <all> as default) <$MACHINES>"
HINT_IMAGE_VERSIONS="$IMAGE_VERSION"
LOG_PATH=$BASEPATH/log ## Backups
mkdir -p $LOG_PATH
BACKUP_PATH=$BASEPATH/backups BACKUP_PATH=$BASEPATH/backups
mkdir -p $BACKUP_PATH mkdir -p $BACKUP_PATH
LOGFILE_NAME="$0_$TIMESTAMP.log"
LOGFILE=$LOG_PATH/$LOGFILE_NAME
TMP_LOGFILE=$LOG_PATH/.tmp.log
touch $LOGFILE
LOGFILE_LINK=$BASEPATH/$0.log
rm -f $TMP_LOGFILE
rm -f $LOGFILE_LINK
ln -sf $LOGFILE $LOGFILE_LINK
# set passed parameters
if [ "$1" == "" ]; then
MACHINE="all"
else
MACHINE=$1
fi
if [ $(is_valid_machine "$MACHINE") == false ]; then
echo -e "\033[31;1mERROR:\tNo valid machine defined.\033[0m\n\t$HINT_SYNTAX.
\tKeep parameter <machine> empty to initialize all possible machine types or set your favorite machine.
\tPossible types are:
\t\033[37;1m$HINT_MACHINES\033[0m\n"
exit 1
fi
echo -e "##########################################################################################"
echo -e "\033[37;1mInitialze build environment:\nversion: $IMAGE_VERSION\nmachine: $MACHINE\033[0m"
echo -e "##########################################################################################\n"
BACKUP_SUFFIX=bak BACKUP_SUFFIX=bak
YOCTO_GIT_URL=https://git.yoctoproject.org/git/poky ## Layer sources
POKY=poky YOCTO_GIT_URL="https://git.yoctoproject.org/git/poky"
POKY_NAME=$IMAGE_VERSION POKY="poky"
BUILD_ROOT_DIR=$BASEPATH/$POKY-$IMAGE_VERSION POKY_NAME="$IMAGE_VERSION"
BUILD_ROOT=$BUILD_ROOT_DIR/build BUILD_ROOT_DIR="$BASEPATH/$POKY-$IMAGE_VERSION"
BUILD_ROOT="$BUILD_ROOT_DIR/build"
OE_LAYER_NAME=meta-openembedded OE_LAYER_NAME=meta-openembedded
OE_LAYER_GIT_URL=https://git.openembedded.org/meta-openembedded OE_LAYER_GIT_URL=https://git.openembedded.org/meta-openembedded
@@ -88,162 +92,244 @@ OE_LAYER_PATCH_LIST="0001-openembedded-disable-meta-python.patch 0002-openembedd
OE_CORE_LAYER_NAME=openembedded-core OE_CORE_LAYER_NAME=openembedded-core
OE_CORE_LAYER_GIT_URL=https://github.com/openembedded/openembedded-core.git OE_CORE_LAYER_GIT_URL=https://github.com/openembedded/openembedded-core.git
TUXBOX_LAYER_NAME=meta-neutrino # meta-neutrino project URL:
TUXBOX_LAYER_GIT_URL=https://github.com/Tuxbox-Project PROJECT_URL="https://github.com/tuxbox-neutrino"
TUXBOX_BSP_LAYER_GIT_URL=$TUXBOX_LAYER_GIT_URL ## Help
show_help() {
if [[ $LANG == de_* ]]; then
echo "Dieses Skript initialisiert und aktualisiert die Entwicklungsumgebung für den Bau von Images und Paketen für verschiedene Maschinenkonfigurationen."
echo "Es klont und aktualisiert Meta-Layer aus vorgegebenen Repositories, bereitet die Build-Umgebung vor und unterstützt die Konfiguration für spezifische Maschinentypen."
else
echo "This script initializes and updates the development environment for building images and packages for various machine configurations."
echo "It clones and updates meta-layers from specified repositories, prepares the build environment, and supports configuration for specific machine types."
fi
echo ""
echo "Usage: $0 [OPTIONS]..."
echo ""
echo "Options:"
echo " -m, --machine $HINT_MACHINES"
echo " --httpd-dist-hostname IP or hostname (optional with portname) to define the update server address for local.conf.common.inc, default: $HTTPD_DIST_HOSTNAME"
echo " --httpd-dist-dir Directory where the local httpd server find the deployed images and packages, default: $HTTPD_DIST_DIR"
echo " -p, --project-url Project-URL where to find project meta layers,"
echo " e.g. for read and write access: git@github.com:tuxbox-neutrino, default = $PROJECT_URL"
echo " -u, --update Update your project meta layers"
echo " -i, --id-rsa-file Path to your preferred id rsa file, default: users id rsa file, e.g. $HOME/.ssh/id_rsa"
echo ""
echo " -h, --help Show this help"
echo " --version Show version information"
}
AIRDIGITAL_LAYER_NAME=meta-airdigital ## Processing command line arguments
AIRDIGITAL_LAYER_GIT_URL=$TUXBOX_BSP_LAYER_GIT_URL/$AIRDIGITAL_LAYER_NAME TEMP=$(getopt -o up:m:i:h --long httpd-dist-hostname:,httpd-dist-dir:,update,project-url:,machine:,id-rsa-file,help,version -n 'init' -- "$@")
if [ $? != 0 ] ; then
my_echo "Error while process arguments" >&2
show_help
exit 1
fi
GFUTURES_LAYER_NAME=meta-gfutures # Note the quotes around `$TEMP`: they are essential!
GFUTURES_LAYER_GIT_URL=$TUXBOX_BSP_LAYER_GIT_URL/$GFUTURES_LAYER_NAME eval set -- "$TEMP"
EDISION_LAYER_NAME=meta-edision # Extract arguments.
EDISION_LAYER_GIT_URL=$TUXBOX_LAYER_GIT_URL/$EDISION_LAYER_NAME while true ; do
case "$1" in
-p|--project-url)
PROJECT_URL="$2"; shift 2 ;;
-m|--machine)
MACHINE="$2"; shift 2 ;;
-i|--id-rsa-file)
GIT_SSH_KEYFILE="$2"; shift 2 ;;
--httpd-dist-hostname)
HTTPD_DIST_HOSTNAME="$2"; shift 2 ;;
--httpd-dist-dir)
HTTPD_DIST_DIR="$2"; shift 2 ;;
-u|--update)
DO_UPDATE="$true"; shift ;;
-h|--help)
show_help
exit 0 ;;
--version)
echo "$INIT_VERSION"
exit 0 ;;
--) shift ; break ;;
*) echo "Internal Error!" ; exit 1 ;;
esac
done
HISI_LAYER_NAME=meta-hisilicon #TODO: move into gfutures # Check machine type
HISI_LAYER_GIT_URL=$TUXBOX_LAYER_GIT_URL/$HISI_LAYER_NAME if [ $(is_valid_machine "$MACHINE") == false ]; then
my_echo "\033[31;1mNo valid machine defined.\033[0m"
my_echo "$HINT_MACHINES"
exit 1
fi
CERYON_LAYER_NAME=meta-ceryon my_echo "------------------------------------------------------------------------------------------"
CERYON_LAYER_GIT_URL=$TUXBOX_BSP_LAYER_GIT_URL/$CERYON_LAYER_NAME my_echo "Buildenv Version: \033[37;1m$INIT_VERSION\033[0m "
my_echo "Image Version: \033[37;1m$IMAGE_VERSION\033[0m "
my_echo "Compatible OE-branch: \033[37;1m$COMPATIBLE_BRANCH\033[0m "
my_echo "httpd Dist hostname: \033[37;1m$HTTPD_DIST_HOSTNAME\033[0m "
my_echo "httpd Dist directory: \033[37;1m$HTTPD_DIST_DIR\033[0m "
my_echo "Machine: \033[37;1m$MACHINE\033[0m "
my_echo "Project Repository URL: \033[37;1m$PROJECT_URL\033[0m "
my_echo "SRCREV Yocto: \033[37;1m$YOCTO_SRCREV\033[0m "
my_echo "SRCREV OE: \033[37;1m$OE_SRCREV\033[0m "
my_echo "SRCREV Python2: \033[37;1m$PYTHON2_SRCREV\033[0m "
my_echo "------------------------------------------------------------------------------------------"
## Fetch meta sources
# fetch required branch from yocto
fetch_meta "" $COMPATIBLE_BRANCH $YOCTO_GIT_URL $YOCTO_SRCREV $BUILD_ROOT_DIR
# fetch required branch from openembedded
fetch_meta "" $COMPATIBLE_BRANCH $OE_LAYER_GIT_URL $OE_SRCREV $BUILD_ROOT_DIR/$OE_LAYER_NAME "$OE_LAYER_PATCH_LIST"
# fetch required branch of oe-core from openembedded
fetch_meta "" master $OE_CORE_LAYER_GIT_URL "" $BUILD_ROOT_DIR/$OE_CORE_LAYER_NAME
# fetch required branch for meta-python2
PYTHON2_LAYER_NAME=meta-python2 PYTHON2_LAYER_NAME=meta-python2
PYTHON2_LAYER_GIT_URL=https://git.openembedded.org/$PYTHON2_LAYER_NAME PYTHON2_LAYER_GIT_URL=https://git.openembedded.org/$PYTHON2_LAYER_NAME
PYTHON2_PATCH_LIST="0001-local_conf_outcomment_line_15.patch" PYTHON2_PATCH_LIST="0001-local_conf_outcomment_line_15.patch"
fetch_meta "" $COMPATIBLE_BRANCH $PYTHON2_LAYER_GIT_URL $PYTHON2_SRCREV $BUILD_ROOT_DIR/$PYTHON2_LAYER_NAME "$PYTHON2_PATCH_LIST"
# fetch required branch for meta-qt5
QT5_LAYER_NAME=meta-qt5 QT5_LAYER_NAME=meta-qt5
QT5_LAYER_GIT_URL=https://github.com/meta-qt5/$QT5_LAYER_NAME QT5_LAYER_GIT_URL=https://github.com/meta-qt5/$QT5_LAYER_NAME
fetch_meta "" $COMPATIBLE_BRANCH $QT5_LAYER_GIT_URL "" $BUILD_ROOT_DIR/$QT5_LAYER_NAME
# fetch required branch from meta-neutrino
TUXBOX_LAYER_NAME="meta-neutrino"
TUXBOX_LAYER_BRANCH="master"
TUXBOX_LAYER_SRCREV="ffc1b65ec3cfd2c6bbd339d3ce201d6b39abd527"
TUXBOX_LAYER_GIT_URL="${PROJECT_URL}/$TUXBOX_LAYER_NAME.git"
fetch_meta "" $TUXBOX_LAYER_BRANCH $TUXBOX_LAYER_GIT_URL "$TUXBOX_LAYER_SRCREV" $BUILD_ROOT_DIR/$TUXBOX_LAYER_NAME
safe_dir="$BUILD_ROOT_DIR/$TUXBOX_LAYER_NAME"
if ! git config --global --get safe.directory | grep -qxF "$safe_dir"; then
do_exec "git config --global --add safe.directory \"$safe_dir\""
fi
# set required branches # fetch required branch from meta-airdigital
COMPATIBLE_BRANCH=gatesgarth AIRDIGITAL_LAYER_NAME="meta-airdigital"
YOCTO_BRANCH_HASH=bc71ec0 AIRDIGITAL_LAYER_BRANCH="master"
PYTHON2_BRANCH_HASH=27d2aeb AIRDIGITAL_LAYER_SRCREV="ac8f769e35f839bbcf9c38d2b2b98513be907ac1"
OE_BRANCH_HASH=f3f7a5f AIRDIGITAL_LAYER_GIT_URL="$PROJECT_URL/$AIRDIGITAL_LAYER_NAME.git"
if [ "$MACHINE" == "all" ] || [ $(is_required_machine_layer "' $MACHINES_AIRDIGITAL '") == true ]; then
fetch_meta "" $AIRDIGITAL_LAYER_BRANCH $AIRDIGITAL_LAYER_GIT_URL "$AIRDIGITAL_LAYER_SRCREV" $BUILD_ROOT_DIR/$AIRDIGITAL_LAYER_NAME
fi
# fetch required branch from meta-gfutures
# clone/update required branch from yocto GFUTURES_LAYER_NAME=meta-gfutures
clone_meta '' $COMPATIBLE_BRANCH $YOCTO_GIT_URL $YOCTO_BRANCH_HASH $BUILD_ROOT_DIR GFUTURES_LAYER_BRANCH="master"
# for compatibility with old path structure GFUTURES_LAYER_SRCREV="bfceb9d2f79a8403ce1bdf1ad14a1714f781fed3"
# ln -sf $BUILD_ROOT_DIR $BASEPATH/$POKY-$IMAGE_VERSION GFUTURES_LAYER_GIT_URL="$PROJECT_URL/$GFUTURES_LAYER_NAME.git"
echo -e "\033[32;1mOK ...\033[0m\n"
# clone required branch from openembedded
clone_meta '' $COMPATIBLE_BRANCH $OE_LAYER_GIT_URL $OE_BRANCH_HASH $BUILD_ROOT_DIR/$OE_LAYER_NAME "$OE_LAYER_PATCH_LIST"
echo -e "\033[32;1mOK ...\033[0m\n"
clone_meta '' master $OE_CORE_LAYER_GIT_URL '' $BUILD_ROOT_DIR/$OE_CORE_LAYER_NAME
echo -e "\033[32;1mOK ...\033[0m\n"
# clone required branch for meta-python2
clone_meta '' $COMPATIBLE_BRANCH $PYTHON2_LAYER_GIT_URL $PYTHON2_BRANCH_HASH $BUILD_ROOT_DIR/$PYTHON2_LAYER_NAME "$PYTHON2_PATCH_LIST"
echo -e "\033[32;1mOK ...\033[0m\n"
# clone required branch for meta-qt5
clone_meta '' $COMPATIBLE_BRANCH $QT5_LAYER_GIT_URL '' $BUILD_ROOT_DIR/$QT5_LAYER_NAME
echo -e "\033[32;1mOK ...\033[0m\n"
# clone/update required branch from meta-neutrino
clone_meta '' $COMPATIBLE_BRANCH $TUXBOX_LAYER_GIT_URL/$TUXBOX_LAYER_NAME '' $BUILD_ROOT_DIR/$TUXBOX_LAYER_NAME
echo -e "\033[32;1mOK ...\033[0m\n"
# gfutures
if [ "$MACHINE" == "all" ] || [ $(is_required_machine_layer "' $MACHINES_GFUTURES '") == true ]; then if [ "$MACHINE" == "all" ] || [ $(is_required_machine_layer "' $MACHINES_GFUTURES '") == true ]; then
# gfutures # gfutures
clone_meta '' $COMPATIBLE_BRANCH $GFUTURES_LAYER_GIT_URL '' $BUILD_ROOT_DIR/$GFUTURES_LAYER_NAME fetch_meta "" $GFUTURES_LAYER_BRANCH $GFUTURES_LAYER_GIT_URL "$GFUTURES_LAYER_SRCREV" $BUILD_ROOT_DIR/$GFUTURES_LAYER_NAME
echo -e "\033[32;1mOK ...\033[0m\n"
fi fi
# airdigital
if [ "$MACHINE" == "all" ] || [ $(is_required_machine_layer "' $MACHINES_AIRDIGITAL '") == true ]; then # fetch required branch from meta-ceryon
clone_meta '' $COMPATIBLE_BRANCH $AIRDIGITAL_LAYER_GIT_URL '' $BUILD_ROOT_DIR/$AIRDIGITAL_LAYER_NAME CERYON_LAYER_NAME=meta-ceryon
echo -e "\033[32;1mOK ...\033[0m\n" CERYON_LAYER_BRANCH="master"
fi CERYON_LAYER_SRCREV="4a02145fc4c233b64f6110d166c46b59ebe73371"
# edision CERYON_LAYER_GIT_URL="$PROJECT_URL/$CERYON_LAYER_NAME.git"
if [ "$MACHINE" == "all" ] || [ $(is_required_machine_layer "' $MACHINES_EDISION '") == true ]; then
clone_meta '' $COMPATIBLE_BRANCH $EDISION_LAYER_GIT_URL '' $BUILD_ROOT_DIR/$EDISION_LAYER_NAME
echo -e "\033[32;1mOK ...\033[0m\n"
fi
# hisilicon #TODO: move into gfutures
if [ "$MACHINE" == "all" ] || [ $(is_required_machine_layer "' $MACHINES_HISI '") == true; then
clone_meta '' $COMPATIBLE_BRANCH $HISI_LAYER_GIT_URL '' $BUILD_ROOT_DIR/$HISI_LAYER_NAME
echo -e "\033[32;1mOK ...\033[0m\n"
fi
# ceryon
if [ "$MACHINE" == "all" ] || [ $(is_required_machine_layer "' $MACHINES_CERYON '") == true ]; then if [ "$MACHINE" == "all" ] || [ $(is_required_machine_layer "' $MACHINES_CERYON '") == true ]; then
clone_meta '' $COMPATIBLE_BRANCH $CERYON_LAYER_GIT_URL '' $BUILD_ROOT_DIR/$CERYON_LAYER_NAME fetch_meta "" $CERYON_LAYER_BRANCH $CERYON_LAYER_GIT_URL "$CERYON_LAYER_SRCREV" $BUILD_ROOT_DIR/$CERYON_LAYER_NAME
echo -e "\033[32;1mOK ...\033[0m\n"
fi fi
# fetch required branch from meta-hisilicon #TODO: move into gfutures
HISI_LAYER_NAME=meta-hisilicon #TODO: move into gfutures
HISI_LAYER_BRANCH="master"
HISI_LAYER_SRCREV="e85e1781704d96f5dfa0c554cf81d24c147d888c"
HISI_LAYER_GIT_URL="$PROJECT_URL/$HISI_LAYER_NAME.git"
if [ "$MACHINE" == "all" ] || [ $(is_required_machine_layer "' $MACHINES_HISI '") == true; then
fetch_meta "" $HISI_LAYER_BRANCH $HISI_LAYER_GIT_URL "$HISI_LAYER_SRCREV" $BUILD_ROOT_DIR/$HISI_LAYER_NAME
fi
# create included config file from sample file # fetch required branch from meta-edision
EDISION_LAYER_NAME=meta-edision
EDISION_LAYER_BRANCH="master"
EDISION_LAYER_SRCREV="1b2c422d9218e86ca1cd9d20431d42e716b1d714"
EDISION_LAYER_GIT_URL="$PROJECT_URL/$EDISION_LAYER_NAME.git"
if [ "$MACHINE" == "all" ] || [ $(is_required_machine_layer "' $MACHINES_EDISION '") == true ]; then
fetch_meta '' $EDISION_LAYER_BRANCH $EDISION_LAYER_GIT_URL "$EDISION_LAYER_SRCREV" $BUILD_ROOT_DIR/$EDISION_LAYER_NAME
fi
## Configure buildsystem
# Create included config file from sample file
if test ! -f $BASEPATH/local.conf.common.inc; then if test ! -f $BASEPATH/local.conf.common.inc; then
echo -e "\033[37;1mCONFIG:\033[0m\tcreate $BASEPATH/local.conf.common.inc as include file for layer configuration ..." my_echo "\033[37;1mCONFIG:\033[0mCreate $BASEPATH/local.conf.common.inc as include file for local layer configuration ..."
do_exec "cp -v $BASEPATH/local.conf.common.inc.sample $BASEPATH/local.conf.common.inc" do_exec "cp -v $BASEPATH/local.conf.common.inc.sample $BASEPATH/local.conf.common.inc"
fi fi
# Create configuration for machine
# create configuration for machine my_echo "\033[37;1mCreate configurations ...\033[0m"
if [ "$MACHINE" == "all" ]; then if [ "$MACHINE" == "all" ]; then
for M in $MACHINES ; do for M in $MACHINES ; do
create_local_config $M; create_local_config $M;
done done
my_echo "\033[32;1mdone!\033[0m\n"
else else
create_local_config $MACHINE; create_local_config $MACHINE;
my_echo "\033[32;1mdone!\033[0m\n"
fi fi
## Create distribution structure
create_dist_tree; create_dist_tree;
echo -e "\033[37;1mNOTE:\033[0m" ## check and create distribution directory inside httpd directory for online update
if test ! -L $HTTPD_DIST_DIR; then
# check and create distribution directory inside html directory for online update my_echo "\033[37;1mLocal setup for package online update.\033[0m"
if test ! -L /var/www/html/dist; then my_echo "------------------------------------------------------------------------------------------------"
echo -e "\033[37;1m\tLocal setup for package online update.\033[0m" my_echo "The httpd directory $HTTPD_DIST_DIR doesn't exists."
echo -e "\t############################################################################################" my_echo "If you want to use online update, please configure your webserver and use dist content"
echo -e "\t/var/www/html/dist doesn't exists." my_echo ""
echo -e "\tIf you want to use online update, please configure your webserver and use dist content" my_echo "An easy way is to create a symlink to dist directory:"
echo -e "\t" my_echo ""
echo -e "\tAn easy way is to create a symlink to dist directory:" my_echo "\033[37;1m\tsudo ln -s $BASEPATH/dist $HTTPD_DIST_DIR\033[0m"
echo -e "\t"
echo -e "\t\t\033[37;1msudo ln -s $BASEPATH/dist /var/www/html/dist\033[0m"
fi fi
echo -e "\t"
echo -e "\033[37;1m\tLocal environment setup\033[0m"
echo -e "\t############################################################################################"
echo -e "\t$BASEPATH/local.conf.common.inc was created by the 1st call of $0 from"
echo -e "\t$BASEPATH/local.conf.common.inc.sample"
echo -e "\tIf this file already exists nothing was changed on this file for your configuration."
echo -e "\tYou should check $BASEPATH/local.conf.common.inc and modify this file if required."
echo -e "\t"
echo -e "\tUnlike here: Please check this files for modifications or upgrades:"
echo -e "\t"
echo -e "\t\t\033[37;1m$BUILD_ROOT/<machine>/bblayer.conf\033[0m"
echo -e "\t\t\033[37;1m$BUILD_ROOT/<machine>/local.conf\033[0m"
# echo -e "\t############################################################################################"
echo -e "\t"
echo -e "\033[37;1m\tStart build\033[0m"
echo -e "\t############################################################################################"
echo -e "\tNow you are ready to build your own images and packages."
echo -e "\tSelectable machines are:"
echo -e "\t"
echo -e "\t\t\033[37;1m$MACHINES\033[0m"
echo -e "\t"
echo -e "\t Select your favorite machine (or identical) and the next steps are:\033[37;1m"
echo -e "\t"
echo -e "\t\tcd $BUILD_ROOT_DIR"
echo -e "\t\t. ./oe-init-build-env build/<machine>"
echo -e "\t\tbitbake neutrino-image"
echo -e "\t\033[0m"
echo -e "\t" ## Show results
echo -e "\033[37;1m\tUpdating meta-layers\033[0m" my_echo "\033[32;1m\nSummary:\033[0m"
echo -e "\t############################################################################################" my_echo "\033[32;1m------------------------------------------------------------------------------------------------\033[0m"
echo -e "\tExecute init script again." my_echo ""
echo -e "\t" my_echo "\033[37;1mLocal environment setup was created\033[0m"
echo -e "\tFor more informations and next steps take a look at the README.md!" my_echo "------------------------------------------------------------------------------------------------"
echo -e "\t" my_echo "On 1st call of $0 Your config was created at this file from the template sample file"
echo -e "\033[32;1mDONE!\033[0m" my_echo ""
my_echo "\033[37;1m\t$BASEPATH/local.conf.common.inc\033[0m"
my_echo ""
my_echo "If this file has already exists some entries could be migrated or added on this file."
my_echo "You should check $BASEPATH/local.conf.common.inc and modify it if required."
my_echo ""
my_echo "Unlike here: Please check this files for modifications or upgrades:"
my_echo ""
my_echo "\033[37;1m\t$BUILD_ROOT/<machine>/bblayer.conf\033[0m"
my_echo "\033[37;1m\t$BUILD_ROOT/<machine>/local.conf\033[0m"
my_echo ""
my_echo "\033[37;1mStart build\033[0m"
my_echo "------------------------------------------------------------------------------------------------"
my_echo "Now you are ready to build your own images and packages."
my_echo "Selectable machines are:"
my_echo ""
my_echo "\033[37;1m\t$MACHINES\033[0m"
my_echo ""
my_echo "Select your favorite machine (or identical) and the next steps are:\033[37;1m"
my_echo ""
my_echo "\tcd $BUILD_ROOT_DIR"
my_echo "\t. ./oe-init-build-env build/<machine>"
my_echo "\tbitbake neutrino-image"
my_echo "\033[0m"
my_echo ""
my_echo "\033[37;1mUpdating build evironment and meta-layers\033[0m"
my_echo "------------------------------------------------------------------------------------------------"
my_echo ""
my_echo "\033[37;1m\texecute: $USER_CALL\033[0m \033[32;1m--update\033[0m"
my_echo ""
my_echo "------------------------------------------------------------------------------------------------"
my_echo "For more informations and next steps take a look at the README.md!"
my_echo "\033[32;1mDONE!\033[0m"
exit 0 exit 0