mirror of
https://git.yoctoproject.org/poky
synced 2026-06-11 04:19:50 +00:00
devtool: add: properly handle separate build directory
When we were adding a recipe for software that would typically be built in the same directory as the source, we were always using a separate build directory unless the user explicitly specified not to, leading to errors for software that doesn't expect to be built that way (such as Python modules using distutils). Split out the code that makes this determination automatically from the "devtool modify" and "devtool upgrade" code and re-use that here so the behaviour is consistent. (From OE-Core rev: 320585b7ff6340df0b0dbc63f95ed3ca8fc3a993) Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
99fc284545
commit
30c7e7ac41
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user