diff options
| author | Benjamin Schubert <ben.c.schubert@gmail.com> | 2019-04-26 14:15:04 +0100 |
|---|---|---|
| committer | Benjamin Schubert <ben.c.schubert@gmail.com> | 2019-04-26 14:15:04 +0100 |
| commit | a8eef66b125f6dcaab94d7671df101f4fbeedf65 (patch) | |
| tree | 05db906d2e63b480b1c5f6925a193ac22d21d70f | |
| parent | fa4514dd65891e6bb81112134cb9b31829b86ed8 (diff) | |
| download | buildstream-a8eef66b125f6dcaab94d7671df101f4fbeedf65.tar.gz | |
fixup! WIP; test async loader
| -rw-r--r-- | buildstream/_loader/loader.py | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/buildstream/_loader/loader.py b/buildstream/_loader/loader.py index a92a63b54..4868c5c80 100644 --- a/buildstream/_loader/loader.py +++ b/buildstream/_loader/loader.py @@ -104,6 +104,9 @@ class Loader(): self._warn_invalid_elements(targets) + loop = asyncio.new_event_loop() + asyncio.set_event_loop(loop) + # First pass, recursively load files and populate our table of LoadElements # async def _load(target): @@ -112,9 +115,10 @@ class Loader(): return await loader._load_file(name, rewritable, ticker, fetch_subprojects=fetch_subprojects) target_elements_futures = asyncio.gather(*[_load(target) for target in targets]) + try: target_elements = asyncio.get_event_loop().run_until_complete(target_elements_futures) - except: + except Exception: target_elements_futures.cancel() raise # target_elements = [] @@ -432,7 +436,7 @@ class Loader(): # Return the already built one, if we already built it meta_element = self._meta_elements.get(element.name) if meta_element: - return meta_element + return meta_element.result() node = element.node elt_provenance = _yaml.node_get_provenance(node) @@ -539,7 +543,7 @@ class Loader(): return None # meta junction element - meta_element = self._collect_element(self._elements[filename]) + meta_element = self._collect_element(await self._elements[filename]) if meta_element.kind != 'junction': raise LoadError(LoadErrorReason.INVALID_DATA, "{}{}: Expected junction but element kind is {}".format( |
