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:
@@ -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):
|
||||||
|
|||||||
Reference in New Issue
Block a user