diff options
-rw-r--r-- | packageinstall.sh | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/packageinstall.sh b/packageinstall.sh new file mode 100644 index 0000000..4523d06 --- /dev/null +++ b/packageinstall.sh @@ -0,0 +1,50 @@ +#!/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
\ No newline at end of file |