diff options
author | Tristan Maat <tristan.maat@codethink.co.uk> | 2018-06-08 13:46:40 +0100 |
---|---|---|
committer | Tristan Maat <tristan.maat@codethink.co.uk> | 2018-06-11 12:21:04 +0100 |
commit | 95c03c63efcc54e5119f692cf8a500f6a2c9570d (patch) | |
tree | da3c801e5a4d6c9c75a7d2fe063752b6fb7a170b | |
parent | ea775fa30ba0087b8d2f8cb50ad00d41aa808fe3 (diff) | |
download | buildstream-95c03c63efcc54e5119f692cf8a500f6a2c9570d.tar.gz |
Handle missing tags in git repositories correctly380-untagged-bst
-rw-r--r-- | buildstream/_plugincontext.py | 6 | ||||
-rw-r--r-- | buildstream/_project.py | 7 | ||||
-rw-r--r-- | buildstream/utils.py | 3 |
3 files changed, 14 insertions, 2 deletions
diff --git a/buildstream/_plugincontext.py b/buildstream/_plugincontext.py index 0be3de1b1..c84af4f0a 100644 --- a/buildstream/_plugincontext.py +++ b/buildstream/_plugincontext.py @@ -21,7 +21,7 @@ import os import inspect -from ._exceptions import PluginError +from ._exceptions import AppError, PluginError from . import utils @@ -211,6 +211,10 @@ class PluginContext(): # Now assert BuildStream version bst_major, bst_minor = utils.get_bst_version() + if (bst_major, bst_minor) == (None, None): + raise AppError("Your git repository has no tags - BuildStream can't" + " determine its version. Please run `git fetch --tags`.") + if bst_major < plugin_type.BST_REQUIRED_VERSION_MAJOR or \ (bst_major == plugin_type.BST_REQUIRED_VERSION_MAJOR and bst_minor < plugin_type.BST_REQUIRED_VERSION_MINOR): diff --git a/buildstream/_project.py b/buildstream/_project.py index 9f42bf613..91e65fed8 100644 --- a/buildstream/_project.py +++ b/buildstream/_project.py @@ -27,7 +27,7 @@ from . import _cachekey from . import _site from . import _yaml from ._profile import Topics, profile_start, profile_end -from ._exceptions import LoadError, LoadErrorReason +from ._exceptions import AppError, LoadError, LoadErrorReason from ._options import OptionPool from ._artifactcache import ArtifactCache from ._elementfactory import ElementFactory @@ -237,6 +237,11 @@ class Project(): format_version = _yaml.node_get(config, int, 'format-version') if BST_FORMAT_VERSION < format_version: major, minor = utils.get_bst_version() + + if (major, minor) == (None, None): + raise AppError("Your git repository has no tags - BuildStream can't" + " determine its version. Please run `git fetch --tags`.") + raise LoadError( LoadErrorReason.UNSUPPORTED_PROJECT, "Project requested format version {}, but BuildStream {}.{} only supports up until format version {}" diff --git a/buildstream/utils.py b/buildstream/utils.py index 70759dc12..7f3fdbc51 100644 --- a/buildstream/utils.py +++ b/buildstream/utils.py @@ -472,6 +472,9 @@ def get_bst_version(): from . import __version__ versions = __version__.split('.')[:2] + if versions[0] == '0+untagged': + return (None, None) + return (int(versions[0]), int(versions[1])) |