diff options
author | Tristan Van Berkom <tristan.vanberkom@codethink.co.uk> | 2020-04-28 19:23:31 +0900 |
---|---|---|
committer | Tristan Van Berkom <tristan.vanberkom@codethink.co.uk> | 2020-04-29 16:24:59 +0900 |
commit | a311a14f4b0a649b5f872ab020885b0a1d6e09d1 (patch) | |
tree | c94ddb9ff24108b72d4e0c2e8902bf24d6702b95 /src/buildstream/plugins | |
parent | b3556a3284708b904f20586d4636c31a91106809 (diff) | |
download | buildstream-a311a14f4b0a649b5f872ab020885b0a1d6e09d1.tar.gz |
plugin.py/pluginfactory.py: Implementing BST_MIN_VERSION
The BST_MIN_VERSION guards assert that the BuildStream core which
loaded the plugin is compatible with the plugin itself.
This commit adds BST_MIN_VERSION to the base plugin.py with documentation
informing Plugin authors how to set the minimum version, and also adds
the assertions at plugin loading time in pluginfactory.py.
This commit also:
* Adds the BST_MIN_VERSION specification to all current core plugins
* Adds the BST_MIN_VERSION specification to plugins used in test cases
Diffstat (limited to 'src/buildstream/plugins')
-rw-r--r-- | src/buildstream/plugins/elements/autotools.py | 4 | ||||
-rw-r--r-- | src/buildstream/plugins/elements/compose.py | 2 | ||||
-rw-r--r-- | src/buildstream/plugins/elements/filter.py | 2 | ||||
-rw-r--r-- | src/buildstream/plugins/elements/import.py | 2 | ||||
-rw-r--r-- | src/buildstream/plugins/elements/junction.py | 2 | ||||
-rw-r--r-- | src/buildstream/plugins/elements/manual.py | 4 | ||||
-rw-r--r-- | src/buildstream/plugins/elements/pip.py | 4 | ||||
-rw-r--r-- | src/buildstream/plugins/elements/script.py | 4 | ||||
-rw-r--r-- | src/buildstream/plugins/elements/stack.py | 3 | ||||
-rw-r--r-- | src/buildstream/plugins/sources/bzr.py | 2 | ||||
-rw-r--r-- | src/buildstream/plugins/sources/git.py | 3 | ||||
-rw-r--r-- | src/buildstream/plugins/sources/local.py | 2 | ||||
-rw-r--r-- | src/buildstream/plugins/sources/patch.py | 2 | ||||
-rw-r--r-- | src/buildstream/plugins/sources/pip.py | 2 | ||||
-rw-r--r-- | src/buildstream/plugins/sources/remote.py | 2 | ||||
-rw-r--r-- | src/buildstream/plugins/sources/tar.py | 2 | ||||
-rw-r--r-- | src/buildstream/plugins/sources/workspace.py | 3 | ||||
-rw-r--r-- | src/buildstream/plugins/sources/zip.py | 2 |
18 files changed, 46 insertions, 1 deletions
diff --git a/src/buildstream/plugins/elements/autotools.py b/src/buildstream/plugins/elements/autotools.py index c4396c5cc..5f5a1b465 100644 --- a/src/buildstream/plugins/elements/autotools.py +++ b/src/buildstream/plugins/elements/autotools.py @@ -60,6 +60,10 @@ from buildstream import BuildElement, SandboxFlags # Element implementation for the 'autotools' kind. class AutotoolsElement(BuildElement): + # pylint: disable=attribute-defined-outside-init + + BST_MIN_VERSION = "2.0" + # Enable command batching across prepare() and assemble() def configure_sandbox(self, sandbox): super().configure_sandbox(sandbox) diff --git a/src/buildstream/plugins/elements/compose.py b/src/buildstream/plugins/elements/compose.py index 6e4aed193..9c136df9d 100644 --- a/src/buildstream/plugins/elements/compose.py +++ b/src/buildstream/plugins/elements/compose.py @@ -41,6 +41,8 @@ from buildstream import Element, Scope class ComposeElement(Element): # pylint: disable=attribute-defined-outside-init + BST_MIN_VERSION = "2.0" + # The compose element's output is its dependencies, so # we must rebuild if the dependencies change even when # not in strict build plans. diff --git a/src/buildstream/plugins/elements/filter.py b/src/buildstream/plugins/elements/filter.py index 37b205fe2..62c04e027 100644 --- a/src/buildstream/plugins/elements/filter.py +++ b/src/buildstream/plugins/elements/filter.py @@ -140,6 +140,8 @@ from buildstream import Element, ElementError, Scope class FilterElement(Element): # pylint: disable=attribute-defined-outside-init + BST_MIN_VERSION = "2.0" + BST_ARTIFACT_VERSION = 1 # The filter element's output is its dependencies, so diff --git a/src/buildstream/plugins/elements/import.py b/src/buildstream/plugins/elements/import.py index 2bbd11354..d9961aa6f 100644 --- a/src/buildstream/plugins/elements/import.py +++ b/src/buildstream/plugins/elements/import.py @@ -38,6 +38,8 @@ from buildstream import Element, ElementError class ImportElement(Element): # pylint: disable=attribute-defined-outside-init + BST_MIN_VERSION = "2.0" + # Import elements do not run any commands BST_RUN_COMMANDS = False diff --git a/src/buildstream/plugins/elements/junction.py b/src/buildstream/plugins/elements/junction.py index 46c4ddf68..917482d63 100644 --- a/src/buildstream/plugins/elements/junction.py +++ b/src/buildstream/plugins/elements/junction.py @@ -165,6 +165,8 @@ from buildstream._pipeline import PipelineError class JunctionElement(Element): # pylint: disable=attribute-defined-outside-init + BST_MIN_VERSION = "2.0" + # Junctions are not allowed any dependencies BST_FORBID_BDEPENDS = True BST_FORBID_RDEPENDS = True diff --git a/src/buildstream/plugins/elements/manual.py b/src/buildstream/plugins/elements/manual.py index c95b8e5a2..125c5142b 100644 --- a/src/buildstream/plugins/elements/manual.py +++ b/src/buildstream/plugins/elements/manual.py @@ -36,6 +36,10 @@ from buildstream import BuildElement, SandboxFlags # Element implementation for the 'manual' kind. class ManualElement(BuildElement): + # pylint: disable=attribute-defined-outside-init + + BST_MIN_VERSION = "2.0" + # Enable command batching across prepare() and assemble() def configure_sandbox(self, sandbox): super().configure_sandbox(sandbox) diff --git a/src/buildstream/plugins/elements/pip.py b/src/buildstream/plugins/elements/pip.py index 06e187b69..5f805f460 100644 --- a/src/buildstream/plugins/elements/pip.py +++ b/src/buildstream/plugins/elements/pip.py @@ -36,6 +36,10 @@ from buildstream import BuildElement, SandboxFlags # Element implementation for the 'pip' kind. class PipElement(BuildElement): + # pylint: disable=attribute-defined-outside-init + + BST_MIN_VERSION = "2.0" + # Enable command batching across prepare() and assemble() def configure_sandbox(self, sandbox): super().configure_sandbox(sandbox) diff --git a/src/buildstream/plugins/elements/script.py b/src/buildstream/plugins/elements/script.py index e355e5f05..9d780ebe2 100644 --- a/src/buildstream/plugins/elements/script.py +++ b/src/buildstream/plugins/elements/script.py @@ -40,6 +40,10 @@ import buildstream # Element implementation for the 'script' kind. class ScriptElement(buildstream.ScriptElement): + # pylint: disable=attribute-defined-outside-init + + BST_MIN_VERSION = "2.0" + def configure(self, node): for n in node.get_sequence("layout", []): dst = self.node_subst_vars(n.get_scalar("destination")) diff --git a/src/buildstream/plugins/elements/stack.py b/src/buildstream/plugins/elements/stack.py index df11a257f..b15f67073 100644 --- a/src/buildstream/plugins/elements/stack.py +++ b/src/buildstream/plugins/elements/stack.py @@ -29,6 +29,9 @@ from buildstream import Element # Element implementation for the 'stack' kind. class StackElement(Element): + # pylint: disable=attribute-defined-outside-init + + BST_MIN_VERSION = "2.0" # This plugin does not produce any artifacts when built BST_ELEMENT_HAS_ARTIFACT = False diff --git a/src/buildstream/plugins/sources/bzr.py b/src/buildstream/plugins/sources/bzr.py index 8a02eff95..93b554472 100644 --- a/src/buildstream/plugins/sources/bzr.py +++ b/src/buildstream/plugins/sources/bzr.py @@ -66,6 +66,8 @@ from buildstream import utils class BzrSource(Source): # pylint: disable=attribute-defined-outside-init + BST_MIN_VERSION = "2.0" + def configure(self, node): node.validate_keys(["url", "track", "ref", *Source.COMMON_CONFIG_KEYS]) diff --git a/src/buildstream/plugins/sources/git.py b/src/buildstream/plugins/sources/git.py index 473166132..6427d4b04 100644 --- a/src/buildstream/plugins/sources/git.py +++ b/src/buildstream/plugins/sources/git.py @@ -156,7 +156,8 @@ from buildstream import _GitSourceBase class GitSource(_GitSourceBase): - pass + + BST_MIN_VERSION = "2.0" # Plugin entry point diff --git a/src/buildstream/plugins/sources/local.py b/src/buildstream/plugins/sources/local.py index 57bcf14df..c39e09417 100644 --- a/src/buildstream/plugins/sources/local.py +++ b/src/buildstream/plugins/sources/local.py @@ -44,6 +44,8 @@ from buildstream import Source, SourceError class LocalSource(Source): # pylint: disable=attribute-defined-outside-init + BST_MIN_VERSION = "2.0" + BST_STAGE_VIRTUAL_DIRECTORY = True BST_KEY_REQUIRES_STAGE = True diff --git a/src/buildstream/plugins/sources/patch.py b/src/buildstream/plugins/sources/patch.py index f33dfedec..18672df8a 100644 --- a/src/buildstream/plugins/sources/patch.py +++ b/src/buildstream/plugins/sources/patch.py @@ -52,6 +52,8 @@ from buildstream import utils class PatchSource(Source): # pylint: disable=attribute-defined-outside-init + BST_MIN_VERSION = "2.0" + BST_REQUIRES_PREVIOUS_SOURCES_STAGE = True def configure(self, node): diff --git a/src/buildstream/plugins/sources/pip.py b/src/buildstream/plugins/sources/pip.py index 69c08e81f..c0885ce5a 100644 --- a/src/buildstream/plugins/sources/pip.py +++ b/src/buildstream/plugins/sources/pip.py @@ -98,6 +98,8 @@ _SDIST_RE = re.compile(r"^([\w.-]+?)-((?:[\d.]+){2,})\.(?:tar|tar.bz2|tar.gz|tar class PipSource(Source): # pylint: disable=attribute-defined-outside-init + BST_MIN_VERSION = "2.0" + # We need access to previous sources at track time to use requirements.txt # but not at fetch time as self.ref should contain sufficient information # for this plugin diff --git a/src/buildstream/plugins/sources/remote.py b/src/buildstream/plugins/sources/remote.py index 29333c0d9..57d8743a7 100644 --- a/src/buildstream/plugins/sources/remote.py +++ b/src/buildstream/plugins/sources/remote.py @@ -55,6 +55,8 @@ from ._downloadablefilesource import DownloadableFileSource class RemoteSource(DownloadableFileSource): # pylint: disable=attribute-defined-outside-init + BST_MIN_VERSION = "2.0" + def configure(self, node): super().configure(node) diff --git a/src/buildstream/plugins/sources/tar.py b/src/buildstream/plugins/sources/tar.py index fc4f5736a..793fd11c9 100644 --- a/src/buildstream/plugins/sources/tar.py +++ b/src/buildstream/plugins/sources/tar.py @@ -92,6 +92,8 @@ class ReadableTarInfo(tarfile.TarInfo): class TarSource(DownloadableFileSource): # pylint: disable=attribute-defined-outside-init + BST_MIN_VERSION = "2.0" + def configure(self, node): super().configure(node) diff --git a/src/buildstream/plugins/sources/workspace.py b/src/buildstream/plugins/sources/workspace.py index 13e2bb37d..796f2b3d9 100644 --- a/src/buildstream/plugins/sources/workspace.py +++ b/src/buildstream/plugins/sources/workspace.py @@ -45,6 +45,9 @@ from buildstream.node import MappingNode class WorkspaceSource(Source): # pylint: disable=attribute-defined-outside-init + + BST_MIN_VERSION = "2.0" + BST_STAGE_VIRTUAL_DIRECTORY = True BST_KEY_REQUIRES_STAGE = True diff --git a/src/buildstream/plugins/sources/zip.py b/src/buildstream/plugins/sources/zip.py index 47823dfde..c112cf10e 100644 --- a/src/buildstream/plugins/sources/zip.py +++ b/src/buildstream/plugins/sources/zip.py @@ -69,6 +69,8 @@ from ._downloadablefilesource import DownloadableFileSource class ZipSource(DownloadableFileSource): # pylint: disable=attribute-defined-outside-init + BST_MIN_VERSION = "2.0" + def configure(self, node): super().configure(node) |