diff --git a/pmb/helpers/args.py b/pmb/helpers/args.py index f2278f08..364e020e 100644 --- a/pmb/helpers/args.py +++ b/pmb/helpers/args.py @@ -132,6 +132,7 @@ def add_cache(args): "pmb.helpers.package.depends_recurse": {}, "pmb.helpers.package.get": {}, "pmb.helpers.pmaports._glob_apkbuilds": {}, + "pmb.helpers.pmaports.get_list": {}, "pmb.helpers.repo.update": repo_update}) diff --git a/pmb/helpers/pmaports.py b/pmb/helpers/pmaports.py index 21eb5458..f9602d67 100644 --- a/pmb/helpers/pmaports.py +++ b/pmb/helpers/pmaports.py @@ -27,10 +27,18 @@ def _glob_apkbuilds(args, pkgname='*'): def get_list(args, pkgname='*'): """ :returns: list of all pmaport pkgnames (["hello-world", ...]) """ + # 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.get_list"]: + return args.cache["pmb.helpers.pmaports.get_list"][pkgname] + ret = [] for apkbuild in _glob_apkbuilds(args, pkgname): ret.append(os.path.basename(os.path.dirname(apkbuild))) ret.sort() + + # Save result in cache + args.cache["pmb.helpers.pmaports.get_list"][pkgname] = ret return ret