diff options
Diffstat (limited to 'scripts/lib/devtool/upgrade.py')
| -rw-r--r-- | scripts/lib/devtool/upgrade.py | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/scripts/lib/devtool/upgrade.py b/scripts/lib/devtool/upgrade.py index f077f37726..1f11d47e5a 100644 --- a/scripts/lib/devtool/upgrade.py +++ b/scripts/lib/devtool/upgrade.py | |||
| @@ -180,7 +180,7 @@ def _get_uri(rd): | |||
| 180 | srcuri = rev_re.sub('', srcuri) | 180 | srcuri = rev_re.sub('', srcuri) |
| 181 | return srcuri, srcrev | 181 | return srcuri, srcrev |
| 182 | 182 | ||
| 183 | def _extract_new_source(newpv, srctree, no_patch, srcrev, branch, keep_temp, tinfoil, rd): | 183 | def _extract_new_source(newpv, srctree, no_patch, srcrev, srcbranch, branch, keep_temp, tinfoil, rd): |
| 184 | """Extract sources of a recipe with a new version""" | 184 | """Extract sources of a recipe with a new version""" |
| 185 | 185 | ||
| 186 | def __run(cmd): | 186 | def __run(cmd): |
| @@ -202,6 +202,23 @@ def _extract_new_source(newpv, srctree, no_patch, srcrev, branch, keep_temp, tin | |||
| 202 | __run('git tag -f devtool-base-new') | 202 | __run('git tag -f devtool-base-new') |
| 203 | md5 = None | 203 | md5 = None |
| 204 | sha256 = None | 204 | sha256 = None |
| 205 | if not srcbranch: | ||
| 206 | check_branch, check_branch_err = __run('git branch -r --contains %s' % srcrev) | ||
| 207 | get_branch = [x.strip() for x in check_branch.splitlines()] | ||
| 208 | # Remove HEAD reference point and drop remote prefix | ||
| 209 | get_branch = [x.split('/', 1)[1] for x in get_branch if not x.startswith('origin/HEAD')] | ||
| 210 | if 'master' in get_branch: | ||
| 211 | # If it is master, we do not need to append 'branch=master' as this is default. | ||
| 212 | # Even with the case where get_branch has multiple objects, if 'master' is one | ||
| 213 | # of them, we should default take from 'master' | ||
| 214 | srcbranch = '' | ||
| 215 | elif len(get_branch) == 1: | ||
| 216 | # If 'master' isn't in get_branch and get_branch contains only ONE object, then store result into 'srcbranch' | ||
| 217 | srcbranch = get_branch[0] | ||
| 218 | else: | ||
| 219 | # If get_branch contains more than one objects, then display error and exit. | ||
| 220 | mbrch = '\n ' + '\n '.join(get_branch) | ||
| 221 | raise DevtoolError('Revision %s was found on multiple branches: %s\nPlease provide the correct branch in the devtool command with "--srcbranch" or "-B" option.' % (srcrev, mbrch)) | ||
| 205 | else: | 222 | else: |
| 206 | __run('git checkout devtool-base -b devtool-%s' % newpv) | 223 | __run('git checkout devtool-base -b devtool-%s' % newpv) |
| 207 | 224 | ||
| @@ -275,7 +292,7 @@ def _extract_new_source(newpv, srctree, no_patch, srcrev, branch, keep_temp, tin | |||
| 275 | else: | 292 | else: |
| 276 | shutil.rmtree(tmpsrctree) | 293 | shutil.rmtree(tmpsrctree) |
| 277 | 294 | ||
| 278 | return (rev, md5, sha256) | 295 | return (rev, md5, sha256, srcbranch) |
| 279 | 296 | ||
| 280 | def _create_new_recipe(newpv, md5, sha256, srcrev, srcbranch, workspace, tinfoil, rd): | 297 | def _create_new_recipe(newpv, md5, sha256, srcrev, srcbranch, workspace, tinfoil, rd): |
| 281 | """Creates the new recipe under workspace""" | 298 | """Creates the new recipe under workspace""" |
| @@ -374,10 +391,10 @@ def upgrade(args, config, basepath, workspace): | |||
| 374 | rf = None | 391 | rf = None |
| 375 | try: | 392 | try: |
| 376 | rev1 = standard._extract_source(srctree, False, 'devtool-orig', False, rd, tinfoil) | 393 | rev1 = standard._extract_source(srctree, False, 'devtool-orig', False, rd, tinfoil) |
| 377 | rev2, md5, sha256 = _extract_new_source(args.version, srctree, args.no_patch, | 394 | rev2, md5, sha256, srcbranch = _extract_new_source(args.version, srctree, args.no_patch, |
| 378 | args.srcrev, args.branch, args.keep_temp, | 395 | args.srcrev, args.srcbranch, args.branch, args.keep_temp, |
| 379 | tinfoil, rd) | 396 | tinfoil, rd) |
| 380 | rf, copied = _create_new_recipe(args.version, md5, sha256, args.srcrev, args.srcbranch, config.workspace_path, tinfoil, rd) | 397 | rf, copied = _create_new_recipe(args.version, md5, sha256, args.srcrev, srcbranch, config.workspace_path, tinfoil, rd) |
| 381 | except bb.process.CmdError as e: | 398 | except bb.process.CmdError as e: |
| 382 | _upgrade_error(e, rf, srctree) | 399 | _upgrade_error(e, rf, srctree) |
| 383 | except DevtoolError as e: | 400 | except DevtoolError as e: |
