sb. Add VERSION support for releasing the RSB.

Add support to release the RSB by adding the VERSION file. The file
is a single line with the version.

Fix the reports to include the version. Update the INI file
support to include the details of the build.

Show the GIT or released version when the command starts.

Closes #2480.
This commit is contained in:
Chris Johns
2015-12-03 22:22:17 +11:00
parent 7164e6195f
commit 47d703fd8c
9 changed files with 164 additions and 48 deletions

View File

@@ -1,6 +1,6 @@
#
# RTEMS Tools Project (http://www.rtems.org/)
# Copyright 2010-2014 Chris Johns (chrisj@rtems.org)
# Copyright 2010-2015 Chris Johns (chrisj@rtems.org)
# All rights reserved.
#
# This file is part of the RTEMS Tools package in 'rtems-tools'.
@@ -18,17 +18,73 @@
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#
# Manage paths locally. The internally the path is in Unix or shell format and
# we convert to the native format when performing operations at the Python
# level. This allows macro expansion to work.
# To release the RSB create a git archive and then add a suitable VERSION file
# to the top directory.
#
import sys
import error
import git
import path
major = 4
minor = 11
revision = 0
#
# Default to an internal string.
#
_version_str = '%d.%d.%d' % (major, minor, revision)
_released = False
_git = False
def _top():
top = path.dirname(sys.argv[0])
if len(top) == 0:
top = '.'
return top
def _load_released_version():
global _released
global _version_str
top = _top()
for ver in [top, '..']:
if path.exists(path.join(ver, 'VERSION')):
try:
with open(path.join(ver, 'VERSION')) as v:
_version_str = v.readline().strip()
v.close()
_released = True
except:
raise error.general('Cannot access the VERSION file')
return _released
def _load_git_version():
global _git
global _version_str
repo = git.repo(_top())
if repo.valid():
head = repo.head()
if repo.dirty():
modified = ' modified'
else:
modified = ''
_version_str = '%d.%d.%d (%s%s)' % (major, minor, revision, head[0:12], modified)
_git = True
return _git
def released():
return _load_released_version()
def version_control():
return _load_git_version()
def str():
return '%d.%d.%d'% (major, minor, revision)
if not _released and not _git:
if not _load_released_version():
_load_git_version()
return _version_str
if __name__ == '__main__':
print 'major = %d' % (major)