The following construct may generate [] entries:
mirror_list = [entry.split()
for entry in premirrors.split('\\n')
if any(entry)]
A valid pre-mirror entry is a regex and replacement URL
tupple. This causes an unpack error when evaluating:
for regex, replace in mirror_list
if the entry is e.g. " ".
For instance " re1 u1 \n re2 u2\n " would be translated to
mirorr_list = [['re1','u1'],['re2','u2'],[]]: only the first
two entries have two values, the latter has none.
It should be noted that split() will do just fine when multiple
spaces are found between components of a valid entry (leading
and trailing spaces within an entry will not cause issues).
After checking if entry is iterable ("if any(entry)"), only
process entries with exactly two components (silently ignore
others) so we do not die with an uggly unpack error exception.
Signed-off-by: Cedric Hombourger <
cedric.h...@siemens.com>
---
meta/classes/bootstrap.bbclass | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/meta/classes/bootstrap.bbclass b/meta/classes/bootstrap.bbclass
index c0644acb..64702d5d 100644
--- a/meta/classes/bootstrap.bbclass
+++ b/meta/classes/bootstrap.bbclass
@@ -123,7 +123,7 @@ def get_apt_source_mirror(d, aptsources_entry_list):
premirrors = d.getVar('DISTRO_APT_PREMIRRORS') or ""
mirror_list = [entry.split()
for entry in premirrors.split('\\n')
- if any(entry)]
+ if any(entry) and len(entry.split()) == 2]
for regex, replace in mirror_list:
match = re.search(regex, aptsources_entry_list[2])
--
2.39.5