summaryrefslogtreecommitdiffstats
path: root/scripts/lib/devtool/standard.py
diff options
context:
space:
mode:
authorPaul Eggleton <paul.eggleton@linux.intel.com>2015-09-22 17:21:27 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2015-09-23 09:53:15 +0100
commit30c7e7ac41ba201d41613d1482abeebdbd05ae46 (patch)
treeddea262ec8e5d690008b427191a7b98b4a079cbc /scripts/lib/devtool/standard.py
parent99fc284545d3a493ce57e904c233e0130022dae7 (diff)
downloadpoky-30c7e7ac41ba201d41613d1482abeebdbd05ae46.tar.gz
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>
Diffstat (limited to 'scripts/lib/devtool/standard.py')
-rw-r--r--scripts/lib/devtool/standard.py30
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
25import argparse 25import argparse
26import scriptutils 26import scriptutils
27import errno 27import errno
28from devtool import exec_build_env_command, setup_tinfoil, check_workspace_recipe, DevtoolError 28from devtool import exec_build_env_command, setup_tinfoil, check_workspace_recipe, use_external_build, DevtoolError
29from devtool import parse_recipe 29from devtool import parse_recipe
30 30
31logger = logging.getLogger('devtool') 31logger = logging.getLogger('devtool')
@@ -107,17 +107,26 @@ def add(args, config, basepath, workspace):
107 (stdout, _) = bb.process.run('git rev-parse HEAD', cwd=srctree) 107 (stdout, _) = bb.process.run('git rev-parse HEAD', cwd=srctree)
108 initial_rev = stdout.rstrip() 108 initial_rev = stdout.rstrip()
109 109
110 tinfoil = setup_tinfoil(config_only=True)
111 rd = oe.recipeutils.parse_recipe(recipefile, None, tinfoil.config_data)
112 if not rd:
113 return 1
114
110 appendfile = os.path.join(appendpath, '%s.bbappend' % bp) 115 appendfile = os.path.join(appendpath, '%s.bbappend' % bp)
111 with open(appendfile, 'w') as f: 116 with open(appendfile, 'w') as f:
112 f.write('inherit externalsrc\n') 117 f.write('inherit externalsrc\n')
113 f.write('EXTERNALSRC = "%s"\n' % srctree) 118 f.write('EXTERNALSRC = "%s"\n' % srctree)
114 if args.same_dir: 119
120 b_is_s = use_external_build(args.same_dir, args.no_same_dir, rd)
121 if b_is_s:
115 f.write('EXTERNALSRC_BUILD = "%s"\n' % srctree) 122 f.write('EXTERNALSRC_BUILD = "%s"\n' % srctree)
116 if initial_rev: 123 if initial_rev:
117 f.write('\n# initial_rev: %s\n' % initial_rev) 124 f.write('\n# initial_rev: %s\n' % initial_rev)
118 125
119 _add_md5(config, args.recipename, appendfile) 126 _add_md5(config, args.recipename, appendfile)
120 127
128 tinfoil.shutdown()
129
121 return 0 130 return 0
122 131
123 132
@@ -483,18 +492,7 @@ def modify(args, config, basepath, workspace):
483 f.write('# NOTE: We use pn- overrides here to avoid affecting multiple variants in the case where the recipe uses BBCLASSEXTEND\n') 492 f.write('# NOTE: We use pn- overrides here to avoid affecting multiple variants in the case where the recipe uses BBCLASSEXTEND\n')
484 f.write('EXTERNALSRC_pn-%s = "%s"\n' % (args.recipename, srctree)) 493 f.write('EXTERNALSRC_pn-%s = "%s"\n' % (args.recipename, srctree))
485 494
486 b_is_s = True 495 b_is_s = use_external_build(args.same_dir, args.no_same_dir, rd)
487 if args.no_same_dir:
488 logger.info('using separate build directory since --no-same-dir specified')
489 b_is_s = False
490 elif args.same_dir:
491 logger.info('using source tree as build directory since --same-dir specified')
492 elif bb.data.inherits_class('autotools-brokensep', rd):
493 logger.info('using source tree as build directory since original recipe inherits autotools-brokensep')
494 elif rd.getVar('B', True) == s:
495 logger.info('using source tree as build directory since that is the default for this recipe')
496 else:
497 b_is_s = False
498 if b_is_s: 496 if b_is_s:
499 f.write('EXTERNALSRC_BUILD_pn-%s = "%s"\n' % (args.recipename, srctree)) 497 f.write('EXTERNALSRC_BUILD_pn-%s = "%s"\n' % (args.recipename, srctree))
500 498
@@ -876,7 +874,9 @@ def register_commands(subparsers, context):
876 description='Adds a new recipe') 874 description='Adds a new recipe')
877 parser_add.add_argument('recipename', help='Name for new recipe to add') 875 parser_add.add_argument('recipename', help='Name for new recipe to add')
878 parser_add.add_argument('srctree', help='Path to external source tree') 876 parser_add.add_argument('srctree', help='Path to external source tree')
879 parser_add.add_argument('--same-dir', '-s', help='Build in same directory as source', action="store_true") 877 group = parser_add.add_mutually_exclusive_group()
878 group.add_argument('--same-dir', '-s', help='Build in same directory as source', action="store_true")
879 group.add_argument('--no-same-dir', help='Force build in a separate build directory', action="store_true")
880 parser_add.add_argument('--fetch', '-f', help='Fetch the specified URI and extract it to create the source tree', metavar='URI') 880 parser_add.add_argument('--fetch', '-f', help='Fetch the specified URI and extract it to create the source tree', metavar='URI')
881 parser_add.add_argument('--version', '-V', help='Version to use within recipe (PV)') 881 parser_add.add_argument('--version', '-V', help='Version to use within recipe (PV)')
882 parser_add.set_defaults(func=add) 882 parser_add.set_defaults(func=add)