#!/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="aHR0cHM6Ly9maWxlcy5zdHJlYW1ib2FyZC50di90b29sY2hhaW5z" 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