diff options
| -rw-r--r-- | bitbake/lib/bb/fetch2/__init__.py | 17 | 
1 files changed, 8 insertions, 9 deletions
diff --git a/bitbake/lib/bb/fetch2/__init__.py b/bitbake/lib/bb/fetch2/__init__.py index a38cb8ffbe..52e12a0a9b 100644 --- a/bitbake/lib/bb/fetch2/__init__.py +++ b/bitbake/lib/bb/fetch2/__init__.py  | |||
| @@ -193,6 +193,11 @@ def uri_replace(ud, uri_find, uri_replace, replacements, d): | |||
| 193 | result_decoded = ['', '', '', '', '', {}] | 193 | result_decoded = ['', '', '', '', '', {}] | 
| 194 | for loc, i in enumerate(uri_find_decoded): | 194 | for loc, i in enumerate(uri_find_decoded): | 
| 195 | result_decoded[loc] = uri_decoded[loc] | 195 | result_decoded[loc] = uri_decoded[loc] | 
| 196 | regexp = i | ||
| 197 | if loc == 0 and regexp and not regexp.endswith("$"): | ||
| 198 | # Leaving the type unanchored can mean "https" matching "file" can become "files" | ||
| 199 | # which is clearly undesirable. | ||
| 200 | regexp += "$" | ||
| 196 | if loc == 5: | 201 | if loc == 5: | 
| 197 | # Handle URL parameters | 202 | # Handle URL parameters | 
| 198 | if i: | 203 | if i: | 
| @@ -203,20 +208,14 @@ def uri_replace(ud, uri_find, uri_replace, replacements, d): | |||
| 203 | # Overwrite any specified replacement parameters | 208 | # Overwrite any specified replacement parameters | 
| 204 | for k in uri_replace_decoded[loc]: | 209 | for k in uri_replace_decoded[loc]: | 
| 205 | result_decoded[loc][k] = uri_replace_decoded[loc][k] | 210 | result_decoded[loc][k] = uri_replace_decoded[loc][k] | 
| 206 | elif loc == 0: | 211 | elif (re.match(regexp, uri_decoded[loc])): | 
| 207 | # Principle of least surprise. We could end up with https matching against http and | ||
| 208 | # generating "files://" urls if we use the regexp engine below. | ||
| 209 | if i != uri_decoded[loc]: | ||
| 210 | return None | ||
| 211 | result_decoded[loc] = uri_replace_decoded[loc] | ||
| 212 | elif (re.match(i, uri_decoded[loc])): | ||
| 213 | if not uri_replace_decoded[loc]: | 212 | if not uri_replace_decoded[loc]: | 
| 214 | result_decoded[loc] = "" | 213 | result_decoded[loc] = "" | 
| 215 | else: | 214 | else: | 
| 216 | for k in replacements: | 215 | for k in replacements: | 
| 217 | uri_replace_decoded[loc] = uri_replace_decoded[loc].replace(k, replacements[k]) | 216 | uri_replace_decoded[loc] = uri_replace_decoded[loc].replace(k, replacements[k]) | 
| 218 | #bb.note("%s %s %s" % (i, uri_replace_decoded[loc], uri_decoded[loc])) | 217 | #bb.note("%s %s %s" % (regexp, uri_replace_decoded[loc], uri_decoded[loc])) | 
| 219 | result_decoded[loc] = re.sub(i, uri_replace_decoded[loc], uri_decoded[loc]) | 218 | result_decoded[loc] = re.sub(regexp, uri_replace_decoded[loc], uri_decoded[loc]) | 
| 220 | if loc == 2: | 219 | if loc == 2: | 
| 221 | # Handle path manipulations | 220 | # Handle path manipulations | 
| 222 | basename = None | 221 | basename = None | 
