From c61c35397320ca4b36d25ea9b9b146d40e84c387 Mon Sep 17 00:00:00 2001 From: Jonathan Bauer Date: Fri, 15 Mar 2013 18:07:22 +0100 Subject: fix stage3.1 build script --- remote/setup_tools | 266 ----------------------------------------------------- 1 file changed, 266 deletions(-) delete mode 100755 remote/setup_tools (limited to 'remote/setup_tools') diff --git a/remote/setup_tools b/remote/setup_tools deleted file mode 100755 index 713d03fd..00000000 --- a/remote/setup_tools +++ /dev/null @@ -1,266 +0,0 @@ -#!/bin/bash - -MODE_DIR="${ROOT_DIR}/remote" - -#Create tools directory if not exists -MODULES_DIR="${MODE_DIR}/modules" - -# Keep track of processed modules -PROCESSED_MODULES="" - -initial_checks () { - # check for required tools - for BIN in git locate depmod - do - local TEST=$(which ${BIN}) - [ -z "$TEST" ] && pinfo "Installing $BIN..." && apt-get install $BIN - done -} - - -read_config () { - unset REQUIRED_BINARIES - unset REQUIRED_LIBRARIES - unset REQUIRED_DIRECTORIES - unset REQUIRED_FILES - unset REQUIRED_MODULES - unset REQUIRED_PACKAGES - unset REQUIRED_DEPENDENCIES - - local MODULE_CONFIG="${MODULE_DIR}/${MODULE}.conf" - - if [ -e "${MODULE_CONFIG}.${PACKET_MANAGER}" ]; then - # a specific tool.conf seems to exist, try to use that one - # TODO: Maybe move this down right after loading the generic one, to allow "overloading".... but might be a bit confusing - . "${MODULE_CONFIG}.${PACKET_MANAGER}" || perror "Sourcing '${MODULE_CONFIG}.${PACKET_MANAGER}' failed." - else - # otherwise, use the generic one - [ ! -e "${MODULE_CONFIG}" ] && perror "Config for '$MODULE' not found." - . "${MODULE_CONFIG}" || perror "Sourcing '${MODULE_CONFIG}' failed." - fi -} - -read_build () { - local BUILD_SCRIPT="${MODULE_DIR}/${MODULE}.build" - - [ ! -e "${BUILD_SCRIPT}" ] && perror "Build script for specified tool not found." - - . "${BUILD_SCRIPT}" || perror "Sourcing '${BUILD_SCRIPT}' failed." -} - -copyfileswithdependencies () { - - [ ! -d $MODULE_BUILD_DIR ] && pinfo "No build directory found, skipping dependency copying" && return 0 - cd $MODULE_BUILD_DIR - - COPYFILES_LIST="list_wanted_stage3.2" - [ -e ${COPYFILES_LIST} ] && rm ${COPYFILES_LIST} - - - [ ! -z "${REQUIRED_BINARIES}" ] && pinfo "Gathering required binaries from config file..." - for FILENAME in ${REQUIRED_BINARIES} - do - local FILE_CANDIDATES=$( find . -name "${FILENAME}" -a \( -type f -o -type l \) ) - pdebug "Candidates for $FILENAME are: $FILE_CANDIDATES" - local FINAL_LIST="" - for FILE in $FILE_CANDIDATES; do - local TESTFILE="$(readlink -f "$FILE")" - pdebug " $FILE leads to $TESTFILE" - [ -f "$TESTFILE" -a -x "$TESTFILE" ] && [ "x$(grep -l -E '^(.ELF|#!)' "$TESTFILE")" != "x" ] && FINAL_LIST="$FINAL_LIST $FILE" - done - FINAL_LIST=$(trim "$FINAL_LIST") - pdebug " Final list is $FINAL_LIST" - if [ -z "$FINAL_LIST" ]; then - pwarning "\tNo Binary found for ${FILENAME}. Skipping." - continue - fi - if [[ "$FINAL_LIST" == *" "* ]]; then - pwarning "Found more than one match for required file '$FILENAME': $FINAL_LIST" - else - pdebug "\tFound ${FILENAME} at ${FILE}" - fi - for FILE in $FINAL_LIST; do - strip $FILE || pwarning "Could not strip '${FILE}'" - get_link_chain "${MODULE_BUILD_DIR}/${FILE}" "${MODULE_BUILD_DIR}" >> "${COPYFILES_LIST}" - get_dynamic_dependencies -l "${MODULE_BUILD_DIR}" "${FILE}" >> "${COPYFILES_LIST}" - done - done - - [ ! -z "${REQUIRED_LIBRARIES}" ] && pinfo "Gathering required libraries from config file..." - for LIB in ${REQUIRED_LIBRARIES} - do - for LOCATION in $(find . -name ${LIB}.so\*) - do - pdebug "* $LOCATION" - strip $LOCATION || pwarning "Could not strip '${LOCATION}'" - get_link_chain "${MODULE_BUILD_DIR}/${LOCATION}" "${MODULE_BUILD_DIR}" >> "${COPYFILES_LIST}" - get_dynamic_dependencies -l "${MODULE_BUILD_DIR}" "${LOCATION}" >> "${COPYFILES_LIST}" - done - done - - [ ! -z "${REQUIRED_DIRECTORIES}" ] && pinfo "Gathering required directories from config file..." - local CURRENT_PWD=$(pwd) # Prevent calling pwd 50000 times inside the loop below - for ENTRY in ${REQUIRED_DIRECTORIES} - do - pdebug "* ./$ENTRY" - echo "./${ENTRY}" >> "${COPYFILES_LIST}" - for BIN in $(find "./${ENTRY}" -type f -not -name '*.a' | xargs grep -l '^.ELF') - do - pdebug " Searching libs for ${BIN}..." - get_link_chain "${MODULE_BUILD_DIR}/${BIN}" "${MODULE_BUILD_DIR}" >> "${COPYFILES_LIST}" - get_dynamic_dependencies -l "${MODULE_BUILD_DIR}" "${BIN}" >> "${COPYFILES_LIST}" - done - done - - [ ! -z "${REQUIRED_FILES}" ] && pinfo "Gathering required files from config file..." - for ENTRY in ${REQUIRED_FILES} - do - get_link_chain "${MODULE_BUILD_DIR}/${ENTRY}" "${MODULE_BUILD_DIR}" >> "${COPYFILES_LIST}" - get_dynamic_dependencies -l "${MODULE_BUILD_DIR}" "${MODULE_BUILD_DIR}/.${ENTRY}" >> "${COPYFILES_LIST}" - done - - - #copy to initramfsdir - pdebug "[stage32] File list generated at ${MODULE_BUILD_DIR}/${COPYFILES_LIST}." - if [ -s "$COPYFILES_LIST" ]; then - local CLISTCOUNT=$(cat "$COPYFILES_LIST" | wc -l) - pinfo "Copying $CLISTCOUNT files to '${TARGET_BUILD_DIR}'." - tarcopy "$(cat "$COPYFILES_LIST"|sort -u)" "${TARGET_BUILD_DIR}" - fi -} - -generate_target() { - - initial_checks - - [[ $TARGET == build || $TARGET == modules ]] && \ - perror "Target directory cannot be named 'build' nor 'modules'." - - # check for target directory - TARGET_DIR="${MODE_DIR}/targets/${TARGET}" - [ -d $TARGET_DIR ] || perror "Given target directory does not exist: $TARGET" - - TARGET_BUILD_DIR="${MODE_DIR}/builds/${TARGET}" - - pinfo "Generating '$TARGET_BUILD_DIR' for '$TARGET'" - - # if no arguments assume all. - if [ "x$1" = "x" -o "x$1" = "xall" ]; then - MODULES=$(ls ${TARGET_DIR}) - set -- $MODULES - else - # tools = arguments given - MODULES=$@ - fi - - pinfo "Activated modules in '${TARGET}':" - pinfo "\t$(echo ${MODULES})" - - # copy basic libs - pinfo "Copying libc and ld-linux used by ${SHELL}" - tarcopy "$(list_basic_libs)" "${TARGET_BUILD_DIR}" - - # now iterate over given tools and copy them - while (( "$#" )); do - process_module "$1" - shift - done - TOOL_STR="" -} - -process_module() { - [ "$#" -ne "1" ] && perror "process_module: want 1 param." - local MODULE="$1" - [[ "$PROCESSED_MODULES" == *"!${MODULE}!"* ]] && return # Already processed this module - PROCESSED_MODULES="${PROCESSED_MODULES}!${MODULE}!" - local MODULE_DIR="${TARGET_DIR}/${MODULE}" - local MODULE_BUILD_DIR="${MODULE_DIR}/build" - local TOOL_STR="" - pinfo ">>>>>>>>>>>>>>>>> Processing module [ $MODULE ]" - TOOL_STR="[${MODULE}]" - if [ -d "${MODULE_DIR}" ]; then - - #[ "x$DEBUG" != "x1" ] \ - # && echo "Logging to ${TOOL_DIR}/${TOOL}/stage32.log" \ - # && exec 6>&1 > ${TOOL_DIR}/${TOOL}/stage32.log - # TODO: Make above work with the new logging system (add function to logging.inc to switch logfile) - cd "${MODULE_DIR}" || perror "Module dir '${MODULE_DIR}' seems to exist, but cd to it failed." - pinfo "## Reading config" - read_config - # Check if this module has a dependency that wasn't built yet: - if [ ! -z "$REQUIRED_MODULES" ]; then - pinfo "$MODULE depends on ${REQUIRED_MODULES}...." - for DEP in $REQUIRED_MODULES; do - #[[ "$DESIRED_MODULES" != *"!${DEP}!"* ]] && perror "$TOOL has dependency $DEP, but $DEP is not in current profile." - process_module "$DEP" - done - # Read old config again, as it got overwritten by the deps - cd "${MODULE_DIR}" || perror "Tool dir '${MODULE_DIR}' seems to exist, but cd to it failed (after building deps)." - read_config - pinfo "<<<<<<<<<<<<<<<<< Dependency modules processed, back to module [ $MODULE ]" - fi - pinfo "## Reading build" - read_build - pinfo "## Installing dependencies" - install_dependencies - pinfo "## Fetching source" - fetch_source - pinfo "## Building" - build - # remove *.la files as they might confuse libtool/linker of other tool packages - find "${MODULE_DIR}/build" -name '*.la' -exec rm -f {} \; - pinfo "## Copying files with dependencies" - copyfileswithdependencies - pinfo "## Post copy" - post_copy - - # reset pipes - #[ "x$DEBUG" != "x1" ] && exec 1>&6 6>&- - # TODO - pinfo "Module completed." - else - perror "Module directory for '$MODULE' not found." - # maybe make this a warning instead of error? - fi -} - -clean_tools() { - if [ "x$1" = "x" -o "x$1" = "xall" ]; then - #clean all - if [ -d ${TARGET_BUILD_DIR} ]; then - rm -rf "${TARGET_BUILD_DIR}"/* || perror "Error deleting $TARGET_BUILD_DIR" - fi - for MODULE in $(ls ${MODULES_DIR}); do - clean_tool $MODULE - done - else - while (( "$#" )); do - clean_tool $1 - shift - done - fi -} - -clean_tool() { - local MODULE_DIR=${MODULES_DIR}/$1 - pinfo "Cleaning '${MODULE_DIR}'..." - #[ -e ${TOOLDIR}/build/list_wanted_stage3.2 ] && cd ${TARGET_BUILD_DIR} \ - # && xargs rm < ${TOOLDIR}/build/list_wanted_stage3.2 - #[ -d ${TOOLDIR}/data ] && cd ${TARGET_BUILD_DIR} \ -# && xargs rm < $(find ${TOOLDIR}/data -type f) - if [ -e ${MODULE_DIR}/.built ]; then - rm "${MODULE_DIR}/.built" || perror "Could not clear built flag" - fi - if [ -e ${MODULE_DIR}/.fetched_source ]; then - rm "${MODULE_DIR}/.fetched_source" || perror "Could not clear fetched_source flag" - fi - if [ -d ${MODULE_DIR}/build ]; then - rm -rf "${MODULE_DIR}/build" || perror "Could not delete build path" - fi - if [ -d ${MODULE_DIR}/src ]; then - rm -rf "${MODULE_DIR}/src" || perror "Could not delete src path" - fi - if [ -e ${MODULE_DIR}/list_binaries_and_files ]; then - rm "${MODULE_DIR}/list_binaries_and_files" || perror "Could not delete list_binaries_and_files" - fi -} -- cgit v1.2.3-55-g7522