mirror of
https://git.yoctoproject.org/meta-arm
synced 2026-06-05 02:20:30 +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:
@@ -30,16 +30,23 @@ def safe_patches(patches):
|
||||
return False
|
||||
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.
|
||||
"""
|
||||
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(":")
|
||||
pattern = d.getVar('BBFILE_PATTERN_' + layername)
|
||||
for path in reversed(sorted(bbpath)):
|
||||
if re.match(pattern, path + "/"):
|
||||
return path
|
||||
layer_path.cache[layername] = pathlib.Path(path)
|
||||
return layer_path.cache[layername]
|
||||
return None
|
||||
|
||||
def extract_patch_info(src_uri, d):
|
||||
|
||||
Reference in New Issue
Block a user