conf/layer.conf: Update LAYERSERIES_COMPAT to warrior
[meta-ossystems-base.git] / classes / ossystems-distro-version.bbclass
1 # -*- python -*-
2 # ossystems-distro-version.bbclass provides a DISTRO_VERSION variable
3 # that can be used to identify the release of a product.
4 #
5 # The OSSYSTEMS_DISTRO_VERSION_DEVEL_SUFFIX variable are used to
6 # configure the class. It allows to override the suffix used for
7 # development versions. By default the '+devel' value is used however
8 # depending on the product needs other variables can be used as well
9 # (e.g: '-snapthost-${DATE}').
10 #
11 # Copyright (C) 2009-2016, O.S. Systems Softwares Ltda.  All Rights Reserved
12 # Released under the MIT license (see packages/COPYING)
13
14 OSSYSTEMS_DISTRO_VERSION_DEVEL_SUFFIX ?= "+devel"
15
16 def ossystems_get_distro_version(d):
17     import re, os, os.path
18
19     devel_version = d.getVar('OSSYSTEMS_DISTRO_VERSION_DEVEL_SUFFIX', False)
20     devel_version_re = "^((\d+\.)+\d+)-\d+-g\w+$"
21     stable_version_re = "^(\d+\.)+\d+$"
22
23     bspdir = d.getVar('PLATFORM_ROOT_DIR', True)
24     layerdir = os.path.join(bspdir, '.repo', 'manifests')
25
26     cmd = 'cd %s ; git describe --always 2> /dev/null' % (layerdir)
27     output = os.popen(cmd).read().strip()
28
29     if re.compile(stable_version_re).match(output):
30         return output
31     else:
32         is_devel = re.compile(devel_version_re).match(output)
33         if is_devel:
34             return "%s%s" % (is_devel.group(1), devel_version)
35
36     return "0.0.0-git%s" % devel_version
37
38 DISTRO_VERSION := "${@ossystems_get_distro_version(d)}"