Benjamin Schubert pushed to branch bschubert/pipeline at BuildStream / buildstream
Commits:
-
a8f22dc4
by Benjamin Schubert at 2019-01-09T22:23:10Z
-
8acef9ae
by Benjamin Schubert at 2019-01-09T23:22:29Z
6 changed files:
- buildstream/_pipeline.py
- buildstream/_scheduler/queues/buildqueue.py
- buildstream/_scheduler/queues/fetchqueue.py
- buildstream/_scheduler/queues/trackqueue.py
- buildstream/_stream.py
- buildstream/element.py
Changes:
... | ... | @@ -135,9 +135,6 @@ class Pipeline(): |
135 | 135 |
# Preflight
|
136 | 136 |
element._preflight()
|
137 | 137 |
|
138 |
- # Determine initial element state.
|
|
139 |
- element._update_state()
|
|
140 |
- |
|
141 | 138 |
# dependencies()
|
142 | 139 |
#
|
143 | 140 |
# Generator function to iterate over elements and optionally
|
... | ... | @@ -106,11 +106,6 @@ class BuildQueue(Queue): |
106 | 106 |
# Inform element in main process that assembly is done
|
107 | 107 |
element._assemble_done()
|
108 | 108 |
|
109 |
- if element.is_workspaced:
|
|
110 |
- # Update the state of all reverse dependencies
|
|
111 |
- for reverse_dependency in element.reverse_build_dependencies(recurse=True):
|
|
112 |
- reverse_dependency._update_state()
|
|
113 |
- |
|
114 | 109 |
# This has to be done after _assemble_done, such that the
|
115 | 110 |
# element may register its cache key as required
|
116 | 111 |
#
|
... | ... | @@ -69,7 +69,7 @@ class FetchQueue(Queue): |
69 | 69 |
if status == JobStatus.FAIL:
|
70 | 70 |
return
|
71 | 71 |
|
72 |
- element._update_state()
|
|
73 |
- |
|
72 |
+ element._fetch_done()
|
|
73 |
+
|
|
74 | 74 |
# Successful fetch, we must be CACHED now
|
75 | 75 |
assert element._get_consistency() == Consistency.CACHED
|
... | ... | @@ -59,6 +59,3 @@ class TrackQueue(Queue): |
59 | 59 |
source._save_ref(new_ref)
|
60 | 60 |
|
61 | 61 |
element._tracking_done()
|
62 |
- |
|
63 |
- for rdep in element.reverse_build_dependencies(recurse=True):
|
|
64 |
- rdep._update_state()
|
... | ... | @@ -1018,17 +1018,6 @@ class Stream(): |
1018 | 1018 |
|
1019 | 1019 |
_, status = self._scheduler.run(self.queues)
|
1020 | 1020 |
|
1021 |
- # Force update element states after a run, such that the summary
|
|
1022 |
- # is more coherent
|
|
1023 |
- try:
|
|
1024 |
- for element in self.total_elements:
|
|
1025 |
- element._update_state()
|
|
1026 |
- except BstError as e:
|
|
1027 |
- self._message(MessageType.ERROR, "Error resolving final state", detail=str(e))
|
|
1028 |
- set_last_task_error(e.domain, e.reason)
|
|
1029 |
- except Exception as e: # pylint: disable=broad-except
|
|
1030 |
- self._message(MessageType.BUG, "Unhandled exception while resolving final state", detail=str(e))
|
|
1031 |
- |
|
1032 | 1021 |
if status == SchedStatus.ERROR:
|
1033 | 1022 |
raise StreamError()
|
1034 | 1023 |
elif status == SchedStatus.TERMINATED:
|
... | ... | @@ -454,13 +454,13 @@ class Element(Plugin): |
454 | 454 |
yield from self.__reverse_build_dependencies
|
455 | 455 |
return
|
456 | 456 |
|
457 |
- visited = set()
|
|
457 |
+ # visited = set()
|
|
458 | 458 |
|
459 | 459 |
def recurse_rdeps(element):
|
460 |
- if element in visited:
|
|
461 |
- return
|
|
460 |
+ # if element in visited:
|
|
461 |
+ # return
|
|
462 | 462 |
|
463 |
- visited.add(element)
|
|
463 |
+ # visited.add(element)
|
|
464 | 464 |
|
465 | 465 |
yield element
|
466 | 466 |
|
... | ... | @@ -1311,6 +1311,9 @@ class Element(Plugin): |
1311 | 1311 |
for source in self.sources():
|
1312 | 1312 |
source._preflight()
|
1313 | 1313 |
|
1314 |
+ # Determine initial element state.
|
|
1315 |
+ self._update_state()
|
|
1316 |
+ |
|
1314 | 1317 |
# _schedule_tracking():
|
1315 | 1318 |
#
|
1316 | 1319 |
# Force an element state to be inconsistent. Any sources appear to be
|
... | ... | @@ -1338,6 +1341,9 @@ class Element(Plugin): |
1338 | 1341 |
|
1339 | 1342 |
self._update_state()
|
1340 | 1343 |
|
1344 |
+ for rdep in self.reverse_build_dependencies(recurse=True):
|
|
1345 |
+ rdep._update_state()
|
|
1346 |
+ |
|
1341 | 1347 |
# _track():
|
1342 | 1348 |
#
|
1343 | 1349 |
# Calls track() on the Element sources
|
... | ... | @@ -1533,10 +1539,16 @@ class Element(Plugin): |
1533 | 1539 |
|
1534 | 1540 |
self.__assemble_scheduled = False
|
1535 | 1541 |
self.__assemble_done = True
|
1536 |
- |
|
1542 |
+ # FIXME: only if workspaced
|
|
1537 | 1543 |
self._update_state()
|
1538 | 1544 |
|
1539 |
- if self._get_workspace() and self._cached_success():
|
|
1545 |
+ if self.is_workspaced:
|
|
1546 |
+ |
|
1547 |
+ # Update the state of all reverse dependencies
|
|
1548 |
+ for reverse_dependency in self.reverse_build_dependencies(recurse=True):
|
|
1549 |
+ reverse_dependency._update_state()
|
|
1550 |
+ |
|
1551 |
+ if self.is_workspaced and self._cached_success():
|
|
1540 | 1552 |
assert utils._is_main_process(), \
|
1541 | 1553 |
"Attempted to save workspace configuration from child process"
|
1542 | 1554 |
#
|
... | ... | @@ -2069,6 +2081,9 @@ class Element(Plugin): |
2069 | 2081 |
source._fetch(previous_sources)
|
2070 | 2082 |
previous_sources.append(source)
|
2071 | 2083 |
|
2084 |
+ def _fetch_done(self):
|
|
2085 |
+ self._update_state()
|
|
2086 |
+ |
|
2072 | 2087 |
#############################################################
|
2073 | 2088 |
# Private Local Methods #
|
2074 | 2089 |
#############################################################
|