diff options
Diffstat (limited to 'scripts/lib')
| -rw-r--r-- | scripts/lib/devtool/__init__.py | 18 | ||||
| -rw-r--r-- | scripts/lib/devtool/standard.py | 30 | ||||
| -rw-r--r-- | scripts/lib/devtool/upgrade.py | 20 |
3 files changed, 36 insertions, 32 deletions
diff --git a/scripts/lib/devtool/__init__.py b/scripts/lib/devtool/__init__.py index 3ea38028d4..07a3636e9b 100644 --- a/scripts/lib/devtool/__init__.py +++ b/scripts/lib/devtool/__init__.py | |||
| @@ -152,3 +152,21 @@ def check_workspace_recipe(workspace, pn, checksrc=True): | |||
| 152 | raise DevtoolError("Source tree %s for recipe %s does not exist" % (srctree, pn)) | 152 | raise DevtoolError("Source tree %s for recipe %s does not exist" % (srctree, pn)) |
| 153 | if not os.listdir(srctree): | 153 | if not os.listdir(srctree): |
| 154 | raise DevtoolError("Source tree %s for recipe %s is empty" % (srctree, pn)) | 154 | raise DevtoolError("Source tree %s for recipe %s is empty" % (srctree, pn)) |
| 155 | |||
| 156 | def use_external_build(same_dir, no_same_dir, d): | ||
| 157 | """ | ||
| 158 | Determine if we should use B!=S (separate build and source directories) or not | ||
| 159 | """ | ||
| 160 | b_is_s = True | ||
| 161 | if no_same_dir: | ||
| 162 | logger.info('Using separate build directory since --no-same-dir specified') | ||
| 163 | b_is_s = False | ||
| 164 | elif same_dir: | ||
| 165 | logger.info('Using source tree as build directory since --same-dir specified') | ||
| 166 | elif bb.data.inherits_class('autotools-brokensep', d): | ||
| 167 | logger.info('Using source tree as build directory since recipe inherits autotools-brokensep') | ||
| 168 | elif d.getVar('B', True) == os.path.abspath(d.getVar('S', True)): | ||
| 169 | logger.info('Using source tree as build directory since that would be the default for this recipe') | ||
| 170 | else: | ||
| 171 | b_is_s = False | ||
| 172 | return b_is_s | ||
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 | |||
| 25 | import argparse | 25 | import argparse |
| 26 | import scriptutils | 26 | import scriptutils |
| 27 | import errno | 27 | import errno |
| 28 | from devtool import exec_build_env_command, setup_tinfoil, check_workspace_recipe, DevtoolError | 28 | from devtool import exec_build_env_command, setup_tinfoil, check_workspace_recipe, use_external_build, DevtoolError |
| 29 | from devtool import parse_recipe | 29 | from devtool import parse_recipe |
| 30 | 30 | ||
| 31 | logger = logging.getLogger('devtool') | 31 | logger = 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) |
diff --git a/scripts/lib/devtool/upgrade.py b/scripts/lib/devtool/upgrade.py index 86443b0735..6c1dfee3fe 100644 --- a/scripts/lib/devtool/upgrade.py +++ b/scripts/lib/devtool/upgrade.py | |||
| @@ -29,7 +29,7 @@ import errno | |||
| 29 | import bb | 29 | import bb |
| 30 | import oe.recipeutils | 30 | import oe.recipeutils |
| 31 | from devtool import standard | 31 | from devtool import standard |
| 32 | from devtool import exec_build_env_command, setup_tinfoil, DevtoolError, parse_recipe | 32 | from devtool import exec_build_env_command, setup_tinfoil, DevtoolError, parse_recipe, use_external_build |
| 33 | 33 | ||
| 34 | logger = logging.getLogger('devtool') | 34 | logger = logging.getLogger('devtool') |
| 35 | 35 | ||
| @@ -126,21 +126,6 @@ def _rename_recipe_files(bpn, oldpv, newpv, path): | |||
| 126 | _rename_recipe_dirs(oldpv, newpv, path) | 126 | _rename_recipe_dirs(oldpv, newpv, path) |
| 127 | return _rename_recipe_file(bpn, oldpv, newpv, path) | 127 | return _rename_recipe_file(bpn, oldpv, newpv, path) |
| 128 | 128 | ||
| 129 | def _use_external_build(same_dir, no_same_dir, d): | ||
| 130 | b_is_s = True | ||
| 131 | if no_same_dir: | ||
| 132 | logger.info('using separate build directory since --no-same-dir specified') | ||
| 133 | b_is_s = False | ||
| 134 | elif same_dir: | ||
| 135 | logger.info('using source tree as build directory since --same-dir specified') | ||
| 136 | elif bb.data.inherits_class('autotools-brokensep', d): | ||
| 137 | logger.info('using source tree as build directory since original recipe inherits autotools-brokensep') | ||
| 138 | elif d.getVar('B', True) == os.path.abspath(d.getVar('S', True)): | ||
| 139 | logger.info('using source tree as build directory since that is the default for this recipe') | ||
| 140 | else: | ||
| 141 | b_is_s = False | ||
| 142 | return b_is_s | ||
| 143 | |||
| 144 | def _write_append(rc, srctree, same_dir, no_same_dir, rev, workspace, d): | 129 | def _write_append(rc, srctree, same_dir, no_same_dir, rev, workspace, d): |
| 145 | """Writes an append file""" | 130 | """Writes an append file""" |
| 146 | if not os.path.exists(rc): | 131 | if not os.path.exists(rc): |
| @@ -161,7 +146,8 @@ def _write_append(rc, srctree, same_dir, no_same_dir, rev, workspace, d): | |||
| 161 | f.write(('# NOTE: We use pn- overrides here to avoid affecting' | 146 | f.write(('# NOTE: We use pn- overrides here to avoid affecting' |
| 162 | 'multiple variants in the case where the recipe uses BBCLASSEXTEND\n')) | 147 | 'multiple variants in the case where the recipe uses BBCLASSEXTEND\n')) |
| 163 | f.write('EXTERNALSRC_pn-%s = "%s"\n' % (pn, srctree)) | 148 | f.write('EXTERNALSRC_pn-%s = "%s"\n' % (pn, srctree)) |
| 164 | if _use_external_build(same_dir, no_same_dir, d): | 149 | b_is_s = use_external_build(same_dir, no_same_dir, d) |
| 150 | if b_is_s: | ||
| 165 | f.write('EXTERNALSRC_BUILD_pn-%s = "%s"\n' % (pn, srctree)) | 151 | f.write('EXTERNALSRC_BUILD_pn-%s = "%s"\n' % (pn, srctree)) |
| 166 | if rev: | 152 | if rev: |
| 167 | f.write('\n# initial_rev: %s\n' % rev) | 153 | f.write('\n# initial_rev: %s\n' % rev) |
