[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.
This commit is contained in:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user