Tristan Van Berkom pushed to branch bst-1.2 at BuildStream / buildstream
Commits:
-
a009dcbe
by Tristan Van Berkom at 2018-10-02T11:51:19Z
-
7da5104b
by Tristan Van Berkom at 2018-10-02T13:18:54Z
-
6e820362
by Tristan Van Berkom at 2018-10-03T07:35:03Z
2 changed files:
Changes:
| ... | ... | @@ -164,10 +164,18 @@ class GitMirror(SourceFetcher): |
| 164 | 164 |
cwd=self.mirror)
|
| 165 | 165 |
|
| 166 | 166 |
def fetch(self, alias_override=None):
|
| 167 |
- self.ensure(alias_override)
|
|
| 168 |
- if not self.has_ref():
|
|
| 169 |
- self._fetch(alias_override)
|
|
| 170 |
- self.assert_ref()
|
|
| 167 |
+ # Resolve the URL for the message
|
|
| 168 |
+ resolved_url = self.source.translate_url(self.url,
|
|
| 169 |
+ alias_override=alias_override,
|
|
| 170 |
+ primary=self.primary)
|
|
| 171 |
+ |
|
| 172 |
+ with self.source.timed_activity("Fetching from {}"
|
|
| 173 |
+ .format(resolved_url),
|
|
| 174 |
+ silent_nested=True):
|
|
| 175 |
+ self.ensure(alias_override)
|
|
| 176 |
+ if not self.has_ref():
|
|
| 177 |
+ self._fetch(alias_override)
|
|
| 178 |
+ self.assert_ref()
|
|
| 171 | 179 |
|
| 172 | 180 |
def has_ref(self):
|
| 173 | 181 |
if not self.ref:
|
| ... | ... | @@ -585,28 +585,48 @@ class Source(Plugin): |
| 585 | 585 |
#
|
| 586 | 586 |
def _fetch(self):
|
| 587 | 587 |
project = self._get_project()
|
| 588 |
- source_fetchers = self.get_source_fetchers()
|
|
| 588 |
+ context = self._get_context()
|
|
| 589 |
+ |
|
| 590 |
+ # Silence the STATUS messages which might happen as a result
|
|
| 591 |
+ # of checking the source fetchers.
|
|
| 592 |
+ with context.silence():
|
|
| 593 |
+ source_fetchers = self.get_source_fetchers()
|
|
| 589 | 594 |
|
| 590 | 595 |
# Use the source fetchers if they are provided
|
| 591 | 596 |
#
|
| 592 | 597 |
if source_fetchers:
|
| 593 |
- for fetcher in source_fetchers:
|
|
| 594 |
- alias = fetcher._get_alias()
|
|
| 595 |
- for uri in project.get_alias_uris(alias, first_pass=self.__first_pass):
|
|
| 596 |
- try:
|
|
| 597 |
- fetcher.fetch(uri)
|
|
| 598 |
- # FIXME: Need to consider temporary vs. permanent failures,
|
|
| 599 |
- # and how this works with retries.
|
|
| 600 |
- except BstError as e:
|
|
| 601 |
- last_error = e
|
|
| 602 |
- continue
|
|
| 603 |
- |
|
| 604 |
- # No error, we're done with this fetcher
|
|
| 605 |
- break
|
|
| 606 | 598 |
|
| 607 |
- else:
|
|
| 608 |
- # No break occurred, raise the last detected error
|
|
| 609 |
- raise last_error
|
|
| 599 |
+ # Use a contorted loop here, this is to allow us to
|
|
| 600 |
+ # silence the messages which can result from consuming
|
|
| 601 |
+ # the items of source_fetchers, if it happens to be a generator.
|
|
| 602 |
+ #
|
|
| 603 |
+ source_fetchers = iter(source_fetchers)
|
|
| 604 |
+ try:
|
|
| 605 |
+ |
|
| 606 |
+ while True:
|
|
| 607 |
+ |
|
| 608 |
+ with context.silence():
|
|
| 609 |
+ fetcher = next(source_fetchers)
|
|
| 610 |
+ |
|
| 611 |
+ alias = fetcher._get_alias()
|
|
| 612 |
+ for uri in project.get_alias_uris(alias, first_pass=self.__first_pass):
|
|
| 613 |
+ try:
|
|
| 614 |
+ fetcher.fetch(uri)
|
|
| 615 |
+ # FIXME: Need to consider temporary vs. permanent failures,
|
|
| 616 |
+ # and how this works with retries.
|
|
| 617 |
+ except BstError as e:
|
|
| 618 |
+ last_error = e
|
|
| 619 |
+ continue
|
|
| 620 |
+ |
|
| 621 |
+ # No error, we're done with this fetcher
|
|
| 622 |
+ break
|
|
| 623 |
+ |
|
| 624 |
+ else:
|
|
| 625 |
+ # No break occurred, raise the last detected error
|
|
| 626 |
+ raise last_error
|
|
| 627 |
+ |
|
| 628 |
+ except StopIteration:
|
|
| 629 |
+ pass
|
|
| 610 | 630 |
|
| 611 | 631 |
# Default codepath is to reinstantiate the Source
|
| 612 | 632 |
#
|
