diff --git a/s3 b/s3 new file mode 100644 index 0000000..37d2d84 --- /dev/null +++ b/s3 @@ -0,0 +1,266 @@ +#!/bin/bash + +#VERSIONCOUNTER 20190205 +SIMPLEVERSION="3.0 RC4";OIFS=$IFS; +export NCURSES_NO_UTF8_ACS=1; + +#set dir_vars + workdir="$(pwd)"; + svndir="$workdir/oscam-svn"; + sdir="$workdir/support"; + osdir="$sdir/os"; + ldir="$sdir/logs"; + adir="$sdir/archive"; +configdir="$sdir/configs"; + pdir="$sdir/patches"; + profdir="$sdir/profiles"; + bdir="$sdir/binaries"; + dldir="$sdir/downloads"; + fdir="$sdir/functions"; + menudir="$sdir/menu_save"; + bsvn="$sdir/backup_svn"; + tcdir="$sdir/toolchains"; + tdir="$sdir/translation"; + tccfgdir="$sdir/toolchains.cfg"; + bindir="$sdir/upx";PATH="$bindir:$PATH"; + +# create folders +mkdir -p support/{archive,binaries,configs,downloads,functions,logs,os,patches,profiles,toolchains,toolchains.cfg,translation,backup_svn,menu_save,upx} 2>/dev/null; +mkdir -p "$tcdir/native/bin" 2>/dev/null; + +# create links +[ ! -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; + +#set arrays +unset INTERNAL_MODULES; unset ENABLED_MODULES; unset SHORT_MODULENAMES; unset INST_TCLIST; +unset DISABLED_MODULES; unset AVAI_TCLIST; unset ALL_MODULES_LONG; unset MISS_TCLIST; +unset SHORT_PROTOCOLS; unset SHORT_READERS; unset SHORT_CARD_READERS; unset SHORT_ADDONS; +unset SSH_CONF_CONTENT; unset USE_vars; unset USE_vars_disable; + +declare -A USE_vars; +declare -A USE_vars_disable; +USE_vars[USE_TARGZ]=; +USE_vars[USE_PATCH]=; +USE_vars[USE_STAPI]=; +USE_vars[USE_STAPI5]=; +USE_vars[USE_CONFDIR]=; +USE_vars[USE_COMPRESS]=; + +declare -A s3cfg_vars; +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[NO_SVN_AUTOUPDATE]=0; +s3cfg_vars[delete_oscamdebugbinary]=1; + +declare -a ENABLED_MODULES; declare -a DISABLED_MODULES; declare -a SHORT_MODULENAMES; +declare -a ALL_MODULES_LONG; declare -a AVAI_TCLIST; declare -a INST_TCLIST; +declare -a MISS_TCLIST; declare -a SHORT_ADDONS; declare -a SHORT_PROTOCOLS; +declare -a SHORT_READERS; declare -a SHORT_CARD_READERS; declare -A INTERNAL_MODULES; + +#filled arrays +config_cases=( all addons protocols readers card_readers ); +s3opts=( help cedit clean tccheck tcrepair upload lang_select loadonly checkout ssh_profiles syscheck sysinfo svnup menu get_patch tedit svnpatch profiles svnrestore ); # extendable with plugins +CUSTOM_CONFDIR="not_set"; + +#internal vars +OPENBOX=0;UFS916003=0;_verbose=""; +_t1e="VG9vbGNoYWluLQ=="; +_u1e="aHR0cDovL3N0cmVhbWJvYXJkLnR2L3diYjIvdHV0LXBpY3MvdG9vbGNoYWlucw=="; +cposx=0;cposy=0;off="_off";on="_on";pf="empty";file_exist="0";run="0"; +s3cfg="$configdir/simplebuild.config";loadprofile="no";menucall="no"; +# Compiler settings +cc_warn="-W -Wall -Wshadow -Wredundant-decls -Wstrict-prototypes -Wold-style-definition"; +cc_opts="-ggdb -pipe -ffunction-sections -fdata-sections"; + +#default url +trunkurl="http://www.streamboard.tv/svn/oscam/trunk";[ -f "$workdir/oscamsource.url" ] && source "$workdir/oscamsource.url"; +#trunkurl="http://www.streamboard.tv/svn/oscam-addons/modern";[ -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; + +#begin +initializeANSI; #load colors + +#check system +syscheck;[ ! "$sanity" == "1" ] && echo "sanity fail" && sleep 5 && bye; + +#initialize simplebuild +_create_native_profile; # put native datas to toolchains and configs +auto_langset; # echo "info $txt_load_ok"; +_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 [ ! -n "$1" ];then + [ "${s3cfg_vars[DIRECTMENU]}" == "1" ] && _dialog_checkout && exit; + _help; + exit; +else + for e in "${s3opts[@]}";do + if [ "$e" == "$1" ];then + case $e in + svnrestore|\ + checkout|\ + 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; + echo -e "$r_l toolchain missing/error\n"; + fi; + exit; + fi;; + tccheck) if [ ! -n "$2" ];then + _nl; + clear; + s3logo; + echo -e "$r_l\n $txt_error: toolchain $txt_parameter $txt_missing\n""$w_l"; + _help_toolchain;echo -e "$W"; + sleep 2; + exit; + else + for t in "${AVAI_TCLIST[@]}";do + [ "$t" == "$2" ] && _toolchain_check "$2" && break; + done; + _nl; + clear; + s3logo; + echo -e "$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; + echo -e "$r_l\n $txt_error: toolchain $txt_parameter $txt_missing\n""$w_l"; + _help_toolchain;echo -e "$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;; + tedit) if [ -n "$2" ];then + for telement in ${INST_TCLIST[@]};do + if [ "$telement" == "$2" ];then + tedit $2; + exit; + fi; + done; + clear; + s3logo; + echo -e $w_l"\n $2 toolchain not installed\n"$W; + fi; + exit;; + help) _help; + exit;; + *) eval "$e" "$2"; + exit;; + esac; + fi; + done; + + for t in "${AVAI_TCLIST[@]}";do + if [ "$t" == "$1" ];then + if [ "${2:0:3}" == "-p=" ] || [ "${2:0:3}" == "-P=" ];then + if [ -f "$profdir/${2#*=}" ];then + pf=$(cat "$profdir/${2#*=}"); + pf_name="${2#*=}"; + fi; + 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; + 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; diff --git a/support/configs/Makefile.master b/support/configs/Makefile.master new file mode 100644 index 0000000..8ea5677 --- /dev/null +++ b/support/configs/Makefile.master @@ -0,0 +1,795 @@ +SHELL = /bin/sh + +.SUFFIXES: +.SUFFIXES: .o .c +.PHONY: all tests help README.build README.config simple default debug config menuconfig allyesconfig allnoconfig defconfig clean distclean + +VER := $(shell ./config.sh --oscam-version) +SVN_REV := $(shell ./config.sh --oscam-revision) + +uname_S := $(shell sh -c 'uname -s 2>/dev/null || echo not') + +# This let's us use uname_S tests to detect cygwin +ifneq (,$(findstring CYGWIN,$(uname_S))) + uname_S := Cygwin +endif + +LINKER_VER_OPT:=-Wl,--version + +# Find OSX SDK +ifeq ($(uname_S),Darwin) + # Setting OSX_VER allows you to choose prefered version if you have + # two SDKs installed. For example if you have 10.6 and 10.5 installed + # you can choose 10.5 by using 'make USE_PCSC=1 OSX_VER=10.5' + # './config.sh --detect-osx-sdk-version' returns the newest SDK if + # SDK_VER is not set. + OSX_SDK := $(shell ./config.sh --detect-osx-sdk-version $(OSX_VER)) + LINKER_VER_OPT:=-Wl,-v +endif + +ifeq "$(shell ./config.sh --enabled WITH_SSL)" "Y" + override USE_SSL=1 + override USE_LIBCRYPTO=1 +endif +ifdef USE_SSL + override USE_LIBCRYPTO=1 +endif + +CONF_DIR = /usr/local/etc + +LIB_PTHREAD = -lpthread +LIB_DL = -ldl + +LIB_RT := +ifeq ($(uname_S),Linux) + ifeq "$(shell ./config.sh --enabled CLOCKFIX)" "Y" + LIB_RT := -lrt + endif +endif +ifeq ($(uname_S),FreeBSD) + LIB_DL := +endif + +override STD_LIBS := -lm $(LIB_PTHREAD) $(LIB_DL) $(LIB_RT) +override STD_DEFS := -D'CS_SVN_VERSION="$(SVN_REV)"' +override STD_DEFS += -D'CS_CONFDIR="$(CONF_DIR)"' + +# Compiler warnings +CC_WARN = -W -Wall -Wshadow -Wredundant-decls -Wstrict-prototypes -Wold-style-definition + +# Compiler optimizations +CC_OPTS = -O2 -ggdb -pipe -ffunction-sections -fdata-sections + +CC = $(CROSS_DIR)$(CROSS)gcc +STRIP = $(CROSS_DIR)$(CROSS)strip + +LDFLAGS = -Wl,--gc-sections + +# The linker for powerpc have bug that prevents --gc-sections from working +# Check for the linker version and if it matches disable --gc-sections +# For more information about the bug see: +# http://cygwin.com/ml/binutils/2005-01/msg00103.html +# The LD output is saved into variable and then processed, because if +# the output is piped directly into another command LD creates 4 files +# in your /tmp directory and doesn't delete them. +LINKER_VER := $(shell set -e; VER="`$(CC) $(LINKER_VER_OPT) 2>&1`"; echo $$VER | head -1 | cut -d' ' -f5) + +# dm500 toolchain +ifeq "$(LINKER_VER)" "20040727" + LDFLAGS := +endif +# dm600/7000/7020 toolchain +ifeq "$(LINKER_VER)" "20041121" + LDFLAGS := +endif +# The OS X linker do not support --gc-sections +ifeq ($(uname_S),Darwin) + LDFLAGS := +endif + +# The compiler knows for what target it compiles, so use this information +TARGET := $(shell $(CC) -dumpmachine 2>/dev/null) + +# Process USE_ variables +DEFAULT_STAPI_LIB = -L./stapi -loscam_stapi +DEFAULT_STAPI5_LIB = -L./stapi -loscam_stapi5 +DEFAULT_COOLAPI_LIB = -lnxp -lrt +DEFAULT_COOLAPI2_LIB = -llnxUKAL -llnxcssUsr -llnxscsUsr -llnxnotifyqUsr -llnxplatUsr -lrt +DEFAULT_SU980_LIB = -lentropic -lrt +DEFAULT_AZBOX_LIB = -Lextapi/openxcas -lOpenXCASAPI +DEFAULT_LIBCRYPTO_LIB = -lcrypto +DEFAULT_SSL_LIB = -lssl +ifeq ($(uname_S),Linux) + DEFAULT_LIBUSB_LIB = -lusb-1.0 -lrt +else + DEFAULT_LIBUSB_LIB = -lusb-1.0 +endif +# Since FreeBSD 8 (released in 2010) they are using their own +# libusb that is API compatible to libusb but with different soname +ifeq ($(uname_S),FreeBSD) + DEFAULT_LIBUSB_LIB = -lusb +endif +ifeq ($(uname_S),Darwin) + DEFAULT_LIBUSB_FLAGS = -I/opt/local/include + DEFAULT_LIBUSB_LIB = -L/opt/local/lib -lusb-1.0 + DEFAULT_PCSC_FLAGS = -isysroot $(OSX_SDK) + DEFAULT_PCSC_LIB = -isysroot $(OSX_SDK) -framework IOKit -framework CoreFoundation -framework PCSC +else + # Get the compiler's last include PATHs. Basicaly it is /usr/include + # but in case of cross compilation it might be something else. + # + # Since using -Iinc_path instructs the compiler to use inc_path + # (without add the toolchain system root) we need to have this hack + # to get the "real" last include path. Why we needs this? + # Well, the PCSC headers are broken and rely on having the directory + # that they are installed it to be in the include PATH. + # + # We can't just use -I/usr/include/PCSC because it won't work in + # case of cross compilation. + TOOLCHAIN_INC_DIR := $(strip $(shell echo | $(CC) -Wp,-v -xc - -fsyntax-only 2>&1 | grep include$ | tail -n 1)) + DEFAULT_PCSC_FLAGS = -I$(TOOLCHAIN_INC_DIR)/PCSC -I$(TOOLCHAIN_INC_DIR)/../local/include/PCSC + DEFAULT_PCSC_LIB = -lpcsclite +endif + +ifeq ($(uname_S),Cygwin) + DEFAULT_PCSC_LIB += -lwinscard +endif + +DEFAULT_UTF8_FLAGS = -DWITH_UTF8 + +# Function to initialize USE related variables +# Usage: $(eval $(call prepare_use_flags,FLAG_NAME,PLUS_TARGET_TEXT)) +define prepare_use_flags +override DEFAULT_$(1)_FLAGS:=$$(strip -DWITH_$(1)=1 $$(DEFAULT_$(1)_FLAGS)) +ifdef USE_$(1) + $(1)_FLAGS:=$$(DEFAULT_$(1)_FLAGS) + $(1)_CFLAGS:=$$($(1)_FLAGS) + $(1)_LDFLAGS:=$$($(1)_FLAGS) + $(1)_LIB:=$$(DEFAULT_$(1)_LIB) + ifneq "$(2)" "" + override PLUS_TARGET:=$$(PLUS_TARGET)-$(2) + endif + override USE_CFLAGS+=$$($(1)_CFLAGS) + override USE_LDFLAGS+=$$($(1)_LDFLAGS) + override USE_LIBS+=$$($(1)_LIB) + override USE_FLAGS+=$$(if $$(USE_$(1)),USE_$(1)) + endif +endef + +# Initialize USE variables +$(eval $(call prepare_use_flags,STAPI,stapi)) +$(eval $(call prepare_use_flags,STAPI5,stapi5)) +$(eval $(call prepare_use_flags,COOLAPI,coolapi)) +$(eval $(call prepare_use_flags,COOLAPI2,coolapi2)) +$(eval $(call prepare_use_flags,SU980,su980)) +$(eval $(call prepare_use_flags,AZBOX,azbox)) +$(eval $(call prepare_use_flags,MCA,mca)) +$(eval $(call prepare_use_flags,SSL,ssl)) +$(eval $(call prepare_use_flags,LIBCRYPTO,)) +$(eval $(call prepare_use_flags,LIBUSB,libusb)) +$(eval $(call prepare_use_flags,PCSC,pcsc)) +$(eval $(call prepare_use_flags,UTF8)) + +# Add PLUS_TARGET and EXTRA_TARGET to TARGET +ifdef NO_PLUS_TARGET + override TARGET := $(TARGET)$(EXTRA_TARGET) +else + override TARGET := $(TARGET)$(PLUS_TARGET)$(EXTRA_TARGET) +endif + +EXTRA_CFLAGS = $(EXTRA_FLAGS) +EXTRA_LDFLAGS = $(EXTRA_FLAGS) + +# Add USE_xxx, EXTRA_xxx and STD_xxx vars +override CC_WARN += $(EXTRA_CC_WARN) +override CC_OPTS += $(EXTRA_CC_OPTS) +override CFLAGS += $(USE_CFLAGS) $(EXTRA_CFLAGS) +override LDFLAGS += $(USE_LDFLAGS) $(EXTRA_LDFLAGS) +override LIBS += $(USE_LIBS) $(EXTRA_LIBS) $(STD_LIBS) + +override STD_DEFS += -D'CS_TARGET="$(TARGET)"' + +# Setup quiet build +Q = +SAY = @true +ifndef V + Q = @ + NP = --no-print-directory + SAY = @echo +endif + +BINDIR := Distribution +override BUILD_DIR := build +OBJDIR := $(BUILD_DIR)/$(TARGET) + +# Include config.mak which contains variables for all enabled modules +# These variables will be used to select only needed files for compilation +-include $(OBJDIR)/config.mak + +OSCAM_BIN := $(BINDIR)/oscam-$(VER)$(SVN_REV)-$(subst cygwin,cygwin.exe,$(TARGET)) +TESTS_BIN := tests.bin +LIST_SMARGO_BIN := $(BINDIR)/list_smargo-$(VER)$(SVN_REV)-$(subst cygwin,cygwin.exe,$(TARGET)) + +# Build list_smargo-.... only when WITH_LIBUSB build is requested. +ifndef USE_LIBUSB + override LIST_SMARGO_BIN = +endif + +SRC-$(CONFIG_LIB_AES) += cscrypt/aes.c +SRC-$(CONFIG_LIB_BIGNUM) += cscrypt/bn_add.c +SRC-$(CONFIG_LIB_BIGNUM) += cscrypt/bn_asm.c +SRC-$(CONFIG_LIB_BIGNUM) += cscrypt/bn_ctx.c +SRC-$(CONFIG_LIB_BIGNUM) += cscrypt/bn_div.c +SRC-$(CONFIG_LIB_BIGNUM) += cscrypt/bn_exp.c +SRC-$(CONFIG_LIB_BIGNUM) += cscrypt/bn_lib.c +SRC-$(CONFIG_LIB_BIGNUM) += cscrypt/bn_mul.c +SRC-$(CONFIG_LIB_BIGNUM) += cscrypt/bn_print.c +SRC-$(CONFIG_LIB_BIGNUM) += cscrypt/bn_shift.c +SRC-$(CONFIG_LIB_BIGNUM) += cscrypt/bn_sqr.c +SRC-$(CONFIG_LIB_BIGNUM) += cscrypt/bn_word.c +SRC-$(CONFIG_LIB_BIGNUM) += cscrypt/mem.c +SRC-$(CONFIG_LIB_DES) += cscrypt/des.c +SRC-$(CONFIG_LIB_IDEA) += cscrypt/i_cbc.c +SRC-$(CONFIG_LIB_IDEA) += cscrypt/i_ecb.c +SRC-$(CONFIG_LIB_IDEA) += cscrypt/i_skey.c +SRC-y += cscrypt/md5.c +SRC-$(CONFIG_LIB_RC6) += cscrypt/rc6.c +SRC-$(CONFIG_LIB_SHA1) += cscrypt/sha1.c +SRC-$(CONFIG_LIB_MDC2) += cscrypt/mdc2.c +SRC-$(CONFIG_LIB_FAST_AES) += cscrypt/fast_aes.c +SRC-$(CONFIG_LIB_SHA256) += cscrypt/sha256.c + +SRC-$(CONFIG_WITH_CARDREADER) += csctapi/atr.c +SRC-$(CONFIG_WITH_CARDREADER) += csctapi/icc_async.c +SRC-$(CONFIG_WITH_CARDREADER) += csctapi/io_serial.c +SRC-$(CONFIG_WITH_CARDREADER) += csctapi/protocol_t0.c +SRC-$(CONFIG_WITH_CARDREADER) += csctapi/protocol_t1.c +SRC-$(CONFIG_CARDREADER_INTERNAL_AZBOX) += csctapi/ifd_azbox.c +SRC-$(CONFIG_CARDREADER_INTERNAL_COOLAPI) += csctapi/ifd_cool.c +SRC-$(CONFIG_CARDREADER_INTERNAL_COOLAPI2) += csctapi/ifd_cool.c +SRC-$(CONFIG_CARDREADER_DB2COM) += csctapi/ifd_db2com.c +SRC-$(CONFIG_CARDREADER_MP35) += csctapi/ifd_mp35.c +SRC-$(CONFIG_CARDREADER_PCSC) += csctapi/ifd_pcsc.c +SRC-$(CONFIG_CARDREADER_PHOENIX) += csctapi/ifd_phoenix.c +SRC-$(CONFIG_CARDREADER_DRECAS) += csctapi/ifd_drecas.c +SRC-$(CONFIG_CARDREADER_SC8IN1) += csctapi/ifd_sc8in1.c +SRC-$(CONFIG_CARDREADER_INTERNAL_SCI) += csctapi/ifd_sci.c +SRC-$(CONFIG_CARDREADER_SMARGO) += csctapi/ifd_smargo.c +SRC-$(CONFIG_CARDREADER_SMART) += csctapi/ifd_smartreader.c +SRC-$(CONFIG_CARDREADER_STINGER) += csctapi/ifd_stinger.c +SRC-$(CONFIG_CARDREADER_STAPI) += csctapi/ifd_stapi.c +SRC-$(CONFIG_CARDREADER_STAPI5) += csctapi/ifd_stapi.c + +SRC-$(CONFIG_LIB_MINILZO) += minilzo/minilzo.c + +SRC-$(CONFIG_CS_ANTICASC) += module-anticasc.c +SRC-$(CONFIG_CS_CACHEEX) += module-cacheex.c +SRC-$(CONFIG_MODULE_CAMD33) += module-camd33.c +SRC-$(CONFIG_CS_CACHEEX) += module-camd35-cacheex.c +SRC-$(sort $(CONFIG_MODULE_CAMD35) $(CONFIG_MODULE_CAMD35_TCP)) += module-camd35.c +SRC-$(CONFIG_CS_CACHEEX) += module-cccam-cacheex.c +SRC-$(CONFIG_MODULE_CCCAM) += module-cccam.c +SRC-$(CONFIG_MODULE_CCCSHARE) += module-cccshare.c +SRC-$(CONFIG_MODULE_CONSTCW) += module-constcw.c +SRC-$(CONFIG_CS_CACHEEX) += module-csp.c +SRC-$(CONFIG_CW_CYCLE_CHECK) += module-cw-cycle-check.c +SRC-$(CONFIG_WITH_AZBOX) += module-dvbapi-azbox.c +SRC-$(CONFIG_WITH_MCA) += module-dvbapi-mca.c +### SRC-$(CONFIG_WITH_COOLAPI) += module-dvbapi-coolapi.c +### experimental reversed API +SRC-$(CONFIG_WITH_COOLAPI) += module-dvbapi-coolapi-legacy.c +SRC-$(CONFIG_WITH_COOLAPI2) += module-dvbapi-coolapi.c +SRC-$(CONFIG_WITH_SU980) += module-dvbapi-coolapi.c +SRC-$(CONFIG_WITH_STAPI) += module-dvbapi-stapi.c +SRC-$(CONFIG_WITH_STAPI5) += module-dvbapi-stapi5.c +SRC-$(CONFIG_HAVE_DVBAPI) += module-dvbapi-chancache.c +SRC-$(CONFIG_HAVE_DVBAPI) += module-dvbapi.c +SRC-$(CONFIG_MODULE_GBOX) += module-gbox-helper.c +SRC-$(CONFIG_MODULE_GBOX) += module-gbox-sms.c +SRC-$(CONFIG_MODULE_GBOX) += module-gbox-remm.c +SRC-$(CONFIG_MODULE_GBOX) += module-gbox-cards.c +SRC-$(CONFIG_MODULE_GBOX) += module-gbox.c +SRC-$(CONFIG_IRDETO_GUESSING) += module-ird-guess.c +SRC-$(CONFIG_LCDSUPPORT) += module-lcd.c +SRC-$(CONFIG_LEDSUPPORT) += module-led.c +SRC-$(CONFIG_MODULE_MONITOR) += module-monitor.c +SRC-$(CONFIG_MODULE_NEWCAMD) += module-newcamd.c +SRC-$(CONFIG_MODULE_NEWCAMD) += module-newcamd-des.c +SRC-$(CONFIG_MODULE_PANDORA) += module-pandora.c +SRC-$(CONFIG_MODULE_GHTTP) += module-ghttp.c +SRC-$(CONFIG_MODULE_RADEGAST) += module-radegast.c +SRC-$(CONFIG_MODULE_SCAM) += module-scam.c +SRC-$(CONFIG_MODULE_SERIAL) += module-serial.c +SRC-$(CONFIG_WITH_LB) += module-stat.c +SRC-$(CONFIG_WEBIF) += module-webif-lib.c +SRC-$(CONFIG_WEBIF) += module-webif-tpl.c +SRC-$(CONFIG_WEBIF) += module-webif.c +SRC-$(CONFIG_WEBIF) += webif/pages.c +SRC-$(CONFIG_WITH_CARDREADER) += reader-common.c +SRC-$(CONFIG_READER_BULCRYPT) += reader-bulcrypt.c +SRC-$(CONFIG_READER_CONAX) += reader-conax.c +SRC-$(CONFIG_READER_CRYPTOWORKS) += reader-cryptoworks.c +SRC-$(CONFIG_READER_DGCRYPT) += reader-dgcrypt.c +SRC-$(CONFIG_READER_DRE) += reader-dre.c +SRC-$(CONFIG_READER_DRE) += reader-dre-cas.c +SRC-$(CONFIG_READER_DRE) += reader-dre-common.c +SRC-$(CONFIG_READER_DRE) += reader-dre-st20.c +SRC-$(CONFIG_READER_GRIFFIN) += reader-griffin.c +SRC-$(CONFIG_READER_IRDETO) += reader-irdeto.c +SRC-$(CONFIG_READER_NAGRA_COMMON) += reader-nagra-common.c +SRC-$(CONFIG_READER_NAGRA) += reader-nagra.c +SRC-$(CONFIG_READER_NAGRA_MERLIN) += reader-nagracak7.c +SRC-$(CONFIG_READER_SECA) += reader-seca.c +SRC-$(CONFIG_READER_TONGFANG) += reader-tongfang.c +SRC-$(CONFIG_READER_VIACCESS) += reader-viaccess.c +SRC-$(CONFIG_READER_VIDEOGUARD) += reader-videoguard-common.c +SRC-$(CONFIG_READER_VIDEOGUARD) += reader-videoguard1.c +SRC-$(CONFIG_READER_VIDEOGUARD) += reader-videoguard12.c +SRC-$(CONFIG_READER_VIDEOGUARD) += reader-videoguard2.c +SRC-y += oscam-aes.c +SRC-y += oscam-array.c +SRC-y += oscam-hashtable.c +SRC-y += oscam-cache.c +SRC-y += oscam-chk.c +SRC-y += oscam-client.c +SRC-y += oscam-conf.c +SRC-y += oscam-conf-chk.c +SRC-y += oscam-conf-mk.c +SRC-y += oscam-config-account.c +SRC-y += oscam-config-global.c +SRC-y += oscam-config-reader.c +SRC-y += oscam-config.c +SRC-y += oscam-ecm.c +SRC-y += oscam-emm.c +SRC-y += oscam-emm-cache.c +SRC-y += oscam-failban.c +SRC-y += oscam-files.c +SRC-y += oscam-garbage.c +SRC-y += oscam-lock.c +SRC-y += oscam-log.c +SRC-y += oscam-log-reader.c +SRC-y += oscam-net.c +SRC-y += oscam-llist.c +SRC-y += oscam-reader.c +SRC-y += oscam-simples.c +SRC-y += oscam-string.c +SRC-y += oscam-time.c +SRC-y += oscam-work.c +SRC-y += oscam.c +# config.c is automatically generated by config.sh in OBJDIR +SRC-y += config.c +ifdef BUILD_TESTS + SRC-y += tests.c + override STD_DEFS += -DBUILD_TESTS=1 +endif + +SRC := $(SRC-y) +OBJ := $(addprefix $(OBJDIR)/,$(subst .c,.o,$(SRC))) +SRC := $(subst config.c,$(OBJDIR)/config.c,$(SRC)) + +# The default build target rebuilds the config.mak if needed and then +# starts the compilation. +all: + @./config.sh --use-flags "$(USE_FLAGS)" --objdir "$(OBJDIR)" --make-config.mak + @-mkdir -p $(OBJDIR)/cscrypt $(OBJDIR)/csctapi $(OBJDIR)/minilzo $(OBJDIR)/webif + @-printf "\ ++-------------------------------------------------------------------------------\n\ +| OSCam ver: $(VER) rev: $(SVN_REV) target: $(TARGET)\n\ +| Tools:\n\ +| CROSS = $(CROSS_DIR)$(CROSS)\n\ +| CC = $(CC)\n\ +| Settings:\n\ +| CONF_DIR = $(CONF_DIR)\n\ +| CC_OPTS = $(strip $(CC_OPTS))\n\ +| CC_WARN = $(strip $(CC_WARN))\n\ +| CFLAGS = $(strip $(CFLAGS))\n\ +| LDFLAGS = $(strip $(LDFLAGS))\n\ +| LIBS = $(strip $(LIBS))\n\ +| UseFlags = $(addsuffix =1,$(USE_FLAGS))\n\ +| Config:\n\ +| Addons : $(shell ./config.sh --use-flags "$(USE_FLAGS)" --show-enabled addons)\n\ +| Protocols: $(shell ./config.sh --use-flags "$(USE_FLAGS)" --show-enabled protocols | sed -e 's|MODULE_||g')\n\ +| Readers : $(shell ./config.sh --use-flags "$(USE_FLAGS)" --show-enabled readers | sed -e 's|READER_||g')\n\ +| CardRdrs : $(shell ./config.sh --use-flags "$(USE_FLAGS)" --show-enabled card_readers | sed -e 's|CARDREADER_||g')\n\ +| Compiler : $(shell $(CC) --version 2>/dev/null | head -n 1)\n\ +| Config : $(OBJDIR)/config.mak\n\ +| Binary : $(OSCAM_BIN)\n\ ++-------------------------------------------------------------------------------\n" +ifeq "$(shell ./config.sh --enabled WEBIF)" "Y" + @$(MAKE) --no-print-directory --quiet -C webif +endif + @$(MAKE) --no-print-directory $(OSCAM_BIN) $(LIST_SMARGO_BIN) + +$(OSCAM_BIN).debug: $(OBJ) + $(SAY) "LINK $@" + $(Q)$(CC) $(LDFLAGS) $(OBJ) $(LIBS) -o $@ + +$(OSCAM_BIN): $(OSCAM_BIN).debug + $(SAY) "STRIP $@" + $(Q)cp $(OSCAM_BIN).debug $(OSCAM_BIN) + $(Q)$(STRIP) $(OSCAM_BIN) + +$(LIST_SMARGO_BIN): utils/list_smargo.c + $(SAY) "BUILD $@" + $(Q)$(CC) $(STD_DEFS) $(CC_OPTS) $(CC_WARN) $(CFLAGS) $(LDFLAGS) utils/list_smargo.c $(LIBS) -o $@ + +$(OBJDIR)/config.o: $(OBJDIR)/config.c + $(SAY) "CONF $<" + $(Q)$(CC) $(STD_DEFS) $(CC_OPTS) $(CC_WARN) $(CFLAGS) -c $< -o $@ + +$(OBJDIR)/%.o: %.c Makefile + @$(CC) -MP -MM -MT $@ -o $(subst .o,.d,$@) $< + $(SAY) "CC $<" + $(Q)$(CC) $(STD_DEFS) $(CC_OPTS) $(CC_WARN) $(CFLAGS) -c $< -o $@ + +-include $(subst .o,.d,$(OBJ)) + +tests: + @-$(MAKE) --no-print-directory BUILD_TESTS=1 OSCAM_BIN=$(TESTS_BIN) + @-touch oscam.c +# The above is really hideous hack :-) If we don't force oscam.c recompilation +# after we've build the tests binary, the next "normal" compilation would fail +# because there would be no run_tests() function. So the touch is there to +# ensure oscam.c would be recompiled. + +config: + $(SHELL) ./config.sh --gui + +menuconfig: config + +allyesconfig: + @echo "Enabling all config options." + @-$(SHELL) ./config.sh --enable all + +allnoconfig: + @echo "Disabling all config options." + @-$(SHELL) ./config.sh --disable all + +defconfig: + @echo "Restoring default config." + @-$(SHELL) ./config.sh --restore + +clean: + @-for FILE in $(BUILD_DIR)/* $(TESTS_BIN) $(TESTS_BIN).debug; do \ + echo "RM $$FILE"; \ + rm -rf $$FILE; \ + done + @-rm -rf $(BUILD_DIR) lib + +distclean: clean + @-for FILE in $(BINDIR)/list_smargo-* $(BINDIR)/oscam-$(VER)*; do \ + echo "RM $$FILE"; \ + rm -rf $$FILE; \ + done + @-$(MAKE) --no-print-directory --quiet -C webif clean + +README.build: + @echo "Extracting 'make help' into $@ file." + @-printf "\ +** This file is generated from 'make help' output, do not edit it. **\n\ +\n\ +" > $@ + @-$(MAKE) --no-print-directory help >> $@ + @echo "Done." + +README.config: + @echo "Extracting 'config.sh --help' into $@ file." + @-printf "\ +** This file is generated from 'config.sh --help' output, do not edit it. **\n\ +\n\ +" > $@ + @-./config.sh --help >> $@ + @echo "Done." + +help: + @-printf "\ +OSCam build system documentation\n\ +================================\n\ +\n\ + Build variables:\n\ + The build variables are set on the make command line and control the build\n\ + process. Setting the variables lets you enable additional features, request\n\ + extra libraries and more. Currently recognized build variables are:\n\ +\n\ + CROSS=prefix - Set tools prefix. This variable is used when OScam is being\n\ + cross compiled. For example if you want to cross compile\n\ + for SH4 architecture you can run: 'make CROSS=sh4-linux-'\n\ + If you don't have the directory where cross compilers are\n\ + in your PATH you can run:\n\ + 'make CROSS=/opt/STM/STLinux-2.3/devkit/sh4/bin/sh4-linux-'\n\ +\n\ + CROSS_DIR=dir - Set tools directory. This variable is added in front of\n\ + CROSS variable. CROSS_DIR is useful if you want to use\n\ + predefined targets that are setting CROSS, but you don't have\n\ + the cross compilers in your PATH. For example:\n\ + 'make sh4 CROSS_DIR=/opt/STM/STLinux-2.3/devkit/sh4/bin/'\n\ + 'make dm500 CROSS_DIR=/opt/cross/dm500/cdk/bin/'\n\ +\n\ + CONF_DIR=/dir - Set OSCam config directory. For example to change config\n\ + directory to /etc run: 'make CONF_DIR=/etc'\n\ + The default config directory is: '$(CONF_DIR)'\n\ +\n\ + CC_OPTS=text - This variable holds compiler optimization parameters.\n\ + Default CC_OPTS value is:\n\ + '$(CC_OPTS)'\n\ + To add text to this variable set EXTRA_CC_OPTS=text.\n\ +\n\ + CC_WARN=text - This variable holds compiler warning parameters.\n\ + Default CC_WARN value is:\n\ + '$(CC_WARN)'\n\ + To add text to this variable set EXTRA_CC_WARN=text.\n\ +\n\ + V=1 - Request build process to print verbose messages. By\n\ + default the only messages that are shown are simple info\n\ + what is being compiled. To request verbose build run:\n\ + 'make V=1'\n\ +\n\ + Extra build variables:\n\ + These variables add text to build variables. They are useful if you want\n\ + to add additional options to already set variables without overwriting them\n\ + Currently defined EXTRA_xxx variables are:\n\ +\n\ + EXTRA_CC_OPTS - Add text to CC_OPTS.\n\ + Example: 'make EXTRA_CC_OPTS=-Os'\n\ +\n\ + EXTRA_CC_WARN - Add text to CC_WARN.\n\ + Example: 'make EXTRA_CC_WARN=-Wshadow'\n\ +\n\ + EXTRA_TARGET - Add text to TARGET.\n\ + Example: 'make EXTRA_TARGET=-private'\n\ +\n\ + EXTRA_CFLAGS - Add text to CFLAGS (affects compilation).\n\ + Example: 'make EXTRA_CFLAGS=\"-DBLAH=1 -I/opt/local\"'\n\ +\n\ + EXTRA_LDFLAGS - Add text to LDFLAGS (affects linking).\n\ + Example: 'make EXTRA_LDFLAGS=-Llibdir'\n\ +\n\ + EXTRA_FLAGS - Add text to both EXTRA_CFLAGS and EXTRA_LDFLAGS.\n\ + Example: 'make EXTRA_FLAGS=-DBLAH=1'\n\ +\n\ + EXTRA_LIBS - Add text to LIBS (affects linking).\n\ + Example: 'make EXTRA_LIBS=\"-L./stapi -loscam_stapi\"'\n\ +\n\ + Use flags:\n\ + Use flags are used to request additional libraries or features to be used\n\ + by OSCam. Currently defined USE_xxx flags are:\n\ +\n\ + USE_LIBUSB=1 - Request linking with libusb. The variables that control\n\ + USE_LIBUSB=1 build are:\n\ + LIBUSB_FLAGS='$(DEFAULT_LIBUSB_FLAGS)'\n\ + LIBUSB_CFLAGS='$(DEFAULT_LIBUSB_FLAGS)'\n\ + LIBUSB_LDFLAGS='$(DEFAULT_LIBUSB_FLAGS)'\n\ + LIBUSB_LIB='$(DEFAULT_LIBUSB_LIB)'\n\ + Using USE_LIBUSB=1 adds to '-libusb' to PLUS_TARGET.\n\ + To build with static libusb, set the variable LIBUSB_LIB\n\ + to contain full path of libusb library. For example:\n\ + make USE_LIBUSB=1 LIBUSB_LIB=/usr/lib/libusb-1.0.a\n\ +\n\ + USE_PCSC=1 - Request linking with PCSC. The variables that control\n\ + USE_PCSC=1 build are:\n\ + PCSC_FLAGS='$(DEFAULT_PCSC_FLAGS)'\n\ + PCSC_CFLAGS='$(DEFAULT_PCSC_FLAGS)'\n\ + PCSC_LDFLAGS='$(DEFAULT_PCSC_FLAGS)'\n\ + PCSC_LIB='$(DEFAULT_PCSC_LIB)'\n\ + Using USE_PCSC=1 adds to '-pcsc' to PLUS_TARGET.\n\ + To build with static PCSC, set the variable PCSC_LIB\n\ + to contain full path of PCSC library. For example:\n\ + make USE_PCSC=1 PCSC_LIB=/usr/local/lib/libpcsclite.a\n\ +\n\ + USE_STAPI=1 - Request linking with STAPI. The variables that control\n\ + USE_STAPI=1 build are:\n\ + STAPI_FLAGS='$(DEFAULT_STAPI_FLAGS)'\n\ + STAPI_CFLAGS='$(DEFAULT_STAPI_FLAGS)'\n\ + STAPI_LDFLAGS='$(DEFAULT_STAPI_FLAGS)'\n\ + STAPI_LIB='$(DEFAULT_STAPI_LIB)'\n\ + Using USE_STAPI=1 adds to '-stapi' to PLUS_TARGET.\n\ + In order for USE_STAPI to work you have to create stapi\n\ + directory and put liboscam_stapi.a file in it.\n\ +\n\ + USE_STAPI5=1 - Request linking with STAPI5. The variables that control\n\ + USE_STAPI5=1 build are:\n\ + STAPI5_FLAGS='$(DEFAULT_STAPI5_FLAGS)'\n\ + STAPI5_CFLAGS='$(DEFAULT_STAPI5_FLAGS)'\n\ + STAPI5_LDFLAGS='$(DEFAULT_STAPI5_FLAGS)'\n\ + STAPI5_LIB='$(DEFAULT_STAPI5_LIB)'\n\ + Using USE_STAPI5=1 adds to '-stapi' to PLUS_TARGET.\n\ + In order for USE_STAPI5 to work you have to create stapi\n\ + directory and put liboscam_stapi5.a file in it.\n\ +\n\ + USE_COOLAPI=1 - Request support for Coolstream API (libnxp) aka NeutrinoHD\n\ + box. The variables that control the build are:\n\ + COOLAPI_FLAGS='$(DEFAULT_COOLAPI_FLAGS)'\n\ + COOLAPI_CFLAGS='$(DEFAULT_COOLAPI_FLAGS)'\n\ + COOLAPI_LDFLAGS='$(DEFAULT_COOLAPI_FLAGS)'\n\ + COOLAPI_LIB='$(DEFAULT_COOLAPI_LIB)'\n\ + Using USE_COOLAPI=1 adds to '-coolapi' to PLUS_TARGET.\n\ + In order for USE_COOLAPI to work you have to have libnxp.so\n\ + library in your cross compilation toolchain.\n\ +\n\ + USE_COOLAPI2=1 - Request support for Coolstream API aka NeutrinoHD\n\ + box. The variables that control the build are:\n\ + COOLAPI_FLAGS='$(DEFAULT_COOLAPI2_FLAGS)'\n\ + COOLAPI_CFLAGS='$(DEFAULT_COOLAPI2_FLAGS)'\n\ + COOLAPI_LDFLAGS='$(DEFAULT_COOLAPI2_FLAGS)'\n\ + COOLAPI_LIB='$(DEFAULT_COOLAPI2_LIB)'\n\ + Using USE_COOLAPI2=1 adds to '-coolapi2' to PLUS_TARGET.\n\ + In order for USE_COOLAPI2 to work you have to have liblnxUKAL.so,\n\ + liblnxcssUsr.so, liblnxscsUsr.so, liblnxnotifyqUsr.so, liblnxplatUsr.so\n\ + library in your cross compilation toolchain.\n\ +\n\ + USE_SU980=1 - Request support for SU980 API (libentropic) aka Enimga2 arm\n\ + box. The variables that control the build are:\n\ + COOLAPI_FLAGS='$(DEFAULT_SU980_FLAGS)'\n\ + COOLAPI_CFLAGS='$(DEFAULT_SU980_FLAGS)'\n\ + COOLAPI_LDFLAGS='$(DEFAULT_SU980_FLAGS)'\n\ + COOLAPI_LIB='$(DEFAULT_SU980_LIB)'\n\ + Using USE_SU980=1 adds to '-su980' to PLUS_TARGET.\n\ + In order for USE_SU980 to work you have to have libentropic.a\n\ + library in your cross compilation toolchain.\n\ +\n\ + USE_AZBOX=1 - Request support for AZBOX (openxcas)\n\ + box. The variables that control the build are:\n\ + AZBOX_FLAGS='$(DEFAULT_AZBOX_FLAGS)'\n\ + AZBOX_CFLAGS='$(DEFAULT_AZBOX_FLAGS)'\n\ + AZBOX_LDFLAGS='$(DEFAULT_AZBOX_FLAGS)'\n\ + AZBOX_LIB='$(DEFAULT_AZBOX_LIB)'\n\ + Using USE_AZBOX=1 adds to '-azbox' to PLUS_TARGET.\n\ + extapi/openxcas/libOpenXCASAPI.a library that is shipped\n\ + with OSCam is compiled for MIPSEL.\n\ +\n\ + USE_MCA=1 - Request support for Matrix Cam Air (MCA).\n\ + The variables that control the build are:\n\ + MCA_FLAGS='$(DEFAULT_MCA_FLAGS)'\n\ + MCA_CFLAGS='$(DEFAULT_MCA_FLAGS)'\n\ + MCA_LDFLAGS='$(DEFAULT_MCA_FLAGS)'\n\ + Using USE_MCA=1 adds to '-mca' to PLUS_TARGET.\n\ +\n\ + USE_LIBCRYPTO=1 - Request linking with libcrypto instead of using OSCam\n\ + internal crypto functions. USE_LIBCRYPTO is automatically\n\ + enabled if the build is configured with SSL support. The\n\ + variables that control USE_LIBCRYPTO=1 build are:\n\ + LIBCRYPTO_FLAGS='$(DEFAULT_LIBCRYPTO_FLAGS)'\n\ + LIBCRYPTO_CFLAGS='$(DEFAULT_LIBCRYPTO_FLAGS)'\n\ + LIBCRYPTO_LDFLAGS='$(DEFAULT_LIBCRYPTO_FLAGS)'\n\ + LIBCRYPTO_LIB='$(DEFAULT_LIBCRYPTO_LIB)'\n\ +\n\ + USE_SSL=1 - Request linking with libssl. USE_SSL is automatically\n\ + enabled if the build is configured with SSL support. The\n\ + variables that control USE_SSL=1 build are:\n\ + SSL_FLAGS='$(DEFAULT_SSL_FLAGS)'\n\ + SSL_CFLAGS='$(DEFAULT_SSL_FLAGS)'\n\ + SSL_LDFLAGS='$(DEFAULT_SSL_FLAGS)'\n\ + SSL_LIB='$(DEFAULT_SSL_LIB)'\n\ + Using USE_SSL=1 adds to '-ssl' to PLUS_TARGET.\n\ +\n\ + USE_UTF8=1 - Request UTF-8 enabled webif by default.\n\ +\n\ + Automatically intialized variables:\n\ +\n\ + TARGET=text - This variable is auto detected by using the compiler's\n\ + -dumpmachine output. To see the target on your machine run:\n\ + 'gcc -dumpmachine'\n\ +\n\ + PLUS_TARGET - This variable is added to TARGET and it is set depending\n\ + on the chosen USE_xxx flags. To disable adding\n\ + PLUS_TARGET to TARGET, set NO_PLUS_TARGET=1\n\ +\n\ + BINDIR - The directory where final oscam binary would be put. The\n\ + default is: $(BINDIR)\n\ +\n\ + OSCAM_BIN=text - This variable controls how the oscam binary will be named.\n\ + Default OSCAM_BIN value is:\n\ + 'BINDIR/oscam-VERSVN_REV-TARGET'\n\ + Once the variables (BINDIR, VER, SVN_REV and TARGET) are\n\ + replaced, the resulting filename can look like this:\n\ + 'Distribution/oscam-1.20-unstable_svn7404-i486-slackware-linux-static'\n\ + For example you can run: 'make OSCAM_BIN=my-oscam'\n\ +\n\ + Binaries compiled and run during the OSCam build:\n\ +\n\ + OSCam builds webif/pages_gen binary that is run by the build system to\n\ + generate file that holds web pages. To build this binary two variables\n\ + are used:\n\ +\n\ + HOSTCC=gcc - The compiler used for building binaries that are run on\n\ + the build machine (the host). Default: gcc\n\ + To use clang for example run: make CC=clang HOSTCC=clang\n\ +\n\ + HOSTCFLAGS=xxx - The CFLAGS passed to HOSTCC. See webif/Makefile for the\n\ + default host cflags.\n\ +\n\ + Config targets:\n\ + make config - Start configuration utility.\n\ + make allyesconfig - Enable all configuration options.\n\ + make allnoconfig - Disable all configuration options.\n\ + make defconfig - Restore default configuration options.\n\ +\n\ + Cleaning targets:\n\ + make clean - Remove '$(BUILD_DIR)' directory which contains compiled\n\ + object files.\n\ + make distclean - Executes clean target and also removes binary files\n\ + located in '$(BINDIR)' directory.\n\ +\n\ + Build system files:\n\ + config.sh - OSCam configuration. Run 'config.sh --help' to see\n\ + available parameters or 'make config' to start GUI\n\ + configuratior.\n\ + Makefile - Main build system file.\n\ + Makefile.extra - Contains predefined targets. You can use this file\n\ + as example on how to use the build system.\n\ + Makefile.local - This file is included in Makefile and allows creation\n\ + of local build system targets. See Makefile.extra for\n\ + examples.\n\ +\n\ + Here are some of the interesting predefined targets in Makefile.extra.\n\ + To use them run 'make target ...' where ... can be any extra flag. For\n\ + example if you want to compile OSCam for Dreambox (DM500) but do not\n\ + have the compilers in the path, you can run:\n\ + make dm500 CROSS_DIR=/opt/cross/dm500/cdk/bin/\n\ +\n\ + Predefined targets in Makefile.extra:\n\ +\n\ + make libusb - Builds OSCam with libusb support\n\ + make pcsc - Builds OSCam with PCSC support\n\ + make pcsc-libusb - Builds OSCam with PCSC and libusb support\n\ + make dm500 - Builds OSCam for Dreambox (DM500)\n\ + make sh4 - Builds OSCam for SH4 boxes\n\ + make azbox - Builds OSCam for AZBox STBs\n\ + make mca - Builds OSCam for Matrix Cam Air (MCA)\n\ + make coolstream - Builds OSCam for Coolstream HD1\n\ + make coolstream2 - Builds OSCam for Coolstream HD2\n\ + make dockstar - Builds OSCam for Dockstar\n\ + make qboxhd - Builds OSCam for QBoxHD STBs\n\ + make opensolaris - Builds OSCam for OpenSolaris\n\ + make uclinux - Builds OSCam for m68k uClinux\n\ +\n\ + Predefined targets for static builds:\n\ + make static - Builds OSCam statically\n\ + make static-libusb - Builds OSCam with libusb linked statically\n\ + make static-libcrypto - Builds OSCam with libcrypto linked statically\n\ + make static-ssl - Builds OSCam with SSL support linked statically\n\ +\n\ + Developer targets:\n\ + make tests - Builds '$(TESTS_BIN)' binary\n\ +\n\ + Examples:\n\ + Build OSCam for SH4 (the compilers are in the path):\n\ + make CROSS=sh4-linux-\n\n\ + Build OSCam for SH4 (the compilers are in not in the path):\n\ + make sh4 CROSS_DIR=/opt/STM/STLinux-2.3/devkit/sh4/bin/\n\ + make CROSS_DIR=/opt/STM/STLinux-2.3/devkit/sh4/bin/ CROSS=sh4-linux-\n\ + make CROSS=/opt/STM/STLinux-2.3/devkit/sh4/bin/sh4-linux-\n\n\ + Build OSCam for SH4 with STAPI:\n\ + make CROSS=sh4-linux- USE_STAPI=1\n\n\ + Build OSCam for SH4 with STAPI and changed configuration directory:\n\ + make CROSS=sh4-linux- USE_STAPI=1 CONF_DIR=/var/tuxbox/config\n\n\ + Build OSCam for ARM with COOLAPI (coolstream aka NeutrinoHD):\n\ + make CROSS=arm-cx2450x-linux-gnueabi- USE_COOLAPI=1\n\n\ + Build OSCam for ARM with COOLAPI2 (coolstream aka NeutrinoHD):\n\ + make CROSS=arm-pnx8400-linux-uclibcgnueabi- USE_COOLAPI2=1\n\n\ + Build OSCam for MIPSEL with AZBOX support:\n\ + make CROSS=mipsel-linux-uclibc- USE_AZBOX=1\n\n\ + Build OSCam for ARM with MCA support:\n\ + make CROSS=arm-none-linux-gnueabi- USE_MCA=1\n\n\ + Build OSCam with libusb and PCSC:\n\ + make USE_LIBUSB=1 USE_PCSC=1\n\n\ + Build OSCam with static libusb:\n\ + make USE_LIBUSB=1 LIBUSB_LIB=\"/usr/lib/libusb-1.0.a\"\n\n\ + Build OSCam with static libcrypto:\n\ + make USE_LIBCRYPTO=1 LIBCRYPTO_LIB=\"/usr/lib/libcrypto.a\"\n\n\ + Build OSCam with static libssl and libcrypto:\n\ + make USE_SSL=1 SSL_LIB=\"/usr/lib/libssl.a\" LIBCRYPTO_LIB=\"/usr/lib/libcrypto.a\"\n\n\ + Build with verbose messages and size optimizations:\n\ + make V=1 CC_OPTS=-Os\n\n\ + Build and set oscam file name:\n\ + make OSCAM_BIN=oscam\n\n\ + Build and set oscam file name depending on revision:\n\ + make OSCAM_BIN=oscam-\`./config.sh -r\`\n\n\ +" + +simple: all +default: all +debug: all + +-include Makefile.extra +-include Makefile.local diff --git a/support/configs/compiler_option b/support/configs/compiler_option new file mode 100644 index 0000000..f8c5bfe --- /dev/null +++ b/support/configs/compiler_option @@ -0,0 +1 @@ +-O1 \ No newline at end of file diff --git a/support/configs/compiler_option.txt b/support/configs/compiler_option.txt new file mode 100644 index 0000000..11c062f --- /dev/null +++ b/support/configs/compiler_option.txt @@ -0,0 +1,3 @@ +-O0 optimization for time +-O2 optimization (oscam default) +-Os optimization for code size \ No newline at end of file diff --git a/support/configs/config.sh.master b/support/configs/config.sh.master new file mode 100644 index 0000000..5c34610 --- /dev/null +++ b/support/configs/config.sh.master @@ -0,0 +1,752 @@ +#!/bin/sh + +addons="WEBIF WEBIF_LIVELOG WEBIF_JQUERY TOUCH WITH_SSL HAVE_DVBAPI WITH_NEUTRINO READ_SDT_CHARSETS IRDETO_GUESSING CS_ANTICASC WITH_DEBUG MODULE_MONITOR WITH_LB CS_CACHEEX CW_CYCLE_CHECK LCDSUPPORT LEDSUPPORT CLOCKFIX IPV6SUPPORT" +protocols="MODULE_CAMD33 MODULE_CAMD35 MODULE_CAMD35_TCP MODULE_NEWCAMD MODULE_CCCAM MODULE_CCCSHARE MODULE_GBOX MODULE_RADEGAST MODULE_SCAM MODULE_SERIAL MODULE_CONSTCW MODULE_PANDORA MODULE_GHTTP" +readers="READER_NAGRA READER_NAGRA_MERLIN READER_IRDETO READER_CONAX READER_CRYPTOWORKS READER_SECA READER_VIACCESS READER_VIDEOGUARD READER_DRE READER_TONGFANG READER_BULCRYPT READER_GRIFFIN READER_DGCRYPT" +card_readers="CARDREADER_PHOENIX CARDREADER_INTERNAL CARDREADER_SC8IN1 CARDREADER_MP35 CARDREADER_SMARGO CARDREADER_DB2COM CARDREADER_STAPI CARDREADER_STAPI5 CARDREADER_STINGER CARDREADER_DRECAS" + +defconfig=" +CONFIG_WEBIF=y +CONFIG_WEBIF_LIVELOG=y +CONFIG_WEBIF_JQUERY=y +CONFIG_TOUCH=y +# CONFIG_WITH_SSL=n +CONFIG_HAVE_DVBAPI=y +# CONFIG_WITH_NEUTRINO=n +CONFIG_READ_SDT_CHARSETS=y +CONFIG_IRDETO_GUESSING=y +CONFIG_CS_ANTICASC=y +CONFIG_WITH_DEBUG=y +CONFIG_MODULE_MONITOR=y +CONFIG_WITH_LB=y +CONFIG_CS_CACHEEX=y +CONFIG_CW_CYCLE_CHECK=y +# CONFIG_LCDSUPPORT=n +# CONFIG_LEDSUPPORT=n +CONFIG_CLOCKFIX=y +# CONFIG_IPV6SUPPORT=n +# CONFIG_MODULE_CAMD33=n +CONFIG_MODULE_CAMD35=y +CONFIG_MODULE_CAMD35_TCP=y +CONFIG_MODULE_NEWCAMD=y +CONFIG_MODULE_CCCAM=y +CONFIG_MODULE_CCCSHARE=y +CONFIG_MODULE_GBOX=y +CONFIG_MODULE_RADEGAST=y +CONFIG_MODULE_SERIAL=y +CONFIG_MODULE_CONSTCW=y +CONFIG_MODULE_PANDORA=y +CONFIG_MODULE_SCAM=y +CONFIG_MODULE_GHTTP=y +CONFIG_WITH_CARDREADER=y +CONFIG_READER_NAGRA_COMMON=y +CONFIG_READER_NAGRA=y +CONFIG_READER_NAGRA_MERLIN=y +CONFIG_READER_IRDETO=y +CONFIG_READER_CONAX=y +CONFIG_READER_CRYPTOWORKS=y +CONFIG_READER_SECA=y +CONFIG_READER_VIACCESS=y +CONFIG_READER_VIDEOGUARD=y +CONFIG_READER_DRE=y +CONFIG_READER_TONGFANG=y +CONFIG_READER_BULCRYPT=y +CONFIG_READER_GRIFFIN=y +CONFIG_READER_DGCRYPT=y +CARDREADER_PHOENIX=y +CARDREADER_DRECAS=y +CARDREADER_INTERNAL=y +CARDREADER_SC8IN1=y +CARDREADER_MP35=y +CARDREADER_SMARGO=y +CARDREADER_DB2COM=y +CARDREADER_STAPI=y +# CARDREADER_STAPI5=n +CARDREADER_STINGER=y +" + +usage() { + echo \ +"OSCam config +Usage: `basename $0` [parameters] + + -g, --gui Start interactive configuration + + -s, --show-enabled [param] Show enabled configuration options. + -Z, --show-disabled [param] Show disabled configuration options. + -S, --show-valid [param] Show valid configuration options. + Possible params: all, addons, protocols, + readers, card_readers + + -l, --list-config List active configuration variables. + -e, --enabled [option] Check if certain option is enabled. + -d, --disabled [option] Check if certain option is disabled. + + -E, --enable [option] Enable config option. + -D, --disable [option] Disable config option. + + The following [option]s enable or disable multiple settings. + all - Everything. + addons - All addons. + protocols - All protocols. + readers - All readers. + card_readers - All card readers. + + -R, --restore Restore default config. + + -v, --oscam-version Display OSCam version. + -r, --oscam-revision Display OSCam SVN revision. + + -O, --detect-osx-sdk-version Find where OS X SDK is located + + -h, --help Display this help text. + +Examples: + # Enable WEBIF and SSL + ./config.sh --enable WEBIF WITH_SSL + + # Disable WEBIF but enable WITH_SSL + ./config.sh --disable WEBIF --enable WITH_SSL + + # Restore defaults and disable WEBIF and READER_NAGRA + ./config.sh --restore --disable WEBIF READER_NAGRA + + # Use default config with only one enabled reader + ./config.sh --restore --disable readers --enable READER_BULCRYPT + + # Disable everything and enable webif one module and one card reader + ./config.sh --disable all --enable WEBIF MODULE_NEWCAMD READER_BULCRYPT + + # Disable all card readers except INTERNAL + ./config.sh -D card_readers -E CARDREADER_INTERNAL + +Available options: + addons: $addons + protocols: $protocols + readers: $readers + card_readers: $card_readers +" +} + +# Output directory for config.mak set by --objdir parameter +OBJDIR=. + +# Use flags set by --use-flags parameter +USE_FLAGS= + +have_flag() { + for FLAG in $USE_FLAGS + do + [ "$FLAG" = "$1" ] && return 0 + done + return 1 +} + +have_all_flags() { + for opt ; do + have_flag $opt || return 1 + done + return 0 +} + +have_any_flags() { + for opt ; do + have_flag $opt && return 0 + done + return 1 +} + +not_have_flag() { + for FLAG in $USE_FLAGS + do + [ "$FLAG" = "$1" ] && return 1 + done + return 0 +} + +not_have_all_flags() { + for opt ; do + not_have_flag $opt || return 1 + done + return 0 +} + +not_have_any_flags() { + for opt ; do + not_have_flag $opt && return 0 + done + return 1 +} + +# Config functions +enabled() { + grep "^\#define $1 1$" config.h >/dev/null 2>/dev/null + return $? +} + +disabled() { + grep "^\#define $1 1$" config.h >/dev/null 2>/dev/null + test $? = 0 && return 1 + return 0 +} + +enabled_all() { + for opt ; do + enabled $opt || return 1 + done + return 0 +} + +disabled_all() { + for opt ; do + disabled $opt || return 1 + done + return 0 +} + +enabled_any() { + for opt ; do + enabled $opt && return 0 + done + return 1 +} + +disabled_any() { + for opt ; do + disabled $opt && return 0 + done + return 1 +} + +list_enabled() { + for OPT in $@ + do + enabled $OPT && echo $OPT + done +} + +list_disabled() { + for OPT in $@ + do + disabled $OPT && echo $OPT + done +} + +write_enabled() { + defined_file="webif/is_defined.txt" + pages_c="webif/pages.c" + rm -f $defined_file $pages_c 2>/dev/null + for OPT in $(get_opts) WITH_CARDREADER + do + enabled $OPT && printf "%s\n" $OPT >> $defined_file + done +} + +valid_opt() { + [ "$1" = "WITH_CARDREADER" ] && return 0 # Special case + echo $addons $protocols $readers $card_readers | grep -w "$1" >/dev/null + return $? +} + +enable_opt() { + valid_opt $1 && disabled $1 && { + sed -e "s|//#define $1 1$|#define $1 1|g" config.h > config.h.tmp && \ + mv config.h.tmp config.h + echo "Enable $1" + } +} + +enable_opts() { + for OPT in $@ + do + enable_opt $OPT + done +} + +disable_opt() { + valid_opt $1 && enabled $1 && { + sed -e "s|#define $1 1$|//#define $1 1|g" config.h > config.h.tmp && \ + mv config.h.tmp config.h + echo "Disable $1" + } +} + +disable_opts() { + for OPT in $@ + do + disable_opt $OPT + done +} + +get_opts() { + OPTS="" + case "$1" in + 'addons') OPTS="$addons" ; ;; + 'protocols') OPTS="$protocols" ; ;; + 'readers') OPTS="$readers" ; ;; + 'card_readers') OPTS="$card_readers" ; ;; + *) OPTS="$addons $protocols $readers $card_readers" ; ;; + esac + echo $OPTS +} + +update_deps() { + # Calculate dependencies + enabled_any $(get_opts readers) $(get_opts card_readers) && enable_opt WITH_CARDREADER >/dev/null + disabled_all $(get_opts readers) $(get_opts card_readers) && disable_opt WITH_CARDREADER >/dev/null + disabled WEBIF && disable_opt WEBIF_LIVELOG >/dev/null + disabled WEBIF && disable_opt WEBIF_JQUERY >/dev/null + enabled MODULE_CCCSHARE && enable_opt MODULE_CCCAM >/dev/null + enabled_any CARDREADER_DB2COM CARDREADER_MP35 CARDREADER_SC8IN1 CARDREADER_STINGER && enable_opt CARDREADER_PHOENIX >/dev/null +} + +list_config() { + update_deps + # Handle use flags + have_flag USE_STAPI && echo "CONFIG_WITH_STAPI=y" || echo "# CONFIG_WITH_STAPI=n" + have_flag USE_STAPI5 && echo "CONFIG_WITH_STAPI5=y" || echo "# CONFIG_WITH_STAPI5=n" + have_flag USE_COOLAPI && echo "CONFIG_WITH_COOLAPI=y" || echo "# CONFIG_WITH_COOLAPI=n" + have_flag USE_COOLAPI2 && echo "CONFIG_WITH_COOLAPI2=y" || echo "# CONFIG_WITH_COOLAPI2=n" + have_flag USE_SU980 && echo "CONFIG_WITH_SU980=y" || echo "# CONFIG_WITH_SU980=n" + have_flag USE_AZBOX && echo "CONFIG_WITH_AZBOX=y" || echo "# CONFIG_WITH_AZBOX=n" + have_flag USE_MCA && echo "CONFIG_WITH_MCA=y" || echo "# CONFIG_WITH_MCA=n" + have_flag USE_LIBCRYPTO && echo "CONFIG_WITH_LIBCRYPTO=y" || echo "# CONFIG_WITH_LIBCRYPTO=n" + for OPT in $addons $protocols WITH_CARDREADER $readers + do + enabled $OPT && echo "CONFIG_$OPT=y" || echo "# CONFIG_$OPT=n" + done + for OPT in $card_readers + do + if [ $OPT = CARDREADER_INTERNAL ] + then + # Internal card reader is actually three different readers depending on USE flags + enabled $OPT && have_flag USE_AZBOX && echo "CONFIG_${OPT}_AZBOX=y" || echo "# CONFIG_${OPT}_AZBOX=n" + enabled $OPT && have_any_flags USE_COOLAPI USE_SU980 && echo "CONFIG_${OPT}_COOLAPI=y" || echo "# CONFIG_${OPT}_COOLAPI=n" + enabled $OPT && have_flag USE_COOLAPI2 && echo "CONFIG_${OPT}_COOLAPI2=y" || echo "# CONFIG_${OPT}_COOLAPI2=n" + enabled $OPT && not_have_all_flags USE_AZBOX USE_COOLAPI USE_COOLAPI2 USE_SU980 && echo "CONFIG_${OPT}_SCI=y" || echo "# CONFIG_${OPT}_SCI=n" + continue + fi + if [ $OPT = CARDREADER_STAPI ] + then + # Enable CARDREADER_STAPI only if USE_STAPI is set + enabled $OPT && have_flag USE_STAPI && echo "CONFIG_$OPT=y" || echo "# CONFIG_$OPT=n" + continue + fi + if [ $OPT = CARDREADER_STAPI5 ] + then + # Enable CARDREADER_STAPI5 only if USE_STAPI5 is set + enabled $OPT && have_flag USE_STAPI5 && echo "CONFIG_$OPT=y" || echo "# CONFIG_$OPT=n" + continue + fi + enabled $OPT && echo "CONFIG_$OPT=y" || echo "# CONFIG_$OPT=n" + done + have_flag USE_LIBUSB && echo "CONFIG_CARDREADER_SMART=y" || echo "# CONFIG_CARDREADER_SMART=n" + have_flag USE_PCSC && echo "CONFIG_CARDREADER_PCSC=y" || echo "# CONFIG_CARDREADER_PCSC=n" + # Extra modules/libraries + enabled_any MODULE_GBOX WEBIF && echo "CONFIG_LIB_MINILZO=y" || echo "# CONFIG_LIB_MINILZO=n" + not_have_flag USE_LIBCRYPTO && echo "CONFIG_LIB_AES=y" || echo "# CONFIG_LIB_AES=n" + enabled MODULE_CCCAM && echo "CONFIG_LIB_RC6=y" || echo "# CONFIG_LIB_RC6=n" + not_have_flag USE_LIBCRYPTO && enabled MODULE_CCCAM && echo "CONFIG_LIB_SHA1=y" || echo "# CONFIG_LIB_SHA1=n" + enabled_any READER_DRE MODULE_SCAM READER_VIACCESS READER_NAGRA_MERLIN && echo "CONFIG_LIB_DES=y" || echo "# CONFIG_LIB_DES=n" + enabled_any MODULE_CCCAM READER_NAGRA READER_NAGRA_MERLIN READER_SECA && echo "CONFIG_LIB_IDEA=y" || echo "# CONFIG_LIB_IDEA=n" + not_have_flag USE_LIBCRYPTO && enabled_any READER_CONAX READER_CRYPTOWORKS READER_NAGRA READER_NAGRA_MERLIN && echo "CONFIG_LIB_BIGNUM=y" || echo "# CONFIG_LIB_BIGNUM=n" + enabled READER_NAGRA_MERLIN && echo "CONFIG_LIB_MDC2=y" || echo "# CONFIG_LIB_MDC2=n" + enabled READER_NAGRA_MERLIN && echo "CONFIG_LIB_FAST_AES=y" || echo "# CONFIG_LIB_FAST_AES=n" + enabled READER_NAGRA_MERLIN && echo "CONFIG_LIB_SHA256=y" || echo "# CONFIG_LIB_SHA256=n" + enabled_any READER_NAGRA READER_NAGRA_MERLIN && echo "CONFIG_READER_NAGRA_COMMON=y" || echo "# CONFIG_READER_NAGRA_COMMON=n" +} + +make_config_c() { + OPENSSL=$(which openssl 2>/dev/null) + if [ "$OPENSSL" = "" ] + then + echo "// openssl not found!" + echo "const char *config_mak = \"CFG: openssl not found in PATH!\";" + else + echo "// This file is generated by ./config.sh --objdir $OBJDIR --make-config.mak" + echo "const char *config_mak =" + printf " \"\\\nCFG: strings FILE | sed -n 's/^CFG~//p' | openssl enc -d -base64 | gzip -d\\\n\"\n" + gzip -9 < $OBJDIR/config.mak | $OPENSSL enc -base64 | while read LINE + do + printf " \"CFG~%s\\\\n\"\n" "$LINE" + done + echo " ;" + fi +} + +make_config_mak() { + TMPFILE=$(mktemp -t config.mak.XXXXXX) || exit 1 + list_config > $TMPFILE + [ ! -d $OBJDIR ] && mkdir -p $OBJDIR 2>/dev/null + cmp $TMPFILE $OBJDIR/config.mak >/dev/null 2>/dev/null + if [ $? != 0 ] + then + cat $TMPFILE > $OBJDIR/config.mak + make_config_c > $OBJDIR/config.c + else + make_config_c > $TMPFILE + cmp $TMPFILE $OBJDIR/config.c >/dev/null 2>/dev/null + [ $? != 0 ] && cat $TMPFILE > $OBJDIR/config.c + fi + rm -rf $TMPFILE +} + +check_test() { + if [ "$(cat $tempfileconfig | grep "^#define $1 1$")" != "" ]; then + echo "on" + else + echo "off" + fi +} + +disable_all() { + for i in $1; do + sed -e "s/^#define ${i} 1$/\/\/#define ${i} 1/g" $tempfileconfig > ${tempfileconfig}.tmp && \ + mv ${tempfileconfig}.tmp $tempfileconfig + done +} + +enable_package() { + for i in $(cat $tempfile); do + strip=$(echo $i | sed "s/\"//g") + sed -e "s/\/\/#define ${strip} 1$/#define ${strip} 1/g" $tempfileconfig > ${tempfileconfig}.tmp && \ + mv ${tempfileconfig}.tmp $tempfileconfig + done +} + +print_components() { + clear + echo "You have selected the following components:" + echo + echo "Add-ons:" + for i in $addons; do + printf "\t%-20s: %s\n" $i $(check_test "$i") + done + + echo + echo "Protocols:" + for i in $protocols; do + printf "\t%-20s: %s\n" $i $(check_test "$i") + done + + echo + echo "Readers:" + for i in $readers; do + printf "\t%-20s: %s\n" $i $(check_test "$i") + done + + echo + echo "Card readers:" + for i in $card_readers; do + printf "\t%-20s: %s\n" $i $(check_test "$i") + done + + cp -f $tempfileconfig $configfile +} + +menu_addons() { + ${DIALOG} --checklist "\nChoose add-ons:\n " $height $width $listheight \ + WEBIF "Web Interface" $(check_test "WEBIF") \ + WEBIF_LIVELOG "LiveLog" $(check_test "WEBIF_LIVELOG") \ + WEBIF_JQUERY "Jquery onboard (if disabled webload)" $(check_test "WEBIF_JQUERY") \ + TOUCH "Touch Web Interface" $(check_test "TOUCH") \ + WITH_SSL "OpenSSL support" $(check_test "WITH_SSL") \ + HAVE_DVBAPI "DVB API" $(check_test "HAVE_DVBAPI") \ + WITH_NEUTRINO "Neutrino support" $(check_test "WITH_NEUTRINO") \ + READ_SDT_CHARSETS "DVB API read-sdt charsets" $(check_test "READ_SDT_CHARSETS") \ + IRDETO_GUESSING "Irdeto guessing" $(check_test "IRDETO_GUESSING") \ + CS_ANTICASC "Anti cascading" $(check_test "CS_ANTICASC") \ + WITH_DEBUG "Debug messages" $(check_test "WITH_DEBUG") \ + MODULE_MONITOR "Monitor" $(check_test "MODULE_MONITOR") \ + WITH_LB "Loadbalancing" $(check_test "WITH_LB") \ + CS_CACHEEX "Cache exchange" $(check_test "CS_CACHEEX") \ + CW_CYCLE_CHECK "CW Cycle Check" $(check_test "CW_CYCLE_CHECK") \ + LCDSUPPORT "LCD support" $(check_test "LCDSUPPORT") \ + LEDSUPPORT "LED support" $(check_test "LEDSUPPORT") \ + CLOCKFIX "Clockfix (disable on old systems!)" $(check_test "CLOCKFIX") \ + IPV6SUPPORT "IPv6 support (experimental)" $(check_test "IPV6SUPPORT") \ + 2> ${tempfile} + + opt=${?} + if [ $opt != 0 ]; then return; fi + + disable_all "$addons" + enable_package +} + +menu_protocols() { + ${DIALOG} --checklist "\nChoose protocols:\n " $height $width $listheight \ + MODULE_CAMD33 "camd 3.3" $(check_test "MODULE_CAMD33") \ + MODULE_CAMD35 "camd 3.5 UDP" $(check_test "MODULE_CAMD35") \ + MODULE_CAMD35_TCP "camd 3.5 TCP" $(check_test "MODULE_CAMD35_TCP") \ + MODULE_NEWCAMD "newcamd" $(check_test "MODULE_NEWCAMD") \ + MODULE_CCCAM "CCcam" $(check_test "MODULE_CCCAM") \ + MODULE_CCCSHARE "CCcam share" $(check_test "MODULE_CCCSHARE") \ + MODULE_GBOX "gbox" $(check_test "MODULE_GBOX") \ + MODULE_RADEGAST "radegast" $(check_test "MODULE_RADEGAST") \ + MODULE_SERIAL "Serial" $(check_test "MODULE_SERIAL") \ + MODULE_CONSTCW "constant CW" $(check_test "MODULE_CONSTCW") \ + MODULE_PANDORA "Pandora" $(check_test "MODULE_PANDORA") \ + MODULE_GHTTP "Ghttp" $(check_test "MODULE_GHTTP") \ + MODULE_SCAM "scam" $(check_test "MODULE_SCAM") \ + 2> ${tempfile} + + opt=${?} + if [ $opt != 0 ]; then return; fi + + disable_all "$protocols" + enable_package +} + +menu_readers() { + ${DIALOG} --checklist "\nChoose readers (CA systems):\n " $height $width $listheight \ + READER_NAGRA "Nagravision" $(check_test "READER_NAGRA") \ + READER_NAGRA_MERLIN "Nagra Merlin" $(check_test "READER_NAGRA_MERLIN") \ + READER_IRDETO "Irdeto" $(check_test "READER_IRDETO") \ + READER_CONAX "Conax" $(check_test "READER_CONAX") \ + READER_CRYPTOWORKS "Cryptoworks" $(check_test "READER_CRYPTOWORKS") \ + READER_SECA "Seca" $(check_test "READER_SECA") \ + READER_VIACCESS "Viaccess" $(check_test "READER_VIACCESS") \ + READER_VIDEOGUARD "NDS Videoguard" $(check_test "READER_VIDEOGUARD") \ + READER_DRE "DRE Crypt" $(check_test "READER_DRE") \ + READER_TONGFANG "Tongfang" $(check_test "READER_TONGFANG") \ + READER_BULCRYPT "Bulcrypt" $(check_test "READER_BULCRYPT") \ + READER_GRIFFIN "Griffin" $(check_test "READER_GRIFFIN") \ + READER_DGCRYPT "DGCrypt" $(check_test "READER_DGCRYPT") \ + 2> ${tempfile} + + opt=${?} + if [ $opt != 0 ]; then return; fi + + disable_all "$readers" + enable_package +} + +menu_card_readers() { + ${DIALOG} --checklist "\nChoose card reader drivers:\n " $height $width $listheight \ + CARDREADER_PHOENIX "Phoenix/mouse" $(check_test "CARDREADER_PHOENIX") \ + CARDREADER_INTERNAL "Internal (Sci,Azbox,Cool)" $(check_test "CARDREADER_INTERNAL") \ + CARDREADER_SC8IN1 "SC8in1" $(check_test "CARDREADER_SC8IN1") \ + CARDREADER_MP35 "AD-Teknik MP 3.6/USB Phoenix" $(check_test "CARDREADER_MP35") \ + CARDREADER_SMARGO "Argolis Smargo Smartreader" $(check_test "CARDREADER_SMARGO") \ + CARDREADER_DB2COM "dbox2" $(check_test "CARDREADER_DB2COM") \ + CARDREADER_STAPI "STAPI" $(check_test "CARDREADER_STAPI") \ + CARDREADER_STAPI5 "STAPI5" $(check_test "CARDREADER_STAPI5") \ + CARDREADER_STINGER "STINGER" $(check_test "CARDREADER_STINGER") \ + CARDREADER_DRECAS "DRECAS" $(check_test "CARDREADER_DRECAS") \ + 2> ${tempfile} + + opt=${?} + if [ $opt != 0 ]; then return; fi + + disable_all "$card_readers" + enable_package +} + + +config_dialog() { + height=30 + width=65 + listheight=16 + + DIALOG=${DIALOG:-`which dialog`} + if [ -z "${DIALOG}" ]; then + echo "Please install dialog package." 1>&2 + exit 1 + fi + + configfile=config.h + tempfile=$(mktemp -t oscam-config.dialog.XXXXXX) || exit 1 + tempfileconfig=$(mktemp -t oscam-config.h.XXXXXX) || exit 1 + trap 'rm -f $tempfile $tempfileconfig $tempfileconfig.bak 2>/dev/null' INT TERM EXIT + cp -f $configfile $tempfileconfig + + while true; do + ${DIALOG} --menu "\nSelect category:\n " $height $width $listheight \ + Add-ons "Add-ons" \ + Protocols "Network protocols" \ + Readers "Readers (CA systems)" \ + CardReaders "Card reader drivers" \ + Save "Save" \ + 2> ${tempfile} + + opt=${?} + if [ $opt != 0 ]; then clear; exit; fi + + menuitem=$(cat $tempfile) + case $menuitem in + Add-ons) menu_addons ;; + Protocols) menu_protocols ;; + Readers) menu_readers ;; + CardReaders) menu_card_readers ;; + Save) + print_components + update_deps + write_enabled + exit 0 + ;; + esac + done +} + +# Change working directory to the directory where the script is +cd $(dirname $0) + +if [ $# = 0 ] +then + usage + exit 1 +fi + +while [ $# -gt 0 ] +do + case "$1" in + '-g'|'--gui'|'--config'|'--menuconfig') + config_dialog + break + ;; + '-s'|'--show-enabled'|'--show') + shift + list_enabled $(get_opts $1) + # Take special care of USE_xxx flags + if [ "$1" = "card_readers" ] + then + have_flag USE_LIBUSB && echo "CARDREADER_SMART" + have_flag USE_PCSC && echo "CARDREADER_PCSC" + fi + break + ;; + '-Z'|'--show-disabled') + shift + list_disabled $(get_opts $1) + break + ;; + '-S'|'--show-valid') + shift + for OPT in $(get_opts $1) + do + echo $OPT + done + break + ;; + '-E'|'--enable') + shift + while [ "$1" != "" ] + do + case "$1" in + -*) + update_deps + continue 2 + ;; + all|addons|protocols|readers|card_readers) + enable_opts $(get_opts $1) + ;; + *) + enable_opt "$1" + ;; + esac + shift + done + update_deps + write_enabled + ;; + '-D'|'--disable') + shift + while [ "$1" != "" ] + do + case "$1" in + -*) + update_deps + continue 2 + ;; + all|addons|protocols|readers|card_readers) + disable_opts $(get_opts $1) + ;; + *) + disable_opt "$1" + ;; + esac + shift + done + update_deps + write_enabled + ;; + '-R'|'--restore') + echo $defconfig | sed -e 's|# ||g' | xargs printf "%s\n" | grep "=y$" | sed -e 's|^CONFIG_||g;s|=.*||g' | + while read OPT + do + enable_opt "$OPT" + done + echo $defconfig | sed -e 's|# ||g' | xargs printf "%s\n" | grep "=n$" | sed -e 's|^CONFIG_||g;s|=.*||g' | + while read OPT + do + disable_opt "$OPT" + done + update_deps + write_enabled + ;; + '-e'|'--enabled') + enabled $2 && echo "Y" && exit 0 || echo "N" && exit 1 + break + ;; + '-d'|'--disabled') + disabled $2 && echo "Y" && exit 0 || echo "N" && exit 1 + break + ;; + '-v'|'--oscam-version') + grep CS_VERSION globals.h | cut -d\" -f2 + break + ;; + '-r'|'--oscam-revision') + revision=`(svnversion -n . 2>/dev/null || printf 0) | sed 's/.*://; s/[^0-9]*$//; s/^$/0/'` + if [ "$revision" = "0" ] + then + which git > /dev/null 2>&1 && revision=`git log -10 --pretty=%B | grep git-svn-id | head -n 1 | sed -n -e 's/^.*trunk@\([0-9]*\) .*$/\1/p'` + fi + echo $revision + break + ;; + '-O'|'--detect-osx-sdk-version') + shift + OSX_VER=${1:-10.10} + for DIR in /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX{$OSX_VER,10.10,10.9,10.8,10.7}.sdk /Developer/SDKs/MacOSX{$OSX_VER,10.6,10.5}.sdk + + do + if test -d $DIR + then + echo $DIR + exit 0 + fi + done + echo Cant_find_OSX_SDK + break + ;; + '-l'|'--list-config') + list_config + exit 0 + ;; + '-m'|'--make-config.mak') + make_config_mak + exit 0 + ;; + '--use-flags') + shift + USE_FLAGS=$1 + ;; + '--objdir') + shift + OBJDIR=$1 + ;; + '-h'|'--help') + usage + break + ;; + *) + echo "[WARN] Unknown parameter: $1" >&2 + ;; + esac + # Some shells complain when there are no more parameters to shift + test $# -gt 0 && shift +done + +exit 0 diff --git a/support/configs/max_cpus b/support/configs/max_cpus new file mode 100644 index 0000000..19c7bdb --- /dev/null +++ b/support/configs/max_cpus @@ -0,0 +1 @@ +16 \ No newline at end of file diff --git a/support/configs/max_cpus.txt b/support/configs/max_cpus.txt new file mode 100644 index 0000000..77d5f98 --- /dev/null +++ b/support/configs/max_cpus.txt @@ -0,0 +1,5 @@ +put only the count of cpus u want to use in the file !!! + +example: +for 3 of X cpus +echo 3 >max_cpus \ No newline at end of file diff --git a/support/configs/simplebuild.config b/support/configs/simplebuild.config new file mode 100644 index 0000000..5e6eac0 --- /dev/null +++ b/support/configs/simplebuild.config @@ -0,0 +1,8 @@ +DIRECTMENU=0 +NO_SVN_AUTOUPDATE=1 +SAVE_LISTSMARGO=0 +S3_UPDATE_CHECK=0 +USE_VERBOSE=0 +USE_COMPRESS=0 +USE_TARGZ=0 +delete_oscamdebugbinary=1 diff --git a/support/configs/upx.txt b/support/configs/upx.txt new file mode 100644 index 0000000..230d9f5 --- /dev/null +++ b/support/configs/upx.txt @@ -0,0 +1,16 @@ +-1 +-2 +-3 +-4 +-5 +-6 +-7 +-8 +-9 +--best +--brute +--ultra-brute + + +-1 #very fast +--ultra-brute #very slow but very strong diff --git a/support/configs/upx_option b/support/configs/upx_option new file mode 100644 index 0000000..1e898ab --- /dev/null +++ b/support/configs/upx_option @@ -0,0 +1 @@ +upx_c=-1 \ No newline at end of file diff --git a/support/functions/_ansi b/support/functions/_ansi new file mode 100644 index 0000000..6a202e4 --- /dev/null +++ b/support/functions/_ansi @@ -0,0 +1,39 @@ +#!/bin/bash + +#usage: +#to use colors start with initializeANSI first +#example red color text +#echo -e $r_n"red text"$re_"normal text" + +initializeANSI(){ +nc='\033[0;'; #nc normal color +lc='\033[1;'; #lc light color +# normal +r_n=$nc'31m'; #red +g_n=$nc'32m'; #green +y_n=$nc'33m'; #yellow +b_n=$nc'34m'; #blue +p_n=$nc'35m'; #pink +c_n=$nc'36m'; #cyan +w_n=$nc'37m'; #white +#light +r_l=$lc'31m'; #red +g_l=$lc'32m'; #green +y_l=$lc'33m'; #yellow +b_l=$lc'34m'; #blue +p_l=$lc'35m'; #pink +c_l=$lc'36m'; #cyan +w_l=$lc'37m'; #white +#reset to normal +re_='\033[0m'; #resets all colors +re_f='\033[39m'; #resets only foreground color +re_b='\033[49m'; #resets only background color +#sed replace +W=$(echo -e '\033[0m'); #normal +Y=$(echo -e '\033[1;33m'); #yellow +R=$(echo -e '\033[1;31m'); #red +G=$(echo -e '\033[1;32m'); #green +P=$(echo -e '\033[1;35m'); #pink +C=$(echo -e '\033[1;36m'); #cyan +WH=$(echo -e '\033[1;37m'); #lightgray +}; \ No newline at end of file diff --git a/support/functions/_arrays b/support/functions/_arrays new file mode 100644 index 0000000..86a2ad0 --- /dev/null +++ b/support/functions/_arrays @@ -0,0 +1,54 @@ +#!/bin/bash + +_fill_tc_array(){ + unset AVAI_TCLIST; + unset INST_TCLIST; + tcempty=0; + cd "$tccfgdir"; + [ "$(ls -A "$tccfgdir")" ] && AVAI_TCLIST=(*) || echo "error fix it"; + cd "$tcdir"; + if [ "$(ls -A "$tcdir")" ];then + tmp_tclist=(*); + for t in "${tmp_tclist[@]}";do + for a in "${AVAI_TCLIST[@]}";do + [ "$t" == "$a" ] && INST_TCLIST+=($t); + done; + done; + else + tcempty=1; + fi; + if [ "$tcempty" == "1" ];then + MISS_TCLIST=$(echo ${AVAI_TCLIST[@]} |sort); + else + MISS_TCLIST=($(for el in $(diff_array AVAI_TCLIST[@] INST_TCLIST[@]);do echo "$el";done |sort)); + fi; +}; +_create_module_arrays(){ + i=0; + for e in $(echo "$addons" | sed 's/WEBIF_//g;s/WITH_//g;s/MODULE_//g;s/CS_//g;s/HAVE_//g;s/_CHARSETS//g;s/CW_CYCLE_CHECK/CWCC/g;s/SUPPORT//g';);do + SHORT_ADDONS+=($e); + SHORT_MODULENAMES+=($e); + done; + for e in ${protocols//MODULE_/};do + SHORT_PROTOCOLS+=($e); + SHORT_MODULENAMES+=($e); + done; + for e in ${readers//READER_/};do + SHORT_READERS+=($e); + SHORT_MODULENAMES+=($e); + done; + for e in ${card_readers//CARDREADER_/};do + SHORT_CARD_READERS+=($e); + SHORT_MODULENAMES+=($e); + done; + for e in $addons $protocols $readers $card_readers;do + ALL_MODULES_LONG+=($e); + done; + for e in "${SHORT_MODULENAMES[@]}";do + INTERNAL_MODULES["$e"]="${ALL_MODULES_LONG[i]}"; + ((i++)); + done; +}; +diff_array(){ + awk 'BEGIN{RS=ORS=" "}{NR==FNR?a[$0]++:a[$0]--}END{for(k in a)if(a[k])print k}' <(echo -n "${!1}") <(echo -n "${!2}"); +}; \ No newline at end of file diff --git a/support/functions/_cmd_build b/support/functions/_cmd_build new file mode 100644 index 0000000..2b31fe6 --- /dev/null +++ b/support/functions/_cmd_build @@ -0,0 +1,203 @@ +#!/bin/bash + +_cmd_build(){ + [ ! -d "$svndir" ] || [ -f "$workdir/NEED-CHECKOUT" ] && checkout; + if [ "$_toolchainname" == "native" ];then + log_name="$(date +%F).$(date +%X).$(hostname).log"; + + else + log_name="$(date +%F).$(date +%X).$_toolchainname.log"; + fi; + source "$tccfgdir/$_toolchainname"; + _reset_config; + #_fix_config_h; + echo $WH; + ologo >"$ldir/$log_name"; + +#set build defaults + CROSS="$tcdir/$_toolchainname/bin/$_compiler"; + [ -f "$configdir/compiler_option" ] && co=$(cat "$configdir/compiler_option") || co="-O2"; + +#toolchain defaults + for defa in $default_use;do + USE_vars[$defa]="$defa=1"; + done; + +#disable by cmd + for e in ${USE_vars[*]};do + for d in ${USE_vars_disable[*]};do + [ "$e" == "$d" ] && USE_vars[${e:0: -2}]=; + done; + done; + _nl; + cd "$svndir"; + +#make clean + make distclean > /dev/null 2>&1; + +#do enable and disable modules + for am in "${all_cc[@]}";do + chose="false"; + if [ "${am:${#am} - 3}" == "_on" ];then + e="${am:0: -3}";"$svndir/config.sh" -E "$e" |awk '{printf "\033[1;37m"} {printf " | %s : ", $1} {printf "\033[1;32m"} {printf "%s\n", $2}'; + fi; + if [ "${am:${#am} - 4}" == "_off" ];then + d="${am:0: -4}";"$svndir/config.sh" -D "$d" |awk '{printf "\033[1;37m"} {printf " | %s : ", $1} {printf "\033[1;31m"} {printf "%s\n", $2}'; + fi; + done; + +#fix smargo case + if [ "$(./config.sh -e CARDREADER_SMARGO)" == "Y" ] || [ "${USE_vars[$e]}" == "USE_LIBUSB=1" ];then + silent=$(./config.sh -E CARDREADER_SMARGO); + check_smargo; + else + silent=$(./config.sh -D CARDREADER_SMARGO); + check_smargo; + fi; + +#fill use variables and set name addons + USESTRING=; + _usb=; + _pcsc=; + _stapi=; + _stapi5=; + _do_patch="0"; + for e in "${!USE_vars[@]}";do + for e1 in $_block;do + USE_vars[$e1]=; + done; + uv=${USE_vars[$e]}; + if [ ! "$e" == "USE_CONFDIR" ];then + USESTRING="$uv $USESTRING"; + if [ "${#USE_vars[$e]}" -gt "5" ];then + echo -e "$w_l | set : $c_l${USE_vars[$e]}"; + fi; + fi; + case "$uv" in + "USE_LIBUSB=1") + _usb="-libusb";; # set libusb suffix to name + "USE_PCSC=1") + _pcsc_on;_pcsc="-pcsc";;# set pcsc suffix to name + "USE_PATCH=1") + _do_patch="1";; # enable patching + "USE_TARGZ=1") + s3cfg_vars[TARGZ]=1;; # overwrite global + "USE_COMPRESS=1") + s3cfg_vars[COMPRESS]=1;;# overwrite global + "USE_STAPI=1") + _stapi="-stapi"; + STAPI_LIB="STAPI_LIB=$sdir/stapi/liboscam_stapi.a"; + echo -e "$w_l | LIB : "$c_l"liboscam_stapi.a"$w_l;; + "USE_STAPI5=1") + _stapi5="-stapi5"; + [ "$OPENBOX" == "1" ] && STAPI_LIB="STAPI5_LIB=$sdir/stapi/liboscam_stapi5_OPENBOX.a" && echo -e "$w_l| LIB : "$c_l"liboscam_stapi5_OPENBOX.a"$w_l; + [ "$UFS916003" == "1" ] && STAPI_LIB="STAPI5_LIB=$sdir/stapi/liboscam_stapi5_UFS916_0.03.a" && echo -e "$w_l| LIB : "$c_l"liboscam_stapi5_UFS916_0.03.a"$w_l; + [ "$UFS916003" == "0" ] && [ "$OPENBOX" == "0" ] && STAPI_LIB="STAPI5_LIB=$sdir/stapi/liboscam_stapi5_UFS916.a" && echo -e "$w_l| LIB : "$c_l"liboscam_stapi5_UFS916.a"$w_l;; + esac; + done; + +#change default oscam CONF_DIR +if [ ! "$_oscamconfdir_custom" == "not_set" ] && [ ${#_oscamconfdir_custom} -gt 3 ]; then + [ ! "$CUSTOM_CONFDIR" == "not_set" ] && _oscamconfdir_custom=$CUSTOM_CONFDIR; + CONFDIR="$_oscamconfdir_custom"; + echo -e $w_l" | set : "$r_l"custom CONF_DIR=$CONFDIR"$w_l; +else + CONFDIR="$_oscamconfdir_default"; +fi; + +#patching + if [ "$_do_patch" == "1" ];then + if [ -f "$workdir/SVN-IS-PATCHED" ];then + quicksvnrestore $_toolchainname; + _apply_consolepatch; + else + _apply_consolepatch; + fi; + fi; + +#echo if build with profile + [ ! "$pf" == "empty" ] && echo -e "$y_l | PROFILE : $pf_name"; + +#echo IF SVN is Patched + [ -f "$workdir/SVN-IS-PATCHED" ] && echo -e $w_l" ISPATCHED : "$P" YES"; + +#echo max cpu usage + if [ -f "$configdir/max_cpus" ];then + cpus="$(cat "$configdir/max_cpus")"; + [ ! "$cpus" -gt "1" ] && cpus="1"; + [ "$cpus" -gt "$(CPUS)" ] && cpus="$(CPUS)"; + echo -en "$y_l\n | MAX_CPUS : $txt_use $cpus $txt_of $(CPUS) CPU(s)"; + else + cpus="$(CPUS)"; + fi; + [ "${s3cfg_vars[USE_VERBOSE]}" == "1" ] && _verbose="V=1"; + +#killstapi for nonsh4 + if [ ! "$_toolchainname" == "sh4" ] || [ ! "$_toolchainname" == "sh_4" ];then + silent=$("$svndir/config.sh" --disable CARDREADER_STAPI CARDREADER_STAPI5); + fi; + +#build + timer_start; + _generate_oscam_name "$_toolchainname"; + _nl; + USESTRING=${USE_vars[@]}; + make -j"$cpus" $_verbose \ + "CONF_DIR=$CONFDIR" \ + "OSCAM_BIN=$bdir/$oscam_name" \ + "CC_OPTS=$co $cc_opts" \ + "CC_WARN=$cc_warn" \ + "CROSS=$CROSS" $STAPI_LIB $USESTRING 2>&1 \ + |tee -a "$ldir/$log_name" \ + |grep --line-buffered -v 'BFD' \ + |grep --line-buffered '^CC\|^GEN\|UseFlags\| CONF_DIR =\|Binary\|LINK\|STRIP\|BUILD\|Addons\|Protocols\|Readers\|CardRdrs\|^/' \ + |sed -e "s/^|/"$Y" |/g;s/^LINK/"$P" LINK ------->$W/g;s/^STRIP/"$P" STRIP ------>$W/g;s/^CC\|^BUILD/"$G" BUILD ------>$W/g;s/^GEN/"$C" GEN -------->/g; + s/WEBIF_//g;s/WITH_//g;s/MODULE_//g;s/CS_//g;s/HAVE_//g;s/_CHARSETS//g;s/CW_CYCLE_CHECK/CWCC/g;s/SUPPORT//g;" + +#calc buildtime + timer_stop; + timer_calc; + bt="[ $txt_buildtime $((Tcalc / 60)) min(s) $((Tcalc % 60)) secs ]"; + +#save list_smargo + cd "$svndir/Distribution"; + lsmn="$(ls list_smargo* 2> /dev/null)"; + if [ "${s3cfg_vars[SAVE_LISTSMARGO]}" == "1" ] && [ -f "$svndir/Distribution/$lsmn" ];then + if [ "$_toolchainname" == "native" ];then + echo -e "$g_n"" SAVE -------> $w_l$lsmn$g_l $txt_as$y_l oscam-svn$(REVISION)-$(hostname)-list_smargo"; + mv -f "$lsmn" "$bdir/oscam-svn$(REVISION)-$(hostname)-list_smargo"; + tartmp="oscam-svn$(REVISION)-$(hostname)-list_smargo"; + else + echo -e "$g_n"" SAVE -------> $w_l$lsmn$g_l $txt_as$y_l oscam-svn$(REVISION)-$_toolchainname-list_smargo"; + mv -f "$lsmn" "$bdir/oscam-svn$(REVISION)-$_toolchainname-list_smargo"; + tartmp="oscam-svn$(REVISION)-$_toolchainname-list_smargo"; + fi; + fi; + +#remove debug binary + if [ "${s3cfg_vars[delete_oscamdebugbinary]}" == "1" ] && [ -f "$bdir/$oscam_name.debug" ];then + echo -e "$r_l"" REMOVE -----> $w_l$bdir/$oscam_name.debug";rm "$bdir/$oscam_name.debug"; + fi; + +#show build time + echo -e "$g_n""\n TIME -------> $bt\n$re_"; + +#compress cam + if [ "${s3cfg_vars[COMPRESS]}" == "1" ];then + echo -en "$w_l"" ENABLE -----> COMPRESSION:$y_l $txt_wait"; + compress_cam "$oscam_name"; + fi; + if [ "${s3cfg_vars[TARGZ]}" == "1" ];then + echo -en "$w_l"" ENABLE ----> TARGZ:$y_l $txt_wait\n"; + tar_cam "$oscam_name" "$tartmp"; + fi; + +#link lastlog + ln -sf "$ldir/$log_name" "$workdir/lastbuild.log"; + +#build error message + error_on_build=$(grep -c1 error "$ldir/$log_name"); + [ "$error_on_build" -gt "0" ] && echo -e "$r_l\terrors on build found$w_l"; + echo -e "$re_"; + exit; +}; diff --git a/support/functions/_compress b/support/functions/_compress new file mode 100644 index 0000000..6687849 --- /dev/null +++ b/support/functions/_compress @@ -0,0 +1,93 @@ +#!/bin/bash + +compress_cam(){ + cd "$bdir"; + upx_c="-1"; + [ -f "$configdir/upx_option" ] && source "$configdir/upx_option"; + erg=$(upx "$upx_c" "$1" |grep oscam |awk '{print $1" "$3" "$4 }'); + e1="$(echo "$erg"| awk '{printf("%4.2f k\n", $1 /1024)}')"; + e2="$(echo "$erg"| awk '{printf("%4.2fk\n", $2 /1024)}')"; + e3="$(echo "$erg"| awk '{print $3}')"; + echo -e "$w_l\n\n BEFORE -----> $txt_compress1\t= $g_n$e1$w_l\n AFTER ------> $txt_compress2\t= $g_l$e2$w_l\n RESULT -----> $txt_compress3\t= $c_n$e3$rs_\n"; +}; +compress_cam_gui(){ + cd "$bdir"; + upx_c="-1"; + [ -f "$configdir/upx_option" ] && source "$configdir/upx_option"; + erg=$(upx "$upx_c" "$1" |grep oscam |awk '{print $1" "$3" "$4 }'); + e1="$(echo "$erg"| awk '{printf("%4.2f k\n", $1 /1024)}')"; + e2="$(echo "$erg"| awk '{printf("%4.2fk\n", $2 /1024)}')"; + e3="$(echo "$erg"| awk '{print $3}')"; + echo -e "\n $txt_compress1\t= $e1\n $txt_compress2\t= $e2\n $txt_compress3\t= $e3"; +}; +tar_cam_gui(){ + cd "$bdir"; + erg=$(tar zcf $1.tar.gz $1 $2); + if [ -f "$1.tar.gz" ];then + echo -e "\n $1.tar.gz\n created"; + if [ -f "$adir/$1.tar.gz" ];then + rm -rf "$adir/$1.tar.gz"; + mv -f "$1.tar.gz" "$adir"; + echo -e "\n $1.tar.gz\n moved to $workdir/archive\n"; + else + mv -f "$1.tar.gz" "$adir"; + echo -e "\n $1.tar.gz\n moved to $workdir/archive\n"; + fi; + else + echo -e "\nerror\n no $1.tar.gz\n created"; + fi; +}; +tar_cam(){ + cd "$bdir"; + if [ -n $2 ];then + echo -en "$y_n\n TAR -------->$w_l $1$g_l $txt_as$w_l $1.tar.gz$rs_"; + fi; + erg=$(tar zcf $1.tar.gz $1 $2); + if [ -f "$1.tar.gz" ];then + echo -e "$p_n$txt_done$rs_"; + if [ -f "$adir/$1.tar.gz" ];then + rm -rf "$adir/$1.tar.gz"; + mv -f "$1.tar.gz" "$adir"; + echo -e "$c_l"" MOVE -------> $p_l$1.tar.gz $g_l$txt_to $y_n$workdir/archive\n$rs_"; + else + mv -f "$1.tar.gz" "$adir"; + echo -e "$c_l"" MOVE -------> $p_l$1.tar.gz $g_l$txt_to $y_n$workdir/archive\n$rs_"; + fi; + else + echo -e "$r_l\nerror\n no $1.tar.gz\n created$rs_"; + fi; +}; +tarsvn(){ + cd "$workdir"; + if [ -f "$svndir/config.sh" ];then + cat "$svndir/config.sh" >"$configdir/config.sh.master"; + [ -f "$svndir/Makefile" ]&& cat "$svndir/Makefile" >"$configdir/Makefile.master"; + echo -en "$w_l SVN Backup :$c_l "; + tar -zcf "$bsvn/$("$svndir/config.sh" -r).tar.gz" oscam-svn; + fi; + cd "$bsvn"; + ln -sf "$bsvn/$("$svndir/config.sh" -r).tar.gz" "last.tar.gz"; + echo -e "done\n$re_"; +}; +untarsvn(){ + cd "$workdir"; + [ -d oscam-svn ] && rm -rf oscam-svn; + if [ -z "$1" ];then + [ -f "$bsvn/last.tar.gz" ] && tar -xf "$bsvn/last.tar.gz"; + else + if [ -f "$bsvn/$1.tar.gz" ];then + tar -xf "$bsvn/$1.tar.gz"; + cd $bsvn; + ln -sf "$bsvn/$("$svndir/config.sh" -r).tar.gz" "last.tar.gz"; + else + if [ -f "$bsvn/last.tar.gz" ];then + tar -xf "$bsvn/last.tar.gz"; + else + echo -en "$w_l SVN Backup :$r_l $txt_not_found"; + sleep 3; + checkout; + fi; + fi; + fi; + [ -f "$workdir/SVN-IS-PATCHED" ] && rm -f "$workdir/SVN-IS-PATCHED"; +}; \ No newline at end of file diff --git a/support/functions/_gui_build b/support/functions/_gui_build new file mode 100644 index 0000000..51cca4b --- /dev/null +++ b/support/functions/_gui_build @@ -0,0 +1,117 @@ +#!/bin/bash + +_gui_build(){ + +#init + oc_size=${#_oscamconfdir_custom}; + [ "$oc_size" -gt "4" ] && _oscamconfdir_default="$_oscamconfdir_custom"; + + if [ "$_toolchainname" == "native" ];then + log_name="$(date +%F).$(date +%X).$(hostname).log"; + else + log_name="$(date +%F).$(date +%X).$_toolchainname.log"; + fi; + + ologo >"$ldir/$log_name"; + [ -f "$configdir/max_cpus" ] && cpus="$(cat "$configdir/max_cpus")" || cpus="$(CPUS)"; + CROSS="$tcdir/$_toolchainname/bin/$_compiler"; + [ -f "$configdir/compiler_option" ] && co=$(cat "$configdir/compiler_option") || co="-O2"; + +#make clean + cd "$svndir"; + make distclean > /dev/null 2>&1; + USESTRING_=''; + +#do use_vars + for e2 in $USESTRING;do + [ "USE_$e2" == "USE_PATCH" ] && _apply_menupatch;is_blocked=0; + for e1 in $_block;do + if [ "$e1" == "USE_$e2" ];then + is_blocked=1; + [ "USE_$e2" == "USE_LIBUSB" ] && silent=$(./config.sh -D CARDREADER_SMARGO); + fi; + done; + [ "$is_blocked" == "0" ] && _us="USE_$e2 $_us"; + done; + + for e in $_us;do + if [ ! "$e" == "USE_TARGZ" ] && [ ! "$e" == "USE_COMPRESS" ] && [ ! "$e" == "USE_PATCH" ];then + USESTRING_="$e=1 $USESTRING_"; + fi; + done; + + if [ "${USE_vars[USE_PCSC]}" == "USE_PCSC=1" ];then + _pcsc="-pcsc" ; + else + _pcsc=; + fi; + if [ "${USE_vars[USE_LIBUSB]}" == "USE_LIBUSB=1" ];then + _usb="-libusb"; + else + _usb=; + fi; + USESTRING_=${USE_vars[@]}; + +#todo add switch for verbose + _generate_oscam_name "$_toolchainname"; + targztmp="$(mktemp)"; + if [ ! "${USE_vars[USE_TARGZ]}" == "USE_TARGZ=1" ];then + s3cfg_vars[USE_TARGZ]=0; + fi; + check_smargo; + +#build + _sz; + (ologo; _nl; + timer_start; + make -j"$cpus" \ + "CONF_DIR=$_oscamconfdir_default" "OSCAM_BIN=$bdir/$oscam_name" "CC_OPTS=$co $cc_opts" "CC_WARN=$cc_warn" "CROSS=$CROSS" $stapivar $USESTRING_ 2>&1 \ + |tee "$ldir/$log_name" \ + |grep --line-buffered -v 'BFD' \ + |grep --line-buffered '^CC\|^GEN\|UseFlags\| CONF_DIR =\|Binary\|LINK\|STRIP\|BUILD\|Addons\|Protocols\|Readers\|CardRdrs\|^/' \ + |sed -u "s/^|/ |/g;s/^LINK/ LINK >/g;s/^STRIP/ STRIP >/g;s/^CC\|^BUILD/ BUILD >/g;s/^GEN/ GEN >/g;s/WEBIF_//g;s/WITH_//g;s/MODULE_//g;s/CS_//g;s/HAVE_//g;s/_CHARSETS//g;s/CW_CYCLE_CHECK/CWCC/g;s/SUPPORT//g;" + timer_stop; + timer_calc; + +#save list_smargo + cd "$svndir/Distribution"; + lsmn="$(ls list_smargo* 2> /dev/null)"; + if [ "${s3cfg_vars[SAVE_LISTSMARGO]}" == "1" ] && [ -f "$svndir/Distribution/$lsmn" ];then + if [ "$_toolchainname" == "native" ];then + echo -e "SAVE\t$lsmn $txt_as oscam-svn$(REVISION)-$(hostname)-list_smargo"| tee -a "$ldir/$log_name"; + mv -f "$lsmn" "$bdir/oscam-svn$(REVISION)-$(hostname)-list_smargo"; + echo "oscam-svn$(REVISION)-$(hostname)-list_smargo" >"$targztmp"; + else + echo -e "SAVE\t$lsmn $txt_as oscam-svn$(REVISION)-$_toolchainname-list_smargo"|tee -a "$ldir/$log_name"; + mv -f "$lsmn" "$bdir/oscam-svn$(REVISION)-$_toolchainname-list_smargo"; + echo "oscam-svn$(REVISION)-$_toolchainname-list_smargo" >"$targztmp"; + fi; + fi; + +#show buildtime + echo -e "\n TIME\t[ $txt_buildtime $((Tcalc / 60)) min(s) $((Tcalc % 60)) secs ]"| tee -a "$ldir/$log_name";sleep 1; + +#remove debug binary + if [ "${s3cfg_vars[delete_oscamdebugbinary]}" == "1" ] && [ -f "$bdir/$oscam_name.debug" ];then + rm "$bdir/$oscam_name.debug"; + echo -e "\n $txt_delete $oscam_name.debug\n"|tee -a "$ldir/$log_name"; + fi;) | "$gui" "$st_" --colors --title " -[ Build ]- " "$pb_" "$_lines" "$_cols";sleep 2; + +#COMPRESS + if [ ! "$stapi_allowed" == "1" ];then + if [ "${s3cfg_vars[COMPRESS]}" == "1" ] || [ "${USE_vars[USE_COMPRESS]}" == "USE_COMPRESS=1" ];then + (compress_cam_gui "$oscam_name") |tee -a "$ldir/$log_name"| "$gui" "$st_" --title " -[ COMPRESS ]- " "$pb_" 7 50; + sleep 2; + fi; + fi; + +#tar + if [ "${USE_vars[USE_TARGZ]}" == "USE_TARGZ=1" ];then + (tar_cam_gui "$oscam_name" "$(cat "$targztmp")") |tee -a "$ldir/$log_name"| "$gui" "$st_" --title " -[ TAR Binary ]- " "$pb_" 10 70; + sleep 2; + fi; + +#link log + ln -sf "$ldir/$log_name" "$workdir/lastbuild.log"; + [ -f "$targztmp" ] && rm -rf "$targztmp"; +}; \ No newline at end of file diff --git a/support/functions/_help b/support/functions/_help new file mode 100644 index 0000000..b544092 --- /dev/null +++ b/support/functions/_help @@ -0,0 +1,55 @@ +#!/bin/bash + +_help_toolchain(){ + echo -e "$w_l toolchains :\n ------------$g_n"; + helpline1 "${AVAI_TCLIST[@]}"; + echo -e "\n"; +}; +helpline0(){ + ll=0; + echo -en " "; + for s in "$@";do + ll=$((ll + (${#s} + 4))); + if [ "$ll" -lt "30" ];then + echo -en "$s(_off) "; + else + echo -en "$s(_off)\n "; + ll=""; + fi; + done; +}; +helpline1(){ + ll=0; + echo -en " "; + for s in "$@";do + ll=$((ll + (${#s} + 4))); + if [ "$ll" -lt "45" ];then + echo -en "$s " ; + else + echo -en "$s\n " ; + ll=""; + fi; + done; +}; +_help(){ clear;s3logo; +echo -e " ----------------------------------"; +echo -e " $txt_help1 $0 menu"; +echo -e " $txt_help2"; +echo -e " ----------------------------------"; +echo -e "$w_l\n toolchains :\n ------------$g_n"; +helpline1 "${AVAI_TCLIST[@]}"; +echo -e "$w_l\n simplebuild options :\n ---------------------$c_n"; +helpline1 "${s3opts[@]}";_wait; +echo -e "$w_l config_cases:\n --------$c_n"; +helpline0 "${config_cases[@]}"; +echo -e "$w_l\n\n addons :\n --------$p_l"; +helpline0 "${SHORT_ADDONS[@]}";_wait; +echo -e "$w_l protocols :\n -----------$y_l"; +helpline0 "${SHORT_PROTOCOLS[@]}"; +echo -e "$w_l\n readers :\n ---------$r_l"; +helpline0 "${SHORT_READERS[@]}";_wait; +echo -e "$w_l card_readers :\n --------------$b_l"; +helpline0 "${SHORT_CARD_READERS[@]}"; +echo -e "$w_l\n use_vars :\n --------$w_n"; +helpline0 "${!USE_vars[@]}";_wait; +}; \ No newline at end of file diff --git a/support/functions/_logos b/support/functions/_logos new file mode 100644 index 0000000..58c1dfb --- /dev/null +++ b/support/functions/_logos @@ -0,0 +1,29 @@ +#!/bin/bash + +ologo(){ + echo -en "$w_h"; + printf " %-s\n" " ___ ____ ___" " / _ \\/ ___| / __|__ _ _ __ ___" "| | | \\___ \\| | / _\` | '_ \` _ \ " "| |_| |___) | |_| (_| | | | | | |" " \\___/|____/ \\___\\__,_|_| |_| |_|" " "; +}; +slogo(){ + echo -en "$w_h"; + printf " %-s\n" " _ _ _ " " ___| |_ _ __ ___ __ _ _ __ ___ | |__ ___ __ _ _ __ __| |" "/ __| __| '__/ _ \/ _\` | '_ \` _ \| '_ \ / _ \ / _\` | '__/ _\` |" "\__ \ |_| | | __/ (_| | | | | | | |_) | (_) | (_| | | | (_| |" "|___/\__|_| \___|\__,_|_| |_| |_|_.__/ \___/ \__,_|_| \__,_|" " "; +}; +bye(){ + clear; + echo -en "$re_$w_l"; + printf "\n\t\t simplebuild made for"; + echo -e "$c_l"; + slogo; + echo -e "\e[8;50H \e[8;50f" && echo -en "$g_l\t\t\t\t\t\t by gorgone $re_"; + echo -e "\n"; + exit; +}; +s3logo(){ +echo -e $C" + _________________ + / _____/\\_____ \\ =============== + \_____ \\ _(__ < $w_l Version $SIMPLEVERSION$C + / \\ / \\ =============== + /_______ //______ / $y_l by gorgone$p_l 2019$C + \\/ \/ ===============\n$W"; +}; \ No newline at end of file diff --git a/support/functions/_misc b/support/functions/_misc new file mode 100644 index 0000000..6d54602 --- /dev/null +++ b/support/functions/_misc @@ -0,0 +1,547 @@ +#!/bin/bash + +CPUS(){ nproc;}; +clean(){ _clean;}; +_nl(){ echo -e "$rs_";}; +_set_dialog_types(){ + gui="$(which dialog)"; + st_="--stdout"; + ib_="--infobox"; + ip_="--inputbox"; + nc_="--no-cancel"; + cl_="--checklist"; + rl_="--radiolist"; + bt_="--backtitle"; + pb_="--progressbox"; + title_="SIMPLEBUILD_V($SIMPLEVERSION)";}; +cedit(){ s3cfg_menu;bye;}; +counter(){ COUNT="$((COUNT+1))";}; +timer_calc(){ Tcalc="$((Te-Ts))";}; +timer_stop(){ Te="$(date +%s)";}; +timer_start(){ Ts="$(date +%s)";}; +decode(){ echo -en "$1" | base64 -d;}; +get_module_name(){ echo "${INTERNAL_MODULES[$1]}";}; +_fix_config_h(){ _=0; +#_pcsc_off;_stapi5_off; +}; +_wait(){ echo -e "$w_l";read -n1 -r -p " $txt_help3" key;tput cuu1;echo ' ';} +_systype(){ systype="bad";case "$(uname -m)" in x86|x86_64|amd64|i686) systype="ok";;esac;}; +_pcsc_on(){ sed -i 's@^//#define CARDREADER_PCSC 1@#define CARDREADER_PCSC 1@g' "$svndir/config.h";}; +_pcsc_off(){ sed -i 's@^#define CARDREADER_PCSC 1@//#define CARDREADER_PCSC 1@g' "$svndir/config.h";}; +_stapi5_on(){ sed -i 's@^//#define CARDREADER_STAPI5 1@#define CARDREADER_STAPI5 1@g' "$svndir/config.h";}; +_stapi5_off(){ sed -i 's@^#define CARDREADER_STAPI5 1@//#define CARDREADER_STAPI5 1@g' "$svndir/config.h";}; +_generate_oscam_name(){ cd "$svndir";_dvbapi=$( +[ "$(./config.sh --enabled HAVE_DVBAPI)" == Y ] && echo -n -dvbapi || echo ''; );_webif=$( +[ "$(./config.sh --enabled WEBIF)" == Y ] && echo -n -webif || echo ''; );_ssl=$( +[ "$(./config.sh --enabled WITH_SSL)" == Y ] && echo -n -ssl || echo ''; );_emu=$( +[ "$(./config.sh --enabled WITH_EMU)" == Y ] && echo -n -emu || echo ''; );_ipv6=$( +[ "$(./config.sh --enabled IPV6SUPPORT)" == Y ] && echo -n -ipv6 || echo ''; ); +[ "${USE_vars[USE_COMPRESS]}" == "USE_COMPRESS=1" ] && _upx="-upx" || _upx=''; +[ "$1" == "native" ] && _b_name="$(hostname)$_upx" || _b_name="$1"; +oscam_name="oscam-svn$(REVISION)-$_b_name$_webif$_dvbapi$_ssl$_usb$_pcsc$_stapi$_stapi5$_emu$_ipv6$_upx";}; +e_readers(){ silent=$("$svndir/config.sh" -s readers);echo ${silent//READER_/};}; +e_protocols() { silent=$("$svndir/config.sh" -s protocols);echo ${silent//MODULE_/};}; +e_card_readers(){ silent=$("$svndir/config.sh" -s card_readers);echo ${silent//CARDREADER_/};}; +e_addons(){ "$svndir/config.sh" -s addons |sed 's/WEBIF_//g;s/WITH_//g;s/MODULE_//g;s/CS_//g;s/HAVE_//g;s/_CHARSETS//g;s/CW_CYCLE_CHECK/CWCC/g;s/SUPPORT//g';}; +sysinfo(){ + echo -e "$g_l\nSYSTEM$w_l"; + system_info=$(which lsb_release); + [ ${#system_info} -ge 11 ] && lsb_release -irc; + echo -e "Uptime:\t\t$(uptime -p)"; + echo -e "$g_l\nMEMORY$w_l"; + free -mht | awk '/Mem/{print "Memory:\t\tTotal: " $2 "Mb\tUsed: " $3 "Mb\tFree: " $4 "Mb"} /Swap/{print "Swap:\t\tTotal: " $2 "Mb\tUsed: " $3 "Mb\tFree: " $4 "Mb" }'; + [ -f /sys/dev/block ] && lsblk; + echo -e "$g_l\n CPU$w_l"; + cpu_info=$(which lscpu); + [ ${#cpu_info} -ge 5 ] && lscpu | grep -iE 'model name|vendor id|Architecture|per socket|MHz'; + echo -e "$g_l\nNetwork"; + echo -e "$w_l""Hostname:\t$HOSTNAME"; + ip -o addr | awk '/inet /{print "IP (" $2 "):\t" $4}'; + route -n | awk '/^0.0.0.0/{ printf "Gateway:\t"$2"\n" }'; + awk '/^nameserver/{ printf "Name Server:\t" $2 "\n"}' /etc/resolv.conf; + echo -e "$re_"; + exit; +}; +_pget(){ + tc_dl="$dldir/$(decode "$_t1e""$_toolchainfilename")"; + [ -f "$tc_dl" ] && rm -rf "$tc_dl"; + #tput civis; + cd "$dldir"; + zeile=$(expr 12+$zzusatz); + spalte=$(expr 17+$szusatz); + wget -N --progress=dot "$(decode "$_u1e")/$dln" 2>&1 |grep --line-buffered "%"|awk '{ printf "\033["'$zeile'";"'$spalte'"H\033[K%-4s ", $7;} {printf "'"$txt_wait >"'";} {printf " %-6s",$9;}'; + echo -e "\033["$zeile";"$spalte"H\033[K100% done... "$W; + #tput cnorm; +}; +_clean(){ + [ -L "$workdir/lastbuild.log" ] && rm -rf "$workdir/lastbuild.log"; + [ -L "$workdir/lastpatch.log" ] && rm -rf "$workdir/lastpatch.log"; + clear; + echo -e "$w_l"; + ologo; + for e in "$menudir" "$bdir" "$ldir" "$tcdir";do + echo -e " $r_l$txt_delete$w_l\t$e"| sed "s@$workdir@@g"; + done; + rm -rf "$menudir" "$bdir" "$ldir" "$tcdir" 2>/dev/null; + for e in "$menudir" "$bdir" "$ldir" "$tcdir";do + echo -e " $g_l$txt_create$w_l\t$e"| sed "s@$workdir@@g"; + done; + mkdir -p "$menudir" "$bdir" "$ldir" "$tcdir" 2>/dev/null; + sleep 2; + svnrestore; + _nl; +}; +_sz(){ + lmin=24; + lmax=40; + _lin=$(tput lines); + cmin=79; + cmax=200; + _col=$(tput cols); + if [ "$_lin" -gt "$lmin" ];then + if [ "$_lin" -lt "$lmax" ] || [ "$_lin" -eq "$lmax" ];then + _lines="$((_lin-6))"; + fi; + if [ "$_lin" -gt "$lmax" ];then + _lines="$((lmax-6))"; + fi; + fi; + if [ "$_col" -gt "$cmin" ];then + if [ "$_col" -lt "$cmax" ] || [ "$_col" -eq "$cmax" ];then + _cols="$((_col-6))"; + fi; + if [ "$_col" -gt "$cmax" ];then + _cols="$((cmax-6))"; + fi; + fi; +}; +save_master(){ + [ -f "$svndir/config.sh" ] && cat "$svndir/config.sh" >"$configdir/config.sh.master"; + [ -f "$svndir/Makefile" ] && cat "$svndir/Makefile" >"$configdir/Makefile.master"; +}; +_pre_build(){ + _oscamconfdir_default=""; + _oscamconfdir_custom=""; + source "$tccfgdir/$1"; + clear; + _nl; + echo $WH; + ologo; + _tcfile=""; + dln="$(decode "$_t1e")$(decode "$_toolchainfilename")"; + tc_dl="$dldir/$dln"; + if [ -f "$tcdir/$_toolchainname/bin/$_compiler""gcc" ];then + if [ "$run" == "0" ];then + echo -e "$w_l toolchain :$y_l $_toolchainname"; + echo -e "$w_l status :$g_l compiler $txt_found "; + echo -e "$w_l compiler :$p_l $_compiler""gcc"; + else + echo -e "$w_l toolchain :$y_l $_toolchainname "; + echo -e "$w_l recheck :$g_l ok $txt_now compiler $txt_found"; + echo -e "$w_l compiler :$p_l $_compiler""gcc "; + fi; + else + [ "$run" == "1" ] && echo "$txt_error : build not possible" && exit; + _nl; + echo -e "$w_l toolchain :$y_l $_toolchainname "; + echo -e "$w_l status :$r_l compiler $txt_not_found"; + echo -en "$w_l backupcheck : "; + if [ -f "$dldir/$dln" ];then + echo -e "$g_l$dln $txt_found"; + echo -en "$w_l $txt_extracting :$y_l $txt_wait"; + _console_extract_toolchain; + run=1; + else + echo -e "$r_l$dln $txt_not_found "; + echo -en "$w_l $txt_loading :$g_l"; + zzusatz=1;szusatz=1; + _pget; + _nl; + echo -en "$w_l $txt_extracting :$y_l $txt_wait"; + _console_extract_toolchain 1; + run=1; + fi; + _pre_build "$1"; + fi; + _cmd_build "$_toolchainname"; +}; +_init_menu(){ IFS="#";COUNT=0;MENU_OPTIONS="BACK#$txt_back#";counter;}; +_select_menu(){ + revision_="$(REVISION)"; + _menutext="Simplebuild V$SIMPLEVERSION by Gorgone"; + smenu=$( + "$gui" "$st_" "$bt_" "$title_" "$nc_" --title "-[ $txt_start_menu ]-" --menu "\n $_menutext" 13 55 7 "Continue" "$txt_firstmenu_continue r$revision_" "CHANGE" "$txt_firstmenu_chose" "CEDIT" "$txt_firstmenu_cedit" "LANG" "$txt_firstmenu_lang" "EXIT" "$txt_firstmenu_exit"); + [ $? = 255 ] && _select_menu; + case $smenu in + Continue) + if [ ! -f "$svndir/config.sh" ];then + "$gui" "$st_" "$bt_" "$title_" --infobox "\n $txt_no oscam-svn $txt_found" 5 35; + sleep 2; + _select_menu; + else + _toolchain_main_menu; + fi;; + CHANGE) + new_rev=$("$gui" "$st_" "$nc_" --cr-wrap "$ip_" "Revision: 7000+ \nRevision: 0 = $txt_latest" 9 35); + [[ $new_rev =~ ^-?[0-9]+$ ]] && [ ! "$new_rev" -le "7000" ] && _rev="$new_rev" || _rev=0; + _dialog_checkout1 "$_rev"; + _select_menu;; + CEDIT) + s3cfg_menu; + _select_menu;; + LANG) + lang_select; + cd "$workdir"; + ./s3 menu;; + EXIT) + bye;; + esac; + exit; +}; +_oscam_extra_menu(){ + uv=; + check_smargo; + unset MENU_OPTIONS; + for e in "${!USE_vars[@]}";do + if [ ! "$e" == "USE_TARGZ" ] && [ ! "$e" == "USE_COMPRESS" ] && [ ! "$e" == "USE_PATCH" ] && [ ! "$e" == "USE_LIBUSB" ];then + if [ "${#USE_vars[$e]}" -gt "4" ];then + MENU_OPTIONS+=( "$e" "$e" on ); + else + MENU_OPTIONS+=( "$e" "$e" off ); + fi; + fi; + done; + oextra=$("$gui" "$st_" "$nc_" "$bt_" "$title_" --title "-[ Oscam EXTRA ]-" "$cl_" " OPTIONS " 19 40 12 ${MENU_OPTIONS[@]}); + [ $? = 255 ] && _toolchain_extra_menu; + for e in "${!USE_vars[@]}";do + if [ ! "$e" == "USE_TARGZ" ] && [ ! "$e" == "USE_COMPRESS" ] && [ ! "$e" == "USE_PATCH" ] && [ ! "$e" == "USE_LIBUSB" ];then + ok=0; + for oex in $oextra;do + o=$(echo "$oex" | tr -d '"'); + [ "$e" == "$o" ] && ok=1; + done; + if [ "$ok" == "1" ];then + USE_vars[$e]="$e=1"; + else + USE_vars[$e]=; + fi; + fi; + done; + [ "${USE_vars[USE_PCSC]}" == "USE_PCSC=1" ] && _pcsc_on; + [ ! "${USE_vars[USE_PCSC]}" == "USE_PCSC=1" ] && _pcsc_off; + save_config; + _toolchain_config_menu; +}; +_build_extra_menu(){ + us=; + check_smargo; + unset MENU_OPTIONS; + for e in USE_COMPRESS USE_TARGZ USE_PATCH;do + [ "${#USE_vars[$e]}" -gt "4" ] && MENU_OPTIONS+=( "$e" "$e=1" on ) || MENU_OPTIONS+=( "$e" "$e=1" off ); + done; + bextra=$("$gui" "$st_" "$nc_" "$bt_" "$title_" --title "-[ Build EXTRA ]-" "$cl_" " OPTIONS " 10 40 3 ${MENU_OPTIONS[@]}); + [ $? = 255 ] && _build_extra_menu; + USE_vars[USE_COMPRESS]=; + USE_vars[USE_PATCH]=; + USE_vars[USE_TARGZ]=; + for bex in $bextra;do + b=$(echo "$bex" | tr -d '"'); + USE_vars[$b]="$b=1"; + done; + save_config; + _toolchain_config_menu; +}; +_pre_main_menu(){ + IFS="#"; + COUNT=0; + MENU_OPTIONS="EXIT#$txt_menu_builder1#"; + counter; + MENU_OPTIONS=${MENU_OPTIONS}"ADD#$txt_menu_builder2#"; + counter; + if [ "$tcempty" == "0" ];then + MENU_OPTIONS="${MENU_OPTIONS}REMOVE#$txt_menu_builder3#"; + counter; + fi; + MENU_OPTIONS="${MENU_OPTIONS}NATIVE#$txt_menu_builder4$native#"; + counter; + _a=$(uname -m); + if [ "$systype" == "ok" ];then + if [ "$tcempty" == "0" ];then + for i in "${INST_TCLIST[@]}";do + source "$tccfgdir/$i"; + MENU_OPTIONS="${MENU_OPTIONS}$_toolchainname#$_description#"; + counter; + done; + fi; + fi; + out=$("$gui" --help-button --help-label INFO --title "-[ Toolchain Menu V$SIMPLEVERSION ]-" --menu "$txt_t_menu1$REVISION" "${COUNT+8}" 75 0 "${MENU_OPTIONS}"); + IFS=$OIFS; + first=$(echo "$out" | awk '{printf $1}'); + tc_info=$(echo "$out" | awk '{printf $2}'); + if [ "$first" == "HELP" ];then + if [ -f "$tccfgdir/$(echo "$out" | awk '{printf $2}')" ];then + source "$tccfgdir/$tc_info"; + echo -e "\n\n\tinfobox $_tc_info"; + sleep 4; + fi; + fi; + if [ "$first" == "EXIT" ];then + bye; + else + toolchain_main_menu; + fi; +}; +tedit(){ + clear; + if [ -f "$tccfgdir/$1" ];then + source "$tccfgdir/$1"; + echo -e $y_l; + slogo; + echo -e " $p_l change CONF_DIR for $c_l$_toolchainname$w_l\n"; + echo -e $w_l" current =$c_l $_oscamconfdir_custom"; + echo -e $w_l" default =$c_l $_oscamconfdir_default"; + echo -en $w_l" Enter new =$w_l ";read name; + echo -e " now =$y_l CONF_DIR=$name\n$re_"; + sed -i s@^_oscamconfdir_custom.*@_oscamconfdir_custom=\"$name\"@ "$tccfgdir/$_toolchainname"; + fi; +}; +_gtedit(){ + if [ -f "$tccfgdir/$_toolchainname" ];then + source "$tccfgdir/$_toolchainname"; + input=$("$gui" "$st_" "$bt_" "$title_" --title " -[ $1 Toolchain ]- " --inputbox "\n CONF_DIR=$_oscamconfdir_default 'default'\n [ESC] = default\n" 0 0 "$_oscamconfdir_custom"); + retval=$?; + case $retval in + 0) + confdir="$input";; + 1) + confdir="$_oscamconfdir_custom";; + 255) + confdir="$_oscamconfdir_default";; + esac; + sed -i s@^_oscamconfdir_custom.*@_oscamconfdir_custom=\"$confdir\"@ "$tccfgdir/$_toolchainname"; + source "$tccfgdir/$_toolchainname"; + fi; +}; +check_smargo(){ + if [ -f "$svndir/config.sh" ];then + if [ "$("$svndir/config.sh" -e CARDREADER_SMARGO)" == "Y" ];then + USE_vars[USE_LIBUSB]="USE_LIBUSB=1"; + else + USE_vars[USE_LIBUSB]=; + fi; + fi; +}; +_reset_config(){ + if [ -f "$svndir/config.sh" ];then + [ -f "$menudir/$_toolchainname.save" ] && rm -rf "$menudir/$_toolchainname.save"; + if [ ! -f "$workdir/SVN-IS-PATCHED" ];then + reset_="$("$svndir/config.sh" -R)"; + fi; + else + _select_menu; + fi; +}; +_get_config_menu(){ + tmp="$(mktemp)"; + while read -r _l;do + c=$(echo "$_l" | tr -cd \" | wc -c); + _c=$((_c + c)); + [ ${_c} -lt 11 ] && echo "$_l" >>"$tmp"; + [ ${_c} -eq 10 ] && break; + done <"$svndir/config.sh"; + mk="$(grep '^ USE_' "$workdir/oscam-svn/Makefile" |sort -u|awk '{print $1}')"; + for e in $mk;do + USE_vars[${e:0:-2}]=; + done; + check_smargo; + source "$tmp"; + rm -rf "$tmp"; +}; +read_s3cfg(){ + if [ -f "$s3cfg" ];then + while read l;do + s3cfg_vars[$(echo "$l"| awk -F'=' '{print $1}')]=$(echo "$l"| awk -F'=' '{print $2}'); + done < "$s3cfg"; + fi; +}; +s3cfg_menu(){ + unset CFG_MENU; + declare -a CFG_MENU; + old_IFS=$IFS; + COUNT=0; + found=""; + for e in "${!s3cfg_vars[@]}";do + CFG_MENU+="$e#on/off#$([ "${s3cfg_vars[$e]}" -gt "0" ] && echo on || echo off)#"; + counter; + done; + IFS="#"; + erg=$("$gui" "$st_" "$bt_" "$title_" "$cl_" "enable/disable options" 16 45 10 ${CFG_MENU[@]}); + IFS=$old_IFS; + for e1 in "${!s3cfg_vars[@]}";do + for e2 in $erg;do + found="0"; + if [ "$e1" == "${e2//\'}" ];then + found="1"; + break; + fi; + done; + if [ "$found" == "1" ];then + s3cfg_vars[$e1]=1; + else + s3cfg_vars[$e1]=0; + fi; + done; + write_s3cfg; +}; +write_s3cfg(){ + [ -f "$s3cfg" ] && rm -rf "$s3cfg"; + for e in "${!s3cfg_vars[@]}";do + echo "$e=${s3cfg_vars[${e}]}" >>"$s3cfg"; + done; +}; +_stapi_select(){ + if [ "$stapi_allowed" == "1" ];then + stapivar=''; + addstapi=; + USESTRING=; + stapimode=$($gui $rl_ " SELECT STAPI MODE" 12 0 5 0 "STAPI_OFF" on 1 "USE_STAPI" off 2 "USE_STAPI5 UFS916" off 3 "USE_STAPI5 UFS916003" off 4 "USE_STAPI5 OPENBOX" off 3>&1 1>&2 2>&3); + usevars=$(echo $usevars | sed "s@USE_STAPI5@@" | xargs); + usevars=$(echo $usevars | sed "s@USE_STAPI@@" | xargs); + case $stapimode in + 0) + stapivar=;; + 1) + stapivar="STAPI_LIB=$sdir/stapi/liboscam_stapi.a"; + addstapi="USE_STAPI";; + 2) + stapivar="STAPI5_LIB=$sdir/stapi/liboscam_stapi5_UFS916.a"; + addstapi="USE_STAPI5";; + 3) + stapivar="STAPI5_LIB=$sdir/stapi/liboscam_stapi5_UFS916_0.03.a"; + addstapi="USE_STAPI5";; + 4) + stapivar="STAPI5_LIB=$sdir/stapi/liboscam_stapi5_OPENBOX.a"; + addstapi="USE_STAPI5";; + esac; + save_config; + else + "$gui" "$st_" --title "STAPI INFO" --msgbox "NOT for $_toolchainname" 0 0; + _toolchain_config_menu; + fi; +}; + +save_config(){ + usevars=; + enabled=; + disabled=; + check_smargo; + enabled=($("$svndir/config.sh" -s)); + disabled=($("$svndir/config.sh" -Z)); + [ "$_toolchainname" == "sh4" ] && unset USE_vars[USE_COMPRESS]; + [ "$_toolchainname" == "sh_4" ] && unset USE_vars[USE_COMPRESS]; + unset USE_vars[USE_STAPI]; + unset USE_vars[USE_STAPI5]; + for e in ${USE_vars[*]};do + usevars="${e:0:-2} $usevars"; + done; + [ -f "$menudir/$_toolchainname.save" ] && rm -rf "$menudir/$_toolchainname.save"; + echo "enabled=\"${enabled[*]}\"" >"$menudir/$_toolchainname.save"; + echo "disabled=\"${disabled[*]}\"">>"$menudir/$_toolchainname.save"; + if [ "$stapi_allowed" == "1" ];then + if [ "${#stapivar}" -gt "15" ];then + echo "stapivar=\"$stapivar\"">>"$menudir/$_toolchainname.save"; + echo "usevars=\"$usevars $addstapi\"" >>"$menudir/$_toolchainname.save"; + else + echo "usevars=\"$usevars\"" >>"$menudir/$_toolchainname.save"; + fi; + else + echo "usevars=\"$usevars\"" >>"$menudir/$_toolchainname.save"; + fi; +}; + +load_config(){ + _stapi=; + _stapi5=; + enabled=; + disabled=; + stapivar=""; + USESTRING=; + usevars=; + unset USE_vars[USE_STAPI]; + unset USE_vars[USE_STAPI5]; + if [ -f "$menudir/$_toolchainname.save" ];then + source "$menudir/$_toolchainname.save"; + ena=$("$svndir/config.sh" -E $enabled); + dis=$("$svndir/config.sh" -D $disabled); + for e in $usevars;do + USE_vars[$e]="$e=1"; + [ "$e" == "USE_LIBUSB" ] && silent=$("$svndir/config.sh" --enable CARDREADER_SMARGO); + [ "$e" == "USE_PCSC" ] && sed -i 's@^//#define CARDREADER_PCSC 1@#define CARDREADER_PCSC 1@g' "$svndir/config.h"; + done; + else + _reset_config; + [ "${s3cfg_vars[USE_TARGZ]}" == "1" ] && USE_vars[USE_TARGZ]="USE_TARGZ=1"; + [ "${s3cfg_vars[USE_COMPRESS]}" == "1" ] && USE_vars[USE_COMPRESS]="USE_COMPRESS=1"; + for e in $default_use;do + USE_vars[$e]="$e=1"; + done; + fi; + check_smargo; + [ "$_toolchainname" == "sh4" ] && unset USE_vars[USE_COMPRESS]; + [ "$_toolchainname" == "sh_4" ] && unset USE_vars[USE_COMPRESS]; + USESTRING="$(echo "${USE_vars[@]}"| sed 's@USE_@@g'| sed 's@=1@@g'| tr -s ' ')"; +}; +_get_config_con(){ + if [ ! "$1" == "checkout" ] && [ ! "$1" == "clean" ];then + tmp="$(mktemp)"; + if [ -f "$svndir/config.sh" ];then + while read -r _l;do + c=$(echo "$_l" | tr -cd \" | wc -c); + _c=$((_c + c)); + [ ${_c} -lt 11 ] && echo "$_l" >>"$tmp"; + [ ${_c} -eq 10 ] && break; + done <"$svndir/config.sh"; + else + while read -r _l;do + c=$(echo "$_l" | tr -cd \" | wc -c); + _c=$((_c + c)); + [ ${_c} -lt 11 ] && echo "$_l" >>"$tmp"; + [ ${_c} -eq 10 ] && break; + done <"$configdir/config.sh.master"; + fi; + if [ -f "$workdir/oscam-svn/Makefile" ];then + str_="$(grep '^ USE_' "$workdir/oscam-svn/Makefile"| sort -u| awk '{print $1}')"; + for e in $str_;do + es="${e:0:-2}"; + USE_vars[$es]=; + done; + else + str_="$(grep '^ USE_' "$configdir/Makefile.master"| sort -u| awk '{print $1}')"; + for e in $str_;do + es="${e:0:-2}"; + USE_vars[$es]=; + done; + fi; + check_smargo; + source "$tmp"; + rm -rf "$tmp" "$tmp1"; + rm -rf "$tmp.load" "$tmp1.load"; + fi; +}; +_gtedit(){ + if [ -f "$tccfgdir/$_toolchainname" ];then + source "$tccfgdir/$_toolchainname"; + input=$("$gui" "$st_" "$bt_" "$title_" --title " -[ $1 Toolchain ]- " --inputbox "\n CONF_DIR=$_oscamconfdir_default 'default'\n [ESC] = default\n" 0 0 "$_oscamconfdir_custom"); + retval=$?; + case $retval in + 0) + confdir="$input";; + 1) + confdir="$_oscamconfdir_custom";; + 255) + confdir="$_oscamconfdir_default";; + esac; + sed -i s@^_oscamconfdir_custom.*@_oscamconfdir_custom=\"$confdir\"@ "$tccfgdir/$_toolchainname"; + source "$tccfgdir/$_toolchainname"; + fi; +}; \ No newline at end of file diff --git a/support/functions/_patch b/support/functions/_patch new file mode 100644 index 0000000..b7fe45f --- /dev/null +++ b/support/functions/_patch @@ -0,0 +1,102 @@ +#!/bin/bash + +get_patch(){ _get_patch; }; +_get_patch(){ + cd $pdir; + [ -f patch.url ] && source patch.url; + clear; + echo -e $C; + ologo; + echo -e $WH; + [ -f $PATCHNAME ] && echo -e "$Y old patch found\n remove $P$PATCHNAME" && rm -f $PATCHNAME; + echo -e $W" load $PATCHNAME"; + wget -q -O$PATCHNAME $PATCHURL; + [ -f $PATCHNAME ] && echo -e $G" ok$W new $PATCHNAME loadet\n" || echo -e $R" patch not found\n"$W; +}; +_apply_menupatch(){ + cd "$pdir"; + pf=(*); + if [ ${#pf[@]} -gt 1 ];then + [ -f "$workdir/SVN-IS-PATCHED" ] && quicksvnrestore $_toolchainname 2>/dev/null; + if [ ! -f "$workdir/SVN-IS-PATCHED" ];then + (if [ "$(ls -A "$pdir"/*.patch 2>/dev/null)" ];then + cd "$pdir"; + unset patchlist;patchlist=`ls *.patch | sort -st '/' -k1,1`; + for e in ${patchlist[@]};do + _w="ok"; + cd "$svndir"; + patchlog="$(mktemp)"; + echo "PATCH : apply $e"; + patch -f -p0 < "$pdir/$e" >>"$patchlog" 2>/dev/null; + hunks=$(grep -c1 '^Hunk' "$patchlog"); + fails=$(grep -c1 'hunks FAILED' "$patchlog"); + if [ "$hunks" -gt "0" ];then + echo "PATCH : $hunks x HUNK for $e"; + _w="hunk"; + fi; + if [ "$fails" -gt "0" ];then + echo "PATCH : $fails x FAILS for $e"; + _w="fail"; + fi; + done; + case $_w in + ok) + echo "PATCH : done all ok"; + touch "$workdir/SVN-IS-PATCHED";; + hunk) + echo "PATCH : done with warnings save $e.log"; + cat $patchlog >>"$ldir/$e.log"; + ln -sf "$ldir/$e.log" "$workdir/lastpatch.log"; + touch "$workdir/SVN-IS-PATCHED";; + fail) + echo "PATCH : break build save $e.log"; + cat $patchlog >>"$ldir/$e.log"; + ln -sf "$ldir/$e.log" "$workdir/lastpatch.log"; + touch "$workdir/SVN-IS-PATCHED";; + esac; + rm -rf "$patchlog"; + fi;)|"$gui" "$st_" "$bt_" "$title_" "$pb_" 12 62;sleep 2; + fi; + fi; +}; +_apply_consolepatch(){ + if [ ! -f "$workdir/SVN-IS-PATCHED" ];then + cd "$pdir"; + if [ "$(ls -1 "$pdir"/*.patch 2>/dev/null | wc -l)" -gt "0" ];then + unset patchlist;patchlist=`ls *.patch | sort -st '/' -k1,1`; + for e in ${patchlist[@]};do + _w=0;cd "$svndir"; + patchlog="$(mktemp)"; + echo -e "$y_l| PATCH : apply $e"; + patch -F 10 -f -p0 < "$pdir/$e" >>"$patchlog" 2>/dev/null; + hunks=$(grep -c1 "^Hunk" "$patchlog"); + fails=$(grep -c1 "hunks FAILED" "$patchlog"); + if [ "$hunks" -gt "0" ];then + echo -e "$y_l| PATCH :$w_l $hunks x HUNK for $e"; + _w=1; + fi; + if [ "$fails" -gt "0" ];then + echo -e "$y_l| PATCH :$r_n FAIL (breaking Build) = $fails"; + echo -en "$w_l| RESTORE :$c_w LAST SVN BACKUP in "; + for (( i=6; i>0; i--));do + sleep 1 & echo -en "$i\b"; + wait; + done; + svnrestore lastsvn; + exit; + fi; + cat $patchlog >"$ldir/$e.log"; + ln -sf "$ldir/$e.log" "$workdir/lastpatch.log"; + rm -rf "$patchlog"; + done; + if [ "$_w" -gt "0" ];then echo -e "$y_l| PATCH : done with warnings"; + touch "$workdir/SVN-IS-PATCHED"; + else + echo -e "$y_l| PATCH :$g_l done all ok$rs_"; + touch "$workdir/SVN-IS-PATCHED"; + fi; + else + echo -en "$y_l| PATCH : no patch found\n"; + fi; + fi; +}; \ No newline at end of file diff --git a/support/functions/_profiles b/support/functions/_profiles new file mode 100644 index 0000000..9431d7e --- /dev/null +++ b/support/functions/_profiles @@ -0,0 +1,104 @@ +#!/bin/bash + +profiles(){ + _list_profiles; + exit; +}; +_list_profiles(){ + cd "$profdir"; + profiles=(*.profile); + if [ ${#profiles[@]} -gt 0 ];then + echo -e "$c_l"; + clear; + slogo; + echo -e "$y_l\n $txt_profiles $txt_found $txt_for ( ./$(basename "$0") \"tcname\" -p=name.profile )"; + echo -e "$w_l ======================================================\n";i=0; + for e in "${profiles[@]}";do + ((i++)); + echo -e "$w_l ($i) > $e"; + done; + fi; + echo -e "\n$rs_"; +}; +_save_profile(){ + if [ -f "$menudir/$_toolchainname.save" ];then + source "$menudir/$_toolchainname.save"; + input=$("$gui" "$st_" "$bt_" "$title_" --title " -[ $1 Toolchain ]- " $ip_ "\n SAVE PROFILE\n" 0 0 "$_toolchainname"); + echo $enabled $usevars | sed -e 's/CARDREADER_//g;s/READER_//g;s/MODULE_//g;s/HAVE_//g;s/WEBIF_//g;s/WITH_//g;s/CS_//g;s/_CHARSETS//g;s/CW_CYCLE_CHECK/CWCC/g;s/SUPPORT//g;' >"$profdir/$input.profile"; + fi; +}; +_load_profile(){ + if [ "$(ls -A "$profdir")" ];then + ok=0; + loadprofile="no"; + USESTRING=; + _create_module_arrays; + unset selection; + declare -a SELECTION; + cd "$profdir"; + p_files=(*.profile); + i=0; + for e in "${p_files[@]}";do + ((i++));SELECTION+=($e '<'); + done; + pselect=$("$gui" "$st_" "$bt_" "$title_" --no-cancel --title " -[ $txt_select_profile_title ]- " --menu "\n $txt_select_profile\n\n" 0 0 "$i" "${SELECTION[@]}"); + [ $? = 255 ] && loadprofile="yes" && _toolchain_build_menu; + "$gui" "$st_" "$bt_" "$title_" --yesno "\n$txt_confirm_profile_select\n\n$pselect\n\n" 0 0; + response=$?; + case "$response" in + 1) + loadprofile="yes"; + _toolchain_build_menu;; + 255) + loadprofile="yes"; + _toolchain_build_menu;; + esac; + if [ -f "$profdir/$pselect" ];then + profile_vars=$(cat "$profdir/$pselect";); + reset_="$("$svndir/config.sh" -D all)"; + for e in "${!USE_vars[@]}";do + USE_vars[$e]=; + done; + for e1 in $profile_vars;do + for e2 in "${!USE_vars[@]}";do + [ "$e1" == "$e2" ] && USE_vars[$e1]="$e1=1"; + done; + for sm in "${SHORT_MODULENAMES[@]}";do + if [ "$e1" == "$sm" ];then + _em_="$_em_ $(get_module_name "$sm")"; + fi; + done; + done; + _set_=$("$svndir/config.sh" -E $_em_); + USESTRING="$(echo "${USE_vars[@]}"| sed 's@USE_@@g' | sed 's@=1@@g'| tr -s ' ')"; + loadprofile="yes"; + fi; + else + $gui --msgbox "\n$txt_no_profile_found \n " 0 0; + fi; + loadprofile="no"; +}; +_create_native_profile(){ + [ ! -d "$tcdir/native/bin" ] && mkdir -p "$tcdir/native/bin"; + cd "$tcdir/native/bin"; + g="$(which gcc)"; + stripvar="$(which strip)"; + compiler_link="$($g -dumpmachine)-gcc"; + strip_link="$($g -dumpmachine)-strip"; + [ ! -L "$compiler_link" ] && ln -sf "$g" "$compiler_link"; + [ ! -L "$strip_link" ] && ln -sf "$stripvar" "$strip_link"; + cd "$tccfgdir"; + cat << EOF > native +_toolchainname="native"; +default_use="USE_UTF8 USE_LIBCRYPTO"; +_oscamconfdir_default="/usr/local/etc"; +_oscamconfdir_custom="not_set"; +_compiler="$($g -dumpmachine)-"; +_tc_info="Native System Compiler \ +$(gcc --version)"; +_libsearchdir="/lib"; +_menuname="native"; +_sysroot="/"; +EOF +cd "$workdir"; +}; diff --git a/support/functions/_subversion b/support/functions/_subversion new file mode 100644 index 0000000..91bfef1 --- /dev/null +++ b/support/functions/_subversion @@ -0,0 +1,193 @@ +#!/bin/bash + +checkout(){ + echo -en "$c_l"; + fc1="$(mktemp)"; + clear; + ologo; + i=0; + COUNT=0; + if [ -d "$svndir" ];then + rm -rf "$svndir"; + echo -e "$p_l\n $txt_delete $txt_existing oscam-svn $re_\n"; + else + echo -e "$p_l\n $txt_no oscam-svn $txt_found\n$re_"; + fi; + echo -e "$w_l SVN TrunkURL : $g_l$trunkurl$re_"; + [ ! -z "$1" ] && [ $(($1)) -gt 6999 ] && opt_="-r$1" && mac_="($txt_selected)" || opt_=''; + echo -en "$w_l SVN FileCount : "; + svn info -R "$trunkurl" |grep '^URL' |uniq |wc -l >"$fc1"; + n=$(cat "$fc1"); + echo -e "$g_l""$txt_found $n"; + echo -en "$w_l SVN checkout : "; + while read line filename;do + counter=$(( 100*(++i)/n)); + tput cup 11 18; + [ "$counter" -lt "100" ] && echo -en "$g_l""$counter%$re_" || echo -en "$g_l""100%$re_"; + done < <( svn co "$trunkurl" $opt_ "$svndir" |sed "s|$svndir/||g"); + tput cup 11 18; + echo -en "$g_l""100%$re_"; + if [ -f "$svndir/config.sh" ];then + tput cup 12 2; + echo -en "$w_l""SVN Revision : $y_l""$("$svndir/config.sh" -r) $b_l$mac_$re_\n$w_l SVN UserPath : $y_l""$svndir"; + fi; + [ -f "$svndir/config.h" ]&& reset_="$("$svndir/config.sh" -R)"; + _fix_config_h; + rm -rf "$fc1"; + _nl; + [ -f "$workdir/SVN-IS-PATCHED" ] && rm -f "$workdir/SVN-IS-PATCHED"; + tarsvn; +}; +svnrestore(){ + clear; + echo -en "$c_l"; + ologo; + if [ "$1" == "list" ];then + cd "$bsvn"; + bfiles="$(find . -type f |sed 's|./||' |sed 's|.tar.gz||')"; + bcount=$(echo "$bfiles" |wc -w); + if [ "$bcount" -gt "0" ];then + echo -e "\n$c_l $bcount$w_l svn backups found\n ____________________$re_\n"; + for b in $bfiles;do + echo -e "$c_l --> $w_l$b"; + done; + _nl; + else + echo -e "\n$r_l $bcount$w_l svn backups found\n ____________________$re_\n"; + fi; + exit; + fi; + if [ -d "$svndir" ];then + rm -rf "$svndir"; + echo -e "$p_l\n $txt_delete $txt_existing oscam-svn $re_\n"; + else + echo -e "$p_l\n $txt_no oscam-svn $txt_found\n$re_"; + fi; + untarsvn $1; + [ -f "$svndir/config.h" ]&& echo -en "$w_l"" SVN Revision : $y_l""$("$svndir/config.sh" -r) restored\n\n$re_"; +}; +quicksvnrestore(){ + untarsvn $1; +}; +svnup(){ + echo -en "$c_l"; + clear; + ologo; + i=1; + if [ -d "$svndir" ];then + echo -en "$p_l\n $txt_update oscam-svn $re_\n"; + else + checkout; + return; + fi; + echo -en "\n$w_l SVN TrunkURL : $g_l""$trunkurl""$re_"; + svn co "$trunkurl" "$svndir" -q; + if [ -f "$svndir/config.sh" ];then + tput cup 10 2; + echo -e "$w_l""SVN Revision : ""$y_l$("$svndir/config.sh" -r) $b_l$mac_$re_\n$w_l SVN UserPath : $y_l""$svndir\n$re_"; + fi; + if [ -f "$svndir/config.h" ];then + reset_="$("$svndir/config.sh" -R)"; + _fix_config_h; + fi; +}; +svnpatch(){ + if [ ! -f "$workdir/SVN-IS-PATCHED" ];then + clear; + echo -e $C; + ologo; + unset patchlist; + cd "$pdir"; + patchlist=(*.patch); + if [ "$(ls -A "$pdir"/*.patch 2>/dev/null)" ];then + touch "$workdir/SVN-IS-PATCHED"; + for p in "${patchlist[@]}";do + echo -e $WH"\n\n -> $p <-\n"$W; + sleep 1; + patch -d$svndir/ -p0 < "$pdir/$p" |sed -e "s/^patching file/$G patching > $WH/g;s/^Hunk/$P Hunk > $Y/g;s/FAILED/$R FAILED/g; ;s/-- saving/$Y -- saving/g;"; + done; + else + echo -e $WH" $txt_no patch $txt_found"; + fi; + else + clear; + echo -e $C; + ologo; + echo -e $WH" already patched"; + fi; + echo -e $W; +}; +_dialog_checkout(){ + upc="$(mktemp)"; + (echo -en " $txt_verify_syscheck "; + [ "$sanity" == "1" ] && echo -e "ok" && sleep 1; + if [ "${s3cfg_vars[NO_SVN_AUTOUPDATE]}" == "0" ];then + echo -en " $txt_verify_svn "; + if [ -f "$svndir/config.sh" ];then + echo "ok"; + sleep 1; + echo -en " $txt_update_svn $txt_wait\n"; + cd "$svndir"; + svn -q update; + echo 1 >"$upc"; + sleep 1; + fi; + fi;) | "$gui" "$st_" "$bt_" "$title_" "$pb_" 5 52; + if [ "${s3cfg_vars[NO_SVN_AUTOUPDATE]}" == "0" ];then + upc1=$(cat "$upc" 2>/dev/null); + rm -f "$upc"; + [ ! "$upc1" == "1" ] && _dialog_checkout1; + if [ -f "$svndir/config.sh" ];then + reset_="$("$svndir/config.sh" -R)"; + _fix_config_h; + fi; + _get_config_menu; + fi; + if [ -n "$1" ];then + if [ -f "$tccfgdir/$1" ] && [ -f "$svndir/config.sh" ];then + source "$tccfgdir/$1"; + if [ ! -f "$tcdir/$_toolchainname/bin/$_compiler""gcc" ];then + first="$1"; + _toolchain_gui_install; + fi; + loadprofile="yes"; + _toolchain_build_menu "$1"; + else + _select_menu; + fi; + fi; + _select_menu; +}; +_dialog_checkout1(){ + rm -rf "$svndir" 2>/dev/null; + COUNT=0; + [ -z "$1" ] && rn=0 || rn="$1"; + if [ "$rn" -ge "7000" ];then + _rev="-r $rn"; + sc_text="Revision: $rn"; + else + _rev=''; + sc_text="$txt_latest"; + fi; + (echo -en "$txt_prepare_svn $txt_wait";)| "$gui" "$st_" "$bt_" "$title_" "$pb_" 3 55; + nnn="$(svn info $_rev -R "$trunkurl" |grep "^URL: " |uniq |wc -l)"; + "$gui" "$st_" "$bt_" "$title_" --title " -[ SVN Checkout $sc_text ]- " --gauge " $txt_wait" 6 75 < <(while read line filename;do ((++i));PCT=$(( 100*i/(nnn+1) )); +cat </dev/null| sed 's/[^0-9]//g' || echo " nosvn "; +}; diff --git a/support/functions/_sys_check b/support/functions/_sys_check new file mode 100644 index 0000000..2a823ff --- /dev/null +++ b/support/functions/_sys_check @@ -0,0 +1,122 @@ +#!/bin/bash + +prerequisites(){ + +failed=0; +missing="(not found)"; +[[ $1 ]] && output=": &&" || output="echo"; + +$output -e "$w_l\n CHECK for binaries\n ==================\n"; + +# check for a forgotten and unusable 'upx' and remove this crap +[ -x "$bindir"/upx ] && "$bindir"/upx -V &>/dev/null || rm -f "$bindir"/upx &>/dev/null; + +for e in "${binvars[@]}"; +do + if hash "$e" 2>/dev/null; then + $output -e "$w_l have\t$g_l$e\t\t$y_l$(which "$e")"; + else + failed=1; + $output -e "$r_l need\t$w_l$e\t\t$r_l$missing"; + fi; +done; + +if hash upx 2>/dev/null; then + upxversion=($(upx -V | awk 'NR==1 { verok=$2>=3.91; printf "%.2f %i", $2, verok }')); + $output -n -e "$w_l version$g_l upx$y_l ${upxversion[0]}"; + if [ ${upxversion[1]} == 1 ]; then + $output -e "$g_l ok"; + else + $output -e "$r_l nok"; + failed=1; + fi +fi + +$output -e " \n $w_l CHECK for headers\n =================\n" ; + +for e in "${headervars[@]}"; +do + e1=$(find /usr/include/* | grep -m1 "$e"); + if [ ${#e1} -gt 8 ]; then + $output -e "$w_l have\t$g_l$e$w_l$y_l\t$e1" + else + failed=1; + $output -e "$r_l need\t$w_l$e\t\t$r_l$missing"; + fi; +done; + +$output -e " \n $w_l CHECK for libraries\n ===================\n" ; + +for e in "${libvars[@]}"; +do + e1=$(find /usr/lib* 2>/dev/null | grep -m1 "$e"); + if [ ${#e1} -gt 8 ]; then + $output -e "$w_l have\t$g_l$e$w_l$y_l\t$e1" + else + failed=1; + $output -e "$r_l need\t$w_l$e\t\t$r_l$missing"; + fi; +done; + +if [ "$(uname -m)" == "x86_64" ]; then + $output -e " \n $w_l CHECK for zlib32\n ================\n" ; + e="zlib32"; + e1="/usr/lib/libz.so"; + e2="/usr/lib32/libz.so.1"; + if [ -f $e1 ]; then + $output -e "$w_l have\t$g_l$e$w_l$y_l\t$e1" + elif [ -f $e2 ]; then + $output -e "$w_l have\t$g_l$e$w_l$y_l\t$e2" + else + failed=1; + $output -e "$r_l need\t$w_l$e\t\t$r_l$missing"; + fi +fi + +return $failed; +} + +# Parameters (all optional): +# $1: installer name (or "auto") +# $2: add architecture (not implemented yet) +# +# Example: +# syscheck debian_os +# call installer 'debian_os' (Do not care about the actual Linux distribution.) +syscheck(){ +[[ $1 ]] && [ "$1" != "auto" ] && override="$1"; + +if [ -d "$osdir" ];then cd "$osdir";x=(*); for i in "${x[@]}";do source "$i"; done fi + +binvars=( dialog grep gawk wget tar bzip2 svn xz upx patch gcc make scp sshpass openssl dos2unix ); +headervars=( crypto.h libusb.h pcsclite.h pthread.h ); +libvars=( libccidtwin.so ); + +sanity=1; + +if ! prerequisites silent; then + echo -e "$w_l"; clear; ologo; + prerequisites; + sanity=0; + installer="unknown"; + # Debian and Ubuntu + [ -f /etc/debian_version ] && installer="debian_os"; + # CentOS and Redhat + [ -f /etc/redhat-release ] && installer="redhat_os"; + # Manjaro (/etc/os-release) + [ -f /etc/manjaro-release ] && installer="manjaro_os"; + # SuSE (/etc/SuSE-release is depreciated -> check for YaST2) + [ -d /etc/YaST2 ] && installer="suse_os"; + # Optional override via parameter + [[ $override ]] && installer=$override; + echo -e "\n$w_l Selected installer: $installer"; + if type -t "$installer" >/dev/null; then + $installer && prerequisites && sanity=1; + else + echo -e "\n$r_l Needs manual installation."; + fi + echo -e "$re_"; +fi + +return $sanity; +} diff --git a/support/functions/_toolchain b/support/functions/_toolchain new file mode 100644 index 0000000..35dea12 --- /dev/null +++ b/support/functions/_toolchain @@ -0,0 +1,285 @@ +#!/bin/bash + +_toolchain_build_menu(){ + [ "$loadprofile" == "yes" ] && load_config; + selected=$( + "$gui" "$st_" "$bt_" "$title_" --no-cancel --title " -[ $txt_bmenu_title ]- " --menu "_________________________________________________________ \n $txt_bmenu_user = $(whoami)\n Toolchain = $_toolchainname\n $txt_bmenu_comp = $_compiler""gcc\n $txt_bmenu_debu = CPU-Threads($(CPUS)) SVN($(REVISION)) SCRIPT($SIMPLEVERSION)\n $txt_bmenu_use = $(echo $USESTRING| sed -e 's/^[ \t]*//')\n _________________________________________________________ \n" 22 65 10 BUILD "$txt_bmenu_build" CONFIGURE "$txt_bmenu_config" LOAD_PROFILE "$txt_bmenu_profile" SAVE_PROFILE "$txt_bmenus_profile" SHOW_BUILDLOG "$txt_bmenu_log" EDIT_CONF_DIR "Oscam config PATH" BACK "$txt_bmenu_back" EXIT "$txt_firstmenu_exit"); + [ $? = 255 ] && _toolchain_build_menu; + case $selected in + BUILD) + _gui_build;; + CONFIGURE) + _toolchain_config_menu;; + EDIT_CONF_DIR) + _gtedit; + _toolchain_build_menu;; + SHOW_BUILDLOG) + _sz; + if [ -f "$workdir/lastbuild.log" ];then + "$gui" "$st_" "$bt_" "$title_" --textbox "$workdir/lastbuild.log" "$_lines" "$_cols"; + fi; + _toolchain_build_menu;; + LOAD_PROFILE) + _load_profile;; + SAVE_PROFILE) + _save_profile;; + BACK) + _toolchain_main_menu;; + EXIT) + bye; + exit;; + esac; + _toolchain_build_menu; +}; +_toolchain_config_menu(){ + [ "$loadprofile" == "yes" ] && load_config; + selected=$( + "$gui" "$st_" "$bt_" "$title_" --no-cancel --title " -[ $txt_config_menu ]- " --menu " ADDONS :\n $(e_addons)\n\n PROTOCOLS :\n $(e_protocols)\n\n READERS :\n $(e_readers)\n\n CARD_READERS :\n $(e_card_readers)\n\n USE VARIABLES :\n $(echo $USESTRING| sed -e 's/^[ \t]*//')\n\n" 29 75 6 BACK "$txt_back_build" OSCAM_MODULE "$txt_module_configure" OSCAM_EXTRA "$txt_oscam_extra" BUILD_EXTRA "$txt_build_extra" SELECT_STAPI "select stapi" RESET "$txt_build_reset"); + [ $? = 255 ] && _toolchain_config_menu; + case $selected in + BACK) + save_config; + _toolchain_build_menu;; + OSCAM_EXTRA) + _oscam_extra_menu;; + BUILD_EXTRA) + _build_extra_menu;; + OSCAM_MODULE) + eval "$svndir/config.sh -g" 2>/dev/null; + save_config;; + SELECT_STAPI) + _stapi_select;; + RESET) + _reset_config; + load_config; + _toolchain_config_menu;; + esac; + _toolchain_config_menu; +}; +_toolchain_main_menu(){ + _fill_tc_array; + IFS="#"; + COUNT=0; + MENU_OPTIONS="BACK#$txt_back_main#"; + counter; + if [ "$systype" == "ok" ];then + MENU_OPTIONS+="ADD#$txt_menu_builder2#"; + counter; + [ "$tcempty" == "0" ] && MENU_OPTIONS+="REMOVE#$txt_menu_builder3#" && counter; + fi; + MENU_OPTIONS+="native#$txt_menu_builder4 $(hostname)-$(uname -m)#"; + counter; + if [ "$systype" == "ok" ];then + if [ "$tcempty" == "0" ];then + for i in "${INST_TCLIST[@]}";do + if [ ! "$i" == "native" ];then + source "$tccfgdir/$i"; + MENU_OPTIONS+="$_toolchainname#$_description#"; + counter; + fi; + done; + fi; + fi; + MENU_OPTIONS+="EXIT#$txt_firstmenu_exit#"; + counter; + out=$( + "$gui" "$st_" "$nc_" "$bt_" "$title_" --help-button --help-label INFO --title "-[ Toolchain $txt_menu ]-" --menu "$txt_main_revision$(REVISION)" "${COUNT+8}" 75 0 ${MENU_OPTIONS}); + IFS=$OIFS; + first=$(echo "$out" | awk '{printf $1}'); + tc_info=$(echo "$out" | awk '{printf $2}';); + case $first in + EXIT) + bye;; + BACK) + _select_menu;; + ADD) + _toolchain_add_menu;; + REMOVE) + _toolchain_remove_menu;; + HELP) + if [ -f "$tccfgdir/$tc_info" ];then + source "$tccfgdir/$tc_info"; + "$gui" "$st_" "$nc_" "$bt_" "$title_" "$ib_" "$_tc_info" $((_tc_infolines + 5)) 65; + sleep 5; + fi; + _toolchain_main_menu;; + *) + [ -f "$tccfgdir/$first" ] && stapi_allowed="" && source "$tccfgdir/$first" || exit; + loadprofile="yes"; + _toolchain_build_menu "$first";; + esac; +}; +get_toolchain_config(){ + get_toolchain_list; + for ((i=0;i<${#toolchain_list[@]};i++));do + [ "${toolchain_list[$i]}" == "$1" ] && source "$sdir/toolchain.cfgs/$1"; + done; +}; +_load_toolchain(){ + [ ! -z "$1" ] && source "$tccfgdir/$1"; + dln="$(decode "$_t1e")$(decode "$_toolchainfilename")"; + tc_dl="$dldir/$dln"; + [ -f "$dln" ] && rm -rf "$dln"; + clear; + echo -e "$c_l"; + ologo; + _nl; + echo -e "$p_l load only"; + _nl; + echo -e "$w_l Toolchain :$y_l $dln"; + echo -en "$w_l download :$g_l "; + _pget; +}; +get_toolchain_list(){ + [ -d "$sdir/toolchain.cfgs" ] && cd "$sdir/toolchain.cfgs" || echo "please fix $sdir/toolchain.cfgs"; + toolchain_list=(); + toolchain_list+=('native'); + toolchain_list+=(*); + cd "$workdir"; +}; +_console_extract_toolchain(){ + [ -d "$tcdir/$_toolchainname" ] && rm -rf "$tcdir/$_toolchainname"; + mkdir "$tcdir/$_toolchainname"; + cd "$tcdir/$_toolchainname"; + xz -d "$tc_dl" -c | tar -x; + echo -en "$txt_done!$w_l"; +}; +_toolchain_check(){ + clear; + echo -e "$w_l"; + ologo; + headervars=( crypto.h pcsclite.h libusb.h pthread.h ); + [ -f "$tccfgdir/$1" ] && source "$tccfgdir/$1"; + if [ -d "$tcdir/$1/bin" ];then + cd "$tcdir/$1/bin"; + else + echo -e "$r_l $txt_error:$y_l $1$w_l Toolchain $txt_n_installed""$rs_"; + _nl; + exit; + fi; + compilername="$_compiler""gcc"; + [ ${#_realcompiler} -gt 4 ] && compilername="$_realcompiler"; + version=$("./$compilername" -dumpversion); + machine=$("./$compilername" -dumpmachine); + sr=$("./$compilername" -print-sysroot 2>/dev/null); + sysroot=${tcdir//"$1/bin"/}; + [ -z "$sysroot" ] && sysroot="$r_l$txt_too_old"; + echo -e "$w_l Compiler Info\n =============\n"; + echo -e "$w_l Version :$y_l $version"; + echo -e "$w_l Target :$y_l $machine"; + echo -e "$w_l Sysroot :$y_l $sysroot"; + for e in "${headervars[@]}";do + temp=$(find "$sr"/* |grep -m1 "$e"); + [ ${#temp} -gt 8 ] && echo -e "$w_l Header :$y_l $e$g_l\t$txt_found" || echo -e "$w_l Header :$y_l $e$r_l\t($txt_not_found)"; + done; + _nl; + exit; +}; +_toolchain_repair(){ + clear; + echo -e "$w_l\n"; + s3logo; + cd $dldir;zzusatz=0;szusatz=0; + [ -f "$tccfgdir/$1" ] && source "$tccfgdir/$1"; + fn=$(echo $_md5sum |awk '{ printf $2 }'); + if [ -f $fn ];then + md5file=$(mktemp); + echo $_md5sum > $md5file; + answer=$(md5sum -c $md5file 2>&1); + if [ "$answer" == "$fn: OK" ];then + echo -en $w_l" Toolchain md5 check :$g_l"; + echo -en $answer |awk '{{print " " $2;}}'; + echo -en $w_l;tc_dl="$dldir/$fn"; + echo -en $w_l" Toolchain repair :$g_l" + _console_extract_toolchain; + echo -e "\n"$W; + else + echo -en $w_l"\n Toolchain md5 check :$r_l"; + echo -en $answer |awk '{{print " " $2;}}' |head -1; + echo -en $W;sleep 1;zzusatz=0;szusatz=8; + echo -en $w_l" Toolchain download :$g_l"; + dln=$fn;_pget; sleep 1; + echo -en $w_l" Toolchain repair :$g_l"; + _console_extract_toolchain;echo -e $W"\n"; + exit; + fi + else + echo -e $w_l" Toolchain Filename :$y_l $fn"; + echo -en $w_l" Toolchain download :$g_l "; + zzusatz=-1;szusatz=7; + dln=$fn;_pget; sleep 1; + echo -en $w_l" Toolchain repair :$g_l"; + _console_extract_toolchain;echo -e $W"\n"; + exit; + fi +}; +_toolchain_add_menu(){ + _fill_tc_array; + _init_menu; + for i in "${MISS_TCLIST[@]}";do + if [ ! "$i" == "native" ];then + source "$tccfgdir/$i"; + MENU_OPTIONS+="$_toolchainname#$_description#"; + counter; + fi; + done; + MENU_OPTIONS+="EXIT#$txt_menu_builder1#"; + counter; + out=$( + "$gui" "$st_" "$nc_" "$bt_" "$title_" --help-button --help-label INFO --title "-[ $txt_add_menu ]-" --menu "$txt_main_revision$(REVISION)" "${COUNT+8}" 75 0 ${MENU_OPTIONS[@]}); + IFS=$OIFS; + first=$(echo "$out" | awk '{printf $1}'); + case $first in + EXIT) + bye;; + BACK) + _toolchain_main_menu;; + *) + _toolchain_gui_install; + _toolchain_main_menu;; + esac; +}; +_toolchain_remove_menu(){ + _fill_tc_array; + _init_menu; + if [ "$tcempty" == "0" ];then + for i in "${INST_TCLIST[@]}";do + if [ ! "$i" == "native" ];then + source "$tccfgdir/$i"; + MENU_OPTIONS+="$_toolchainname#$_description#"; + counter; + fi; + done; + fi; + MENU_OPTIONS+="EXIT#$txt_menu_builder1#"; + counter; + out=$( + "$gui" "$st_" "$nc_" "$bt_" "$title_" --title "-[ $txt_remove_menu ]-" --menu "$txt_main_revision$(REVISION)" "${COUNT+8}" 75 0 ${MENU_OPTIONS}); + IFS=$OIFS; + first=$(echo "$out" | awk '{printf $1}'); + case $first in + EXIT) + bye;; + BACK) + _toolchain_main_menu;; + *) + [ -d "$tcdir/$first" ] && rm -rf "$tcdir/$first"; + _toolchain_main_menu;; + esac; +}; +_toolchain_gui_install(){ + [ -d "$tcdir/$first" ] && rm -rf "$tcdir/$first" && echo "$txt_delete $tcdir/$first"; + mkdir "$tcdir/$first"; + cd "$tcdir/$first"; + source "$tccfgdir/$first"; + tcname="$(decode "$_t1e$_toolchainfilename")"; + stcname="$(decode "$_toolchainfilename")"; + if [ -f "$dldir/$tcname" ];then + (xz -d "$dldir/$tcname" -c| tar -xv) |"$gui" "$st_" --title " -[ $txt_extracting ]- " "$pb_" 20 74; + else + cd "$dldir"; + wget "$(decode "$_u1e")/$tcname" 2>&1 | stdbuf -o0 awk '/[.] +[0-9][0-9]?[0-9]?%/ { print substr($0,63,3) }' | "$gui" "$st_" "$bt_" "$title_" --title " -[ download ]- " --gauge " $txt_loading $stcname $txt_wait" 6 74; + cd "$tcdir/$first"; + (xz -d "$dldir/$tcname" -c |tar -xv) |"$gui" "$st_" --title " -[ $txt_extracting ]- " "$pb_" 20 74; + fi; +}; \ No newline at end of file diff --git a/support/functions/_translation b/support/functions/_translation new file mode 100644 index 0000000..b36a7dc --- /dev/null +++ b/support/functions/_translation @@ -0,0 +1,51 @@ +#!/bin/bash + +auto_langset(){ + langset="fail"; + cd "$tdir"; + langsupport=(*); + if [ -f "$configdir/force_lang" ];then + lng1=$(head -n 1 "$configdir/force_lang"); + for lng in "${langsupport[@]}";do + if [ "$lng" == "$lng1" ];then + source "$tdir/$lng"; + langset="ok"; + return; + fi; + done; + fi; + for lng in "${langsupport[@]}";do + if [ "${LANG:0:2}" == "$lng" ];then + source "$tdir/$lng"; + langset="ok"; + return; + fi; + done; + if [ ! "$langset" == "ok" ];then + [ -f "$tdir/en" ] && source "$tdir/en"; + fi; +}; +lang_select(){ + lng="none"; + [ -f "$configdir/force_lang" ] && lng=$(head -n 1 "$configdir/force_lang"); + unset MENU_OPTIONS;COUNT=0; + for e in "${langsupport[@]}";do + if [ "$lng" == "none" ];then + [ "${LANG:0:2}" == "$e" ] && _stat="on" || _stat="off"; + else + [ "$lng" == "$e" ] && _stat="on" || _stat="off"; + fi; + txt=$(head -3 "$tdir/$e" |tail -1); + MENU_OPTIONS+=($e $txt $_stat);counter; + done; + lng=$("$gui" "$st_" "$bt_" "$title_" --title "-[ lang set ...to edit... ]-" "$rl_" "...langset...to...edit..." "${COUNT+7}" 40 0 "${MENU_OPTIONS[@]}"); + if [ ! "${LANG:0:2}" == "$lng" ];then + for lng1 in "${langsupport[@]}";do + if [ "$lng" == "$lng1" ];then + echo "$lng" >"$configdir/force_lang"; + fi; + done; + else + [ -f "$configdir/force_lang" ] && rm -rf "$configdir/force_lang"; + fi; +}; \ No newline at end of file diff --git a/support/functions/_uploadcam b/support/functions/_uploadcam new file mode 100644 index 0000000..8f02ef6 --- /dev/null +++ b/support/functions/_uploadcam @@ -0,0 +1,55 @@ +#!/bin/bash + +upload_cam(){ + clear; + slogo; + FILENAME=$1; + + if [ ! -f "$profdir/$FILENAME" ];then + echo -e "$r_l\n $txt_error $FILENAME $txt_upload_cam1 $re_"; + exit; + else + echo -e "$w_l\n CONFIG : $g_l$FILENAME $txt_upload_cam2 $re_"; + fi; + +#load data from config + source "$profdir/$FILENAME"; + +#find newest build by date for toolchain + cd "$bdir"; + buildcamname="$(find . -type f \( -iname "*$toolchain*" ! -iname "*list_smargo" \) -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" " |sed 's@./@@g')"; + cd "$workdir"; + +#output date from cam + if [ -f "$bdir/$buildcamname" ];then + echo -e "$w_l CAMNAME : $y_l$buildcamname"; + echo -en "$w_l FILEDATE: "$( + stat -c %y "$bdir/$buildcamname" |awk '{print $1" "; printf substr($2,1,8)}'); + echo -e "$w_l"; + else + echo -e "$r_l\n matching \$CAM not found in $bdir$re_"; + exit; + fi; + echo -e "$p_l\n $txt_LOAD > $w_l$txt_to IP:$b_l$ip$w_l port:$b_l$port"; + sshpass -p "$password" scp -P "$port" "$bdir/$buildcamname" "$loginname@$ip":/tmp; + +#replace target cam + if [ "$replace_target" == "y" ];then + echo -en "$p_l REPLACE > $y_l$targetcam$re_"; + sshpass -p "$password" ssh -p "$port" -o StrictHostKeyChecking=no "$loginname@$ip" \ + "cd /tmp;if [ -f \"$buildcamname\" ];then if [ -f \"$targetcam\" ];then mv -f \"$buildcamname\" \"$targetcam\";fi;fi;exit;"; + echo -e "$g_l$txt_done!$re_"; + fi; + +#stop target cam + if [ "$stop_target" == 'y' ];then + stop="killall -9 $(basename "$targetcam")"; + fi; + +#remote command (example restart cam) + if [ ! "$remote_command" == "none" ];then + echo -e "$w_l SSH COMMANDS $remote_command $y_l$txt_wait"; + # do remote commands + sshpass -p "$password" ssh -p "$port" -o StrictHostKeyChecking=no "$loginname@$ip" "$remote_command;"; + fi; +}; \ No newline at end of file diff --git a/support/os/debian_ubuntu.install b/support/os/debian_ubuntu.install new file mode 100644 index 0000000..61db87b --- /dev/null +++ b/support/os/debian_ubuntu.install @@ -0,0 +1,137 @@ +#!/bin/bash + +debian_os(){ +install_log="$ldir/os-install.log"; +failed=0; +prefix="sudo"; +packages=""; + +echo -n >"$install_log" &2>/dev/null; + +echo -e "$w_l\n INSTALLATION\n ============\n"; + +debian_version=$(sed -n 's/^[^0-9]*\([0-9][0-9]*\).*$/\1/p' /etc/debian_version 2>/dev/null); + +if [[ $debian_version ]]; then + [ "$debian_version" -lt 7 ] && { echo -e "$r_l This system is not supported anymore!\n"; return 1; } + [ "$debian_version" -gt 8 ] && echo -e "$r_l This installer is still in the testing stage!"; +else + # all known Ubuntu systems have 'lsb_release' + ! hash lsb_release 2>/dev/null && { echo -e "$r_l System not recognised -> Abort!\n"; return 1; } + ubuntu_version=$(lsb_release -rs | cut -f 1 -d '.'); + [ "$ubuntu_version" -lt 12 ] && { echo -e "$r_l This system is not supported anymore!\n"; return 1; } + [ "$ubuntu_version" -gt 16 ] && echo -e "$r_l This installer is still in the testing stage!"; +fi + +# without sudo no user installation allowed +hash sudo 2>/dev/null || { [ "$(whoami)" != "root" ] && { echo -e "$r_l You need to be root for that!\n"; return 1; } } + +# root needs no sudo +[ "$(whoami)" == "root" ] && prefix=""; + +for e in "${binvars[@]}"; +do + if ! hash "$e" 2>/dev/null; then + inst="$e"; + case $e in + svn) + inst="subversion"; + ;; + xz) + inst="xz-utils"; + ;; + esac; + echo -e "$w_l select $g_l$e$y_l\tfrom: $inst"; + packages="$packages $inst"; + fi; +done; + +for e in "${headervars[@]}"; +do + e1=$(find /usr/include/* |grep -m1 "$e"); + if [ ! ${#e1} -gt 8 ]; then + case $e in + crypto.h) + inst="libssl-dev"; + ;; + libusb.h) + inst="libusb-1.0.0-dev"; + ;; + pcsclite.h) + inst="libpcsclite-dev"; + ;; + pthread.h) + inst="libc-dev-bin"; + ;; + esac; + echo -e "$w_l select $g_l$e$y_l\tfrom: $inst"; + packages="$packages $inst"; + fi; +done; + +for e in "${libvars[@]}"; +do + e1=$(find /usr/lib* |grep -m1 "$e"); + if [ ! ${#e1} -gt 8 ]; then + case $e in + libccidtwin.so) + inst="libccid"; + ;; + esac; + echo -e "$w_l select $g_l$e$y_l\tfrom: $inst"; + packages="$packages $inst"; + fi; +done; + +if [ "$(uname -m)" == "x86_64" ] && [ ! -f /usr/lib32/libz.so.1 ]; then + if [ ! -f /usr/lib32/libz.so.1 ]; then + e="zlib32"; + inst="lib32z1"; + echo -e "$w_l select $g_l$e$y_l\tfrom: $inst"; + packages="$packages $inst"; + fi +fi + +if [ ${#packages} -gt 0 ]; then + echo -n -e "$w_l update$g_l package list..."; + echo "+++ $(date): apt-get -y update" >> "$install_log" + $prefix apt-get -y update >> "$install_log" 2>&1; + echo -e "$y_l done"; + echo -n -e "$w_l install$g_l selected packages$y_l please wait..."; + echo "+++ $(date): apt-get -y install$packages" >> "$install_log" + $prefix apt-get -y install $packages >> "$install_log" 2>&1 || failed=1; + if [ $failed == 0 ]; then + echo -e "$y_l done"; + else + echo -e "$r_l failed!"; + fi +fi + +if hash upx 2>/dev/null; then + upxversion=($(upx -V | awk 'NR==1 { verok=$2>=3.91; printf "%.2f %i", $2, verok }')); + if [ ${upxversion[1]} == 0 ]; then + [ -f "$bindir/upx" ] && rm -f "$bindir/upx" &>/dev/null; + if [ "$(uname -m)" == "x86_64" ]; then + upxarch="upx-3.95-amd64_linux"; + else + upxarch="upx-3.95-i386_linux"; + fi + upxarchive=$upxarch".tar.bz2"; + [ -f "$dldir/$upxarchive" ] && rm -f "$dldir/$upxarchive" &>/dev/null; + upxurl="http://upx.sourceforge.net/download/$upxarchive"; + echo -e "$w_l get newer$g_l upx$y_l\tfrom: $upxurl"; + echo "+++ $(date): wget $upxurl" >> "$install_log"; + if wget --directory-prefix="$dldir" --append-output="$install_log" $upxurl; then + echo "+++ $(date): tar xjvf $upxarchive" >> "$install_log"; + tar xjvf "$dldir"/$upxarchive --directory="$bindir" $upxarch/upx --strip-components=1 >> "$install_log" 2>&1 || failed=1; + [ -f "$dldir"/$upxarchive ] && rm -f "$dldir"/$upxarchive &>/dev/null; + else + failed=1; + fi + fi +fi + +[ $failed == 1 ] && echo -e "\n$r_l Installation with errors - see: $install_log"; + +return $failed; +} diff --git a/support/os/manjaro.install b/support/os/manjaro.install new file mode 100644 index 0000000..01e49d4 --- /dev/null +++ b/support/os/manjaro.install @@ -0,0 +1,126 @@ +#!/bin/bash + +manjaro_os(){ +install_log="$ldir/os-install.log"; +failed=0; +prefix="sudo"; +packages=""; + +echo -n >"$install_log" &2>/dev/null; +echo -e "$w_l\n INSTALLATION\n ============\n"; + +source /etc/lsb-release +manjaro_version=$DISTRIB_RELEASE + +# without sudo no user installation allowed +hash sudo 2>/dev/null || { [ "$(whoami)" != "root" ] && { echo -e "$r_l You need to be root for that!\n"; return 1; } } + +# root needs no sudo +[ "$(whoami)" == "root" ] && prefix=""; + +for e in "${binvars[@]}"; +do + if ! hash "$e" 2>/dev/null; then + inst="$e"; + case $e in + svn) + inst="subversion"; + ;; + xz) + inst="xz-utils"; + ;; + esac; + echo -e "$w_l select $g_l$e$y_l\tfrom: $inst"; + packages="$packages $inst"; + fi; +done; + +for e in "${headervars[@]}"; +do + e1=$(find /usr/include/* |grep -m1 "$e"); + if [ ! ${#e1} -gt 8 ]; then + case $e in + crypto.h) + inst="libssl-dev"; + ;; + libusb.h) + inst="libusb-1.0.0-dev"; + ;; + pcsclite.h) + inst="pcsclite"; + ;; + pthread.h) + inst="libc-dev-bin"; + ;; + esac; + echo -e "$w_l select $g_l$e$y_l\tfrom: $inst"; + packages="$packages $inst"; + fi; +done; + +for e in "${libvars[@]}"; +do + e1=$(find /usr/lib* |grep -m1 "$e"); + if [ ! ${#e1} -gt 8 ]; then + case $e in + libccidtwin.so) + inst="ccid"; + ;; + esac; + echo -e "$w_l select $g_l$e$y_l\tfrom: $inst"; + packages="$packages $inst"; + fi; +done; + +if [ "$(uname -m)" == "x86_64" ] && [ ! -f /usr/lib32/libz.so.1 ]; then + if [ ! -f /usr/lib32/libz.so.1 ]; then + e="zlib32"; + inst="lib32z1"; + echo -e "$w_l select $g_l$e$y_l\tfrom: $inst"; + packages="$packages $inst"; + fi +fi + +if [ ${#packages} -gt 0 ]; then + echo -n -e "$w_l update$g_l package list..."; + echo "+++ $(date): pacman -Syu" >> "$install_log" + $prefix pacman -Syu >> "$install_log" 2>&1; + echo -e "$y_l done"; + echo -n -e "$w_l install$g_l selected packages$y_l please wait..."; + echo "+++ $(date): pacman -Sy install$packages" >> "$install_log" + $prefix pacman -S --noconfirm $packages >> "$install_log" 2>&1 || failed=1; + if [ $failed == 0 ]; then + echo -e "$y_l done"; + else + echo -e "$r_l failed!"; + fi +fi + +if hash upx 2>/dev/null; then + upxversion=($(upx -V | awk 'NR==1 { verok=$2>=3.91; printf "%.2f %i", $2, verok }')); + if [ ${upxversion[1]} == 0 ]; then + [ -f "$bindir/upx" ] && rm -f "$bindir/upx" &>/dev/null; + if [ "$(uname -m)" == "x86_64" ]; then + upxarch="upx-3.95-amd64_linux"; + else + upxarch="upx-3.95-i386_linux"; + fi + upxarchive=$upxarch".tar.bz2"; + [ -f "$dldir/$upxarchive" ] && rm -f "$dldir/$upxarchive" &>/dev/null; + upxurl="http://upx.sourceforge.net/download/$upxarchive"; + echo -e "$w_l get newer$g_l upx$y_l\tfrom: $upxurl"; + echo "+++ $(date): wget $upxurl" >> "$install_log"; + if wget --directory-prefix="$dldir" --append-output="$install_log" $upxurl; then + echo "+++ $(date): tar xjvf $upxarchive" >> "$install_log"; + tar xjvf "$dldir"/$upxarchive --directory="$bindir" $upxarch/upx --strip-components=1 >> "$install_log" 2>&1 || failed=1; + [ -f "$dldir"/$upxarchive ] && rm -f "$dldir"/$upxarchive &>/dev/null; + else + failed=1; + fi + fi +fi + +[ $failed == 1 ] && echo -e "\n$r_l Installation with errors - see: $install_log"; + +return $failed; +} diff --git a/support/os/redhat_centos_fedora.install b/support/os/redhat_centos_fedora.install new file mode 100644 index 0000000..b0cee2b --- /dev/null +++ b/support/os/redhat_centos_fedora.install @@ -0,0 +1,182 @@ +#!/bin/bash + +redhat_os(){ +install_log="$ldir/os-install.log"; +failed=0; +prefix="sudo"; +packages=""; + +echo -n >"$install_log" &2>/dev/null; + +echo -e "$w_l\n INSTALLATION\n ============\n"; + +rh_version=$(sed -n 's/^[^0-9]*\([0-9][0-9]*\).*$/\1/p' /etc/redhat-release 2>/dev/null); +! [[ $rh_version ]] && { echo -e "$r_l System not recognised -> Abort!\n"; return 1; } + +sshpass_src="ftp://rpmfind.net/linux/dag/redhat/el6/en/x86_64/dag/RPMS/sshpass-1.05-1.el6.rf.x86_64.rpm"; +sshpass86_src="ftp://rpmfind.net/linux/dag/redhat/el6/en/i386/dag/RPMS/sshpass-1.05-1.el6.rf.i686.rpm"; +installer="yum"; + +case $rh_version in + 5) + echo -e "$r_l Five - Has a too old glibc!"; return 1; + sshpass_src="ftp://rpmfind.net/linux/epel/5/x86_64/sshpass-1.05-1.el5.x86_64.rpm"; + sshpass86_src="ftp://rpmfind.net/linux/epel/5/i386/sshpass-1.05-1.el5.i386.rpm"; + ;; + [6-7]) + # Redhat/CentOS 6+7 ok + ;; + 2[2-3]) + # Fedora 22+23 ok + installer="dnf"; + ;; + 24) + # Fedora 24 still beta + installer="dnf"; + echo -e "$r_l This installer is still in the testing stage!"; + ;; + *) + echo "This version is not supported!" >"$install_log" 2>/dev/null; + echo -e "$r_l \"$(cat /etc/redhat-release)\" is not supported!"; + return 1; +esac + +# without sudo no user installation allowed +hash sudo 2>/dev/null || { [ "$(whoami)" != "root" ] && { echo -e "$r_l You need to be root for that!\n"; return 1; } } + +# root needs no sudo +[ "$(whoami)" == "root" ] && prefix=""; + +# care about the repos on Redhat +if hash subscription-manager 2>/dev/null; then + $prefix subscription-manager status >/dev/null || { echo -e "$r_l You need an active subscription!\n"; return 1; } + echo -e "$w_l Retreiving repo list..."; + if ! $prefix subscription-manager repos --list-enabled | grep -q "server-optional-rpms"; then + cmdline="subscription-manager repos --enable=rhel-$rh_version-server-optional-rpms"; + echo -e "$w_l Add needed repo$g_l optional:$y_l $cmdline"; + echo "+++ $(date): $cmdline" >> "$install_log"; + $prefix $cmdline >> "$install_log" 2>&1 || failed=1; + fi +fi + +for e in "${binvars[@]}"; +do + if ! hash "$e" 2>/dev/null; then + inst="$e"; + case $e in + svn) + inst="subversion"; + ;; + # the following guys have no official packages + sshpass) + continue; + ;; + upx) + continue; + ;; + esac; + echo -e "$w_l select $g_l$e$y_l\tfrom: $inst"; + packages="$packages $inst"; + fi; +done; + +for e in "${headervars[@]}"; +do + e1=$(find /usr/include/* |grep -m1 "$e"); + if [ ! ${#e1} -gt 8 ]; then + case $e in + crypto.h) + inst="openssl-devel"; + ;; + libusb.h) + # no official package for older versions + [ "$rh_version" -lt 6 ] && continue; + # hopelully they stick to it from now :-) + inst="libusbx-devel"; + [ "$rh_version" == 6 ] && inst="libusb1-devel"; + ;; + pcsclite.h) + inst="pcsc-lite-devel"; + ;; + pthread.h) + inst="glibc-headers"; + ;; + esac; + echo -e "$w_l select $g_l$e$y_l\tfrom: $inst"; + packages="$packages $inst"; + fi; +done; + +for e in "${libvars[@]}"; +do + e1=$(find /usr/lib* 2>/dev/null | grep -m1 "$e"); + if [ ! ${#e1} -gt 8 ]; then + case $e in + libccidtwin.so) + inst="ccid"; + [ "$rh_version" -gt 6 ] && inst="pcsc-lite-ccid"; + ;; + esac; + echo -e "$w_l select $g_l$e$y_l\tfrom: $inst"; + packages="$packages $inst"; + fi; +done; + +if [ "$(uname -m)" == "x86_64" ] && [ ! -f /usr/lib/libz.so ]; then + if [ ! -f /usr/lib/libz.so ]; then + e="zlib32"; + inst="zlib-devel.i686"; + echo -e "$w_l select $g_l$e$y_l\tfrom: $inst"; + packages="$packages $inst"; + fi +fi + +if [ ${#packages} -gt 0 ]; then + echo -n -e "$w_l update$g_l package list..."; + echo "+++ $(date): $installer -y check-update" >> "$install_log" + $prefix $installer -y check-update >> "$install_log" 2>&1; + echo -e "$y_l done"; + echo -n -e "$w_l install$g_l selected packages$y_l please wait..."; + echo "+++ $(date): $installer -y install$packages" >> "$install_log" + $prefix $installer -y install $packages >> "$install_log" 2>&1 || failed=1; + if [ $failed == 0 ]; then + echo -e "$y_l done"; + else + echo -e "$r_l failed!"; + fi +fi + +# additional rpm +if ! hash sshpass 2>/dev/null; then + [ "$(arch)" == "i686" ] && sshpass_src=$sshpass86_src; + echo -e "$w_l install$g_l sshpass$y_l\tfrom: $sshpass_src"; + echo "+++ $(date): rpm -i $sshpass_src" >> "$install_log"; + $prefix rpm -i $sshpass_src >> "$install_log" 2>&1 || failed=1; +fi + +if ! hash upx 2>/dev/null; then + [ -f "$bindir"/upx ] && rm -f "$bindir"/upx &>/dev/null; + if [ "$(uname -m)" == "x86_64" ]; then + upxarch="upx-3.95-amd64_linux"; + else + upxarch="upx-3.95-i386_linux"; + fi + upxarchive=$upxarch".tar.bz2"; + [ -f "$dldir"/$upxarchive ] && rm -f "$dldir"/$upxarchive &>/dev/null; + upxurl="http://upx.sourceforge.net/download/$upxarchive"; + echo -e "$w_l get$g_l upx$y_l\tfrom: $upxurl"; + echo "+++ $(date): wget $upxurl" >> "$install_log"; + if wget --directory-prefix="$dldir" --append-output="$install_log" $upxurl; then + echo "+++ $(date): tar xjvf $upxarchive" >> "$install_log"; + tar xjvf "$dldir"/$upxarchive --directory="$bindir" $upxarch/upx --strip-components=1 >> "$install_log" 2>&1 || failed=1; + [ -f "$dldir"/$upxarchive ] && rm -f "$dldir"/$upxarchive &>/dev/null; + else + failed=1; + fi +fi + + +[ $failed == 1 ] && echo -e "\n$r_l Installation with errors - see: $install_log"; + +return $failed; +} diff --git a/support/os/suse.install b/support/os/suse.install new file mode 100644 index 0000000..d85906e --- /dev/null +++ b/support/os/suse.install @@ -0,0 +1,154 @@ +#!/bin/bash + +suse_os(){ +install_log="$ldir/os-install.log"; +failed=0; +prefix="sudo"; +packages=""; + +echo -n >"$install_log" &2>/dev/null; + +echo -e "$w_l\n INSTALLATION\n ============\n"; + +suse_version=$(grep VERSION= /etc/os-release 2>/dev/null | sed -n 's/^[^0-9]*\([0-9][0-9]*\).*$/\1/p'); + +sshpass_src="ftp://rpmfind.net/linux/dag/redhat/el6/en/x86_64/dag/RPMS/sshpass-1.05-1.el6.rf.x86_64.rpm"; +sshpass86_src="ftp://rpmfind.net/linux/dag/redhat/el6/en/i386/dag/RPMS/sshpass-1.05-1.el6.rf.i686.rpm"; + +if [[ "$suse_version" ]]; then + [ "$suse_version" -lt 12 ] && { echo -e "$r_l This system is not supported anymore!\n"; return 1; } + [ "$suse_version" -gt 13 ] && [ "$suse_version" -lt 42 ] && echo -e "$r_l This installer is still in the testing stage!"; + [ "$suse_version" -gt 42 ] && echo -e "$r_l This installer is still in the testing stage!"; +else + echo -e "$r_l System not recognised -> Abort!\n"; return 1; +fi + +# without sudo no user installation allowed +hash sudo 2>/dev/null || { [ "$(whoami)" != "root" ] && { echo -e "$r_l You need to be root for that!\n"; return 1; } } + +# root needs no sudo +[ "$(whoami)" == "root" ] && prefix=""; + +# check for sufficient repositories - SLES & SLED need an additional "SUSE Linux Enterprise Software Development Kit" +if grep "Enterprise" /etc/os-release >/dev/null; then + echo -n -e "$w_l SUSE Linux Enterprise detected$g_l check for SDK repository..."; + if ! zypper wp subversion >/dev/null; then + echo -e "$r_l\n You need to install \"SUSE Linux Enterprise Software Development Kit\" first!\n Get it from https://download.suse.com\n"; return 1; + fi + echo -e "$y_l ok"; +fi + +for e in "${binvars[@]}"; +do + if ! hash "$e" 2>/dev/null; then + inst="$e"; + case $e in + svn) + inst="subversion"; + ;; + xz) + inst="xz-utils"; + ;; + esac; + echo -e "$w_l select $g_l$e$y_l\tfrom: $inst"; + packages="$packages $inst"; + fi; +done; + +for e in "${headervars[@]}"; +do + e1=$(find /usr/include/* |grep -m1 "$e"); + if [ ! ${#e1} -gt 8 ]; then + case $e in + crypto.h) + inst="libopenssl-devel"; + ;; + libusb.h) + inst="libusb-1_0-devel"; + ;; + pcsclite.h) + inst="pcsc-lite-devel"; + ;; + pthread.h) + inst="glibc-devel"; + ;; + esac; + echo -e "$w_l select $g_l$e$y_l\tfrom: $inst"; + packages="$packages $inst"; + fi; +done; + +for e in "${libvars[@]}"; +do + e1=$(find /usr/lib* |grep -m1 "$e"); + if [ ! ${#e1} -gt 8 ]; then + case $e in + libccidtwin.so) + inst="pcsc-ccid"; + ;; + esac; + echo -e "$w_l select $g_l$e$y_l\tfrom: $inst"; + packages="$packages $inst"; + fi; +done; + +if [ "$(uname -m)" == "x86_64" ] && [ ! -f /usr/lib/libz.so ]; then + if [ ! -f /usr/lib/libz.so ]; then + e="zlib32"; + inst="zlib-devel-32bit glibc-32bit libz1-32bit"; + echo -e "$w_l select $g_l$e$y_l\tfrom: $inst"; + packages="$packages $inst"; + fi +fi + +if [ ${#packages} -gt 0 ]; then + echo -n -e "$w_l update$g_l package list..."; + echo "+++ $(date): zypper --non-interactive refresh" >> "$install_log" + $prefix zypper --non-interactive refresh >> "$install_log" 2>&1; + echo -e "$y_l done"; + echo -n -e "$w_l install$g_l selected packages$y_l please wait..."; + echo "+++ $(date): zypper --non-interactive --ignore-unknown install$packages" >> "$install_log" + $prefix zypper --non-interactive --ignore-unknown install $packages >> "$install_log" 2>&1 || failed=1; + if [ $failed == 0 ]; then + echo -e "$y_l done"; + else + echo -e "$r_l failed!"; + fi +fi + +# additional rpm +if ! hash sshpass 2>/dev/null; then + [ "$(arch)" == "i686" ] && sshpass_src=$sshpass86_src; + echo -e "$w_l install$g_l sshpass$y_l\tfrom: $sshpass_src"; + echo "+++ $(date): rpm -i $sshpass_src" >> "$install_log"; + $prefix rpm -i $sshpass_src >> "$install_log" 2>&1 || failed=1; + echo -e -n ; +fi + +upxversion=(0 0); +hash upx 2>/dev/null && upxversion=($(upx -V | awk 'NR==1 { verok=$2>=3.91; printf "%.2f %i", $2, verok }')); +if [ ${upxversion[1]} == 0 ]; then + [ -f "$bindir"/upx ] && rm -f "$bindir"/upx &>/dev/null; + if [ "$(uname -m)" == "x86_64" ]; then + upxarch="upx-3.95-amd64_linux"; + else + upxarch="upx-3.95-i386_linux"; + fi + upxarchive=$upxarch".tar.bz2"; + [ -f "$dldir"/$upxarchive ] && rm -f "$dldir"/$upxarchive &>/dev/null; + upxurl="http://upx.sourceforge.net/download/$upxarchive"; + echo -e "$w_l get newer$g_l upx$y_l\tfrom: $upxurl"; + echo "+++ $(date): wget $upxurl" >> "$install_log"; + if wget --directory-prefix="$dldir" --append-output="$install_log" $upxurl; then + echo "+++ $(date): tar xjvf $upxarchive" >> "$install_log"; + tar xjvf "$dldir"/$upxarchive --directory="$bindir" $upxarch/upx --strip-components=1 >> "$install_log" 2>&1 || failed=1; + [ -f "$dldir"/$upxarchive ] && rm -f "$dldir"/$upxarchive &>/dev/null; + else + failed=1; + fi +fi + +[ $failed == 1 ] && echo -e "\n$r_l Installation with errors - see: $install_log"; + +return $failed; +} diff --git a/support/profiles/best.box.profile b/support/profiles/best.box.profile new file mode 100644 index 0000000..d80929c --- /dev/null +++ b/support/profiles/best.box.profile @@ -0,0 +1,5 @@ +readers_on +USE_UTF8 +WEBIF DEBUG DVBAPI READ_SDT LIVELOG JQUERY LB CACHEEX IPV6 +CCCAM CAMD35 CAMD35_TCP +INTERNAL PHOENIX STINGER SMARGO_off diff --git a/support/stapi/liboscam_stapi.a b/support/stapi/liboscam_stapi.a new file mode 100644 index 0000000..e456f09 Binary files /dev/null and b/support/stapi/liboscam_stapi.a differ diff --git a/support/stapi/liboscam_stapi5_OPENBOX.a b/support/stapi/liboscam_stapi5_OPENBOX.a new file mode 100644 index 0000000..d2da226 Binary files /dev/null and b/support/stapi/liboscam_stapi5_OPENBOX.a differ diff --git a/support/stapi/liboscam_stapi5_UFS916.a b/support/stapi/liboscam_stapi5_UFS916.a new file mode 100644 index 0000000..5ffc6d7 Binary files /dev/null and b/support/stapi/liboscam_stapi5_UFS916.a differ diff --git a/support/stapi/liboscam_stapi5_UFS916_0.03.a b/support/stapi/liboscam_stapi5_UFS916_0.03.a new file mode 100644 index 0000000..ff13186 Binary files /dev/null and b/support/stapi/liboscam_stapi5_UFS916_0.03.a differ diff --git a/support/toolchains.cfg/arm_s3_ssl098 b/support/toolchains.cfg/arm_s3_ssl098 new file mode 100644 index 0000000..e40aef9 --- /dev/null +++ b/support/toolchains.cfg/arm_s3_ssl098 @@ -0,0 +1,19 @@ +_toolchainname="arm_s3_ssl098" +default_use="USE_UTF8 USE_LIBCRYPTO"; +_description="Dreambox ARM" +_oscamconfdir_default="/var/keys" +_oscamconfdir_custom="" + +_compiler="arm-simplebuild3-linux-gnueabi-" +_sysroot="arm-simplebuild3-linux-gnueabi/sysroot" +_libsearchdir="/usr/lib" +_toolchainfilename="YXJtX3MzX3NzbDA5OC50YXIueHo="; +_md5sum="02215a912feb4fc499572e5cd53567f2 Toolchain-arm_s3_ssl098.tar.xz" +_tc_info="\n + !!! GENERIC ARM Toolchain !!!\n + with OPENSSL 0.9.8zh \n + \n +\n +"; + +_tc_infolines="6" \ No newline at end of file diff --git a/support/toolchains.cfg/arm_s3_ssl100 b/support/toolchains.cfg/arm_s3_ssl100 new file mode 100644 index 0000000..052b035 --- /dev/null +++ b/support/toolchains.cfg/arm_s3_ssl100 @@ -0,0 +1,19 @@ +_toolchainname="arm_s3_ssl100" +default_use="USE_UTF8 USE_LIBCRYPTO"; +_description="Dreambox ARM" +_oscamconfdir_default="/var/keys" +_oscamconfdir_custom="" + +_compiler="arm-simplebuild3-linux-gnueabi-" +_sysroot="arm-simplebuild3-linux-gnueabi/sysroot" +_libsearchdir="/usr/lib" +_toolchainfilename="YXJtX3MzX3NzbDEwMC50YXIueHo="; +_md5sum="0d040f672f57ae37672b6f94413a9d8e Toolchain-arm_s3_ssl100.tar.xz"; +_tc_info="\n + !!! GENERIC ARM Toolchain !!!\n + with OPENSSL 1.0.0t \n + \n +\n +"; + +_tc_infolines="6" \ No newline at end of file diff --git a/support/toolchains.cfg/arm_s3_ssl102 b/support/toolchains.cfg/arm_s3_ssl102 new file mode 100644 index 0000000..376abf7 --- /dev/null +++ b/support/toolchains.cfg/arm_s3_ssl102 @@ -0,0 +1,19 @@ +_toolchainname="arm_s3_ssl102" +default_use="USE_UTF8 USE_LIBCRYPTO"; +_description="Dreambox ARM" +_oscamconfdir_default="/var/keys" +_oscamconfdir_custom="" + +_compiler="arm-simplebuild3-linux-gnueabi-" +_sysroot="arm-simplebuild3-linux-gnueabi/sysroot" +_libsearchdir="/usr/lib" +_toolchainfilename="YXJtX3MzX3NzbDEwMi50YXIueHo="; +_md5sum="515ed7582dc8e6044069d4ab34ee35da Toolchain-arm_s3_ssl102.tar.xz"; +_tc_info="\n + !!! GENERIC ARM Toolchain !!!\n + with OPENSSL 1.0.2q \n + \n +\n +"; + +_tc_infolines="6" \ No newline at end of file diff --git a/support/toolchains.cfg/mipsel_s3_ssl098 b/support/toolchains.cfg/mipsel_s3_ssl098 new file mode 100644 index 0000000..41f29f2 --- /dev/null +++ b/support/toolchains.cfg/mipsel_s3_ssl098 @@ -0,0 +1,20 @@ +_toolchainname="mipsel_s3_ssl098"; +default_use="USE_UTF8 USE_LIBCRYPTO"; +_description="generic mipsel ssl 0.9.8"; +_oscamconfdir_default="/var/keys"; +_oscamconfdir_custom="" +_compiler="mipsel-simplebuild3-linux-gnu-"; + +_sysroot="/"; +_libsearchdir="/lib"; +_toolchainfilename="bWlwc2VsX3MzX3NzbDA5OC50YXIueHoK"; +_md5sum="966c590d2178f6d401c93993eba4f7f9 Toolchain-mipsel_s3_ssl098.tar.xz"; +_tc_info="\n + !!! generic mipsel ssl 0.9.8 !!!\n + this toolchain is compatible with\n +\n +Dreambox: dm500,dm800,500HD,800HD,800SE,7020HD, + 7025,8000\n +VU+ : Zero,Solo²,SoloSE,SoloSE(V2),Duo,Duo²"; + +_tc_infolines="6"; \ No newline at end of file diff --git a/support/toolchains.cfg/mipsel_s3_ssl100 b/support/toolchains.cfg/mipsel_s3_ssl100 new file mode 100644 index 0000000..a8c1ae8 --- /dev/null +++ b/support/toolchains.cfg/mipsel_s3_ssl100 @@ -0,0 +1,20 @@ +_toolchainname="mipsel_s3_ssl100"; +default_use="USE_UTF8 USE_LIBCRYPTO"; +_description="generic mipsel ssl 1.0.0"; +_oscamconfdir_default="/var/keys"; +_oscamconfdir_custom="" + +_compiler="mipsel-simplebuild3-linux-gnu-"; +_sysroot="/"; +_libsearchdir="/lib"; +_toolchainfilename="bWlwc2VsX3MzX3NzbDEwMC50YXIueHoK"; +_md5sum="b1ff681eff62b0e639d37e001b97e1e0 Toolchain-mipsel_s3_ssl100.tar.xz"; +_tc_info="\n + !!! generic mipsel ssl 1.0.0 !!!\n + this toolchain is compatible with\n +\n +Dreambox: dm500,dm800,500HD,800HD,800SE,7020HD, + 7025,8000\n +VU+ : Zero,Solo²,SoloSE,SoloSE(V2),Duo,Duo²"; + +_tc_infolines="6"; \ No newline at end of file diff --git a/support/toolchains.cfg/mipsel_s3_ssl102 b/support/toolchains.cfg/mipsel_s3_ssl102 new file mode 100644 index 0000000..1329fab --- /dev/null +++ b/support/toolchains.cfg/mipsel_s3_ssl102 @@ -0,0 +1,20 @@ +_toolchainname="mipsel_s3_ssl102"; +default_use="USE_UTF8 USE_LIBCRYPTO"; +_description="generic mipsel ssl 1.0.2"; +_oscamconfdir_default="/var/keys"; +_oscamconfdir_custom="" + +_compiler="mipsel-simplebuild3-linux-gnu-"; +_sysroot="/"; +_libsearchdir="/lib"; +_toolchainfilename="bWlwc2VsX3MzX3NzbDEwMi50YXIueHoK"; +md5sum="985ba51ae41cacd008fb6c7490e2f287 Toolchain-mipsel_s3_ssl102.tar.xz" +_tc_info="\n + !!! generic mipsel ssl 1.0.2 !!!\n + this toolchain is compatible with\n +\n +Dreambox: dm500,dm800,500HD,800HD,800SE,7020HD, + 7025,8000\n +VU+ : Zero,Solo²,SoloSE,SoloSE(V2),Duo,Duo²"; + +_tc_infolines="6"; diff --git a/support/toolchains.cfg/native b/support/toolchains.cfg/native new file mode 100644 index 0000000..49f38fb --- /dev/null +++ b/support/toolchains.cfg/native @@ -0,0 +1,12 @@ +_toolchainname="native"; +default_use="USE_UTF8 USE_LIBCRYPTO"; +_oscamconfdir_default="/usr/local/etc"; +_oscamconfdir_custom="not_set"; +_compiler="x86_64-linux-gnu-"; +_tc_info="Native System Compiler gcc (Debian 8.2.0-16) 8.2.0 +Copyright (C) 2018 Free Software Foundation, Inc. +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."; +_libsearchdir="/lib"; +_menuname="native"; +_sysroot="/"; diff --git a/support/toolchains.cfg/openpli40 b/support/toolchains.cfg/openpli40 new file mode 100644 index 0000000..13bbca1 --- /dev/null +++ b/support/toolchains.cfg/openpli40 @@ -0,0 +1,20 @@ +_toolchainname="openpli40" +default_use="USE_UTF8 USE_LIBCRYPTO"; +_description="Openpli Dreambox Vu+ and other" +_oscamconfdir_default="/usr/keys" +_oscamconfdir_custom="" + +_compiler="mipsel-openpli40-linux-gnu-" +_sysroot="mipsel-openpli40-linux-gnu/sysroot" +_libsearchdir="/lib" +_toolchainfilename="T3BlblBMSV80LjAudGFyLnh6"; + +_tc_info="\n + !!! beware the box must have FPU !!!\n + this toolchain is compatible with\n +\n +Dreambox: 500HD,800HD,800SE,7020HD,7025,8000\n +VU+ : Zero,Solo²,SoloSE,SoloSE(V2),Duo,Duo²"; + +_tc_infolines="6" + diff --git a/support/toolchains.cfg/openwrt1505cc b/support/toolchains.cfg/openwrt1505cc new file mode 100644 index 0000000..6bcb462 --- /dev/null +++ b/support/toolchains.cfg/openwrt1505cc @@ -0,0 +1,20 @@ +_toolchainname="openwrt1505cc"; +default_use="USE_UTF8 USE_LIBCRYPTO"; +_description="OpenWRT 15.05.1 Chaos Calmer" +_oscamconfdir_default="/etc/config/oscam" +_oscamconfdir_custom="/etc/config/oscam" +_stagingdir=1 + +_compiler="mips-openwrt-linux-uclibc-" +_sysroot="" +_libsearchdir="/lib" +_toolchainfilename="b3BlbndydDE1MDVjYy50YXIueHo="; +_block="USE_PCSC" +_tc_info="\n + !!! OpenWRT 15.05.1 Chaos Calmer !!!\n + this toolchain is compatible with\n + fill with info\n +\n +"; + +_tc_infolines="6" \ No newline at end of file diff --git a/support/toolchains.cfg/osmio4k b/support/toolchains.cfg/osmio4k new file mode 100644 index 0000000..13e9fc0 --- /dev/null +++ b/support/toolchains.cfg/osmio4k @@ -0,0 +1,18 @@ +_toolchainname="osmio4k"; +default_use="USE_UTF8 USE_LIBCRYPTO"; +_description="Edision OS MIO 4k aarch64"; +_oscamconfdir_default="/var/keys/"; +_oscamconfdir_custom="" + +_compiler="aarch64-osmio4k-linux-gnu-"; +_sysroot="aarch64-osmio4k-linux-gnu/sysroot/"; +_libsearchdir="/lib"; +_toolchainfilename="b3NtaW80ay50YXIueHoK"; +_md5sum="41fbf9b4f91eb61cb926565da644b6ed Toolchain-osmio4k.tar.xz"; +_tc_info="\n + !!! beware the box must have FPU !!!\n + this toolchain is compatible with\n +\n +Edsion : OS MIO 4K aarch64"; + +_tc_infolines="5" diff --git a/support/toolchains.cfg/solo4k b/support/toolchains.cfg/solo4k new file mode 100644 index 0000000..994f04f --- /dev/null +++ b/support/toolchains.cfg/solo4k @@ -0,0 +1,18 @@ +_toolchainname="solo4k"; +default_use="USE_UTF8 USE_LIBCRYPTO"; +_description="VU+ Solo4k"; +_oscamconfdir_default="/var/tuxbox/config"; +_oscamconfdir_custom="" + +_compiler="arm-linux-gnueabihf-"; +_sysroot="arm-linux-gnueabihf"; +_libsearchdir="/lib"; +_toolchainfilename="c29sbzRrLnRhci54ego="; + +_tc_info="\n + !!! beware the box must have FPU !!!\n + this toolchain is compatible with\n +\n +VU+ : Solo4k"; + +_tc_infolines="5" \ No newline at end of file diff --git a/support/translation/de b/support/translation/de new file mode 100644 index 0000000..eee3aed --- /dev/null +++ b/support/translation/de @@ -0,0 +1,113 @@ +#!/bin/bash + +#deutsch +txt_as='als'; +txt_of='von'; +txt_for='für'; +txt_b2="baue"; +txt_to="nach"; +txt_now='nun'; +txt_b1='bauen'; +txt_menu='Menü'; +txt_no='keinen'; +txt_name='Name'; +txt_use='benutze'; +txt_back='zurück'; +txt_done=' fertig'; +txt_error='Fehler'; +txt_missing='fehlt'; +txt_sel='auswählen'; +txt_delete='lösche'; +txt_found='gefunden'; +txt_create='erstelle'; +txt_loading=' lade'; +txt_profile='Profil'; +txt_profiles='Profile'; +txt_conf='Konfiguration'; +txt_parameter='Parameter'; +txt_extracting='entpacke'; +txt_wait='bitte warten...'; +txt_existing='vorhandenen'; +txt_ssh_profiles='SSH $txt_profiles'; +txt_not_found='nicht gefunden'; +txt_n_installed='ist nicht installiert'; +txt_start_menu='Hauptmenü'; +txt_back_main="$txt_back zum $txt_start_menu"; +txt_too_old='(zu alt wird nicht unterstützt)'; +txt_selected='ausgewählten'; +txt_update='aktualisiere'; +txt_example_name='Beispiel: dm820.stube'; +txt_save='speichern'; +txt_filename='Dateiname'; +txt_LOAD="UPLOAD"; +txt_tc="Toolchain"; + +# menu txt +txt_remove_menu="$txt_tc entfernen"; +txt_add_menu="$txt_tc hinzufügen"; +txt_main_revision="\n Die aktuelle SVN REVISION ist : r"; +txt_bmenu_title="Baumenü"; + +# help txt +txt_help1="beginnen mit" +txt_help2="Kommandozeilen Parameter sind" +txt_help3="Taste [ENTER] zum fortsetzen..." + +# firstmenu ################################################ +txt_firstmenu_continue="weiter mit lokalem SVN"; + txt_firstmenu_chose="anderen SVN Stand (7000+) laden"; + txt_firstmenu_cedit="$txt_conf""s Editor starten"; + txt_firstmenu_lang="Systemsprache manuell $txt_sel"; + txt_firstmenu_exit="simplebuild sofort beenden"; + +# _toolchain_config_menu ################################### + txt_config_menu="$txt_conf $txt_menu"; + txt_back_build="$txt_back zum $txt_bmenu_title"; +txt_module_configure="oscam Module $txt_sel"; + txt_oscam_extra="oscam Extras USB/PCSC $txt_sel"; + txt_build_extra="build Extras compress/patch $txt_sel"; + txt_build_load="letzte $txt_conf laden"; + txt_build_save="$txt_conf speichern"; + txt_build_reset="$txt_conf $txt_back setzen"; + txt_use_targz='erstelle tar Archiv nach dem Bauen'; + txt_use_patch='patche oscam vor dem Bauen'; + txt_use_compress='Binärkompression von oscam'; + +# _toolchain_build_menu #################################### + txt_bmenu_user="Benutzername "; + txt_bmenu_comp="Compiler "; + txt_bmenu_debu="Debug Info "; + txt_bmenu_use="USE_Variablen "; + txt_bmenu_build="oscam jetzt $txt_b1"; + txt_bmenu_config="oscam/Build $txt_conf"; +txt_bmenu_profile="vorhandenes $txt_profile laden"; +txt_bmenus_profile="$txt_profile $txt_save"; + txt_bmenu_log="zeige lastbuild.log"; + txt_bmenu_back="$txt_back zur Toolchainauswahl"; + txt_compress1="Dateigröße davor "; + txt_compress2="Dateigröße danach "; + txt_compress3="Dateigröße verkleinert auf"; + +# _toolchain_main_menu #################################### +txt_menu_builder1="Beende simplebuild"; +txt_menu_builder2="einen neuen $txt_tc hinzufügen"; +txt_menu_builder3="entferne einen installierten $txt_tc"; +txt_menu_builder4="Nativ $txt_for"; +txt_menu_back="Zurück zum $txt_tc $txt_menu"; + +# _dialog_checkout ######################################## +txt_verify_syscheck='überprüfe System :'; + txt_verify_svn='überprüfe existierenden SVN :'; + txt_update_svn="$txt_update SVN :"; + txt_prepare_svn="bereite SVN checkout vor :"; + txt_latest="letzter Stand"; + +# _load_profile ########################################### + txt_select_profile_title="Verfügbare $txt_profiles"; + txt_select_profile="bitte ein $txt_profile auswählen"; +txt_confirm_profile_select="bitte bestätigen sie die Auswahl von:"; + txt_no_profile_found="kein $txt_profile gefunden in\n\n$profdir"; + +# _upload_cam ############################################# +txt_upload_cam1="ssh $txt_profile existiert nicht"; +txt_upload_cam2="ssh $txt_profile gefunden"; diff --git a/support/translation/en b/support/translation/en new file mode 100644 index 0000000..44bba45 --- /dev/null +++ b/support/translation/en @@ -0,0 +1,100 @@ +#!/bin/bash + +#english + +txt_as='as'; +txt_of='of'; +txt_for='for'; +txt_b2="build"; +txt_to="to"; +txt_now='now'; +txt_b1='build'; +txt_menu='menu'; +txt_done=' done'; +txt_no='no'; +txt_use='use'; +txt_back='back'; +txt_error='error'; +txt_loading=' load'; +txt_sel='select'; +txt_delete='delete'; +txt_found='found'; +txt_create='create'; +txt_conf='configuration'; +txt_extracting='extracting'; +txt_wait='please wait...'; +txt_existing='exists'; +txt_profiles='profiles'; +txt_not_found='not found'; +txt_n_installed='is not installed'; +txt_back_main="back to main menu"; +txt_too_old='(too old or not supported)'; +txt_selected='selected'; +txt_update='now updating'; +txt_tc="Toolchain"; + +# menu txt +txt_start_menu='Main menu'; +txt_remove_menu='Remove toolchain'; +txt_add_menu='Add toolchain'; +txt_main_revision="\n the local SVN revision is : r"; + +# help txt +txt_help1="begin with" +txt_help2="commandline Parameters are" +txt_help3="[ENTER] to continue..." + +# firstmenu ################################################ +txt_firstmenu_continue="continue with local SVN"; + txt_firstmenu_chose="load a different SVN (7000+)"; + txt_firstmenu_cedit="start configuration editor"; + txt_firstmenu_lang="manual system language selection"; + txt_firstmenu_exit="close simplebuild now"; + +# _toolchain_config_menu ################################### + txt_config_menu="configuration menu"; + txt_back_build="back to build menu"; +txt_module_configure="select oscam modules "; + txt_oscam_extra="select oscam extras USB/PCSC"; + txt_build_extra="select build extras compress/patch"; + txt_build_load="load last configuration"; + txt_build_save="save configuration"; + txt_build_reset="reset configuration"; + +# _toolchain_build_menu##################################### + txt_bmenu_title="build menu"; + txt_bmenu_user="username "; + txt_bmenu_comp="compiler "; + txt_bmenu_debu="debug info "; + txt_bmenu_use="USE_variables "; + txt_bmenu_build="build oscam now"; +txt_bmenu_config="oscam/build configuration"; + txt_bmenu_log="show lastbuild.log"; + txt_bmenu_back="back to toolchain selection"; + txt_compress1="filesize before "; + txt_compress2="filesize after "; + txt_compress3="filesize reduced to "; + +# _toolchain_main_menu##################################### +txt_menu_builder1="close simplebuild"; +txt_menu_builder2="add new toolchain"; +txt_menu_builder3="remove installed toolchain"; +txt_menu_builder4="build native for"; +txt_menu_back="back to toolchain menu"; + +# _dialog_checkout +txt_verify_syscheck='check system :'; + txt_verify_svn='check existing SVN :'; + txt_update_svn="$txt_update SVN :"; + txt_prepare_svn="prepare SVN checkout :"; + txt_latest="latest SVN"; + +# _load_profile ########################################### + txt_select_profile_title="available profiles"; + txt_select_profile="please select a profile"; +txt_confirm_profile_select="please confirm the selection of:"; + txt_no_profile_found="no profile found in\n\n$profdir"; + +# _upload_cam ############################################# +txt_upload_cam1="ssh profile doesn't exist"; +txt_upload_cam2="ssh profile found"; diff --git a/support/translation/fr b/support/translation/fr new file mode 100644 index 0000000..3f3c7f6 --- /dev/null +++ b/support/translation/fr @@ -0,0 +1,158 @@ +#!/bin/bash + +#francais + + + + + + + + + +txt_create='crée dans'; +txt_bmenu_user="Utilisateur "; +txt_bmenu_comp="Compilateur "; +txt_bmenu_debu="Info Debug "; +txt_bmenu_acti="Options Actives"; +txt_wait="Veuillez patienter..."; +txt_build="Compilation"; +txt_to="à"; +txt_lc="utiliser"; +txt_lang_select="Change langue"; +txt_force="Forcer une MAJ rapide"; +txt_back="Retour au choix de la toolchain"; +txt_end="Quitter Simplebuild"; +txt_offline="Hors Ligne"; +txt_error="Erreur"; +txt_LOAD="UPLOAD"; +txt_DOWNLOAD="Téléchargment en cours"; +txt_REMOVE="Supprimer"; +txt_found_in="trouvé dans"; +txt_found_in_archiv="localisé dans archiv"; +txt_buildtime="Temps de Compilation"; +txt_nosvn="Pas de version SVN trouvée"; +txt_with="avec"; +txt_old="Ancien"; +txt_no_stapi="pas de STAPI SH4 disponible !!!"; +txt_rm="effacé"; +txt_help1="démarrer avec"; +txt_help2="les paramètres de lignes de commande possibles sont"; +txt_help3="touche [ENTER] pour continuer..." +txt_compressor1="Choisissez le compresseur de binaires\n pour votre systeme de compilation"; +txt_compressor2="résultat : "; +txt_compressor3="détecté"; +txt_compressor4="non détecté"; +txt_packok="est compressé dans archiv"; +txt_packfail="n'a pu compresser"; +txt_rcheckout="Structure SVN manquante ... Mise à jour, Veuillez Patienter !\n"; +txt_extra1=" Choisissez les options :\n [*] = activer; [ ] = désactiver"; +txt_extra2="Support des lecteurs USB"; +txt_extra3="Support des lecteurs PCSC"; +txt_extra4="Support de STAPI"; +txt_extra5="Support de COOLAPI"; +txt_extra6="Compiler les libs dans OScam"; +txt_extra7="Compacter le binaire oscam en .tar.gz"; +txt_extra8="Compresser le binaire oscam avec UPX"; +txt_checksys1="\n vérification des fichiers\n -------------------------\n"; +txt_checksys2="\n vérification des packages\n -------------------------\n"; +txt_checksys3="est installé"; +txt_checksys4="... nest pas installé"; +txt_checksys5="installé "; +txt_checksys6="... nest pas installé"; +txt_checksys7=" trouvé dans "; +txt_cfg_path1="valeur par défaut"; +txt_cfg_path2="valeur actuelle"; +txt_cfg_path3="répertoire de configuration"; +txt_lib_path1="répertoire de librairies"; +txt_custom_suffix="laissez vide pour utiliser les valeurs par défaut"; +txt_online_update1="version locale"; +txt_online_update2="version en ligne"; +txt_online_update3="Voulez-vous mettre à jour SIMPLEBUILD ?"; +txt_conf_update1="version locale"; +txt_conf_update2="version en ligne"; +txt_conf_update3="Voulez-vous mettre à jour le fichier de CONFIG ?"; +txt_patch="utiliser patch"; +txt_patch_off1="patche(s) trouvé(s) pour suppression\n------------------------------------"; +txt_patch_off2="supprimer patch"; +txt_patch_off3="supprimer"; +txt_patch_off4="fichier de la source"; +txt_patch_on1="patche(s) trouvé(s) pour application\n------------------------------------"; +txt_patch_on2="appliquer patch"; +txt_con_check1="Téléchargement manquant"; +txt_con_check2="taille de toolchain incorrecte. Supprimez et recommencez !"; +txt_con_check3="Téléchargement impossible"; +txt_configure_title="[ CONFIGURATION ]"; +txt_configure_menu0="Configuration"; +txt_configure_menu1="Add-ons, Protocoles, Systèmes CA, Lecteurs de Cartes"; +txt_configure_menu2="Autres Réglages (USB/PCSC/STAPI/COOL/PACK/PATCH/COMPRESS)"; +txt_configure_menu3="Changer le répertoire de config par défaut"; +txt_configure_menu4="Changer le répertoire des librairies par défaut"; +txt_configure_menu5="Choisir le Compresseur Binaire"; +txt_configure_menu6="Choisir un suffixe personnalisé pour le binaire OSCAM"; +txt_configure_menu7="Retour au MENU DE COMPILATION"; +txt_cmdline1="Checkout Revision"; +txt_cmdline2="Checkout trunk"; +txt_cmdline3="prise en compte du profil par défaut"; +txt_cmdline4="prise en compte du profil custom"; +txt_cmdline5="prise en compte du profil saved"; +txt_cmdline6="profil custom absent\n profil par défaut pris en compte"; +txt_cmdline7="profil saved absent\n profile par défaut pris en compte"; +txt_cmd_build1="pas de SVN correct trouvé\n supprimez oscam-svn !!\n ----------------------"; +txt_cmd_build2="SVN effacé\n redemarrez simplebuild !!\n --------------------------------------"; +txt_cmd_build3="appliquer le(s) patche(s)\n -------------------------"; +txt_cmd_build4="patches trouvé(s) pour être appliqué(s)"; +txt_cmd_build5="appliquer le patch"; +txt_cmd_build6="Nettoyer le SVN d'OSCam local"; +txt_cmd_build7="Taille du binaire avant compression"; +txt_cmd_build8="Taille du binaire après compression"; +txt_cmd_build9="Taille du binaire réduite à"; +txt_cmd_build10="supprimer les patches\n ---------------------"; +txt_cmd_build11="patche(s) trouvé(s) pour être appliqués"; +txt_cmd_build12="échec de compilation"; +txt_cmd_build13="voir le fichier build.log"; +txt_cmd_build14="supprimer patch"; +txt_cmd_build_title="[ INFO Compression ]"; +txt_b_menu_title="[ Options de compilation ]"; +txt_b_menu_options1="pas d'options actives"; +txt_b_menu1="[ MENU DE COMPILATION ]"; +txt_b_menu2="Informations"; +txt_b_menu3="Réglages Actuels"; +txt_b_menu4="Configuration et Réglages d'OSCam"; +txt_b_menu5="Compiler OSCam"; +txt_b_menu6="Voir build.log"; +txt_b_menu7="Voir la configuration d'OSCam"; +txt_upload_cam1="le fichier de configuration n'existe pas"; +txt_upload_cam2="le fichier de config existe"; +txt_t_menu1="\n La révision actuelle d'OSCam SVN est : r"; +txt_rem_chains1="Veuillez choisir la toolchain à supprimer"; +txt_add_chains1="AJOUTER Toolchain"; +txt_add_chains2="Veuillez choisir la toolchain à ajouter"; +txt_menu_builder1="Quitter Simplebuild"; +txt_menu_builder2="Nouvelle Toolchain"; +txt_menu_builder3="Toolchain installées"; +txt_menu_builder4="Native pour"; +txt_menu_back="Retour à la sélection de Toolchain"; +txt_cedit1="Supprimer le binaire de debug"; +txt_cedit2="Verifier les Toolchains installées"; +txt_cedit3="Activer le système de Patches Automatique"; +txt_cedit4="Activer la vérification de Mises à jour"; +txt_cedit5="Informations detaillées sur la compilation"; +txt_revcheck1="VERIFICATION DE MISE A JOUR"; +txt_revcheck2="Vérification de la version d'OSCam SVN en ligne\n\t\b"; +txt_revcheck3="Révision disponible:"; +txt_revcheck4="Entrer le numéro de Révision..."; +txt_revcheck5="impossible. SVN hors ligne !"; +txt_revcheck6="Vérification de la version d'OSCam SVN locale\n\t\b"; +txt_revsel1="avec locale:"; +txt_revsel2="Effacer la"; +txt_revsel3="et tous les fichiers de configuration"; +txt_revsel4="Editeur de configuration"; +txt_revsel5="Programme"; +txt_revsel6="Mettre à jour vers la dernière Révision"; +txt_options1="Editer Options :"; +txt_options2="activer"; +txt_options3="activer"; +txt_options4="OK rédemarre Simplebuild"; +txt_options_title="Editeur de Configuration"; +txt_disksvn="révision locale est maintenant " diff --git a/support/translation/it b/support/translation/it new file mode 100644 index 0000000..7cac81d --- /dev/null +++ b/support/translation/it @@ -0,0 +1,149 @@ +#!/bin/bash + +#italiano + +txt_create='creato in'; +txt_bmenu_user="Nome utente "; +txt_bmenu_comp="Compilatore "; +txt_bmenu_debu="Informazioni di Debug "; +txt_bmenu_acti="Caratteristiche attive"; +txt_wait="attendere prego..."; +txt_build="compilo"; +txt_lc="utilizzare"; +txt_to="verso"; +txt_force="Checkout rapido"; +txt_back="Torna al menu Toolchain"; +txt_end="Termina Simplebuild"; +txt_offline="offline"; +txt_error="Errore"; +txt_LOAD="CARICA"; +txt_DOWNLOAD="Sto scaricando"; +txt_REMOVE="RIMUOVI"; +txt_found_in="trovato in"; +txt_found_in_archiv="trovato in archivio"; +txt_buildtime="tempo di compilazione"; +txt_nosvn="nessuna svn trovata"; +txt_with="con"; +txt_old="vecchio"; +txt_no_stapi="nessun sh4 STAPI presente!"; +txt_rm="rimosso"; +txt_help1="inizia con"; +txt_help2="Le linee di comando sono"; +txt_help3="Premi [ENTER] per continuare..." +txt_compressor1="scegli la COMPRESSIONE BINARIA\n per il tuo SISTEMA DI COMPILAZIONE"; +txt_compressor2="Risultato : "; +txt_compressor3="trovato"; +txt_compressor4="non trovato"; +txt_packok="è compresso nell'arvhivio"; +txt_packfail="errore durante la compressione"; +txt_rcheckout=" manca SVN. Vengono cerati aggioranmenti. Attendere prego...\n"; +txt_extra1=" Scegliere le caratteristiche :\n [*] = on; [ ] = off"; +txt_extra2="supporto periferiche USB"; +txt_extra3="supporto periferiche PCSC"; +txt_extra4="utilizza la funzione STAPI"; +txt_extra5="utilizza la funzione COOLAPI"; +txt_extra6="includi le librerie in Oscam"; +txt_extra7="comprimere Oscam come .tar.gz"; +txt_extra8="Comprimere Oscam con UPX"; +txt_checksys1="\n controllo file\n --------------\n"; +txt_checksys2="\n controllo pacchetto\n -------------------\n"; +txt_checksys3="è intallato"; +txt_checksys4="... non è installato"; +txt_checksys5="installato "; +txt_checksys6="... maca"; +txt_checksys7=" trovato in "; +txt_cfg_path1="default è"; +txt_cfg_path2="impostato è"; +txt_cfg_path3="La CONF_DIR è impostata a"; +txt_lib_path1="La LIB_DIR è impostata a"; +txt_custom_suffix="lasciare vuoto per Standard"; +txt_online_update1="versione locale"; +txt_online_update2="versione online"; +txt_online_update3="Volete cambiare alla versione attuale dello script SIMPLEBUILD"; +txt_conf_update1="versione locale"; +txt_conf_update2="versione online"; +txt_conf_update3="Volete cambiare alla versione attuale del file CONFIG"; +txt_patch="usare patch"; +txt_patch_off1="Patch(e) trovati da eliminare\n-----------------------------"; +txt_patch_off2="rimuovi Patch(s)"; +txt_patch_off3="rimuovo"; +txt_patch_off4="files dalla svn"; +txt_patch_on1="Patch(s) da applicare trovati\n-----------------------------"; +txt_patch_on2="Patch(s) applicare"; +txt_con_check1="carico mancanti"; +txt_con_check2="riconosciuta dimensione Toolchain errata! Rimuovo e ricarico."; +txt_con_check3="errore durante il caricamento"; +txt_configure_title="[ CONFIGURAZIONE ]"; +txt_configure_menu0="Configurare"; +txt_configure_menu1="Moduli, Protocolli, Lettori, Carten e Driver per Reader"; +txt_configure_menu2="Caratteristiche (USB/PCSC/PACK/PATCH/STAPI/COOLAPI/COMPRESS)"; +txt_configure_menu3="Configurazioni standard- impostazione directory"; +txt_configure_menu4="Librerie standard- impostazione directory"; +txt_configure_menu6="eigene oscam Endung verwenden"; +txt_configure_menu7="Salvare e tornare al menu di compilazione"; +txt_cmdline1="Revisions Checkout"; +txt_cmdline2="Trunk Checkout"; +txt_cmdline3="utilizza il profilo standard"; +txt_cmdline4="utilizza il profilo personalizzato"; +txt_cmdline5="utilizza il profilo salvato"; +txt_cmdline6="profilo personalizzato non trovato\n utilizzo profilo standard"; +txt_cmdline7="profilo salvato non trovato\n utilizzo profilo standard"; +txt_cmd_build1="nessuna SVN originale trovata\n rimuovi subito oscam-svn !!\n ---------------------------"; +txt_cmd_build2="SVN rimossa\n Riavvia Simplebuild!\n --------------------"; +txt_cmd_build3="applico Patch(s)\n ----------------"; +txt_cmd_build4="trovato Patch(s) da rimuovere"; +txt_cmd_build5="applicare Patch(s)"; +txt_cmd_build6="pulire SVN"; +txt_cmd_build7="Dimensione file prima "; +txt_cmd_build8="Dimensione file dopo "; +txt_cmd_build9="Dimensione file rimpicciolita di"; +txt_cmd_build10="rimuovo Patch(s)\n ----------------"; +txt_cmd_build11="trovato Patch(s) da rimuovere"; +txt_cmd_build12="errore durante la compilazione"; +txt_cmd_build13="leggere build.log" +txt_cmd_build14="rimuovo Patch(s)"; +txt_cmd_build_title="[ INFO compressione ]"; +txt_b_menu_title="[ Opzioni compilazione ]"; +txt_b_menu_options1="nessuna caratteristica attiva" +txt_b_menu1="[ MENU COMPILAZIONE ]"; +txt_b_menu2="Informazioni"; +txt_b_menu3="impostazioni applicate"; +txt_b_menu4="imposta OScam"; +txt_b_menu5="Compilo Oscam"; +txt_b_menu6="Mostra build.log"; +txt_b_menu7="mostra la configurazione OScam"; +txt_upload_cam1="manca il file config"; +txt_upload_cam2="file config trovato"; +txt_t_menu1="\n La versione SVN attuale è : r"; +txt_rem_chains1="Selezione per favore il Toolchain da rimuovere"; +txt_add_chains1="Aggiungi Toolchain"; +txt_add_chains2="Selezionare per favore il Toolchain da aggiungere"; +txt_menu_builder1="Termina Simplebuild"; +txt_menu_builder2="Aggiungi un Toolchain"; +txt_menu_builder3="Rimuovi un Toolchain installato"; +txt_menu_builder4="Nativo per"; +txt_menu_back="Torna al menu Toolchain"; +txt_cedit1="Rimuovi il file .debug"; +txt_cedit2="Controlla i Toolchains installati"; +txt_cedit3="Attiva AUTO PATCH SYSTEM"; +txt_cedit4="Attiva Update Check"; +txt_cedit5="SCRIPT mit maximalen Infos beim bau"; +txt_revcheck1="CONTROLLO_UPDATE"; +txt_revcheck2="Controllo versione ONLINE di Oscam"; +txt_revcheck3="Versione trovata:"; +txt_revcheck4="Immettere il numero della SVN desiderata..."; +txt_revcheck5="impossibile. SVN è offline!"; +txt_revcheck6="Controllare la SVN locale"; +txt_revsel1="Continua con SVN locale:"; +txt_revsel2="SVN"; +txt_revsel3="riscaricare e rimuovere le configurazioni"; +txt_revsel4="Editore configurazioni"; +txt_revsel5="Esci dal programma"; +txt_revsel6="Aggiornare all'ultima versione"; +txt_wrong1="buildcamname errato o non trovato"; +txt_options1="Modifica opzioni:"; +txt_options2="ativare"; +txt_options3="Disattivare"; +txt_options4="OK riavvia SIMPLEBUILD"; +txt_options_title="Editore CONFIG"; +txt_disksvn="revisione locale è ora " diff --git a/support/translation/nl b/support/translation/nl new file mode 100644 index 0000000..fb4ba7e --- /dev/null +++ b/support/translation/nl @@ -0,0 +1,114 @@ +#!/bin/bash + +#nederlands + +txt_as='als'; +txt_of='van'; +txt_for='voor'; +txt_b2="build"; +txt_to="naar"; +txt_now='nu'; +txt_b1='compileren'; +txt_menu='Menu'; +txt_no='geen'; +txt_name='Naam'; +txt_use='gebruik'; +txt_back='terug'; +txt_done=' klaar'; +txt_error='Fout'; +txt_missing='ontbreekt'; +txt_sel='selecteren'; +txt_delete='verwijderen'; +txt_found='gevonden'; +txt_create='maak'; +txt_loading=' laden'; +txt_profile='profiel'; +txt_profiles='Profielen'; +txt_conf='Configuratie'; +txt_parameter='Parameter'; +txt_extracting='uitpakken'; +txt_wait='momentje...'; +txt_existing='bestaande'; +txt_ssh_profiles='SSH $txt_profiles'; +txt_not_found='niet gevonden'; +txt_n_installed='is niet geïnstalleerd'; +txt_start_menu='Hoofdmenu'; +txt_back_main="$txt_back naar $txt_start_menu"; +txt_too_old='(te oud of niet ondersteund)'; +txt_selected='geselecteerd'; +txt_update='nu bijwerken'; +txt_example_name='Voorbeeld: dm820.slaapkmr'; +txt_save='opslaan'; +txt_filename='Bestandsnaam'; +txt_LOAD="UPLOAD"; +txt_tc="Toolchain"; + +# menu txt +txt_remove_menu='$txt_tc verwijderen'; +txt_add_menu='$txt_tc toevoegen'; +txt_main_revision="\n De actuele SVN versie is : r"; +txt_bmenu_title="Buildmenü"; + +# help txt +txt_help1="begin met" +txt_help2="Opdrachtregel parameters zijn" +txt_help3="Druk op [ENTER] om door te gaan..." + +# firstmenu ################################################ +txt_firstmenu_continue="Doorgaan met lokale SVN"; + txt_firstmenu_chose="Andere SVN versie (7000+) laden"; + txt_firstmenu_cedit="$txt_conf""s Editor starten"; + txt_firstmenu_lang="Taal handmatig $txt_sel"; + txt_firstmenu_exit="Afsluiten"; + +# _toolchain_config_menu ################################### + txt_config_menu="$txt_conf $txt_menu"; + txt_back_build="$txt_back naar $txt_bmenu_title"; +txt_module_configure="Oscam module $txt_sel"; + txt_oscam_extra="Oscam extra's USB/PCSC $txt_sel"; + txt_build_extra="build Extra's Compress/Patch $txt_sel"; + txt_build_load="Laatste $txt_conf laden"; + txt_build_save="$txt_conf bewaren"; + txt_build_reset="$txt_conf $txt_back zetten"; + txt_use_targz='maak .tar bestand na het compileren'; + txt_use_patch='patch oscam voor het compileren'; + txt_use_compress='Binaire compressie van oscam'; + +# _toolchain_build_menu #################################### + txt_bmenu_user="Gebruikersnaam "; + txt_bmenu_comp="Compiler "; + txt_bmenu_debu="Debug info "; + txt_bmenu_use="GEBRUIK variabelen "; + txt_bmenu_build="OScam nu $txt_b1"; +txt_bmenu_config="OScam/Build $txt_conf"; +txt_bmenu_profile="beschikbare $txt_profile laden"; +txt_bmenus_profile="$txt_profile $txt_save"; + txt_bmenu_log="Toon lastbuild.log"; + txt_bmenu_back="$txt_back naar $txt_tc selectie"; + txt_compress1="Bestandgrootte eerst "; + txt_compress2="Bestandgrootte na "; + txt_compress3="Bestandgrootte verkleind tot "; + +# _toolchain_main_menu##################################### +txt_menu_builder1="Simplebuild afsluiten"; +txt_menu_builder2="Voeg nieuwe $txt_tc toe"; +txt_menu_builder3="Verwijder geïnstalleerde $txt_tc"; +txt_menu_builder4="Huidig system:"; +txt_menu_back="Naar $txt_tc $txt_menu"; + +# _dialog_checkout +txt_verify_syscheck='Systeem controleren :'; + txt_verify_svn='Huidige SVN controleren :'; + txt_update_svn="SVN $txt_update :"; + txt_prepare_svn="SVN controle voorbereiden :"; + txt_latest="Nieuwste SVN"; + +# _load_profile ########################################### + txt_select_profile_title="Beschikbare $txt_profiles"; + txt_select_profile="Kies een $txt_profile a.u.b."; +txt_confirm_profile_select="Bevestig a.u.b. de keuze van:"; + txt_no_profile_found="geen $txt_profile gevonden in\n\n$profdir"; + +# _upload_cam ############################################# +txt_upload_cam1="ssh $txt_profile bestaat niet"; +txt_upload_cam2="ssh $txt_profiles gevonden"; diff --git a/support/translation/pl b/support/translation/pl new file mode 100644 index 0000000..39f5fe4 --- /dev/null +++ b/support/translation/pl @@ -0,0 +1,115 @@ +#!/bin/bash + +#polski + +txt_as='niż'; +txt_of='z'; +txt_for='dla'; +txt_b2="buduję"; +txt_to="do"; +txt_now='teraz'; +txt_b1='kompiluj'; +txt_menu='menu'; +txt_no='żaden'; +txt_name='nazwa'; +txt_use='użyj'; +txt_back='powrót'; +txt_done=' gotowe'; +txt_error='błąd'; +txt_missing='brak'; +txt_sel='wybierz'; +txt_delete='usuń'; +txt_found='znaleziono'; +txt_create='utwórz'; +txt_loading='ładuj'; +txt_profiles='profil'; +txt_conf='kofiguracja'; +txt_parameter='parametr'; +txt_extracting='rozpakuj'; +txt_wait='proszę czekać ...'; +txt_existing='istniejący'; +txt_ssh_profiles='SSH Profile'; +txt_not_found='nie znaleziono'; +txt_n_installed='nie jest zainstlowane'; +txt_back_main="$txt_back do menu głównego"; +txt_too_old='(zbyt stary nie jest obsługiwany)'; +txt_selected='wybrane'; +txt_update='aktualizacja'; +txt_example_name='przykład: dm820.stube'; +txt_save='zapisz'; +txt_filename='nazwa pliku'; +txt_LOAD="UPLOAD\przesłać"; + +# menu txt +txt_start_menu='menu główne'; +txt_remove_menu='usuń Toolchain'; +txt_add_menu='dodaj Toolchain'; +txt_main_revision="\n aktualna SVN REVISION to : r"; + +# help txt +txt_help1="zaczać z" +txt_help2="wiersz poleceń to" +txt_help3="[ENTER] > dalej ..." + +# firstmenu ################################################ +txt_firstmenu_continue="dalej z lokalnym SVN"; + txt_firstmenu_chose="załaduj inny SVN (od 7000)"; + txt_firstmenu_cedit="$txt_conf"" - wystartuj edytor"; + txt_firstmenu_lang="opcje językowe"; + txt_firstmenu_exit="zakończ Simplebuild"; + +# _toolchain_config_menu ################################### + txt_config_menu="menu konfiguratora"; + txt_back_build="$txt_back do menu kompilacji"; +txt_module_configure="$txt_sel moduły Oscam"; + txt_oscam_extra="$txt_sel kompilacyjne extra USB/PCSC "; + txt_build_extra="$txt_sel kompilacyjne extra Compress/Patch"; + txt_build_load="z$txt_loading ostatnia $txt_conf"; + txt_build_save="$txt_save $txt_conf "; + txt_build_reset="resetuj konfigurację "; + txt_use_targz='$txt_create plik.tar po kompilacji '; + txt_use_patch='użyj Patch przed kompilacją'; + txt_use_compress='spakuj binarke oscam'; + +# _toolchain_build_menu #################################### + txt_bmenu_title="menu kompilacji"; + txt_bmenu_user="nazwa usera "; + txt_bmenu_comp="Compiler "; + txt_bmenu_debu="Debug Info "; + txt_bmenu_use="variable "; + txt_bmenu_build="$txt_b1 OScam"; + txt_bmenu_config="konfiguracja OScam/Build"; +txt_bmenu_profile="załaduj $txt_existing profil"; +txt_bmenus_profile="Profil $txt_save"; + txt_bmenu_log="pokaż lastbuild.log"; + txt_bmenu_back="$txt_back do wyboru Toolchain"; + txt_compress1="wielkość pliku przed "; + txt_compress2="wielkość pliku po "; + txt_compress3="wielkość pliku zmniejszona do"; + +# _toolchain_main_menu #################################### +#txt_menu_title="menu toolchaini"; +txt_menu_builder1="zakończ Simplebuild"; +txt_menu_builder2="dodaj nowy Toolchain"; +txt_menu_builder3="usuń zainstalowany Toolchain"; +txt_menu_builder4="nativ dla"; +txt_menu_back="powrót do menu toolchain"; + +# _dialog_checkout ######################################## +txt_verify_syscheck='sprawdzanie systemu :'; + txt_verify_svn='sprawdzanie istniejącego svn :'; + txt_update_svn="$txt_update svn :"; + txt_prepare_svn="przygotowanie svn checkout :"; + txt_latest="ostatni aktualny"; + +# _load_profile ########################################### + txt_select_profile_title="dostępne profile"; + txt_select_profile="wybierz profil"; +txt_confirm_profile_select="potwierdzić wybór :"; + txt_no_profile_found="nie znaleziono profilu w\n\n$profdir"; + +# _upload_cam ############################################# +txt_upload_cam1="SSH profil nie istnieje"; +txt_upload_cam2="SSH profil znaleziony"; + + diff --git a/support/translation/pt b/support/translation/pt new file mode 100644 index 0000000..8dcc508 --- /dev/null +++ b/support/translation/pt @@ -0,0 +1,150 @@ +#!/bin/bash + +#portugues-portugal + +txt_create='criar em'; +txt_bmenu_user="Utilizador "; +txt_bmenu_comp="Compilador "; +txt_bmenu_debu="Informacao do Debug "; +txt_bmenu_acti="Opcoes Ativadas"; +txt_wait="Por favor Aguarde..."; +txt_build="Compilacao"; +txt_to="para"; +txt_lc="utilizar"; +txt_lang_select="Mudar de Lingua"; +txt_force="Forcar um MAJ rapido"; +txt_back="Voltar para o menu de escolhas da toolchain"; +txt_end="Sair do Simplebuild"; +txt_offline="Desligado"; +txt_error="Erro"; +txt_LOAD="Enviando"; +txt_DOWNLOAD="Descarregando ..."; +txt_REMOVE="Apagar"; +txt_found_in="Encontrar em"; +txt_found_in_archiv="Localizar no arquivo"; +txt_buildtime="Tempo de Compilacao"; +txt_nosvn="Nenhuma Versao SVN encontrada"; +txt_with="com"; +txt_old="Antigo"; +txt_no_stapi="sem STAPI SH4 disponivel !!!"; +txt_rm="apagado"; +txt_help1="iniciar com"; +txt_help2="os parametros das linhas de comando disponiveis sao"; +txt_help3="prime [ENTER] para continuar..." +txt_compressor1="Escolhe o meio de compressao de binarios\n para o seu sistema de compilacao"; +txt_compressor2="resultado : "; +txt_compressor3="detectado"; +txt_compressor4="nao detectado"; +txt_packok="esta compressado no arquivo"; +txt_packfail="nao conseguiu compressar"; +txt_rcheckout="Estructura do SVN nao encontrada ... A actualizar, Por Favor Aguarde !\n"; +txt_extra1=" Escolha as opcoes :\n [*] = Activar; [ ] = Desactivar"; +txt_extra2="Suporte dos leitores USB"; +txt_extra3="Suporte dos leitores PCSC"; +txt_extra4="Suporte do STAPI"; +txt_extra5="Suporte do COOLAPI"; +txt_extra6="Compilar as Librarias dentro do OScam"; +txt_extra7="Compactar o binario do OScam em .tar.gz"; +txt_extra8="Compressar o binario OScam com UPX"; +txt_checksys1="\n Verificacao dos ficheiros \n -------------------------\n"; +txt_checksys2="\n Verificacao dos pacotes\n -------------------------\n"; +txt_checksys3="esta instalado"; +txt_checksys4="... nao esta instalado"; +txt_checksys5="instalado "; +txt_checksys6="... nao esta instalado"; +txt_checksys7=" encotrado em "; +txt_cfg_path1="valor por defeito"; +txt_cfg_path2="valor actual"; +txt_cfg_path3="directorio de configuracoes"; +txt_lib_path1="directorio de librarias"; +txt_custom_suffix="deixar vazio para os valores por defeito"; +txt_online_update1="versao local"; +txt_online_update2="versao online"; +txt_online_update3="Deseja actualizar o seu SIMPLEBUILD ?"; +txt_conf_update1="versao local"; +txt_conf_update2="versao online"; +txt_conf_update3="Deseja actualizar o ficheiro CONFIG ?"; +txt_patch="utilizar o patch"; +txt_patch_off1="patch(s) encontrado(s) para supressao\n------------------------------------"; +txt_patch_off2="apagar o patch"; +txt_patch_off3="apagar"; +txt_patch_off4="ficheiro da fonte"; +txt_patch_on1="patch(s) encontrado(s) para aplicacao\n------------------------------------\n------------------------------------"; +txt_patch_on2="aplicar patch"; +txt_con_check1="Transferencia nao encontrada"; +txt_con_check2="tamanho da toolchain incorrecto. Apague e comece de novo !"; +txt_con_check3="Impossivel transferir"; +txt_configure_title="[ CONFIGURACAO ]"; +txt_configure_menu0="Configuracao"; +txt_configure_menu1="Add-ons, Protocolos, Sistemas CA, Leitores de Cartoes"; +txt_configure_menu2="Outros Parametros (USB/PCSC/STAPI/COOL/PACK/PATCH/COMPRESS)"; +txt_configure_menu3="Mudar o directorio das configs por defeito"; +txt_configure_menu4="Mudar o directorio das librarias por defeito"; +txt_configure_menu5="Escolher o compressor do bianario"; +txt_configure_menu6="Escolher um suffixo personalizado para o binario do OSCAM"; +txt_configure_menu7="Voltar para o MENU DE COMPILACAO"; +txt_cmdline1="Verificacao da Revision "; +txt_cmdline2="Verificacao do trunk"; +txt_cmdline3="consideracao do perfil por defeito"; +txt_cmdline4="consideracao do perfil modificado"; +txt_cmdline5="consideracao do perfil guardado"; +txt_cmdline6="perfil modificado ausente\n perfil por defeito tomado em conta (Selecionado)"; +txt_cmdline7="perfil guardado ausente\n perfil por defeito tomado em conta (Selecionado) "; +txt_cmd_build1="nenhum SVN correcto encontrado\n apague oscam-svn !!\n ----------------------"; +txt_cmd_build2="SVN apagado\n re-inicie o simplebuild !!\n --------------------------------------"; +txt_cmd_build3="aplicar o(s) patch(s) \n -------------------------"; +txt_cmd_build4="patch(s) encontrado(s) para serem aplicado(s)"; +txt_cmd_build5="aplicar o patch"; +txt_cmd_build6="Limpar SVN do OSCam local"; +txt_cmd_build7="Tamanho do bianario antes da compressao"; +txt_cmd_build8="Tamanho do bianario depois da compressao"; +txt_cmd_build9="Tamanho do bianario reduzido a"; +txt_cmd_build10="apagar patch\n ---------------------"; +txt_cmd_build11="patch(s) encontrado(s) para serem aplicado(s)"; +txt_cmd_build12="falha de compilacao"; +txt_cmd_build13="visionar o ficheiro build.log"; +txt_cmd_build14="apagar patch"; +txt_cmd_build_title="[ INFO Compressao ]"; +txt_b_menu_title="[ Opcoes de compilacao ]"; +txt_b_menu_options1="nenhuma Opcao activa"; +txt_b_menu1="[ MENU DE COMPILACAO ]"; +txt_b_menu2="Informacoes"; +txt_b_menu3="Configuracoes Actuais"; +txt_b_menu4="Configuracoes et Parametros do OSCam"; +txt_b_menu5="Compilar OSCam"; +txt_b_menu6="Visionar build.log"; +txt_b_menu7="Ver a configuracao do OSCam"; +txt_upload_cam1="o ficheiro de configuracao nao existe"; +txt_upload_cam2="o ficheiro config existe"; +txt_t_menu1="\n A Revisao actual do OSCam SVN é : r"; +txt_rem_chains1="Por favor escolhe a Toolchain a ser apagada"; +txt_add_chains1="ADICIONAR Toolchain"; +txt_add_chains2="Por favor escolhe a Toolchain a adicionar"; +txt_menu_builder1="Sair do Simplebuild"; +txt_menu_builder2="Nova Toolchain"; +txt_menu_builder3="Toolchain Instaladas"; +txt_menu_builder4="Nativo para"; +txt_menu_back="Voltar á seleccao da(s) Toolchain(s)"; +txt_cedit1="Apagar o binario de debug"; +txt_cedit2="Verificar as Toolchain(s) instaladas"; +txt_cedit3="Activar o sistema de Patch Automatico"; +txt_cedit4="Activar a verificacao de Actualizacoes"; +txt_cedit5="Informacoes detalhadas sobre a compilacao"; +txt_revcheck1="VERIFICACAO DAS ATUALIZACOES"; +txt_revcheck2="Verificacao da versao do OSCam SVN online\n\t\b"; +txt_revcheck3="Revisao disponivel:"; +txt_revcheck4="Insira o numero da Revisao..."; +txt_revcheck5="impossivel. SVN offline !"; +txt_revcheck6="Verificacao da versao do OSCam SVN local\n\t\b"; +txt_revsel1="com local:"; +txt_revsel2="Apagar a"; +txt_revsel3="e todos os ficheiros de configuracao"; +txt_revsel4="Editor de configuracao"; +txt_revsel5="Programa"; +txt_revsel6="Actualizar para a ultima Revisao"; +txt_options1="Editar Opcoes :"; +txt_options2="activar"; +txt_options3="activar"; +txt_options4="OK reinicie o Simplebuild"; +txt_options_title="Editor de Configuracoes"; +txt_disksvn="revisao local esta agora " \ No newline at end of file diff --git a/support/translation/tr b/support/translation/tr new file mode 100644 index 0000000..464d0bf --- /dev/null +++ b/support/translation/tr @@ -0,0 +1,115 @@ +#!/bin/bash + +#turkish + +txt_as='as'; +txt_of='/'; +txt_for='için'; +txt_b2="yapı"; +txt_to="after"; +txt_now='şimdi'; +txt_b1='build'; +txt_menu='Menü'; +txt_no='none'; +txt_name='Ad'; +txt_use='kullanım'; +txt_back='geri dön'; +txt_done='hazır'; +txt_error='hata'; +txt_missing='eksik'; +txt_sel='seçmek'; +txt_delete='sil'; +txt_found='bulundu'; +txt_create='oluştur'; +txt_loading='load'; #7karakter +txt_profile='profil'; +txt_profiles='Profiller'; +txt_conf='yapılandırma'; +txt_parameter='Parametre'; +txt_extracting='ayıklanıyor'; #10karakter +txt_wait='lütfen bekleyin...'; +txt_existing='var'; +txt_ssh_profiles="SSH $txt_profiles"; +txt_not_found='bulunamadı'; +txt_n_installed='yüklü değil'; +txt_start_menu='Ana menü'; +txt_back_main="$txt_start_menu'ye geri dön"; +txt_too_old='(çok eski desteklenmiyor)'; +txt_selected='seçildi'; +txt_update='güncelleniyor'; +txt_example_name='Örnek:dm820.stube'; +txt_save='kayıt'; +txt_filename='dosya adı'; +txt_LOAD="UPLOAD"; +txt_tc="Toolchain"; + +# menu txt +txt_start_menu='Ana menü'; +txt_remove_menu="$txt_tc kaldır"; +txt_add_menu="$txt_tc ekle"; +txt_main_revision="\n yerel SVN revizyonu : r"; + +# help txt +txt_help1="ile başla" +txt_help2="komut satırıyla başlayın Parametreler" +txt_help3="[ENTER] ile devam eder ..." + +# firstmenu #################### ########################### +txt_firstmenu_continue="yerel SVN ile devam et"; + txt_firstmenu_chose="Farklı bir SVN yükle (7000+)"; + txt_firstmenu_cedit="yapılandırma düzenleyicisini başlat"; + txt_firstmenu_lang="sistem dili seç"; + txt_firstmenu_exit="Simplebuild'i kapat"; + +# _toolchain_config_menu ##################################### + txt_config_menu="yapılandırma menüsü"; + txt_back_build="menüye geri dön"; +txt_module_configure="oscam modüllerini seç"; + txt_oscam_extra="USB/PCSC ekstralarını seçin"; + txt_build_extra="build ekstralar sıkıştır / yama seç"; + txt_build_load="son yapılandırmayı yükle"; + txt_build_save="konfigürasyonu kaydet"; + txt_build_reset="yapılandırmayı sıfırla"; + txt_use_targz='oscam derlemeden sonra file.tar.gz'; + txt_use_patch="patch yamasını oscam'a ekle"; + txt_use_compress="Oscam'den ikili sıkıştırma"; + +# _toolchain_build_menu #################################### + txt_bmenu_title="menü oluşturma"; + txt_bmenu_user="kullanıcı adı "; + txt_bmenu_comp="derleyici "; + txt_bmenu_debu="hata ayıklama bilgisi"; + txt_bmenu_use="USE_değişkenler "; + txt_bmenu_build="şimdi oscam oluştur"; +txt_bmenu_config="oscam/build yapılandırma"; +txt_bmenu_profile="mevcut $txt_profile ile yükle"; +txt_bmenus_profile="$txt_profile $txt_save et"; + txt_bmenu_log="göster lastbuild.log"; + txt_bmenu_back="$txt_tc seçimine geri dön"; + txt_compress1="önce dosya boyutu "; + txt_compress2="sonra dosya boyutu "; + txt_compress3="dosya boyutu azaldı "; + +# _toolchain_main_menu ###################################### +txt_menu_builder1="close simplebuild"; +txt_menu_builder2="yeni $txt_tc ekle"; +txt_menu_builder3="yüklü $txt_tc kaldır"; +txt_menu_builder4="mevcut yerel yapı için oluştur"; +txt_menu_back="$txt_tc menüsüne geri dön"; + +# _dialog_checkout +txt_verify_syscheck="sistemi kontrol et :"; + txt_verify_svn="mevcut SVN'yi kontrol et :"; + txt_update_svn="$txt_update SVN :"; + txt_prepare_svn="SVN ödemesini hazırla :"; + txt_latest="en son SVN"; + +# _load_profile ############################################ + txt_select_profile_title="kullanılabilir profiller "; + txt_select_profile="lütfen bir profil seçin"; +txt_confirm_profile_select="lütfen seçiminizi onaylayın:"; + txt_no_profile_found="içinde profil bulunamadı\n\n$profdir"; + +# _upload_cam ########################################### +txt_upload_cam1="ssh profili mevcut değil "; +txt_upload_cam2="ssh profili bulundu";