mirror of
https://git.yoctoproject.org/poky
synced 2026-02-26 19:39:40 +01:00
Replace os.popen with subprocess.Popen since the older function would fail (more or less) silently if the executed program cannot be found There are both bb.process.run() and bb.process.Popen() which wraps the subprocess module, use it for simplifying the code. Note: We don't need the "2>/dev/null" or "2>&1" since bb.process.run() can handle it, it will raise exception when error occurs, we should handle the exception ourselves if we want to ignore the error. More info: http://docs.python.org/library/subprocess.html#subprocess-replacements [YOCTO #2454] (From OE-Core rev: e83d8e58a6b107eea87df0ec233a1bc932b2c6ea) Signed-off-by: Robert Yang <liezhi.yang@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
76 lines
1.9 KiB
Plaintext
76 lines
1.9 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:
|
|
monotone_branch = file( "%s/_MTN/options" % path ).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:
|
|
monotone_revision = file( "%s/_MTN/revision" % path ).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):
|
|
revision = "<unknown>"
|
|
try:
|
|
revision = file( "%s/.svn/entries" % path ).readlines()[3].strip()
|
|
except IOError:
|
|
pass
|
|
return revision
|
|
|
|
def base_get_metadata_git_branch(path, d):
|
|
branch = bb.process.run('cd %s; git branch | grep "^* " | tr -d "* "' % path)[0]
|
|
|
|
if len(branch) != 0:
|
|
return branch
|
|
return "<unknown>"
|
|
|
|
def base_get_metadata_git_revision(path, d):
|
|
rev = bb.process.run("cd %s; git log -n 1 --pretty=oneline" % path)[0]
|
|
if len(rev) != 0:
|
|
rev = rev.split(" ")[0]
|
|
return rev
|
|
return "<unknown>"
|
|
|