From 000056afaa95b4a516213a18819403fdf02afa9b Mon Sep 17 00:00:00 2001 From: Fabio Erculiani Date: Sun, 10 Nov 2013 19:42:44 +0100 Subject: [PATCH] [matter] improve ACCEPT_KEYWORDS setup basing on the "stable" parameter This tweak makes possible to directly skip depgraph generation if the root node (the dependency to check, last node of the toposorted queue) is already up-to-date (wrt to stable: yes, for example). This is what Portage does internally (using backupenv) and may break in future releases without notice. So, keep the settings["ACCEPT_KEYWORDS"] setup as a guard, to ensure the safety property. --- matter/matter/builder.py | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/matter/matter/builder.py b/matter/matter/builder.py index fbb77d47a..ac7998d65 100644 --- a/matter/matter/builder.py +++ b/matter/matter/builder.py @@ -609,11 +609,26 @@ class PackageBuilder(object): else: keywords = "%s ~%s" % (arch, arch) + settings.unlock() + backupenv = settings.configdict["backupenv"] if keywords is not None: - settings.unlock() - # do not backup. + # this is just FYI, if the below method fails + # this acts as a guard. settings["ACCEPT_KEYWORDS"] = keywords - settings.lock() + + # this makes the trick, but might break in future + # Portage versions. However, that's what Portage uses + # internally. + backupenv["ACCEPT_KEYWORDS"] = keywords + else: + # reset keywords to the environment default, if any + env_keywords = os.getenv("ACCEPT_KEYWORDS") + if env_keywords: + backupenv["ACCEPT_KEYWORDS"] = env_keywords + else: + backupenv.pop("ACCEPT_KEYWORDS", None) + + settings.lock() @classmethod def _setup_build_args(cls, spec): @@ -657,7 +672,6 @@ class PackageBuilder(object): # reset settings to original state, variables will be reconfigured # while others may remain saved due to backup_changes(). - # This is needed for _setup_keywords() to function properly. emerge_settings.unlock() emerge_settings.reset() emerge_settings.lock()