summaryrefslogtreecommitdiff
path: root/src/buildstream/_project.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/buildstream/_project.py')
-rw-r--r--src/buildstream/_project.py24
1 files changed, 15 insertions, 9 deletions
diff --git a/src/buildstream/_project.py b/src/buildstream/_project.py
index 3006e2976..e0ddf3d41 100644
--- a/src/buildstream/_project.py
+++ b/src/buildstream/_project.py
@@ -39,7 +39,7 @@ from .sandbox import SandboxRemote
from ._pluginfactory import ElementFactory, SourceFactory, load_plugin_origin
from .types import CoreWarnings
from ._projectrefs import ProjectRefs, ProjectRefStorage
-from ._loader import Loader
+from ._loader import Loader, LoadContext
from .element import Element
from ._message import Message, MessageType
from ._includes import Includes
@@ -100,7 +100,6 @@ class Project:
default_mirror=None,
parent_loader=None,
search_for_project=True,
- fetch_subprojects=None
):
# The project name
@@ -108,6 +107,12 @@ class Project:
self._context = context # The invocation Context, a private member
+ # Create the LoadContext here if we are the toplevel project.
+ if parent_loader:
+ self.load_context = parent_loader.load_context
+ else:
+ self.load_context = LoadContext(self._context)
+
if search_for_project:
self.directory, self._invoked_from_workspace_element = self._find_project_dir(directory)
else:
@@ -159,7 +164,7 @@ class Project:
self._project_includes = None
with PROFILER.profile(Topics.LOAD_PROJECT, self.directory.replace(os.sep, "-")):
- self._load(parent_loader=parent_loader, fetch_subprojects=fetch_subprojects)
+ self._load(parent_loader=parent_loader)
self._partially_loaded = True
@@ -410,15 +415,16 @@ class Project:
#
# Args:
# targets (list): Target names
- # rewritable (bool): Whether the loaded files should be rewritable
- # this is a bit more expensive due to deep copies
#
# Returns:
# (list): A list of loaded Element
#
- def load_elements(self, targets, *, rewritable=False):
+ def load_elements(self, targets):
+
with self._context.messenger.simple_task("Loading elements", silent_nested=True) as task:
- meta_elements = self.loader.load(targets, task, rewritable=rewritable, ticker=None)
+ self.load_context.set_task(task)
+ meta_elements = self.loader.load(targets)
+ self.load_context.set_task(None)
with self._context.messenger.simple_task("Resolving elements") as task:
if task:
@@ -647,7 +653,7 @@ class Project:
#
# Raises: LoadError if there was a problem with the project.conf
#
- def _load(self, *, parent_loader=None, fetch_subprojects):
+ def _load(self, *, parent_loader=None):
# Load builtin default
projectfile = os.path.join(self.directory, _PROJECT_CONF_FILE)
@@ -694,7 +700,7 @@ class Project:
# Fatal warnings
self._fatal_warnings = pre_config_node.get_str_list("fatal-warnings", default=[])
- self.loader = Loader(self._context, self, parent=parent_loader, fetch_subprojects=fetch_subprojects)
+ self.loader = Loader(self, parent=parent_loader)
self._project_includes = Includes(self.loader, copy_tree=False)