1
0
mirror of https://git.yoctoproject.org/meta-arm synced 2026-07-26 19:17:05 +00:00

scripts/machine-summary: improve layer_path

As this can get called lots but the data doesn't change, cache
the responses.  Also return a pathlib.Path, as this is 2022.

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
This commit is contained in:
Ross Burton
2022-01-26 15:25:38 +00:00
committed by Jon Mason
parent 72bb1adf3f
commit b1e4cff75d
+10 -3
View File
@@ -30,16 +30,23 @@ def safe_patches(patches):
return False return False
return True return True
def layer_path(layername, d): def layer_path(layername: str, d) -> pathlib.Path:
""" """
Return the path to the specified layer, or None if the layer isn't present. Return the path to the specified layer, or None if the layer isn't present.
""" """
import re if not hasattr(layer_path, "cache"):
# Don't use functools.lru_cache as we don't want d changing to invalidate the cache
layer_path.cache = {}
if layername in layer_path.cache:
return layer_path.cache[layername]
bbpath = d.getVar("BBPATH").split(":") bbpath = d.getVar("BBPATH").split(":")
pattern = d.getVar('BBFILE_PATTERN_' + layername) pattern = d.getVar('BBFILE_PATTERN_' + layername)
for path in reversed(sorted(bbpath)): for path in reversed(sorted(bbpath)):
if re.match(pattern, path + "/"): if re.match(pattern, path + "/"):
return path layer_path.cache[layername] = pathlib.Path(path)
return layer_path.cache[layername]
return None return None
def extract_patch_info(src_uri, d): def extract_patch_info(src_uri, d):