mirror of
https://git.yoctoproject.org/poky
synced 2026-01-29 21:08:42 +01:00
This avoids crashing on newer svn layouts where the entries files don't contain three lines. If someone wants to fix this to get the right version on newer subversion checkouts, patches welcome but this at least stops things crashing. [YOCTO #5363] (From OE-Core rev: e850c53d4d8cb877a704a23f9ce02d6185ba3ffa) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
83 lines
2.5 KiB
Plaintext
83 lines
2.5 KiB
Plaintext
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>"
|
|
|