| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194 |
- #! /bin/bash
- if [ "$(uname)" = "Darwin" ]; then
- SED=gsed
- else
- SED=sed
- fi
- function Trace()
- {
- if [ "${VERBOSE_PRE_BLD}" != "" ]; then
- echo "$1" 1>&2
- fi
- }
- function Update_Sources()
- {
- if [ -f ${BLD_DIR}/${STAMP_UNPACK} ]; then
- Trace "Skipped @ ${BLD_DIR}/${STAMP_UNPACK}"
- return 0
- fi
- if [ "${PKG_SWITCH}" = "" ]; then
- Trace "Warning @ CONFIG_${MODULE} = '${PKG_SWITCH}'"
- fi
- Trace "MODULE_NAME: [${MODULE}]"
- Trace "SRC_DIR: [${SRC_DIR}]"
- Trace "BLD_DIR: [${BLD_DIR}]"
- Trace "PACKAGE_DIR: [${PACKAGE_DIR}]"
- Trace "PKG_SOURCE: [${PKG_SOURCE}]"
- Trace "PKG_BRANCH: [${PKG_BRANCH}]"
- Trace "PKG_REVISION: [${PKG_REVISION}]"
- Trace "PKG_UPSTREAM: [${PKG_UPSTREAM}]"
- for i in $(find -L ${MODULE} -type d -not -path "*.git*"|${SED} "s,${MODULE}/*,,1"|${SED} '/^$/d'); do
- mkdir -p ${BLD_DIR}/${i}
- done
- if [ "${PKG_SOURCE}" != "" ] && [ -d ${PACKAGE_DIR}/${PKG_SOURCE} ]; then
- GIT_BASENAME=$(basename ${PKG_SOURCE})
- GIT_NAME_LEN=$(echo -n "${GIT_BASENAME}"|wc -c|awk '{ print $1 }')
- GIT_OFFSET=$(( GIT_NAME_LEN - 3 ))
- GIT_MOD_NAME=$(echo "${GIT_BASENAME}" | cut -c"1-$(( GIT_OFFSET-1 ))"|awk '{ print $1 }')
- GIT_POSTFIX=$(echo "${GIT_BASENAME}" | cut -c"${GIT_OFFSET}-${GIT_NAME_LEN}"|awk '{ print $1 }')
- Trace "GIT_POSTFIX: [${GIT_POSTFIX}]"
- Trace "GIT_MOD_NAME: [${GIT_MOD_NAME}]"
- fi
- set +x
- if [ "${GIT_POSTFIX}" = ".git" ]; then
- GIT_COPY=${MODULE}/${GIT_MOD_NAME}
- DEV_COPY_BASE=${TOP_DIR}.pkgs
- Trace "GIT_COPY: [${GIT_COPY}]"
- Trace "DEV_COPY_BASE: [${DEV_COPY_BASE}]"
- eval "${CMDSET_X}"
- mkdir -p ${DEV_COPY_BASE}
- cd ${DEV_COPY_BASE}
- if [ ! -d ${GIT_MOD_NAME} ]; then
- git clone ${OPTION_Q} ${PACKAGE_DIR}/${PKG_SOURCE} ${GIT_MOD_NAME} \
- $([ "${PKG_BRANCH}" = "" ] || echo "-b ${PKG_BRANCH}")
- if [ "${PKG_UPSTREAM}" != "" ]; then
- cd ${GIT_MOD_NAME};
- git remote add upstream ${PKG_UPSTREAM}
- cd ${OLDPWD};
- fi
- fi
- if [ "${PKG_REVISION}" != "" ]; then
- cd ${GIT_MOD_NAME} && git reset ${OPTION_Q} --hard ${PKG_REVISION} && cd ${OLDPWD}
- else
- cd ${GIT_MOD_NAME}
- git pull ${OPTION_Q} origin ${PKG_BRANCH} || exit 1
- fi
- cd ${TOP_DIR}
- rm -fr ${SRC_DIR}/${GIT_MOD_NAME}
- ln -sf ${DEV_COPY_BASE}/${GIT_MOD_NAME} ${SRC_DIR}/${GIT_MOD_NAME}
- touch ${BLD_DIR}/${STAMP_UNPACK}
- PKG_SOURCE=""
- set +x
- SRC_ELEM=$(ls ${SRC_DIR}|grep -v ${HD_MAKEFILE}|grep -v ${MAKE_SEGMENT})
- BLD_ELEM=$(ls ${BLD_DIR}|grep -v ${HD_MAKEFILE}|grep -v ${MAKE_SEGMENT})
- if [ "${BLD_ELEM}" = "" ]; then
- for iter in ${SRC_ELEM}; do
- Trace "Bulk [${SRC_DIR}/${iter} => ${BLD_DIR}"
- # cp -Lrf ${SRC_DIR}/${iter} ${BLD_DIR}
- done
- return 0
- fi
- fi
- # for FILE in \
- # $(find -L ${SRC_DIR}/ -type f -o -type l -name "*.[ch]" -o -name "*.mk" -o -name "*.cpp") \
- # $(find ${SRC_DIR}/ -maxdepth 1 -name "*.patch" -o -name "lib*.a" -o -name "lib*.so") \
- # $([ "" != "${PKG_SOURCE}" ] && [ -d ${PACKAGE_DIR}/${PKG_SOURCE} ] && find ${PACKAGE_DIR}/${PKG_SOURCE}/ -type f -o -type l) \
- # ; \
- # do
- # if [ "" != "${PKG_SOURCE}" ] && \
- # [ -d ${PKG_SOURCE} ] && \
- # [ "$(dirname ${FILE})" != "${TOP_DIR}/${MODULE}" ]; then
- # SUBD=$(echo $(dirname ${FILE})|${SED} "s:$(dirname ${PKG_SOURCE})::")
- # SUBD=$(echo ${SUBD}|${SED} "s:${SRC_DIR}::")
- # else
- # SUBD=$(echo $(dirname ${FILE})|${SED} "s:${SRC_DIR}::")
- # SUBD=$(echo ${SUBD}|${SED} "s:${PACKAGE_DIR}/*::")
- # fi
- #
- # COPY_DIR=${OUTPUT_DIR}/${MODULE}/${SUBD}
- # mkdir -p ${COPY_DIR}
- # COPY_BASE=$(basename ${FILE})
- # FILE_COPY=${COPY_DIR}/${COPY_BASE}
- # # grep -q "\.git" <<< ${FILE} || Trace "Check: ${FILE}: ${FILE_COPY}"
- #
- # if [ ! -e ${FILE_COPY} -o \
- # ${FILE} -nt ${FILE_COPY} ]; then
- # mkdir -p ${BLD_DIR}/${FILE_DIR}
- # cp -f ${FILE} ${FILE_COPY}
- # fi
- # done
- }
- function Update_Makefile()
- {
- BLD_MFILE=${BLD_DIR}/${HD_MAKEFILE}
- if [ ${BLD_MFILE} -nt ${SRC_DIR}/${MAKE_SEGMENT} ] && \
- [ ${BLD_MFILE} -nt ${STAMP_BLD_ENV} ]; then
- return 0;
- fi
- rm -f ${BLD_MFILE}
- echo "MODULE_NAME := ${MODULE}" >> ${BLD_MFILE}
- cat ${STAMP_BLD_ENV} >> ${BLD_MFILE}
- cat << EOB >> ${BLD_MFILE}
- include \$(RULE_DIR)/settings.mk
- include \$(CONFIG_TPL)
- all:
- EOB
- cp -f ${SRC_DIR}/${MAKE_SEGMENT} ${BLD_DIR}/${MAKE_SEGMENT}
- cat ${BLD_DIR}/${MAKE_SEGMENT} >> ${BLD_MFILE}
- ${SED} -i 's/clean:/clean : clean-prepare/g' ${BLD_MFILE}
- cat << EOB >> ${BLD_MFILE}
- env:
- @echo ""
- @printf -- "-----------------------------------------------------------------\n"
- @\$(foreach var,\$(SHOW_ENV_VARS),\$(call Dump_Var,\$(var)))
- @printf -- "-----------------------------------------------------------------\n"
- @echo ""
- include \$(RULE_DIR)/rules.mk
- EOB
- Trace "Updated: ${BLD_MFILE}"
- }
- if [ "$#" != "1" -a "$#" != "2" ]; then exit 12; fi
- MODULE=${1}
- BLD_DIR=${OUTPUT_DIR}/${MODULE}
- SRC_DIR=${TOP_DIR}/${MODULE}
- if [ ! -d ${SRC_DIR} ]; then
- exit 0
- fi
- if [ "${VERBOSE_PRE_BLD}" != "" ]; then
- OPTION_V="-v"
- CMDSET_X="set -x"
- else
- OPTION_Q="-q"
- fi
- mkdir -p ${BLD_DIR}
- MSG=$(printf "%-28s%s" "${MODULE}" "[..]")
- echo -ne "\r "
- echo -ne "\033[0;37;0;44m""\r[..] o ${MSG}""\033[0;m"
- Trace ""
- if [ "$#" = "1" ]; then
- Update_Sources
- fi
- Update_Makefile
|