diff options
Diffstat (limited to 'scripts/lib/devtool/standard.py')
-rw-r--r-- | scripts/lib/devtool/standard.py | 31 |
1 files changed, 22 insertions, 9 deletions
diff --git a/scripts/lib/devtool/standard.py b/scripts/lib/devtool/standard.py index 02ed23574b..4b9b173156 100644 --- a/scripts/lib/devtool/standard.py +++ b/scripts/lib/devtool/standard.py | |||
@@ -30,7 +30,7 @@ import errno | |||
30 | import glob | 30 | import glob |
31 | import filecmp | 31 | import filecmp |
32 | from collections import OrderedDict | 32 | from collections import OrderedDict |
33 | from devtool import exec_build_env_command, setup_tinfoil, check_workspace_recipe, use_external_build, setup_git_repo, recipe_to_append, get_bbclassextend_targets, DevtoolError | 33 | from devtool import exec_build_env_command, setup_tinfoil, check_workspace_recipe, use_external_build, setup_git_repo, recipe_to_append, get_bbclassextend_targets, ensure_npm, DevtoolError |
34 | from devtool import parse_recipe | 34 | from devtool import parse_recipe |
35 | 35 | ||
36 | logger = logging.getLogger('devtool') | 36 | logger = logging.getLogger('devtool') |
@@ -128,6 +128,9 @@ def add(args, config, basepath, workspace): | |||
128 | color = args.color | 128 | color = args.color |
129 | extracmdopts = '' | 129 | extracmdopts = '' |
130 | if args.fetchuri: | 130 | if args.fetchuri: |
131 | if args.fetchuri.startswith('npm://'): | ||
132 | ensure_npm(config, basepath, args.fixed_setup) | ||
133 | |||
131 | source = args.fetchuri | 134 | source = args.fetchuri |
132 | if srctree: | 135 | if srctree: |
133 | extracmdopts += ' -x %s' % srctree | 136 | extracmdopts += ' -x %s' % srctree |
@@ -150,13 +153,23 @@ def add(args, config, basepath, workspace): | |||
150 | 153 | ||
151 | tempdir = tempfile.mkdtemp(prefix='devtool') | 154 | tempdir = tempfile.mkdtemp(prefix='devtool') |
152 | try: | 155 | try: |
153 | try: | 156 | while True: |
154 | stdout, _ = exec_build_env_command(config.init_path, basepath, 'recipetool --color=%s create -o %s "%s" %s' % (color, tempdir, source, extracmdopts)) | 157 | try: |
155 | except bb.process.ExecutionError as e: | 158 | stdout, _ = exec_build_env_command(config.init_path, basepath, 'recipetool --color=%s create -o %s "%s" %s' % (color, tempdir, source, extracmdopts)) |
156 | if e.exitcode == 15: | 159 | except bb.process.ExecutionError as e: |
157 | raise DevtoolError('Could not auto-determine recipe name, please specify it on the command line') | 160 | if e.exitcode == 14: |
158 | else: | 161 | # FIXME this is a horrible hack that is unfortunately |
159 | raise DevtoolError('Command \'%s\' failed:\n%s' % (e.command, e.stdout)) | 162 | # necessary due to the fact that we can't run bitbake from |
163 | # inside recipetool since recipetool keeps tinfoil active | ||
164 | # with references to it throughout the code, so we have | ||
165 | # to exit out and come back here to do it. | ||
166 | ensure_npm(config, basepath, args.fixed_setup) | ||
167 | continue | ||
168 | elif e.exitcode == 15: | ||
169 | raise DevtoolError('Could not auto-determine recipe name, please specify it on the command line') | ||
170 | else: | ||
171 | raise DevtoolError('Command \'%s\' failed:\n%s' % (e.command, e.stdout)) | ||
172 | break | ||
160 | 173 | ||
161 | recipes = glob.glob(os.path.join(tempdir, '*.bb')) | 174 | recipes = glob.glob(os.path.join(tempdir, '*.bb')) |
162 | if recipes: | 175 | if recipes: |
@@ -1567,7 +1580,7 @@ def register_commands(subparsers, context): | |||
1567 | parser_add.add_argument('--binary', '-b', help='Treat the source tree as something that should be installed verbatim (no compilation, same directory structure). Useful with binary packages e.g. RPMs.', action='store_true') | 1580 | parser_add.add_argument('--binary', '-b', help='Treat the source tree as something that should be installed verbatim (no compilation, same directory structure). Useful with binary packages e.g. RPMs.', action='store_true') |
1568 | parser_add.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') | 1581 | parser_add.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') |
1569 | parser_add.add_argument('--src-subdir', help='Specify subdirectory within source tree to use', metavar='SUBDIR') | 1582 | parser_add.add_argument('--src-subdir', help='Specify subdirectory within source tree to use', metavar='SUBDIR') |
1570 | parser_add.set_defaults(func=add) | 1583 | parser_add.set_defaults(func=add, fixed_setup=context.fixed_setup) |
1571 | 1584 | ||
1572 | parser_modify = subparsers.add_parser('modify', help='Modify the source for an existing recipe', | 1585 | parser_modify = subparsers.add_parser('modify', help='Modify the source for an existing recipe', |
1573 | description='Sets up the build environment to modify the source for an existing recipe. The default behaviour is to extract the source being fetched by the recipe into a git tree so you can work on it; alternatively if you already have your own pre-prepared source tree you can specify -n/--no-extract.', | 1586 | description='Sets up the build environment to modify the source for an existing recipe. The default behaviour is to extract the source being fetched by the recipe into a git tree so you can work on it; alternatively if you already have your own pre-prepared source tree you can specify -n/--no-extract.', |