#!/bin/sh usage() { echo "usage: $0 [-h] [-C] [] [] ..." echo " -h Displays this usage" echo " -C Clobbers (overwrites) the source code by " echo " reextracting the archive and reapplying any" echo " patches." echo "" echo " Optional dependency, If none are given then all" echo " of them will be built." echo "" echo "Valid dependencies are:" grep -v '^#' < External-depkgs | cut -d'|' -f1 | cut -d'_' -f1 | tr A-Z a-z | sort -u | awk '{ print " " $1 }' } CLOBBER_SOURCE= while getopts "hHC" opt; do case ${opt} in H|h|\?) usage;exit 1;; C) CLOBBER_SOURCE=true;; esac done [ ${OPTIND} -gt 1 ] && shift `expr ${OPTIND} - 1` cwd=`pwd` cd `dirname $0` SCRIPT_DIR=`pwd` TOP_DIR=`pwd` DEPPKG_DIR=`pwd` export PATH=${BIN_DIR}:${PATH} OLD_IFS=${IFS};IFS="|"; while read package url dir mkd; do case ${package} in \#*) ;; *) eval "URL_${package}=${url};DIR_${package}=${dir};MKD_${package}=${mkd}";; esac done < ${SCRIPT_DIR}/External-depkgs IFS=${OLD_IFS};unset OLD_IFS get_source() { URL=$1 SRC_DIR=$2 MAKE_DIR=$3 ARCHIVE=`basename ${URL}` case ${ARCHIVE} in *.tar.gz) ARCHIVER="tar xzf"; [ -z "${SRC_DIR}" ] && SRC_DIR=`expr "${ARCHIVE}" : '\(.*\)\.tar\.gz'`;; *.tar.bz2) ARCHIVER="tar xjf"; [ -z "${SRC_DIR}" ] && SRC_DIR=`expr "${ARCHIVE}" : '\(.*\)\.tar\.bz2'`;; *.zip) ARCHIVER="unzip -q"; [ -z "${SRC_DIR}" ] && SRC_DIR=`expr "${ARCHIVE}" : '\(.*\)\.zip'`;; *) echo Unsupported archive type - $ARCHIVE; exit 1;; esac if [ ! -e "${ARCHIVE}" ] then echo Downloading "${URL}" if wget --passive-ftp "${URL}" then : else echo Unable to download ${ARCHIVE} exit 1 fi fi if [ ! -e "${SRC_DIR}" -o "${CLOBBER_SOURCE}" = "true" ] then rm -rf ${SRC_DIR} [ "${MAKE_DIR}" = "true" ] && mkdir ${SRC_DIR} && cd ${SRC_DIR} echo Extracting ${ARCHIVE} ${ARCHIVER} ${ARCHIVE} &> ${ARCHIVE}.log cd ${SRC_DIR} return 0 fi cd ${SRC_DIR} return 1 } process_mkcdrec() { if get_source "${URL_MKCDREC}" "${DIR_MKCDREC}" "${MKD_MKCDREC}" then echo "Have mkcdrec source" fi } if [ "$#" -eq 0 ] then process_mkcdrec else for dependency in "$@" do eval "process_${dependency}" done fi