summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTristan Maat <tristan.maat@codethink.co.uk>2018-06-08 13:46:40 +0100
committerTristan Maat <tristan.maat@codethink.co.uk>2018-06-11 12:21:04 +0100
commit95c03c63efcc54e5119f692cf8a500f6a2c9570d (patch)
treeda3c801e5a4d6c9c75a7d2fe063752b6fb7a170b
parentea775fa30ba0087b8d2f8cb50ad00d41aa808fe3 (diff)
downloadbuildstream-380-untagged-bst.tar.gz
Handle missing tags in git repositories correctly380-untagged-bst
-rw-r--r--buildstream/_plugincontext.py6
-rw-r--r--buildstream/_project.py7
-rw-r--r--buildstream/utils.py3
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]))