This is an automated email from the ASF dual-hosted git repository. tvb pushed a commit to branch aevri/win32_minimal_seemstowork_20190829 in repository https://gitbox.apache.org/repos/asf/buildstream.git
commit 799cbf0eea09974817d2ba607f023fa1cee8293f Author: Angelos Evripiotis <[email protected]> AuthorDate: Wed Jul 10 08:58:29 2019 +0100 Revert "WIP: jobpickler, _{,un}reduce_plugincontext" This reverts commit 8dc514026627c5dbacc47a970a5ec511786edf69. --- src/buildstream/_plugincontext.py | 13 +++++++++++++ src/buildstream/_scheduler/jobs/jobpickler.py | 24 ------------------------ 2 files changed, 13 insertions(+), 24 deletions(-) diff --git a/src/buildstream/_plugincontext.py b/src/buildstream/_plugincontext.py index c058c58..60d2475 100644 --- a/src/buildstream/_plugincontext.py +++ b/src/buildstream/_plugincontext.py @@ -68,6 +68,19 @@ class PluginContext(): self._alternate_sources = {} self._format_versions = format_versions + def __getstate__(self): + import copy + state = copy.copy(self.__dict__) + del state['_site_source'] + state['_types'] = {} + return state + + def __setstate__(self, state): + self.__dict__ = state + self._site_source = self._plugin_base.make_plugin_source( + searchpath=self._site_plugin_path, + identifier='site_plugin-' + self._identifier) + # lookup(): # # Fetches a type loaded from a plugin in this plugin context diff --git a/src/buildstream/_scheduler/jobs/jobpickler.py b/src/buildstream/_scheduler/jobs/jobpickler.py index 841037c..5c1742f 100644 --- a/src/buildstream/_scheduler/jobs/jobpickler.py +++ b/src/buildstream/_scheduler/jobs/jobpickler.py @@ -28,7 +28,6 @@ from ..._protos.buildstream.v2.artifact_pb2 import Artifact as ArtifactProto from ... import Element, Source from ..._loader import Loader from ..._messenger import Messenger -from ..._plugincontext import PluginContext def _reduce_artifact_proto(instance): @@ -54,7 +53,6 @@ def _reduce_loader(instance): # time that seems just right is here, when preparing the child process' # copy of the Loader. # - # TODO: move this reduce func to loader.py del state['_fetch_subprojects'] return (Loader.__new__, (Loader,), state) @@ -74,32 +72,11 @@ def _reduce_messenger(instance): # which removes and restores the _message_handler. This wouldn't require # access to private details of Messenger. # - # TODO: move this reduce func to messenger.py del state['_message_handler'] return (Messenger.__new__, (Messenger,), state) -def _reduce_plugincontext(instance): - assert isinstance(instance, PluginContext) - state = instance.__dict__.copy() - del state['_site_source'] - state['_types'] = {} - - # TODO: move this reduce func to plugincontext.py - - return (_unreduce_plugincontext, (state,)) - - -def _unreduce_plugincontext(state): - instance = PluginContext() - instance.__dict__ = state - instance._site_source = instance._plugin_base.make_plugin_source( - searchpath=instance._site_plugin_path, - identifier='site_plugin-' + instance._identifier) - return instance - - def _reduce_element(element): assert isinstance(element, Element) meta_kind = element._meta_kind @@ -162,7 +139,6 @@ def pickle_child_job(child_job, context): pickler.dispatch_table[ArtifactProto] = _reduce_artifact_proto pickler.dispatch_table[Loader] = _reduce_loader pickler.dispatch_table[Messenger] = _reduce_messenger - pickler.dispatch_table[PluginContext] = _reduce_plugincontext pickler.dump(child_job) data.seek(0)
