diff options
author | Richard Purdie <richard.purdie@linuxfoundation.org> | 2021-09-10 15:04:43 +0100 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2021-09-11 22:39:15 +0100 |
commit | 89e0b19ec0b245a6cd414088904c91808e8814ab (patch) | |
tree | b3823281c16c8c8c4b4a678557ef2f53ae129a74 | |
parent | 551d4c0576a0a0c3406000029df9238b312f2263 (diff) | |
download | bitbake-89e0b19ec0b245a6cd414088904c91808e8814ab.tar.gz |
fetch2: Add recursion guard
Users sometimes put ${S} references in ${SRC_URI} without realising this can be
problematic. Improve the error messages if they accidentally do.
[YOCTO #11593]
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r-- | lib/bb/fetch2/__init__.py | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/lib/bb/fetch2/__init__.py b/lib/bb/fetch2/__init__.py index 47a494336..d9e1599a0 100644 --- a/lib/bb/fetch2/__init__.py +++ b/lib/bb/fetch2/__init__.py @@ -754,6 +754,11 @@ def get_srcrev(d, method_name='sortable_revision'): that fetcher provides a method with the given name and the same signature as sortable_revision. """ + recursion = d.getVar("__BBINSRCREV") + if recursion: + raise FetchError("There are recursive references in fetcher variables, likely through SRC_URI") + d.setVar("__BBINSRCREV", True) + scms = [] fetcher = Fetch(d.getVar('SRC_URI').split(), d) urldata = fetcher.ud @@ -768,6 +773,7 @@ def get_srcrev(d, method_name='sortable_revision'): autoinc, rev = getattr(urldata[scms[0]].method, method_name)(urldata[scms[0]], d, urldata[scms[0]].names[0]) if len(rev) > 10: rev = rev[:10] + d.delVar("__BBINSRCREV") if autoinc: return "AUTOINC+" + rev return rev @@ -802,6 +808,7 @@ def get_srcrev(d, method_name='sortable_revision'): if seenautoinc: format = "AUTOINC+" + format + d.delVar("__BBINSRCREV") return format def localpath(url, d): |