aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean-Francois Dagenais <jeff.dagenais@gmail.com>2020-09-23 09:44:06 -0400
committerRichard Purdie <richard.purdie@linuxfoundation.org>2020-09-23 20:55:53 +0100
commit20586411649fcad6f0459ce74a581374ab564737 (patch)
treee908d50e0ed04553cdbc8bece048b5a4045d850b
parent304d7a08611132ca292aea2484659ccc5b804178 (diff)
downloadpoky-20586411649fcad6f0459ce74a581374ab564737.tar.gz
poky-20586411649fcad6f0459ce74a581374ab564737.tar.bz2
poky-20586411649fcad6f0459ce74a581374ab564737.zip
bitbake: bitbake: siggen: clean_basepath: improve perfo and readability
This change improves performance by reducing runtime about 33% for typical inputs. (using test_clean_basepath_performance) It is also easier to read, and slightly more resilient to future changes since it doesn't mention 'virtual' anymore. (Bitbake rev: 27b53186fa67d281d29b2f8e15bcff8dc2557b8a) Signed-off-by: Jean-Francois Dagenais <jeff.dagenais@gmail.com> Co-Developed-by: Maxime Roussin-Bélanger <maxime.roussinbelanger@gmail.com> Signed-off-by: Maxime Roussin-Bélanger <maxime.roussinbelanger@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--bitbake/lib/bb/siggen.py30
1 files changed, 20 insertions, 10 deletions
diff --git a/bitbake/lib/bb/siggen.py b/bitbake/lib/bb/siggen.py
index ad49d1e2aa..1456324a70 100644
--- a/bitbake/lib/bb/siggen.py
+++ b/bitbake/lib/bb/siggen.py
@@ -746,16 +746,26 @@ def list_inline_diff(oldlist, newlist, colors=None):
ret.append(item)
return '[%s]' % (', '.join(ret))
-def clean_basepath(a):
- mc = None
- if a.startswith("mc:"):
- _, mc, a = a.split(":", 2)
- b = a.rsplit("/", 2)[1] + '/' + a.rsplit("/", 2)[2]
- if a.startswith("virtual:"):
- b = b + ":" + a.rsplit(":", 2)[0]
- if mc:
- b = b + ":mc:" + mc
- return b
+def clean_basepath(basepath):
+ basepath, dir, recipe_task = basepath.rsplit("/", 2)
+ cleaned = dir + '/' + recipe_task
+
+ if basepath[0] == '/':
+ return cleaned
+
+ if basepath.startswith("mc:"):
+ mc, mc_name, basepath = basepath.split(":", 2)
+ mc_suffix = ':mc:' + mc_name
+ else:
+ mc_suffix = ''
+
+ # mc stuff now removed from basepath. Whatever was next, if present will be the first
+ # suffix. ':/', recipe path start, marks the end of this. Something like
+ # 'virtual:a[:b[:c]]:/path...' (b and c being optional)
+ if basepath[0] != '/':
+ cleaned += ':' + basepath.split(':/', 1)[0]
+
+ return cleaned + mc_suffix
def clean_basepaths(a):
b = {}