From 5083c8f8338b2a52cfe67fa9419b1cd6195198fb Mon Sep 17 00:00:00 2001 From: Hugo Villeneuve Date: Fri, 15 Aug 2014 23:48:33 -0400 Subject: [PATCH] Add option to specify patches output directory when fetching them --- functions/fpkg | 44 ++++++++++++++++++++++++++++---------------- 1 file changed, 28 insertions(+), 16 deletions(-) diff --git a/functions/fpkg b/functions/fpkg index e589b90..829a139 100644 --- a/functions/fpkg +++ b/functions/fpkg @@ -5,17 +5,18 @@ source ../functions/gztobz2 LFS_PKG_BASE="$(dirname $(pwd))/packages" LFS_PKG_DIR="${LFS_PKG_BASE}/${LFS_STAGE}" +LFS_PATCHES_DIR="${LFS_PKG_BASE}/${LFS_STAGE}/patches" LFS_LOG_DIR="${LFS}/var/log/hvlinux-install/${LFS_STAGE}" LFS_LOG_FILE="${LFS_LOG_DIR}/pkg-update.log" WGET_LOG_FILE="${LFS_LOG_DIR}/pkg-wget.log" WGETCMD="wget --directory-prefix=${LFS_PKG_DIR} --timeout=15 --tries=3 -nc --continue --no-check-certificate --no-verbose --output-file=${WGET_LOG_FILE}" -LFS_PATCHES_LIST=${LFS_PKG_DIR}/patches-list-lfs.html -BLFS_PATCHES_LIST=${LFS_PKG_DIR}/patches-list-blfs.html -CLFS_PATCHES_LIST=${LFS_PKG_DIR}/patches-list-clfs.html -HV_PATCHES_LIST=${LFS_PKG_DIR}/patches-list-hv.html -LFS_OLD_PATCHES_LIST=${LFS_PKG_DIR}/patches-list-lfs-old.html +LFS_PATCHES_LIST=${LFS_PKG_DIR}/patches/list-lfs.html +BLFS_PATCHES_LIST=${LFS_PKG_DIR}/patches/list-blfs.html +CLFS_PATCHES_LIST=${LFS_PKG_DIR}/patches/list-clfs.html +HV_PATCHES_LIST=${LFS_PKG_DIR}/patches/list-hv.html +LFS_OLD_PATCHES_LIST=${LFS_PKG_DIR}/patches/list-lfs-old.html # Test if the given file extension correspond to a compressed archive # Arg. #1: File extension @@ -85,6 +86,7 @@ remove_partial_file() # Download a file, and making sure it is valid (at least it's header!) # Arg. #1: Source URL. # Arg. #2: Source filename (on server) +# Arg. #3: Output directory (optional). Default = LFS_PKG_DIR # # Return: 0 : success # 1 : wget error @@ -98,8 +100,13 @@ wget_wrapper() local URL=${1} local SOURCE=${2} + local DESTDIR=${LFS_PKG_DIR} - remove_partial_file ${LFS_PKG_DIR}/${SOURCE} + if [ ${#} -eq 3 ]; then + DESTDIR=${3} + fi + + remove_partial_file ${DESTDIR}/${SOURCE} local STRING="Fetching ${SOURCE}" if [ "x${FTYPE}" = "x${FTYPE_PATCH}" ]; then @@ -107,7 +114,7 @@ wget_wrapper() fi rcmd "${STRING}" ${WGETCMD} ${URL}/${SOURCE} \ - --output-document=${LFS_PKG_DIR}/${SOURCE}.part + --output-document=${DESTDIR}/${SOURCE}.part wget_status=$? # Append log to global log file @@ -121,30 +128,30 @@ wget_wrapper() # Partial failure if file was not found. if detect_file_not_found; then - remove_partial_file ${LFS_PKG_DIR}/${SOURCE} + remove_partial_file ${DESTDIR}/${SOURCE} return 2 fi if [ ${wget_status} -ne 0 ]; then echo "Error: wget returned error status ${wget_status}" >> \ ${LFS_LOG_FILE} - remove_partial_file ${LFS_PKG_DIR}/${SOURCE} + remove_partial_file ${DESTDIR}/${SOURCE} return 1 fi local FEXT=${SOURCE##*.} if is_extension_archive "${FEXT}"; then # Just to be sure, test if downloaded file is really an archive: - if ! is_archive ${LFS_PKG_DIR}/${SOURCE}.part; then + if ! is_archive ${DESTDIR}/${SOURCE}.part; then # Partial failure if file is invalid. echo "Error: failed archive test" >> ${LFS_LOG_FILE} - remove_partial_file ${LFS_PKG_DIR}/${SOURCE} + remove_partial_file ${DESTDIR}/${SOURCE} return 2 fi fi # Rename temporary file to final name - mv ${LFS_PKG_DIR}/${SOURCE}{.part,} + mv ${DESTDIR}/${SOURCE}{.part,} return 0 } @@ -188,6 +195,11 @@ update_packages_init() install -v -m755 -d ${LFS_PKG_DIR} 1> ${LFS_LOG_FILE} 2>&1 || exit 1 fi + # Create patches destination directory if it does not exists. + if [ ! -d ${LFS_PATCHES_DIR} ]; then + install -v -m755 -d ${LFS_PATCHES_DIR} 1> ${LFS_LOG_FILE} 2>&1 || exit 1 + fi + if [ -n "${TEST_INTEGRITY}" ]; then # En mode test intégrité, on ne veut pas télécharger quoi que ce soit return 0 @@ -225,7 +237,7 @@ update_packages_init() fi } -# Get patch package if it is not in the repository +# Get patch for package if it is not in the repository # Arg. #1: Package name and version # Arg. #2: Patches list file (HTML) # Arg. #3: Patches URL @@ -255,8 +267,8 @@ static_checkpatch() # Remplace les "%2B" par "+" PATCH_NAME=$(echo ${p} | sed s!%2B!\+!g) - if [ ! -f ${LFS_PKG_DIR}/${PATCH_NAME} ]; then - wget_wrapper ${PATCHES_URL} ${PATCH_NAME} + if [ ! -f ${LFS_PATCHES_DIR}/${PATCH_NAME} ]; then + wget_wrapper ${PATCHES_URL} ${PATCH_NAME} ${LFS_PATCHES_DIR} fi done fi @@ -679,7 +691,7 @@ fpkg() # Rename any patch fetched (in fpkg call) and replace SOURCE by TARGET # in patch name. - local PATCHES_LIST="${LFS_PKG_DIR}/${SRC_FILENAME}-*.patch" + local PATCHES_LIST="${LFS_PATCHES_DIR}/${SRC_FILENAME}-*.patch" if ls ${PATCHES_LIST} 1> /dev/null 2>&1; then echo "CMD=${SRC_FILENAME} ${PACK} ${PATCHES_LIST}" rename ${SRC_FILENAME} ${PACK} ${PATCHES_LIST} -- 2.20.1