#!/bin/bash CHAPTER="$1" PACKAGE="$2" if [ -f "${LFS_SRC}/chapter${CHAPTER}/${PACKAGE}" ]; then echo -e "${GRN}Package ${YLW}${PACKAGE} ${GRN}already built and installed for ${YLW}Chapter ${CHAPTER}.${RST}" continue; 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 -e "${BLU}Extracting ${YLW}${CACHEFILE}" tar -xf "${CACHEFILE}" -C "${DIRNAME}" #TOPLEVELDIR = "tar -tf ${CACHEFILE} | sed -e 's@/.*@@' | uniq" pushd "${DIRNAME}" > /dev/null if [ "$(ls -1A | wc -l)" == "1" ]; then mv $(ls -1A)/* ./ fi echo -ne "${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" if [ "$retval" -ne 0 ]; then echo -e "\n${GRN}Compiling ${YLW}${PACKAGE} ${RED}FAILED!${RST}" popd exit 1 fi echo -e "\n${GRN}Done Compiling ${YLW}${PACKAGE}${RST}" touch ${LFS}/sources/chapter${CHAPTER}/${PACKAGE} rm -rf ${LFS}/sources/${DIRNAME} popd > /dev/null done fi