summaryrefslogtreecommitdiff
path: root/src/buildstream/plugins
diff options
context:
space:
mode:
authorTristan Van Berkom <tristan.vanberkom@codethink.co.uk>2020-04-28 19:23:31 +0900
committerTristan Van Berkom <tristan.vanberkom@codethink.co.uk>2020-04-29 16:24:59 +0900
commita311a14f4b0a649b5f872ab020885b0a1d6e09d1 (patch)
treec94ddb9ff24108b72d4e0c2e8902bf24d6702b95 /src/buildstream/plugins
parentb3556a3284708b904f20586d4636c31a91106809 (diff)
downloadbuildstream-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.py4
-rw-r--r--src/buildstream/plugins/elements/compose.py2
-rw-r--r--src/buildstream/plugins/elements/filter.py2
-rw-r--r--src/buildstream/plugins/elements/import.py2
-rw-r--r--src/buildstream/plugins/elements/junction.py2
-rw-r--r--src/buildstream/plugins/elements/manual.py4
-rw-r--r--src/buildstream/plugins/elements/pip.py4
-rw-r--r--src/buildstream/plugins/elements/script.py4
-rw-r--r--src/buildstream/plugins/elements/stack.py3
-rw-r--r--src/buildstream/plugins/sources/bzr.py2
-rw-r--r--src/buildstream/plugins/sources/git.py3
-rw-r--r--src/buildstream/plugins/sources/local.py2
-rw-r--r--src/buildstream/plugins/sources/patch.py2
-rw-r--r--src/buildstream/plugins/sources/pip.py2
-rw-r--r--src/buildstream/plugins/sources/remote.py2
-rw-r--r--src/buildstream/plugins/sources/tar.py2
-rw-r--r--src/buildstream/plugins/sources/workspace.py3
-rw-r--r--src/buildstream/plugins/sources/zip.py2
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)