From 98ae54f39ab6f4541346b7405ae9d09bbf448992 Mon Sep 17 00:00:00 2001 From: Naoto Tsukamoto Date: Fri, 8 Apr 2022 22:25:24 +0900 Subject: [PATCH] Fasten rosversion --all --- src/rospkg/rospack.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/rospkg/rospack.py b/src/rospkg/rospack.py index 6925b8b9..6f9162e9 100644 --- a/src/rospkg/rospack.py +++ b/src/rospkg/rospack.py @@ -44,6 +44,7 @@ from .stack import InvalidStack, parse_stack_file _cache_lock = Lock() +path_cache = {} def list_by_path(manifest_name, path, cache): @@ -68,7 +69,12 @@ def list_by_path(manifest_name, path, cache): continue # leaf if PACKAGE_FILE in files: # parse package.xml and decide if it matches the search criteria - root = ElementTree(None, os.path.join(d, PACKAGE_FILE)) + tmp_path = os.path.join(d, PACKAGE_FILE) + if tmp_path in path_cache: + root = path_cache[tmp_path] + else: + root = ElementTree(None, os.path.join(d, PACKAGE_FILE)) + path_cache[tmp_path] = root is_metapackage = root.find('./export/metapackage') is not None if ( (manifest_name == STACK_FILE and is_metapackage) or