diff options
Diffstat (limited to 'scripts/lib/devtool/standard.py')
-rw-r--r-- | scripts/lib/devtool/standard.py | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/scripts/lib/devtool/standard.py b/scripts/lib/devtool/standard.py index 9bd2d8613d..7fee304572 100644 --- a/scripts/lib/devtool/standard.py +++ b/scripts/lib/devtool/standard.py | |||
@@ -30,7 +30,7 @@ import errno | |||
30 | import glob | 30 | import glob |
31 | import filecmp | 31 | import filecmp |
32 | from collections import OrderedDict | 32 | from collections import OrderedDict |
33 | from devtool import exec_build_env_command, setup_tinfoil, check_workspace_recipe, use_external_build, setup_git_repo, recipe_to_append, get_bbclassextend_targets, update_unlockedsigs, check_prerelease_version, DevtoolError | 33 | from devtool import exec_build_env_command, setup_tinfoil, check_workspace_recipe, use_external_build, setup_git_repo, recipe_to_append, get_bbclassextend_targets, update_unlockedsigs, check_prerelease_version, check_git_repo_dirty, check_git_repo_op, DevtoolError |
34 | from devtool import parse_recipe | 34 | from devtool import parse_recipe |
35 | 35 | ||
36 | logger = logging.getLogger('devtool') | 36 | logger = logging.getLogger('devtool') |
@@ -1675,6 +1675,18 @@ def finish(args, config, basepath, workspace): | |||
1675 | 1675 | ||
1676 | check_workspace_recipe(workspace, args.recipename) | 1676 | check_workspace_recipe(workspace, args.recipename) |
1677 | 1677 | ||
1678 | # Grab the equivalent of COREBASE without having to initialise tinfoil | ||
1679 | corebasedir = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..', '..')) | ||
1680 | |||
1681 | srctree = workspace[args.recipename]['srctree'] | ||
1682 | check_git_repo_op(srctree, [corebasedir]) | ||
1683 | dirty = check_git_repo_dirty(srctree) | ||
1684 | if dirty: | ||
1685 | if args.force: | ||
1686 | logger.warning('Source tree is not clean, continuing as requested by -f/--force') | ||
1687 | else: | ||
1688 | raise DevtoolError('Source tree is not clean:\n\n%s\nEnsure you have committed your changes or use -f/--force if you are sure there\'s nothing that needs to be committed' % dirty) | ||
1689 | |||
1678 | no_clean = False | 1690 | no_clean = False |
1679 | tinfoil = setup_tinfoil(basepath=basepath, tracking=True) | 1691 | tinfoil = setup_tinfoil(basepath=basepath, tracking=True) |
1680 | try: | 1692 | try: |
@@ -1867,10 +1879,11 @@ def register_commands(subparsers, context): | |||
1867 | parser_reset.set_defaults(func=reset) | 1879 | parser_reset.set_defaults(func=reset) |
1868 | 1880 | ||
1869 | parser_finish = subparsers.add_parser('finish', help='Finish working on a recipe in your workspace', | 1881 | parser_finish = subparsers.add_parser('finish', help='Finish working on a recipe in your workspace', |
1870 | description='Pushes any committed changes to the specified recipe to the specified layer and removes it from your workspace. Roughly equivalent to an update-recipe followed by reset, except the update-recipe step will do the "right thing" depending on the recipe and the destination layer specified.', | 1882 | description='Pushes any committed changes to the specified recipe to the specified layer and removes it from your workspace. Roughly equivalent to an update-recipe followed by reset, except the update-recipe step will do the "right thing" depending on the recipe and the destination layer specified. Note that your changes must have been committed to the git repository in order to be recognised.', |
1871 | group='working', order=-100) | 1883 | group='working', order=-100) |
1872 | parser_finish.add_argument('recipename', help='Recipe to finish') | 1884 | parser_finish.add_argument('recipename', help='Recipe to finish') |
1873 | parser_finish.add_argument('destination', help='Layer/path to put recipe into. Can be the name of a layer configured in your bblayers.conf, the path to the base of a layer, or a partial path inside a layer. %(prog)s will attempt to complete the path based on the layer\'s structure.') | 1885 | parser_finish.add_argument('destination', help='Layer/path to put recipe into. Can be the name of a layer configured in your bblayers.conf, the path to the base of a layer, or a partial path inside a layer. %(prog)s will attempt to complete the path based on the layer\'s structure.') |
1874 | parser_finish.add_argument('--mode', '-m', choices=['patch', 'srcrev', 'auto'], default='auto', help='Update mode (where %(metavar)s is %(choices)s; default is %(default)s)', metavar='MODE') | 1886 | parser_finish.add_argument('--mode', '-m', choices=['patch', 'srcrev', 'auto'], default='auto', help='Update mode (where %(metavar)s is %(choices)s; default is %(default)s)', metavar='MODE') |
1875 | parser_finish.add_argument('--initial-rev', help='Override starting revision for patches') | 1887 | parser_finish.add_argument('--initial-rev', help='Override starting revision for patches') |
1888 | parser_finish.add_argument('--force', '-f', action="store_true", help='Force continuing even if there are uncommitted changes in the source tree repository') | ||
1876 | parser_finish.set_defaults(func=finish) | 1889 | parser_finish.set_defaults(func=finish) |