diff options
Diffstat (limited to 'remote/setup_tools')
| -rwxr-xr-x | remote/setup_tools | 124 |
1 files changed, 82 insertions, 42 deletions
diff --git a/remote/setup_tools b/remote/setup_tools index ed6f58e9..bb1895d0 100755 --- a/remote/setup_tools +++ b/remote/setup_tools @@ -6,14 +6,15 @@ MODULE_DIR=${ROOT_DIR}/remote TOOL_DIR=${MODULE_DIR}/tools INIT_DIR=${MODULE_DIR}/stage3.2 -setup_git () +initial_checks () { - if [ ! -z "${GIT}" ]; then - GIT_BIN=$(which git) - [ -z "${GIT_BIN}" ] && echo "Installing git..." && apt-get install git - fi + for BIN in $(which git) $(which locate) + do + [ -z $BIN ] && echo "Installing $BIN..." && apt-get install $BIN + done } + read_config () { TOOL_CONFIG=${TOOL_DIR}/${TOOL}/${TOOL}.conf @@ -46,45 +47,62 @@ copyfileswithdependencies () COPYFILES_LIST="list_wanted_stage3.2" [ -e ${COPYFILES_LIST} ] && rm ${COPYFILES_LIST} - + + + echo -e "\n\n*********************************************************" + echo "*" + echo "* Copying required binaries from config file..." + echo "*" + echo -e "*********************************************************\n\n" for FILENAME in ${REQUIRED_BINARIES} do FILE=$(find . -name ${FILENAME} -type f -executable | xargs grep -l ELF) if [ -z "$FILE" ]; then - echo "No Binary found for ${FILENAME}. Skipping." + echo -e "\tNo Binary found for ${FILENAME}. Skipping." echo "-----------------------------------------------------------------" continue fi - echo "Found ${FILENAME} at ${FILE}. Searching libraries..." + echo -e "\tFound ${FILENAME} at ${FILE}" echo ${FILE} >> ${COPYFILES_LIST} # fetch dependencies # quick fix to exclude libc*, else it copies unneeded libs... + # workaround for + ldd ${FILE} &>/dev/null + ldd_exit_code=$? + if [ "x$ldd_exit_code" != "x0" ]; + then + echo -e "\tldd $FILE failed." + continue + fi for i in $(ldd ${FILE} |awk '{print $1 $2 $3}'|grep -v ld-linux|grep -v libc.so*|grep -v linux-gate|grep -v linux-vdso) do arrIN=(${i//=>/ }) - echo "--------------------------------------------------------" - echo "Searching ${arrIN[0]} under $(pwd)..." - LOCAL_MATCHES=$(find . -name $(echo ${arrIN[0]}|awk -F "." '{print $1}').*) + echo -en "\t\t${arrIN[0]}" + LOCAL_MATCHES=$(find . -name $(echo ${arrIN[0]}|awk -F "." '{print $1}').so*) if [ "x${LOCAL_MATCHES}" != "x" ]; then for llib in ${LOCAL_MATCHES}; do - echo "Copying ${llib}" + echo -ne " ->${llib}" echo ${llib} >> ${COPYFILES_LIST} done + echo "" else - echo "Did not found ${arrIN[0]} in $(pwd)" if [ -e ${arrIN[1]} ]; then - echo -n "Trying ${arrIN[1]} ..." - echo " found! Copying." echo ${arrIN[1]} >> ${COPYFILES_LIST} - [ -L ${arrIN[1]} ] && echo $(readlink -f ${arrIN[1]}) >> ${COPYFILES_LIST} + + if [ ! -L ${arrIN[1]} ]; + then + echo -e " -> ${arrIN[1]}" + else + echo -e " -> ${arrIN[1]} -> $(readlink -f ${arrIN[1]})" + echo $(readlink -f ${arrIN[1]}) >> ${COPYFILES_LIST} + fi fi fi done - echo "Copied ${FILENAME}." - echo "-----------------------------------------------------------------" + echo -e "\t-------------------------------------------------------------------------------------------------------------" done for LIB in ${REQUIRED_LIBRARIES} @@ -95,49 +113,60 @@ copyfileswithdependencies () done done - echo "Copying required directories from config file..." + echo -e "\n\n*********************************************************" + echo "*" + echo "* Copying required directories from config file..." + echo "*" + echo -e "*********************************************************\n\n" for ENTRY in ${REQUIRED_DIRECTORIES} do echo ".${ENTRY}" >> ${COPYFILES_LIST} - for LIB in $(find .${ENTRY} -type f -not -name "*.a" | xargs grep -l ELF) + for BIN in $(find .${ENTRY} -type f -not -name "*.a" | xargs grep -l ELF) do - for i in $(ldd ${LIB} |awk '{print $1 $2 $3}'|grep -v ld-linux|grep -v libc.so*|grep -v linux-gate|grep -v linux-vdso) + echo -e "\tSearching libs for ${BIN}..." + for i in $(ldd ${BIN} |awk '{print $1 $2 $3}'|grep -v ld-linux|grep -v libc.so*|grep -v linux-gate|grep -v linux-vdso) do arrIN=(${i//=>/ }) - echo "--------------------------------------------------------" - echo "Searching ${arrIN[0]} under $(pwd)..." - LOCAL_MATCHES=$(find . -name $(echo ${arrIN[0]}|awk -F "." '{print $1}').*) + echo -e "\t\t---------------------------------------------------------" + echo -ne "\t\tSearching ${arrIN[0]} under $(pwd)..." + LOCAL_MATCHES=$(find . -name $(echo ${arrIN[0]}|awk -F "." '{print $1}').so*) if [ "x${LOCAL_MATCHES}" != "x" ]; then for llib in ${LOCAL_MATCHES}; do - echo "Copying ${llib}" + echo -en "\n\t\tCopying ${llib}" echo ${llib} >> ${COPYFILES_LIST} done + echo "" else - echo "Did not found ${arrIN[0]} in $(pwd)" + echo " not found." if [ ! -z ${arrIN[1]} ]; then - echo -n "Trying ${arrIN[1]} ..." - echo " found! Copying." + echo -e "\t\tCopying from system ${arrIN[1]} ..." echo ${arrIN[1]} >> ${COPYFILES_LIST} [ -L ${arrIN[1]} ] && echo $(readlink -f ${arrIN[1]}) >> ${COPYFILES_LIST} fi fi done - echo "Copied ${LIB}." - echo "-----------------------------------------------------------------" + echo -e "\tCopied $BIN" + echo -e "\t-------------------------------------------------------------------------------------------------------------" done done - echo "Copying required files from config file..." + echo "*********************************************************" + echo "*" + echo "* Copying required files from config file..." + echo "*" + echo "*********************************************************" for ENTRY in ${REQUIRED_FILES} do echo ".${ENTRY}" >> ${COPYFILES_LIST} done + #copy to initramfsdir - tar -cpv $(cat ${COPYFILES_LIST}|sort -u) | tar -xpv -C ${INIT_DIR} &>/dev/null + echo "[stage32] Completed file list generation at ${TOOL_DIR}/${TOOL}/build/${COPYFILES_LIST}." + (tar -cpv $(cat ${COPYFILES_LIST}|sort -u) | tar -xpv -C ${INIT_DIR}) &>/dev/null unset REQUIRED_BINARIES unset REQUIRED_LIBRARIES unset REQUIRED_DIRECTORIES @@ -149,53 +178,64 @@ get_basic_libs () { [ ! -d ${INIT_DIR} ] && mkdir ${INIT_DIR} # copy libc and ld-linux separatly - echo "Looking for libc and ld-linux used for ${SHELL}..." + echo "----------------------------------------------------" BASICLIBS="" for i in $(ldd ${SHELL}) do if [ $(echo $i | grep '^/' | grep -c ld) -eq 1 -o $(echo $i | grep '^/' | grep -c libc.so) -eq 1 ]; then - echo "Found basic lib at: $i" + echo "Copied $i" BASICLIBS="${BASICLIBS} $i $(readlink -f "$i")" fi done - tar -cpv ${BASICLIBS} | tar -xpv -C ${INIT_DIR} &>/dev/null - echo "Basic libs copied." + (tar -cpv ${BASICLIBS} | tar -xpv -C ${INIT_DIR}) &>/dev/null } generate_stage32 () { + initial_checks + + get_basic_libs + # if no arguments assume all. if [ "x$1" = "x" -o "x$1" = "xall" ]; then tools=$(ls ${TOOL_DIR}) set -- $tools fi - # first copy libc and ld-linux - get_basic_libs - # now iterate over given tools and copy them cd ${TOOL_DIR} while (( "$#" )); do - TOOL=$1 + TOOL=$1 if [ -d ${TOOL} ]; then + echo "###################################################################################" + echo "# BUILDING $TOOL" + echo "#" + + [ "x$DEBUG" != "x1" ] \ + && echo "Logging to ${TOOL_DIR}/${TOOL}/stage32.log" \ + && exec 6>&1 > ${TOOL_DIR}/${TOOL}/stage32.log cd ${TOOL} read_config read_build - setup_git install_dependencies fetch_source build copyfileswithdependencies post_copy cd ${TOOL_DIR} + + # reset pipes + [ "x$DEBUG" != "x1" ] && exec 1>&6 6>&- + echo "#" + echo "# DONE" + echo "###################################################################################" else echo "Tool directory not found." fi shift done - } clean_tools() { |
