devtool: update-recipe: check if source tree is a git repository

If you've done "devtool add" (or "devtool modify" without -x) then it's
possible that the external source tree is not a git repository, so we
should handle that case here instead of printing a traceback.

(From OE-Core rev: eb2147aa8facd4ef33a0749e9ae660ec686dad48)

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Paul Eggleton
2015-04-27 10:53:21 +01:00
committed by Richard Purdie
parent d6cd355def
commit 216d26aac2

View File

@@ -477,13 +477,19 @@ def update_recipe(args, config, basepath, workspace):
return updated
srctree = workspace[args.recipename]
if mode == 'srcrev':
(stdout, _) = bb.process.run('git rev-parse HEAD', cwd=srctree)
srcrev = stdout.strip()
if len(srcrev) != 40:
logger.error('Invalid hash returned by git: %s' % stdout)
return 1
# Get HEAD revision
try:
(stdout, _) = bb.process.run('git rev-parse HEAD', cwd=srctree)
except bb.process.ExecutionError as err:
print('Failed to get HEAD revision in %s: %s' % (srctree, err))
return 1
srcrev = stdout.strip()
if len(srcrev) != 40:
logger.error('Invalid hash returned by git: %s' % stdout)
return 1
if mode == 'srcrev':
logger.info('Updating SRCREV in recipe %s' % os.path.basename(recipefile))
patchfields = {}
patchfields['SRCREV'] = srcrev