diff options
Diffstat (limited to 'scripts/lib/devtool/upgrade.py')
| -rw-r--r-- | scripts/lib/devtool/upgrade.py | 85 |
1 files changed, 44 insertions, 41 deletions
diff --git a/scripts/lib/devtool/upgrade.py b/scripts/lib/devtool/upgrade.py index a5063f57a9..a4239f1cd2 100644 --- a/scripts/lib/devtool/upgrade.py +++ b/scripts/lib/devtool/upgrade.py | |||
| @@ -336,48 +336,51 @@ def upgrade(args, config, basepath, workspace): | |||
| 336 | raise DevtoolError("If you specify --srcbranch/-B then you must use --srcrev/-S to specify the revision" % args.recipename) | 336 | raise DevtoolError("If you specify --srcbranch/-B then you must use --srcrev/-S to specify the revision" % args.recipename) |
| 337 | 337 | ||
| 338 | tinfoil = setup_tinfoil(basepath=basepath, tracking=True) | 338 | tinfoil = setup_tinfoil(basepath=basepath, tracking=True) |
| 339 | rd = parse_recipe(config, tinfoil, args.recipename, True) | ||
| 340 | if not rd: | ||
| 341 | return 1 | ||
| 342 | |||
| 343 | pn = rd.getVar('PN', True) | ||
| 344 | if pn != args.recipename: | ||
| 345 | logger.info('Mapping %s to %s' % (args.recipename, pn)) | ||
| 346 | if pn in workspace: | ||
| 347 | raise DevtoolError("recipe %s is already in your workspace" % pn) | ||
| 348 | |||
| 349 | if args.srctree: | ||
| 350 | srctree = os.path.abspath(args.srctree) | ||
| 351 | else: | ||
| 352 | srctree = standard.get_default_srctree(config, pn) | ||
| 353 | |||
| 354 | standard._check_compatible_recipe(pn, rd) | ||
| 355 | old_srcrev = rd.getVar('SRCREV', True) | ||
| 356 | if old_srcrev == 'INVALID': | ||
| 357 | old_srcrev = None | ||
| 358 | if old_srcrev and not args.srcrev: | ||
| 359 | raise DevtoolError("Recipe specifies a SRCREV value; you must specify a new one when upgrading") | ||
| 360 | if rd.getVar('PV', True) == args.version and old_srcrev == args.srcrev: | ||
| 361 | raise DevtoolError("Current and upgrade versions are the same version") | ||
| 362 | |||
| 363 | rf = None | ||
| 364 | try: | 339 | try: |
| 365 | rev1 = standard._extract_source(srctree, False, 'devtool-orig', False, rd) | 340 | rd = parse_recipe(config, tinfoil, args.recipename, True) |
| 366 | rev2, md5, sha256 = _extract_new_source(args.version, srctree, args.no_patch, | 341 | if not rd: |
| 367 | args.srcrev, args.branch, args.keep_temp, | 342 | return 1 |
| 368 | tinfoil, rd) | 343 | |
| 369 | rf, copied = _create_new_recipe(args.version, md5, sha256, args.srcrev, args.srcbranch, config.workspace_path, tinfoil, rd) | 344 | pn = rd.getVar('PN', True) |
| 370 | except bb.process.CmdError as e: | 345 | if pn != args.recipename: |
| 371 | _upgrade_error(e, rf, srctree) | 346 | logger.info('Mapping %s to %s' % (args.recipename, pn)) |
| 372 | except DevtoolError as e: | 347 | if pn in workspace: |
| 373 | _upgrade_error(e, rf, srctree) | 348 | raise DevtoolError("recipe %s is already in your workspace" % pn) |
| 374 | standard._add_md5(config, pn, os.path.dirname(rf)) | 349 | |
| 375 | 350 | if args.srctree: | |
| 376 | af = _write_append(rf, srctree, args.same_dir, args.no_same_dir, rev2, | 351 | srctree = os.path.abspath(args.srctree) |
| 377 | copied, config.workspace_path, rd) | 352 | else: |
| 378 | standard._add_md5(config, pn, af) | 353 | srctree = standard.get_default_srctree(config, pn) |
| 379 | logger.info('Upgraded source extracted to %s' % srctree) | 354 | |
| 380 | logger.info('New recipe is %s' % rf) | 355 | standard._check_compatible_recipe(pn, rd) |
| 356 | old_srcrev = rd.getVar('SRCREV', True) | ||
| 357 | if old_srcrev == 'INVALID': | ||
| 358 | old_srcrev = None | ||
| 359 | if old_srcrev and not args.srcrev: | ||
| 360 | raise DevtoolError("Recipe specifies a SRCREV value; you must specify a new one when upgrading") | ||
| 361 | if rd.getVar('PV', True) == args.version and old_srcrev == args.srcrev: | ||
| 362 | raise DevtoolError("Current and upgrade versions are the same version") | ||
| 363 | |||
| 364 | rf = None | ||
| 365 | try: | ||
| 366 | rev1 = standard._extract_source(srctree, False, 'devtool-orig', False, rd) | ||
| 367 | rev2, md5, sha256 = _extract_new_source(args.version, srctree, args.no_patch, | ||
| 368 | args.srcrev, args.branch, args.keep_temp, | ||
| 369 | tinfoil, rd) | ||
| 370 | rf, copied = _create_new_recipe(args.version, md5, sha256, args.srcrev, args.srcbranch, config.workspace_path, tinfoil, rd) | ||
| 371 | except bb.process.CmdError as e: | ||
| 372 | _upgrade_error(e, rf, srctree) | ||
| 373 | except DevtoolError as e: | ||
| 374 | _upgrade_error(e, rf, srctree) | ||
| 375 | standard._add_md5(config, pn, os.path.dirname(rf)) | ||
| 376 | |||
| 377 | af = _write_append(rf, srctree, args.same_dir, args.no_same_dir, rev2, | ||
| 378 | copied, config.workspace_path, rd) | ||
| 379 | standard._add_md5(config, pn, af) | ||
| 380 | logger.info('Upgraded source extracted to %s' % srctree) | ||
| 381 | logger.info('New recipe is %s' % rf) | ||
| 382 | finally: | ||
| 383 | tinfoil.shutdown() | ||
| 381 | return 0 | 384 | return 0 |
| 382 | 385 | ||
| 383 | def register_commands(subparsers, context): | 386 | def register_commands(subparsers, context): |
