Browse Source

Add backup functionality on toolchain selection menu

pull/8/head
WXbet 5 years ago
parent
commit
babf077799
  1. 73
      support/functions/_plugin_update_toolchain

73
support/functions/_plugin_update_toolchain

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
#simplebuild_plugin tcupdate 0.2.0 #simplebuild_plugin tcupdate 0.3.0
tcupdate(){ tcupdate(){
clear; clear;
@ -21,22 +21,19 @@ tcupdate(){
fi; fi;
fi; fi;
out=$( out=$(
"$gui" "$st_" "$bt_" "$title_" "--cancel-label" "EXIT" "--help-button" "--help-label" "INFO" "--title" "-[ Toolchain $txt_menu ]-" --menu "\nChoose on of the installed toolchains you want to update:\n " "${COUNT+10}" 0 0 ${MENU_OPTIONS}); "$gui" "$st_" "$bt_" "$title_" "--default-item" "$3" "--cancel-label" "EXIT" "--help-button" "--help-label" "BACKUP" "--title" "-[ Toolchain $txt_menu ]-" --menu "\nChoose on of the installed toolchains you want to update:\n " "${COUNT+10}" 0 0 ${MENU_OPTIONS});
IFS=$OIFS; IFS=$OIFS;
[ "$out" == "" ] && bye; [ "$out" == "" ] && bye;
first=$(echo "$out" | awk '{printf $1}'); first=$(echo "$out" | awk '{printf $1}');
tc_info=$(echo "$out" | awk '{printf $2}';); tc_info=$(echo "$out" | awk '{printf $2}';);
case $first in case $first in
HELP) HELP)
if [ -f "$tccfgdir/$tc_info" ];then _toolchain_repair "$(_backup "$tc_info")";
source "$tccfgdir/$tc_info"; tcupdate "" "0" "$tc_info";;
"$gui" "$st_" "$nc_" "$bt_" "$title_" "--msgbox" "$_tc_info" $((_tc_infolines + 5)) 65;
fi;
tcupdate;;
*) *)
tc="$first"; tc="$first";
tc_menu="1"; tc_menu="1";;
esac; esac;
else else
tc="$1" tc="$1"
@ -56,6 +53,7 @@ tcupdate(){
cd "$tcdir/$tc/bin"; cd "$tcdir/$tc/bin";
else else
echo -e "$r_l $txt_error:$y_l $tc$w_l Toolchain $txt_n_installed""$rs_"; echo -e "$r_l $txt_error:$y_l $tc$w_l Toolchain $txt_n_installed""$rs_";
[ "$1" == "" ] && sleep 2 && tcupdate "" "0" "$tc";
_nl; _nl;
exit; exit;
fi; fi;
@ -112,7 +110,7 @@ tcupdate(){
libs+=("(${lib[*]@Q})"); libs+=("(${lib[*]@Q})");
done; done;
opts=$("$gui" "--item-help" "--help-tags" "$st_" "$bt_" "$title_" "--help-button" "--help-label" "INFO" "--cancel-label" "$([ "$tc_menu" == "1" ] && echo "BACK" || echo "EXIT")" --title "-[ Library Update for Toolchain $tc ]-" "$cl_"\ opts=$("$gui" "--item-help" "--help-tags" "$st_" "$bt_" "$title_" "--default-item" "$3" "--help-button" "--help-label" "INFO" "--cancel-label" "$([ "$tc_menu" == "1" ] && echo "BACK" || echo "EXIT")" --title "-[ Library Update for Toolchain $tc ]-" "$cl_"\
"\nSelect all libraries to update in toolchain's SYSROOT folder:\n$prefixdir\n\n library version NEW CURRENT" \ "\nSelect all libraries to update in toolchain's SYSROOT folder:\n$prefixdir\n\n library version NEW CURRENT" \
"${COUNT+12}" 70 0 "${MENU_OPTIONS[@]}"); "${COUNT+12}" 70 0 "${MENU_OPTIONS[@]}");
@ -124,14 +122,14 @@ tcupdate(){
libkey=$(echo "$opts" | awk '{printf $2}';); libkey=$(echo "$opts" | awk '{printf $2}';);
if [ "$first" == "HELP" ];then if [ "$first" == "HELP" ];then
sp=$(printf '%*s' 90 | tr ' ' '=') sp=$(printf '%*s' 90 | tr ' ' '=');
txt=$(cat "$configname" | grep ""$libkey"=\|"$libkey"_"); txt=$(cat "$configname" | grep ""$libkey"=\|"$libkey"_");
bcd=$(cat "$configname" | grep ""$libkey"_tasks"); bcd=$(cat "$configname" | grep ""$libkey"_tasks");
txt=$(echo -e "Toolchain: $tcdir/$tc\nCompiler: $compilername\nSysroot: $sr\nPrefix: $prefixdir\n$sp\n\nLibrary configuration:\n$txt\n\nBuild command:\n$(_replace_tokens "$(_tidy_tasks "$bcd" "$libkey")")") txt=$(echo -e "Toolchain: $tcdir/$tc\nCompiler: $compilername\nSysroot: $sr\nPrefix: $prefixdir\n$sp\n\nLibrary configuration:\n$txt\n\nBuild command:\n$(_replace_tokens "$(_tidy_tasks "$bcd" "$libkey")")");
tempfile=$(mktemp) && echo -e "$txt" > "$tempfile" tempfile=$(mktemp) && echo -e "$txt" > "$tempfile";
"$gui" "$st_" "$nc_" "$bt_" "$title_" "--textbox" "$tempfile" 30 80; "$gui" "$st_" "$nc_" "$bt_" "$title_" "--textbox" "$tempfile" 30 80;
rm "$tempfile" 2>/dev/null; rm "$tempfile" 2>/dev/null;
tcupdate $tc $tc_menu; tcupdate $tc $tc_menu $libkey;
fi; fi;
#BUILD section #BUILD section
@ -156,13 +154,56 @@ tcupdate(){
#Reopen update menu #Reopen update menu
if [ ${#opts} -gt 0 ];then if [ ${#opts} -gt 0 ];then
tcupdate $tc; tcupdate $tc $tc_menu $libkey;
else else
[ "$tc_menu" == "1" ] && tcupdate; [ "$tc_menu" == "1" ] && tcupdate "" "0" "$tc";
fi; fi;
bye; bye;
}; };
_backup(){
_sz; # Prepare DIALOG settings
nr=$(( $RANDOM % 100 ));
newtc="$1-$nr";
newtccfgfile="$tccfgdir/$newtc";
xzfile="$dldir/Toolchain-$newtc.tar.xz";
(
#generate xz-file
XZ_OPT=-e9 tar -cvJf "$xzfile" -C "$tcdir/$1" .
#create new toolchains.cfg file
cp "$tccfgdir/$1" "$newtccfgfile";
if [ -f "$newtccfgfile" ];then
#autodetect toolchain's sysroot folder
source "$newtccfgfile";
cd "$tcdir/$1/bin";
compilername="$_compiler""gcc";compilername=$(realpath $compilername);
sr=$("$compilername" -print-sysroot 2>/dev/null);
sr=$(realpath -sm "$sr");
sysroot=${sr#"$tcdir/$1/"};
#update toolchains.cfg file
#_toolchainname
sed -i "s#.*_toolchainname=.*#_toolchainname=\"$newtc\";#g" "$newtccfgfile";
#_description
sed -i "s#.*_description=.*#_description=\"$_description\";#g" "$newtccfgfile";
#_sysroot
sed -i "s#.*_sysroot=.*#_sysroot=\"$sysroot\";#g" "$newtccfgfile";
#_toolchainfilename
encfile=$(echo -en "$(basename "${xzfile%..*}")" | base64);
sed -i "s#.*_toolchainfilename=.*#_toolchainfilename=\"$encfile\";#g" "$newtccfgfile";
#_md5sum
cd "$dldir" && md5hash="$(md5sum $(basename "${xzfile%..*}"))";
sed -i "s#.*_md5sum=.*#_md5sum=\"$md5hash\";#g" "$newtccfgfile";
"$gui" "$st_" "$nc_" "$bt_" "$title_" "--textbox" "$newtccfgfile" 30 80;
fi;
) | "$gui" "$st_" --colors --title " -[ Backup $1 to $newtc ... ]- " "$pb_" "$_lines" "$_cols";
[ -f "$newtccfgfile" ] && echo "$newtc";
};
_build(){ _build(){
_sz; # Prepare DIALOG settings _sz; # Prepare DIALOG settings

Loading…
Cancel
Save