From 11c36fcf65695432ba223b65a318369513216a6a Mon Sep 17 00:00:00 2001 From: Daniele Debernardi Date: Wed, 25 Mar 2020 22:42:41 +0100 Subject: [PATCH] pmb.helpers.pmaports: cache get_list results (!1896) --- pmb/helpers/args.py | 1 + pmb/helpers/pmaports.py | 8 ++++++++ 2 files changed, 9 insertions(+) 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