diff options
Diffstat (limited to 'scripts/lib/devtool/standard.py')
-rw-r--r-- | scripts/lib/devtool/standard.py | 30 |
1 files changed, 15 insertions, 15 deletions
diff --git a/scripts/lib/devtool/standard.py b/scripts/lib/devtool/standard.py index ec21b3c139..700a56b4ed 100644 --- a/scripts/lib/devtool/standard.py +++ b/scripts/lib/devtool/standard.py @@ -25,7 +25,7 @@ import logging import argparse import scriptutils import errno -from devtool import exec_build_env_command, setup_tinfoil, check_workspace_recipe, DevtoolError +from devtool import exec_build_env_command, setup_tinfoil, check_workspace_recipe, use_external_build, DevtoolError from devtool import parse_recipe logger = logging.getLogger('devtool') @@ -107,17 +107,26 @@ def add(args, config, basepath, workspace): (stdout, _) = bb.process.run('git rev-parse HEAD', cwd=srctree) initial_rev = stdout.rstrip() + tinfoil = setup_tinfoil(config_only=True) + rd = oe.recipeutils.parse_recipe(recipefile, None, tinfoil.config_data) + if not rd: + return 1 + appendfile = os.path.join(appendpath, '%s.bbappend' % bp) with open(appendfile, 'w') as f: f.write('inherit externalsrc\n') f.write('EXTERNALSRC = "%s"\n' % srctree) - if args.same_dir: + + b_is_s = use_external_build(args.same_dir, args.no_same_dir, rd) + if b_is_s: f.write('EXTERNALSRC_BUILD = "%s"\n' % srctree) if initial_rev: f.write('\n# initial_rev: %s\n' % initial_rev) _add_md5(config, args.recipename, appendfile) + tinfoil.shutdown() + return 0 @@ -483,18 +492,7 @@ def modify(args, config, basepath, workspace): f.write('# NOTE: We use pn- overrides here to avoid affecting multiple variants in the case where the recipe uses BBCLASSEXTEND\n') f.write('EXTERNALSRC_pn-%s = "%s"\n' % (args.recipename, srctree)) - b_is_s = True - if args.no_same_dir: - logger.info('using separate build directory since --no-same-dir specified') - b_is_s = False - elif args.same_dir: - logger.info('using source tree as build directory since --same-dir specified') - elif bb.data.inherits_class('autotools-brokensep', rd): - logger.info('using source tree as build directory since original recipe inherits autotools-brokensep') - elif rd.getVar('B', True) == s: - logger.info('using source tree as build directory since that is the default for this recipe') - else: - b_is_s = False + b_is_s = use_external_build(args.same_dir, args.no_same_dir, rd) if b_is_s: f.write('EXTERNALSRC_BUILD_pn-%s = "%s"\n' % (args.recipename, srctree)) @@ -876,7 +874,9 @@ def register_commands(subparsers, context): description='Adds a new recipe') parser_add.add_argument('recipename', help='Name for new recipe to add') parser_add.add_argument('srctree', help='Path to external source tree') - parser_add.add_argument('--same-dir', '-s', help='Build in same directory as source', action="store_true") + group = parser_add.add_mutually_exclusive_group() + group.add_argument('--same-dir', '-s', help='Build in same directory as source', action="store_true") + group.add_argument('--no-same-dir', help='Force build in a separate build directory', action="store_true") parser_add.add_argument('--fetch', '-f', help='Fetch the specified URI and extract it to create the source tree', metavar='URI') parser_add.add_argument('--version', '-V', help='Version to use within recipe (PV)') parser_add.set_defaults(func=add) |