Correction problème avec fetch patch quand le nom de la patch a un suffixe comprenant...
authorgobo72@gmail.com <gobo72@gmail.com@364a67c3-989e-7be9-548d-dae8560ea662>
Sat, 11 Aug 2012 19:31:44 +0000 (19:31 +0000)
committergobo72@gmail.com <gobo72@gmail.com@364a67c3-989e-7be9-548d-dae8560ea662>
Sat, 11 Aug 2012 19:31:44 +0000 (19:31 +0000)
functions/fpkg

index 0729e78..296bad8 100644 (file)
@@ -228,16 +228,24 @@ static_checkpatch()
     # Remplace les "+" par "%2B"
     local PACK_URL=$(echo $PACK | sed s!\+!%2B!g)
 
-    local PATCHES_FOUND=$(cat ${PATCHES_LIST} | grep "${PACK_URL}-" | sed "s/.*\(${PACK_URL}-.*\.patch\).*/\1/")
+    # Patches list formats (patches-list-*.html):
+    #   LFS:     a href="name.patch"
+    #   hugovil: A HREF "dir/subdir/subdir/name.patch
+    # We must search for a patch beginning with either a slash or a " to avoid
+    # the possibility of having another package name within a patch name:
+    #   if patch = Mesalib-8.0.4-llvm-3.1-fixes-1.patch
+    #   then we could erroneously try to download patch "llvm-3.1-fixes-1.patch"
+    local PATCHES_FOUND=$(cat ${PATCHES_LIST} | \
+        egrep "\"${PACK_URL}-|/${PACK_URL}-" | \
+        sed "s/.*\(${PACK_URL}-.*\.patch\)\".*/\1/")
+
     if [ -n "${PATCHES_FOUND}" ]; then
        for p in ${PATCHES_FOUND}; do
             # Remplace les "%2B" par "+"
             PATCH_NAME=$(echo ${p} | sed s!%2B!\+!g)
 
            if [ ! -f ${LFS_PKG_DIR}/${PATCH_NAME} ]; then
-               # String uses $PATCH_NAME and not $p ???
-               #####rcmd "Fetching ${PATCH_NAME} from ${PATCHES_URL}" wget_wrapper ${PATCHES_URL} ${p} ${FTYPE_OTHER}
-               wget_wrapper ${PATCHES_URL} ${p}
+               wget_wrapper ${PATCHES_URL} ${PATCH_NAME}
            fi
        done
     fi