Function base_get_metadata_svn_revision was crashing due to an uncaught IndexError exception. The except notation without parentheses is legacy syntax. It is the equivalent to 'except IOError as IndexError' which is not what we want here. The change catches both exceptions. (From OE-Core rev: 33bea949bae54ddc89aa83cf07d7b1ee62e2b393) Signed-off-by: Merten Sach <msach@mailbox.tu-berlin.de> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
83 lines
2.5 KiB
Text
83 lines
2.5 KiB
Text
METADATA_BRANCH ?= "${@base_detect_branch(d)}"
|
|
METADATA_REVISION ?= "${@base_detect_revision(d)}"
|
|
|
|
def base_detect_revision(d):
|
|
path = base_get_scmbasepath(d)
|
|
|
|
scms = [base_get_metadata_git_revision, \
|
|
base_get_metadata_svn_revision]
|
|
|
|
for scm in scms:
|
|
rev = scm(path, d)
|
|
if rev != "<unknown>":
|
|
return rev
|
|
|
|
return "<unknown>"
|
|
|
|
def base_detect_branch(d):
|
|
path = base_get_scmbasepath(d)
|
|
|
|
scms = [base_get_metadata_git_branch]
|
|
|
|
for scm in scms:
|
|
rev = scm(path, d)
|
|
if rev != "<unknown>":
|
|
return rev.strip()
|
|
|
|
return "<unknown>"
|
|
|
|
def base_get_scmbasepath(d):
|
|
return d.getVar( 'COREBASE', True)
|
|
|
|
def base_get_metadata_monotone_branch(path, d):
|
|
monotone_branch = "<unknown>"
|
|
try:
|
|
with open("%s/_MTN/options" % path) as f:
|
|
monotone_branch = f.read().strip()
|
|
if monotone_branch.startswith( "database" ):
|
|
monotone_branch_words = monotone_branch.split()
|
|
monotone_branch = monotone_branch_words[ monotone_branch_words.index( "branch" )+1][1:-1]
|
|
except:
|
|
pass
|
|
return monotone_branch
|
|
|
|
def base_get_metadata_monotone_revision(path, d):
|
|
monotone_revision = "<unknown>"
|
|
try:
|
|
with open("%s/_MTN/revision" % path) as f:
|
|
monotone_revision = f.read().strip()
|
|
if monotone_revision.startswith( "format_version" ):
|
|
monotone_revision_words = monotone_revision.split()
|
|
monotone_revision = monotone_revision_words[ monotone_revision_words.index( "old_revision" )+1][1:-1]
|
|
except IOError:
|
|
pass
|
|
return monotone_revision
|
|
|
|
def base_get_metadata_svn_revision(path, d):
|
|
# This only works with older subversion. For newer versions
|
|
# this function will need to be fixed by someone interested
|
|
revision = "<unknown>"
|
|
try:
|
|
with open("%s/.svn/entries" % path) as f:
|
|
revision = f.readlines()[3].strip()
|
|
except (IOError, IndexError):
|
|
pass
|
|
return revision
|
|
|
|
def base_get_metadata_git_branch(path, d):
|
|
branch = os.popen('cd %s; git branch 2>&1 | grep "^* " | tr -d "* "' % path).read()
|
|
|
|
if len(branch) != 0:
|
|
return branch
|
|
return "<unknown>"
|
|
|
|
def base_get_metadata_git_revision(path, d):
|
|
f = os.popen("cd %s; git log -n 1 --pretty=oneline -- 2>&1" % path)
|
|
data = f.read()
|
|
if f.close() is None:
|
|
rev = data.split(" ")[0]
|
|
if len(rev) != 0:
|
|
return rev
|
|
return "<unknown>"
|
|
|