diff options
Diffstat (limited to 'scripts/lib/devtool')
| -rw-r--r-- | scripts/lib/devtool/standard.py | 48 |
1 files changed, 35 insertions, 13 deletions
diff --git a/scripts/lib/devtool/standard.py b/scripts/lib/devtool/standard.py index 390d98fd55..262ba0989b 100644 --- a/scripts/lib/devtool/standard.py +++ b/scripts/lib/devtool/standard.py | |||
| @@ -393,6 +393,38 @@ class BbTaskExecutor(object): | |||
| 393 | self.executed.append(func) | 393 | self.executed.append(func) |
| 394 | 394 | ||
| 395 | 395 | ||
| 396 | class PatchTaskExecutor(BbTaskExecutor): | ||
| 397 | def __init__(self, rdata): | ||
| 398 | self.check_git = False | ||
| 399 | super(PatchTaskExecutor, self).__init__(rdata) | ||
| 400 | |||
| 401 | def exec_func(self, func, report): | ||
| 402 | from oe.patch import GitApplyTree | ||
| 403 | srcsubdir = self.rdata.getVar('S', True) | ||
| 404 | haspatches = False | ||
| 405 | if func == 'do_patch': | ||
| 406 | patchdir = os.path.join(srcsubdir, 'patches') | ||
| 407 | if os.path.exists(patchdir): | ||
| 408 | if os.listdir(patchdir): | ||
| 409 | haspatches = True | ||
| 410 | else: | ||
| 411 | os.rmdir(patchdir) | ||
| 412 | |||
| 413 | super(PatchTaskExecutor, self).exec_func(func, report) | ||
| 414 | if self.check_git and os.path.exists(srcsubdir): | ||
| 415 | if func == 'do_patch': | ||
| 416 | if os.path.exists(patchdir): | ||
| 417 | shutil.rmtree(patchdir) | ||
| 418 | if haspatches: | ||
| 419 | stdout, _ = bb.process.run('git status --porcelain patches', cwd=srcsubdir) | ||
| 420 | if stdout: | ||
| 421 | bb.process.run('git checkout patches', cwd=srcsubdir) | ||
| 422 | |||
| 423 | stdout, _ = bb.process.run('git status --porcelain', cwd=srcsubdir) | ||
| 424 | if stdout: | ||
| 425 | bb.process.run('git add .; git commit -a -m "Committing changes from %s\n\n%s"' % (func, GitApplyTree.ignore_commit_prefix + ' - from %s' % func), cwd=srcsubdir) | ||
| 426 | |||
| 427 | |||
| 396 | def _prep_extract_operation(config, basepath, recipename): | 428 | def _prep_extract_operation(config, basepath, recipename): |
| 397 | """HACK: Ugly workaround for making sure that requirements are met when | 429 | """HACK: Ugly workaround for making sure that requirements are met when |
| 398 | trying to extract a package. Returns the tinfoil instance to be used.""" | 430 | trying to extract a package. Returns the tinfoil instance to be used.""" |
| @@ -477,7 +509,7 @@ def _extract_source(srctree, keep_temp, devbranch, sync, d): | |||
| 477 | # We don't want to move the source to STAGING_KERNEL_DIR here | 509 | # We don't want to move the source to STAGING_KERNEL_DIR here |
| 478 | crd.setVar('STAGING_KERNEL_DIR', '${S}') | 510 | crd.setVar('STAGING_KERNEL_DIR', '${S}') |
| 479 | 511 | ||
| 480 | task_executor = BbTaskExecutor(crd) | 512 | task_executor = PatchTaskExecutor(crd) |
| 481 | 513 | ||
| 482 | crd.setVar('EXTERNALSRC_forcevariable', '') | 514 | crd.setVar('EXTERNALSRC_forcevariable', '') |
| 483 | 515 | ||
| @@ -491,6 +523,8 @@ def _extract_source(srctree, keep_temp, devbranch, sync, d): | |||
| 491 | task_executor.exec_func('do_kernel_checkout', False) | 523 | task_executor.exec_func('do_kernel_checkout', False) |
| 492 | srcsubdir = crd.getVar('S', True) | 524 | srcsubdir = crd.getVar('S', True) |
| 493 | 525 | ||
| 526 | task_executor.check_git = True | ||
| 527 | |||
| 494 | # Move local source files into separate subdir | 528 | # Move local source files into separate subdir |
| 495 | recipe_patches = [os.path.basename(patch) for patch in | 529 | recipe_patches = [os.path.basename(patch) for patch in |
| 496 | oe.recipeutils.get_recipe_patches(crd)] | 530 | oe.recipeutils.get_recipe_patches(crd)] |
| @@ -524,13 +558,6 @@ def _extract_source(srctree, keep_temp, devbranch, sync, d): | |||
| 524 | 558 | ||
| 525 | scriptutils.git_convert_standalone_clone(srcsubdir) | 559 | scriptutils.git_convert_standalone_clone(srcsubdir) |
| 526 | 560 | ||
| 527 | patchdir = os.path.join(srcsubdir, 'patches') | ||
| 528 | haspatches = False | ||
| 529 | if os.path.exists(patchdir): | ||
| 530 | if os.listdir(patchdir): | ||
| 531 | haspatches = True | ||
| 532 | else: | ||
| 533 | os.rmdir(patchdir) | ||
| 534 | # Make sure that srcsubdir exists | 561 | # Make sure that srcsubdir exists |
| 535 | bb.utils.mkdirhier(srcsubdir) | 562 | bb.utils.mkdirhier(srcsubdir) |
| 536 | if not os.path.exists(srcsubdir) or not os.listdir(srcsubdir): | 563 | if not os.path.exists(srcsubdir) or not os.listdir(srcsubdir): |
| @@ -550,11 +577,6 @@ def _extract_source(srctree, keep_temp, devbranch, sync, d): | |||
| 550 | 577 | ||
| 551 | bb.process.run('git tag -f devtool-patched', cwd=srcsubdir) | 578 | bb.process.run('git tag -f devtool-patched', cwd=srcsubdir) |
| 552 | 579 | ||
| 553 | if os.path.exists(patchdir): | ||
| 554 | shutil.rmtree(patchdir) | ||
| 555 | if haspatches: | ||
| 556 | bb.process.run('git checkout patches', cwd=srcsubdir) | ||
| 557 | |||
| 558 | if bb.data.inherits_class('kernel-yocto', d): | 580 | if bb.data.inherits_class('kernel-yocto', d): |
| 559 | # Store generate and store kernel config | 581 | # Store generate and store kernel config |
| 560 | logger.info('Generating kernel config') | 582 | logger.info('Generating kernel config') |
