diff options
author | Paul Eggleton <paul.eggleton@linux.intel.com> | 2016-01-07 00:15:52 +1300 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2016-01-11 15:41:46 +0000 |
commit | ec9016821d5c2a120dcb7e5d4b8cde02c2b45b51 (patch) | |
tree | eb7b023daa216f427c598d8efc47981e8d2a49ed /scripts/lib/recipetool | |
parent | 99e3872d89432566f0b46347c0d0c2b9177eddf7 (diff) | |
download | poky-ec9016821d5c2a120dcb7e5d4b8cde02c2b45b51.tar.gz |
devtool: add: support adding a native variant
Sometimes you need to build a variant of a recipe for the build
host as well as for the target (i.e. BBCLASSEXTEND = "native"); add a
--also-native command line option to "recipetool create" that enables
this and plumb it through from an identical option for "devtool add".
(We could conceivably do the same for nativesdk, but I felt it might be
confusing within the context of the extensible SDK, where nativesdk
isn't really relevant to the user.)
(From OE-Core rev: f3bea83db173cce921a9a30f04e88b7e3ed98854)
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'scripts/lib/recipetool')
-rw-r--r-- | scripts/lib/recipetool/create.py | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/scripts/lib/recipetool/create.py b/scripts/lib/recipetool/create.py index 775be42c11..4f95d7e3ae 100644 --- a/scripts/lib/recipetool/create.py +++ b/scripts/lib/recipetool/create.py | |||
@@ -252,8 +252,14 @@ def create_recipe(args): | |||
252 | if args.name: | 252 | if args.name: |
253 | pn = args.name | 253 | pn = args.name |
254 | if args.name.endswith('-native'): | 254 | if args.name.endswith('-native'): |
255 | if args.also_native: | ||
256 | logger.error('--also-native cannot be specified for a recipe named *-native (*-native denotes a recipe that is already only for native) - either remove the -native suffix from the name or drop --also-native') | ||
257 | sys.exit(1) | ||
255 | classes.append('native') | 258 | classes.append('native') |
256 | elif args.name.startswith('nativesdk-'): | 259 | elif args.name.startswith('nativesdk-'): |
260 | if args.also_native: | ||
261 | logger.error('--also-native cannot be specified for a recipe named nativesdk-* (nativesdk-* denotes a recipe that is already only for nativesdk)') | ||
262 | sys.exit(1) | ||
257 | classes.append('nativesdk') | 263 | classes.append('nativesdk') |
258 | 264 | ||
259 | if pv and pv not in 'git svn hg'.split(): | 265 | if pv and pv not in 'git svn hg'.split(): |
@@ -393,6 +399,22 @@ def create_recipe(args): | |||
393 | line = re.sub('"[^+]*\+', '"%s+' % realpv, line) | 399 | line = re.sub('"[^+]*\+', '"%s+' % realpv, line) |
394 | lines_before.append(line) | 400 | lines_before.append(line) |
395 | 401 | ||
402 | if args.also_native: | ||
403 | lines = lines_after | ||
404 | lines_after = [] | ||
405 | bbclassextend = None | ||
406 | for line in lines: | ||
407 | if line.startswith('BBCLASSEXTEND ='): | ||
408 | splitval = line.split('"') | ||
409 | if len(splitval) > 1: | ||
410 | bbclassextend = splitval[1].split() | ||
411 | if not 'native' in bbclassextend: | ||
412 | bbclassextend.insert(0, 'native') | ||
413 | line = 'BBCLASSEXTEND = "%s"' % ' '.join(bbclassextend) | ||
414 | lines_after.append(line) | ||
415 | if not bbclassextend: | ||
416 | lines_after.append('BBCLASSEXTEND = "native"') | ||
417 | |||
396 | outlines = [] | 418 | outlines = [] |
397 | outlines.extend(lines_before) | 419 | outlines.extend(lines_before) |
398 | if classes: | 420 | if classes: |
@@ -591,5 +613,6 @@ def register_commands(subparsers): | |||
591 | parser_create.add_argument('-N', '--name', help='Name to use within recipe (PN)') | 613 | parser_create.add_argument('-N', '--name', help='Name to use within recipe (PN)') |
592 | parser_create.add_argument('-V', '--version', help='Version to use within recipe (PV)') | 614 | parser_create.add_argument('-V', '--version', help='Version to use within recipe (PV)') |
593 | parser_create.add_argument('-b', '--binary', help='Treat the source tree as something that should be installed verbatim (no compilation, same directory structure)', action='store_true') | 615 | parser_create.add_argument('-b', '--binary', help='Treat the source tree as something that should be installed verbatim (no compilation, same directory structure)', action='store_true') |
616 | parser_create.add_argument('--also-native', help='Also add native variant (i.e. support building recipe for the build host as well as the target machine)', action='store_true') | ||
594 | parser_create.set_defaults(func=create_recipe) | 617 | parser_create.set_defaults(func=create_recipe) |
595 | 618 | ||