Commit 77d8ad45 authored by Jürg Billeter's avatar Jürg Billeter
Browse files

Merge branch 'juerg/fetch' into 'master'

Do not call fetch() for cached sources

See merge request !992
parents aae5e4b3 b325989e
Loading
Loading
Loading
Loading
Loading
+1 −4
Original line number Original line Diff line number Diff line
@@ -40,10 +40,7 @@ class FetchQueue(Queue):
        self._skip_cached = skip_cached
        self._skip_cached = skip_cached


    def process(self, element):
    def process(self, element):
        previous_sources = []
        element._fetch()
        for source in element.sources():
            source._fetch(previous_sources)
            previous_sources.append(source)


    def status(self, element):
    def status(self, element):
        # state of dependencies may have changed, recalculate element state
        # state of dependencies may have changed, recalculate element state
+14 −0
Original line number Original line Diff line number Diff line
@@ -2022,6 +2022,20 @@ class Element(Plugin):


        return True
        return True


    # _fetch()
    #
    # Fetch the element's sources.
    #
    # Raises:
    #    SourceError: If one of the element sources has an error
    #
    def _fetch(self):
        previous_sources = []
        for source in self.sources():
            if source._get_consistency() < Consistency.CACHED:
                source._fetch(previous_sources)
            previous_sources.append(source)

    #############################################################
    #############################################################
    #                   Private Local Methods                   #
    #                   Private Local Methods                   #
    #############################################################
    #############################################################
+1 −0
Original line number Original line Diff line number Diff line
Hello World!
+45 −0
Original line number Original line Diff line number Diff line
"""
always_cached
=============

This is a test source plugin that is always cached.
Used to test that BuildStream core does not call fetch() for cached sources.

"""

from buildstream import Consistency, Source


class AlwaysCachedSource(Source):

    def configure(self, node):
        pass

    def preflight(self):
        pass

    def get_unique_key(self):
        return None

    def get_consistency(self):
        return Consistency.CACHED

    def load_ref(self, node):
        pass

    def get_ref(self):
        return None

    def set_ref(self, ref, node):
        pass

    def fetch(self):
        # Source is always cached, so fetch() should never be called
        assert False

    def stage(self, directory):
        pass


def setup():
    return AlwaysCachedSource
+8 −0
Original line number Original line Diff line number Diff line
# Project with local source plugins
name: no-fetch-cached

plugins:
- origin: local
  path: plugins/sources
  sources:
    always_cached: 0
Loading