CHAPTER="$1" PACKAGE="$2" if [ -f "${LFS}/sources/chapter${CHAPTER}/${PACKAGE}" ]; then echo -e "${GRN}Package ${YLW}${PACKAGE} ${GRN}already built and installed for ${YLW}Chapter ${CHAPTER}.${RST}" else grep -i "^${PACKAGE}" packages.csv | grep -i -v "\.patch;" | while read line; do VERSION="$(echo $line | cut -d\, -f2)" URL="$(echo $line | cut -d\, -f3 | sed "s/@/${VERSION}/g")" CACHEFILE="$(basename "${URL}")" DIRNAME="$(echo "${CACHEFILE}" | sed 's/\(.*\)\.tar\..*/\1/')" if [ -d "${DIRNAME}" ]; then rm -rf ${DIRNAME} fi mkdir -p "${DIRNAME}" echo -ne "${IBLU}Extracting ${YLW}${CACHEFILE}... " tar xf "${CACHEFILE}" -C "${DIRNAME}" >/dev/null 2>&1 & pid=$! spinner "$pid" retval=$? if [ "$retval" -ne 0 ]; then echo -e "${GRN}Extraction ${RED}FAILED!${RST}" return $retval fi #TOPLEVELDIR = "tar -tf ${CACHEFILE} | sed -e 's@/.*@@' | uniq" pushd "${DIRNAME}" > /dev/null if [ "$(ls -1A | wc -l)" == "1" ]; then find */ -mindepth 1 -maxdepth 1 -exec mv -t ./ -- {} + fi echo -ne "\n${CYN}Compiling ${YLW}${PACKAGE}${RST}... " sleep 5 mkdir -p "../log/chapter${CHAPTER}/" source "../chapter${CHAPTER}/${PACKAGE}.sh" 2>&1 > "../log/chapter${CHAPTER}/${PACKAGE}.log" 2>&1 & pid=$! spinner "$pid" retval=$? if [ "$retval" -ne 0 ]; then echo -e "\n${GRN}Compiling ${YLW}${PACKAGE} ${RED}FAILED!${RST}" popd > /dev/null return $retval else echo -e "\n${GRN}Done Compiling ${YLW}${PACKAGE}${RST}" touch ${LFS}/sources/chapter${CHAPTER}/${PACKAGE} rm -rf ${LFS}/sources/${DIRNAME} fi popd > /dev/null done fi