You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							416 lines
						
					
					
						
							9.0 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							416 lines
						
					
					
						
							9.0 KiB
						
					
					
				
								#!/bin/bash
							 | 
						|
								
							 | 
						|
								VERSIONCOUNTER=313
							 | 
						|
								SIMPLEVERSION="-NEXT-"
							 | 
						|
								OIFS=$IFS
							 | 
						|
								export NCURSES_NO_UTF8_ACS=1
							 | 
						|
								
							 | 
						|
								here_=$(pwd)
							 | 
						|
								realdir=$(readlink -f $0)
							 | 
						|
								cd "$(dirname $realdir)"
							 | 
						|
								
							 | 
						|
								#set dir_vars
							 | 
						|
								workdir="$(pwd)"
							 | 
						|
								 bindir="$sdir/upx"
							 | 
						|
								   PATH="$bindir:$PATH"
							 | 
						|
								   sdir="$workdir/support"
							 | 
						|
								
							 | 
						|
								    osdir="$sdir/os"
							 | 
						|
								     ldir="$sdir/logs"
							 | 
						|
								     adir="$sdir/archive"
							 | 
						|
								configdir="$sdir/configs"
							 | 
						|
								     pdir="$sdir/patches"
							 | 
						|
								  profdir="$sdir/profiles"
							 | 
						|
								     bdir="$sdir/binaries"
							 | 
						|
								    sodir="$sdir/software"
							 | 
						|
								    dldir="$sdir/downloads"
							 | 
						|
								     fdir="$sdir/functions"
							 | 
						|
								  menudir="$sdir/menu_save"
							 | 
						|
								     bsvn="$sdir/backup_svn"
							 | 
						|
								    tcdir="$sdir/toolchains"
							 | 
						|
								     tdir="$sdir/translation"
							 | 
						|
								   svndir="$workdir/oscam-svn"
							 | 
						|
								 tccfgdir="$sdir/toolchains.cfg"
							 | 
						|
								
							 | 
						|
								# create folders
							 | 
						|
								mkdir -p "$tcdir/native/bin" 2>/dev/null
							 | 
						|
								mkdir -p support/{archive,binaries,downloads,software,logs,patches,backup_svn,menu_save,upx} 2>/dev/null
							 | 
						|
								
							 | 
						|
								# create links
							 | 
						|
								[ ! -d "$ldir" ] && clear && echo -e "\n folder creation error\n\n" && exit
							 | 
						|
								[ -L "$workdir/logs" ]     || ln -sf "$ldir" "$workdir/logs"     2>/dev/null
							 | 
						|
								[ -L "$workdir/archive" ]  || ln -sf "$adir" "$workdir/archive"  2>/dev/null
							 | 
						|
								[ -L "$workdir/patches" ]  || ln -sf "$pdir" "$workdir/patches"  2>/dev/null
							 | 
						|
								[ -L "$workdir/binaries" ] || ln -sf "$bdir" "$workdir/binaries" 2>/dev/null
							 | 
						|
								[ -L "$workdir/software" ] || ln -sf "$sodir" "$workdir/software" 2>/dev/null
							 | 
						|
								[ -L "$workdir/profiles" ] || ln -sf "$profdir" "$workdir/profiles" 2>/dev/null
							 | 
						|
								
							 | 
						|
								#set arrays
							 | 
						|
								array_names_a=( SHORT_PROTOCOLS SHORT_READERS SHORT_CARD_READERS AVAI_TCLIST
							 | 
						|
										MISS_TCLIST SHORT_ADDONS DISABLED_MODULES SHORT_MODULENAMES
							 | 
						|
										ALL_MODULES_LONG  ENABLED_MODULES INST_TCLIST SSH_CONF_CONTENT )
							 | 
						|
								array_names_A=( INTERNAL_MODULES USE_vars USE_vars_disable s3cfg_vars )
							 | 
						|
								
							 | 
						|
								for a_n in "${array_names_a[@]}"
							 | 
						|
								do
							 | 
						|
									unset $a_n
							 | 
						|
									declare -a $a_n
							 | 
						|
								done
							 | 
						|
								
							 | 
						|
								for a_n in "${array_names_A[@]}"
							 | 
						|
								do
							 | 
						|
									unset $a_n
							 | 
						|
									declare -A $a_n
							 | 
						|
								done
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								USE_vars[USE_DIAG]=;
							 | 
						|
								USE_vars[USE_TARGZ]=;
							 | 
						|
								USE_vars[USE_PATCH]=;
							 | 
						|
								USE_vars[USE_STAPI]=;
							 | 
						|
								USE_vars[USE_STAPI5]=;
							 | 
						|
								USE_vars[USE_CONFDIR]=;
							 | 
						|
								USE_vars[USE_COMPRESS]=;
							 | 
						|
								USE_vars[USE_OSCAMNAME]=;
							 | 
						|
								
							 | 
						|
								s3cfg_vars[USE_TARGZ]=0
							 | 
						|
								s3cfg_vars[DIRECTMENU]=0
							 | 
						|
								s3cfg_vars[USE_VERBOSE]=0
							 | 
						|
								s3cfg_vars[USE_COMPRESS]=0
							 | 
						|
								s3cfg_vars[S3_UPDATE_CHECK]=1
							 | 
						|
								s3cfg_vars[SAVE_LISTSMARGO]=1
							 | 
						|
								s3cfg_vars[ADD_PROFILE_NAME]=0
							 | 
						|
								s3cfg_vars[NO_SVN_AUTOUPDATE]=0
							 | 
						|
								s3cfg_vars[delete_oscamdebugbinary]=1
							 | 
						|
								
							 | 
						|
								#filled arrays
							 | 
						|
								config_cases=( all addons protocols readers card_readers );
							 | 
						|
								s3opts=( cedit checkout clean enable_emu fix_me get_patch help lang_select loadonly\
							 | 
						|
									menu profiles ssh_profiles svnpatch svnrestore svnup syscheck sysinfo tccheck\
							 | 
						|
									tcrepair tedit update update_emu update_me upload ) # extendable with plugins
							 | 
						|
								
							 | 
						|
								CUSTOM_CONFDIR="not_set"
							 | 
						|
								pf_name="not_set"
							 | 
						|
								UPX="not_set"
							 | 
						|
								
							 | 
						|
								#internal vars
							 | 
						|
								OPENBOX=0
							 | 
						|
								UFS916003=0
							 | 
						|
								_t1e="VG9vbGNoYWluLQ=="
							 | 
						|
								_u1e="aHR0cHM6Ly9maWxlcy5zdHJlYW1ib2FyZC50di90b29sY2hhaW5zLw=="
							 | 
						|
								
							 | 
						|
								run="0"
							 | 
						|
								cposx=0
							 | 
						|
								cposy=0
							 | 
						|
								on="_on"
							 | 
						|
								off="_off"
							 | 
						|
								pf="empty"
							 | 
						|
								_verbose=""
							 | 
						|
								menucall="no"
							 | 
						|
								file_exist="0"
							 | 
						|
								loadprofile="no"
							 | 
						|
								s3cfg="$configdir/simplebuild.config"
							 | 
						|
								
							 | 
						|
								# Compiler settings
							 | 
						|
								cc_warn="-W -Wall -Wshadow -Wredundant-decls -Wstrict-prototypes -Wold-style-definition"
							 | 
						|
								cc_opts="-ggdb -pipe -ffunction-sections -fdata-sections -o nodeadcode"
							 | 
						|
								#optimized compiling options
							 | 
						|
								#cc_opts="-ggdb -pipe -ffunction-sections -fdata-sections -o nodeadcode -ffast-math -fomit-frame-pointer -fthread-jumps -foptimize-strlen --no-inline"
							 | 
						|
								
							 | 
						|
								#default url
							 | 
						|
								trunkurl="https://svn.streamboard.tv/oscam/trunk"
							 | 
						|
								
							 | 
						|
								[ -f "$workdir/oscamsource.url" ] && source "$workdir/oscamsource.url"
							 | 
						|
								
							 | 
						|
								#load translationlist
							 | 
						|
								cd "$tdir"
							 | 
						|
								langsupport=(*)
							 | 
						|
								
							 | 
						|
								#load functions and plugins
							 | 
						|
								if [ -d "$fdir" ]
							 | 
						|
								then
							 | 
						|
									cd "$fdir"
							 | 
						|
									x=(*)
							 | 
						|
									for i in "${x[@]}"
							 | 
						|
									do
							 | 
						|
										source "$i"
							 | 
						|
										plugin=$(awk '/^#simplebuild_plugin/ {printf $2}' $i)
							 | 
						|
										[ -z "$plugin" ] || s3opts+=($plugin)
							 | 
						|
									done
							 | 
						|
								else
							 | 
						|
									echo "fail functions"
							 | 
						|
								fi
							 | 
						|
								
							 | 
						|
								#software build support
							 | 
						|
								if [ -d "$sodir" ]
							 | 
						|
								then
							 | 
						|
									cd "$sodir"
							 | 
						|
									x=(*)
							 | 
						|
									for i in "${x[@]}"
							 | 
						|
									do
							 | 
						|
									    if [ -f "$i" ]; then
							 | 
						|
										source "$i"
							 | 
						|
										plugin=$(awk '/^#simplebuild_plugin/ {printf $2}' $i)
							 | 
						|
										[ -z "$plugin" ] || s3opts+=($plugin)
							 | 
						|
									    fi
							 | 
						|
									done
							 | 
						|
								fi
							 | 
						|
								
							 | 
						|
								#initialize simplebuild
							 | 
						|
								initializeANSI	# load colors
							 | 
						|
								auto_langset	# echo "info $txt_load_ok";
							 | 
						|
								
							 | 
						|
								# check system #########################################################
							 | 
						|
								syscheck
							 | 
						|
								[ ! "$sanity" == "1" ] && echo "sanity fail" && sleep 5 && bye
							 | 
						|
								########################################################################
							 | 
						|
								
							 | 
						|
								_create_native_profile	# put native datas to toolchains and configs
							 | 
						|
								_get_config_con "$1"	# echo $addons;exit;
							 | 
						|
								_create_module_arrays	# fill module arrays
							 | 
						|
								_fill_tc_array		# get # AVAI_TCLIST # INST_TCLIST # MISS_TCLIST
							 | 
						|
								read_s3cfg		# read simplebuild config
							 | 
						|
								_set_dialog_types	# fill $gui vars
							 | 
						|
								_systype		# check used uname
							 | 
						|
								
							 | 
						|
								if [ -z "$1" ]
							 | 
						|
								then
							 | 
						|
									[ "${s3cfg_vars[DIRECTMENU]}" == "1" ] && _dialog_checkout && exit
							 | 
						|
									_help
							 | 
						|
									exit
							 | 
						|
								
							 | 
						|
								else
							 | 
						|
									for e in "${s3opts[@]}"
							 | 
						|
									do
							 | 
						|
								
							 | 
						|
										if [ "$e" == "$1" ]
							 | 
						|
										then
							 | 
						|
								
							 | 
						|
											case $e in
							 | 
						|
								
							 | 
						|
											fix_me|checkout|update_me|update_emu|svnrestore|enable_emu|upload_cam)
							 | 
						|
												if [ ! -n "$2" ]
							 | 
						|
												then
							 | 
						|
													eval "$e"
							 | 
						|
												else
							 | 
						|
													eval "$e" "$2"
							 | 
						|
												fi
							 | 
						|
												exit;;
							 | 
						|
								
							 | 
						|
											menu)
							 | 
						|
												if [ ! -n "$2" ]
							 | 
						|
												then
							 | 
						|
													_dialog_checkout
							 | 
						|
												else
							 | 
						|
													_dialog_checkout "$2"
							 | 
						|
												fi;;
							 | 
						|
								
							 | 
						|
											loadonly)
							 | 
						|
												if [ ! -n "$2" ]
							 | 
						|
												then
							 | 
						|
													_nl
							 | 
						|
													clear
							 | 
						|
													s3logo
							 | 
						|
													echo -e "$r_l\n  $txt_error: toolchain $txt_parameter $txt_missing\n""$w_l"
							 | 
						|
													_help_toolchain
							 | 
						|
													sleep 2
							 | 
						|
													exit
							 | 
						|
												else
							 | 
						|
													for t in "${AVAI_TCLIST[@]}"
							 | 
						|
													do
							 | 
						|
														_tmp="$2"
							 | 
						|
														[ "$t" == "$2" ] && _load_toolchain "$2" && break
							 | 
						|
													done
							 | 
						|
													if [ -f "$tc_dl" ]
							 | 
						|
													then
							 | 
						|
														echo -e "$p_l\n\n  toolchain for $_tmp loaded\n"
							 | 
						|
													else
							 | 
						|
														_nl
							 | 
						|
														clear
							 | 
						|
														s3logo
							 | 
						|
														printf "$r_l  toolchain missing/error\n"
							 | 
						|
													fi
							 | 
						|
													exit
							 | 
						|
												fi;;
							 | 
						|
								
							 | 
						|
											tccheck)
							 | 
						|
												if [ ! -n "$2" ]
							 | 
						|
												then
							 | 
						|
													_nl
							 | 
						|
													clear
							 | 
						|
													s3logo
							 | 
						|
													printf "$r_l\n  $txt_error: toolchain $txt_parameter $txt_missing\n""$w_l"
							 | 
						|
													_help_toolchain
							 | 
						|
													printf "$W"
							 | 
						|
													sleep 2
							 | 
						|
													exit
							 | 
						|
												else
							 | 
						|
													for t in "${AVAI_TCLIST[@]}"
							 | 
						|
													do
							 | 
						|
														[ "$t" == "$2" ] && _toolchain_check "$2" && break
							 | 
						|
													done
							 | 
						|
													_nl
							 | 
						|
													clear
							 | 
						|
													s3logo
							 | 
						|
													printf "$r_l\n  toolchain missing/error\n$w_l"
							 | 
						|
													_help_toolchain
							 | 
						|
													echo -e "$W"
							 | 
						|
													sleep 2
							 | 
						|
													exit
							 | 
						|
												fi;;
							 | 
						|
								
							 | 
						|
											tcrepair)
							 | 
						|
												if [ ! -n "$2" ];then
							 | 
						|
													_nl
							 | 
						|
													clear
							 | 
						|
													s3logo
							 | 
						|
													printf "$r_l\n  $txt_error: toolchain $txt_parameter $txt_missing\n""$w_l"
							 | 
						|
													_help_toolchain
							 | 
						|
													printf "$W"
							 | 
						|
													sleep 2
							 | 
						|
													exit
							 | 
						|
												else
							 | 
						|
													_nl
							 | 
						|
													clear
							 | 
						|
													_toolchain_repair "$2"
							 | 
						|
													sleep 2
							 | 
						|
													exit
							 | 
						|
												fi;;
							 | 
						|
								
							 | 
						|
											upload)
							 | 
						|
												if [ ! -n "$2" ]
							 | 
						|
												then
							 | 
						|
													_nl
							 | 
						|
													clear
							 | 
						|
													s3logo
							 | 
						|
													echo -e "$r_l\n  $txt_error: $txt_parameter $txt_missing""$w_l"
							 | 
						|
													menucall="yes"
							 | 
						|
													ssh_profiles
							 | 
						|
												else
							 | 
						|
													upload_cam "$2"
							 | 
						|
												fi
							 | 
						|
												exit;;
							 | 
						|
								
							 | 
						|
											syscheck)
							 | 
						|
												syscheck silent $2
							 | 
						|
												exit;;
							 | 
						|
								
							 | 
						|
											tedit)
							 | 
						|
												if [ -n "$2" ]
							 | 
						|
												then
							 | 
						|
													for telement in ${INST_TCLIST[@]}
							 | 
						|
													do
							 | 
						|
														if [ "$telement" == "$2" ]
							 | 
						|
														then
							 | 
						|
															tedit $2
							 | 
						|
															exit
							 | 
						|
														fi
							 | 
						|
													done
							 | 
						|
													clear
							 | 
						|
													s3logo
							 | 
						|
													printf "$w_l\n  $2 toolchain not installed\n"$W
							 | 
						|
												fi
							 | 
						|
												exit;;
							 | 
						|
								
							 | 
						|
											help)
							 | 
						|
												_help
							 | 
						|
												exit;;
							 | 
						|
								
							 | 
						|
											*)
							 | 
						|
												shift && eval "$e" "$@"; #Remove the first command line argument and pass the remaining ones to the plugin
							 | 
						|
												exit;;
							 | 
						|
											esac
							 | 
						|
								
							 | 
						|
										fi
							 | 
						|
									done
							 | 
						|
								
							 | 
						|
									for t in "${AVAI_TCLIST[@]}"
							 | 
						|
									do
							 | 
						|
								
							 | 
						|
										if [ "$t" == "$1" ]
							 | 
						|
										then
							 | 
						|
										
							 | 
						|
											[ "${2:0:4}" == "here" ] && EXTRA_COPY_DIR=1 || EXTRA_COPY_DIR=0
							 | 
						|
								
							 | 
						|
											if [ "${2:0:3}" == "-p=" ] || [ "${2:0:3}" == "-P=" ]
							 | 
						|
											then
							 | 
						|
												if [ -f "$profdir/${2#*=}" ]
							 | 
						|
												then
							 | 
						|
													pf=$(cat "$profdir/${2#*=}")
							 | 
						|
													pf_name="${2#*=}"
							 | 
						|
												fi
							 | 
						|
											fi
							 | 
						|
								
							 | 
						|
											if [ "${3:0:3}" == "-p=" ] || [ "${3:0:3}" == "-P=" ]
							 | 
						|
											then
							 | 
						|
												if [ -f "$profdir/${2#*=}" ]
							 | 
						|
												then
							 | 
						|
													pf=$(cat "$profdir/${2#*=}")
							 | 
						|
													pf_name="${2#*=}"
							 | 
						|
												fi
							 | 
						|
											fi
							 | 
						|
								
							 | 
						|
											if [ "${2:0:5}" == "-upx=" ] || [ "${2:0:5}" == "-UPX=" ]
							 | 
						|
											then
							 | 
						|
												UPX=${2#*=};USE_vars[USE_COMPRESS]="USE_COMPRESS=1"
							 | 
						|
											fi
							 | 
						|
								
							 | 
						|
											if [ "${3:0:5}" == "-upx=" ] || [ "${3:0:5}" == "-UPX=" ]
							 | 
						|
											then
							 | 
						|
												UPX=${2#*=}
							 | 
						|
												USE_vars[USE_COMPRESS]="USE_COMPRESS=1"
							 | 
						|
											fi
							 | 
						|
								
							 | 
						|
											[ "$pf" == "empty" ] && c_m_d="$*" || c_m_d="all_off $pf $*"; # set only active module with profiles
							 | 
						|
											for cmd in $c_m_d
							 | 
						|
											do
							 | 
						|
								
							 | 
						|
												if [ "${cmd:0:3}" == "-c=" ] || [ "${cmd:0:3}" == "-C=" ]
							 | 
						|
												then
							 | 
						|
													CUSTOM_CONFDIR="${cmd#*=}"
							 | 
						|
												fi
							 | 
						|
								
							 | 
						|
												if [ "${cmd:0:11}" == "-oscamname=" ]
							 | 
						|
												then
							 | 
						|
													USE_vars[USE_OSCAMNAME]="USE_OSCAMNAME=${cmd#*=}"
							 | 
						|
												fi
							 | 
						|
								
							 | 
						|
												if [ "${cmd:0:5}" == "-upx=" ] || [ "${cmd:0:5}" == "-UPX=" ]
							 | 
						|
												then
							 | 
						|
													UPX="${cmd#*=}"
							 | 
						|
													USE_vars[USE_COMPRESS]="USE_COMPRESS=1"
							 | 
						|
												fi
							 | 
						|
								
							 | 
						|
												for cc in "${config_cases[@]}"
							 | 
						|
												do
							 | 
						|
													[ "$cmd" == "$cc$on" ]  && all_cc+=($cc$on) && break
							 | 
						|
													[ "$cmd" == "$cc$off" ] && all_cc+=($cc$off) && break
							 | 
						|
												done
							 | 
						|
								
							 | 
						|
												for sm in "${SHORT_MODULENAMES[@]}"
							 | 
						|
												do
							 | 
						|
													[ "$cmd" == "$sm" ]     && all_cc+=($(get_module_name "$sm")$on) && break
							 | 
						|
													[ "$cmd" == "$sm$off" ] && all_cc+=($(get_module_name "$sm")$off) && break
							 | 
						|
												done
							 | 
						|
								
							 | 
						|
												for uvar in "${!USE_vars[@]}"
							 | 
						|
												do
							 | 
						|
													[ "$cmd" == "$uvar" ]             && USE_vars[$uvar]="$uvar=1" && break
							 | 
						|
													[ "$cmd" == "$uvar$off" ] && USE_vars_disable[$uvar]="$uvar=1" && break
							 | 
						|
												done
							 | 
						|
								
							 | 
						|
												case $cmd in
							 | 
						|
													OPENBOX)  OPENBOX=1;;
							 | 
						|
													UFS916003) UFS916003=1;;
							 | 
						|
													USE_VERBOSE) s3cfg_vars[USE_VERBOSE]=1;;
							 | 
						|
												esac
							 | 
						|
								
							 | 
						|
											done
							 | 
						|
											_pre_build "$t"
							 | 
						|
											exit
							 | 
						|
										fi
							 | 
						|
								
							 | 
						|
									done
							 | 
						|
									_help
							 | 
						|
								fi
							 | 
						|
								exit
							 | 
						|
								
							 |