Ajout option pour effacer un fichier avant de le re-telecharger
[hvlinux.git] / functions / fpkg
index ae6e0b4..c420d7b 100644 (file)
@@ -164,8 +164,8 @@ static_getpatch()
 detect_file_not_found()
 {
     # HTTP: will return "ERROR 404: Not Found"
-    # FTP: will say "File not found"
-    if grep --ignore-case "not found" ${WGET_LOG_FILE} \
+    # 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
         #echo "404 NOTFOUND"
         return 0
@@ -215,7 +215,8 @@ 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 "failed: Connection timed out" ${WGET_LOG_FILE} \
+            1> /dev/null 2>&1; then
             echo "Error, wget reported: Connection timed out"
             return 1
         fi
@@ -300,8 +301,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=${*}
@@ -312,8 +313,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)
@@ -336,6 +338,9 @@ fpkg()
            s)
                SRC_DIR=${OPTARG}
                 ;;
+            w)
+                ERASE_FIRST="y"
+               ;;
            ?)
                echo "${FUNCNAME}(): Invalid option: ${OPTARG}."
                return 1
@@ -506,9 +511,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
@@ -522,9 +531,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
@@ -549,43 +556,3 @@ fpkg()
         fi
     fi
 }
-
-# Create a symbolic link to a package that is located in another stage
-# repository (to not have the same file twice).
-# Arg. #1: Source stage number (1, 2, 3, etc)
-# Arg. #2: Package name
-lpkg()
-{
-    SRCSTAGE="stage${1}"
-    FILE="${2}.tar.bz2"
-    PACKAGE_NAME="${2}"
-
-    # Checking for correct number of arguments
-    if [ $# -ne 2 ]; then
-       echo "${FUNCNAME}(), wrong number of arguments: ${*}"
-       return 1
-    fi
-
-    if [ ! -h ${LFS_PKG_DIR}/${FILE} ]; then
-       # Issue a warning if source file doesn't exist.
-       if [ ! -f ${LFS_PKG_BASE}/${SRCSTAGE}/${FILE} ]; then
-            source_link_status=" (missing source file)"
-        else
-            source_link_status=""
-       fi
-
-       # Create link if it doesn't exist
-       rcmd "Linking ${PACKAGE_NAME}${source_link_status}" ln -s ../${SRCSTAGE}/${FILE} ${LFS_PKG_DIR}/${FILE}
-    fi
-
-    # Create link for patches corresponding to that package:
-    if ls ${LFS_PKG_BASE}/${SRCSTAGE}/${PACKAGE_NAME}-*.patch 1> /dev/null 2>&1; then
-       for patch in ${LFS_PKG_BASE}/${SRCSTAGE}/${PACKAGE_NAME}-*.patch; do
-           PATCHFILE=$(basename ${patch})
-           if [ ! -h ${LFS_PKG_DIR}/${PATCHFILE} ]; then
-               # Create link if it doesn't exist
-               rcmd "Linking ${PATCHFILE}" ln -s ../${SRCSTAGE}/${PATCHFILE} ${LFS_PKG_DIR}/${PATCHFILE}
-           fi
-       done
-    fi
-}