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: |