X-Git-Url: http://gitweb.hugovil.com/?a=blobdiff_plain;f=functions%2Ffpkg;h=878136615444d24964c3a9c1d52cf7d7f291d3e9;hb=abe5449c7fd7ccd5eae2f721db34cce1f643ee8a;hp=3330eed0977401962e7b0c8882e8bdf4e5ef75c3;hpb=16f1a75d215e027ad746fc60dd10cd456f07f8d6;p=hvlinux.git diff --git a/functions/fpkg b/functions/fpkg index 3330eed..8781366 100644 --- a/functions/fpkg +++ b/functions/fpkg @@ -165,8 +165,8 @@ detect_file_not_found() { # HTTP: will return "ERROR 404: Not Found" # FTP: will say "File not found" or "No such file" - if grep --ignore-case -e "not found" -e "no such file" ${WGET_LOG_FILE} \ - 1> /dev/null 2>&1; then + if grep -q --ignore-case -e "not found" -e "no such file" ${WGET_LOG_FILE}; \ + then #echo "404 NOTFOUND" return 0 fi @@ -215,8 +215,7 @@ static_getpkg() # Failure: if it was a connection timeout, don't try for other file # extensions. - if grep "failed: Connection timed out" ${WGET_LOG_FILE} \ - 1> /dev/null 2>&1; then + if grep -q "failed: Connection timed out" ${WGET_LOG_FILE}; then echo "Error, wget reported: Connection timed out" return 1 fi @@ -264,8 +263,8 @@ test_archive_integrity() local FILE=${2} local EXT=${3} - if [ ! -f ${FILE} ]; then - # The file may be absent, in this case simply abort without error + if [ ! -f ${FILE} -o -h ${FILE} ]; then + # The file may be absent, or a symbolic link. Abort without error return 0 fi @@ -301,8 +300,8 @@ test_archive_integrity() # pm (Perl module via CPAN) # fd (freedesktop.org) # -o Option specific to mode -# -h Display this help and returns # -s Subdirectory on server +# -w First erase destination file if it exists (except in test mode) fpkg() { local ORIG_ARGS=${*} @@ -313,8 +312,9 @@ fpkg() local MODE_OPT="" local SRC_DIR="" local FD_SUBDIR_FINAL="" + unset ERASE_FIRST - while getopts "d:e:f:m:o:s:" flag ;do + while getopts "d:e:f:m:o:s:w" flag ;do case ${flag} in d) # Fetch directory (where to put file) @@ -337,6 +337,9 @@ fpkg() s) SRC_DIR=${OPTARG} ;; + w) + ERASE_FIRST="y" + ;; ?) echo "${FUNCNAME}(): Invalid option: ${OPTARG}." return 1 @@ -507,9 +510,13 @@ fpkg() DEST_FILE=${DEST_DIR}/${PACK}.${FINAL_EXT} - if [ ! -f ${DEST_FILE} ]; then - if [ -z "${TEST_INTEGRITY}" ]; then - # Fetch package, unless we are testing integrity + if [ -z "${TEST_INTEGRITY}" ]; then + if [ -f ${DEST_FILE} -a -n "${ERASE_FIRST}" ]; then + rm ${DEST_FILE} + fi + + if [ ! -f ${DEST_FILE} ]; then + # Fetch package set +e static_getpkg ${SRC_FILENAME} ${URL} ${FILE_EXT} set -e @@ -523,9 +530,7 @@ fpkg() mv ${DOWNLOADED_FILE} ${DEST_FILE} fi fi - fi - - if [ -n "${TEST_INTEGRITY}" ]; then + else set +e test_archive_integrity "${PACK}" "${DEST_FILE}" "${FINAL_EXT}" set -e @@ -544,9 +549,10 @@ fpkg() # Rename any patch fetched (in fpkg call) and replace SOURCE by TARGET # in patch name. - if ls ${LFS_PKG_DIR}/${SRC_FILENAME}-*.patch 1> /dev/null 2>&1; then - echo "CMD=${SRC_FILENAME} ${PACK} ${LFS_PKG_DIR}/${SRC_FILENAME}-*.patch" - rename ${SRC_FILENAME} ${PACK} ${LFS_PKG_DIR}/${SRC_FILENAME}-*.patch + local PATCHES_LIST="${LFS_PKG_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} fi fi }