diff --git a/pmb/helpers/args.py b/pmb/helpers/args.py index 5ec78c53..f2278f08 100644 --- a/pmb/helpers/args.py +++ b/pmb/helpers/args.py @@ -131,6 +131,7 @@ def add_cache(args): "find_aport": {}, "pmb.helpers.package.depends_recurse": {}, "pmb.helpers.package.get": {}, + "pmb.helpers.pmaports._glob_apkbuilds": {}, "pmb.helpers.repo.update": repo_update}) diff --git a/pmb/helpers/pmaports.py b/pmb/helpers/pmaports.py index e47b1c8e..33613820 100644 --- a/pmb/helpers/pmaports.py +++ b/pmb/helpers/pmaports.py @@ -13,7 +13,16 @@ import pmb.parse def _glob_apkbuilds(args, pkgname='*'): - return glob.glob(args.aports + "/**/" + pkgname + "/APKBUILD", recursive=True) + # Try to get a cached result first (we assume, that the aports don't change + # in one pmbootstrap call) + if pkgname in args.cache["pmb.helpers.pmaports._glob_apkbuilds"]: + return args.cache["pmb.helpers.pmaports._glob_apkbuilds"][pkgname] + + ret = glob.glob(args.aports + "/**/" + pkgname + "/APKBUILD", recursive=True) + + # Save result in cache + args.cache["pmb.helpers.pmaports._glob_apkbuilds"][pkgname] = ret + return ret def get_list(args, pkgname='*'):