diff options
Diffstat (limited to 'bitbake/lib/bb')
-rw-r--r-- | bitbake/lib/bb/codeparser.py | 29 |
1 files changed, 22 insertions, 7 deletions
diff --git a/bitbake/lib/bb/codeparser.py b/bitbake/lib/bb/codeparser.py index 2e8b7ced3c..c613806c8e 100644 --- a/bitbake/lib/bb/codeparser.py +++ b/bitbake/lib/bb/codeparser.py | |||
@@ -490,13 +490,28 @@ class ShellParser(): | |||
490 | if not isinstance(part, list): | 490 | if not isinstance(part, list): |
491 | continue | 491 | continue |
492 | 492 | ||
493 | if part[0] in ('`', '$('): | 493 | candidates = [part] |
494 | command = pyshlex.wordtree_as_string(part[1:-1]) | 494 | |
495 | self._parse_shell(command) | 495 | # If command is of type: |
496 | 496 | # | |
497 | if word[0] in ("cmd_name", "cmd_word"): | 497 | # var="... $(cmd [...]) ..." |
498 | if word in words: | 498 | # |
499 | words.remove(word) | 499 | # Then iterate on what's between the quotes and if we find a |
500 | # list, make that what we check for below. | ||
501 | if len(part) >= 3 and part[0] == '"': | ||
502 | for p in part[1:-1]: | ||
503 | if isinstance(p, list): | ||
504 | candidates.append(p) | ||
505 | |||
506 | for candidate in candidates: | ||
507 | if len(candidate) >= 2: | ||
508 | if candidate[0] in ('`', '$('): | ||
509 | command = pyshlex.wordtree_as_string(candidate[1:-1]) | ||
510 | self._parse_shell(command) | ||
511 | |||
512 | if word[0] in ("cmd_name", "cmd_word"): | ||
513 | if word in words: | ||
514 | words.remove(word) | ||
500 | 515 | ||
501 | usetoken = False | 516 | usetoken = False |
502 | for word in words: | 517 | for word in words: |