aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/lib/devtool/standard.py
diff options
context:
space:
mode:
authorPaul Eggleton <paul.eggleton@linux.intel.com>2017-07-19 12:07:15 +0200
committerPaul Eggleton <paul.eggleton@linux.intel.com>2017-07-20 16:35:47 +0200
commitcb0b757b99a3b0dc6a4c7fefb2f5681bcc687335 (patch)
tree4dccbefb685e417ba8cea815d397c06d0fd81f31 /scripts/lib/devtool/standard.py
parent2ef340f8455cf236cb192243e48e92808cf19512 (diff)
downloadopenembedded-core-contrib-cb0b757b99a3b0dc6a4c7fefb2f5681bcc687335.tar.gz
recipetool: create: refactor code for ensuring npm is availablepaule/devtool27
Across devtool and recipetool we had an ugly set of code for ensuring that we can call an npm binary, and much of that ugliness was a result of not being able to run build tasks when tinfoil was active - if recipetool found that npm was required and we didn't know beforehand (e.g. we're fetching from a plain git repository as opposed to an npm:// URL where it's obvious) then it had to exit and return a special result code, so that devtool knew it needed to build nodejs-native and then call recipetool again. Now that we are using real build tasks to fetch and unpack, we can drop most of this and move the code to the one place where it's still needed (i.e. create_npm where we potentially have to deal with node.js code in a plain source repository). Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Diffstat (limited to 'scripts/lib/devtool/standard.py')
-rw-r--r--scripts/lib/devtool/standard.py34
1 files changed, 8 insertions, 26 deletions
diff --git a/scripts/lib/devtool/standard.py b/scripts/lib/devtool/standard.py
index 0104e675db..54558ce799 100644
--- a/scripts/lib/devtool/standard.py
+++ b/scripts/lib/devtool/standard.py
@@ -30,7 +30,7 @@ import errno
import glob
import filecmp
from collections import OrderedDict
-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
+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
from devtool import parse_recipe
logger = logging.getLogger('devtool')
@@ -128,9 +128,6 @@ def add(args, config, basepath, workspace):
color = args.color
extracmdopts = ''
if args.fetchuri:
- if args.fetchuri.startswith('npm://'):
- ensure_npm(config, basepath, args.fixed_setup)
-
source = args.fetchuri
if srctree:
extracmdopts += ' -x %s' % srctree
@@ -155,28 +152,13 @@ def add(args, config, basepath, workspace):
tempdir = tempfile.mkdtemp(prefix='devtool')
try:
- builtnpm = False
- while True:
- try:
- stdout, _ = exec_build_env_command(config.init_path, basepath, 'recipetool --color=%s create --devtool -o %s \'%s\' %s' % (color, tempdir, source, extracmdopts), watch=True)
- except bb.process.ExecutionError as e:
- if e.exitcode == 14:
- if builtnpm:
- raise DevtoolError('Re-running recipetool still failed to find npm')
- # FIXME this is a horrible hack that is unfortunately
- # necessary due to the fact that we can't run bitbake from
- # inside recipetool since recipetool keeps tinfoil active
- # with references to it throughout the code, so we have
- # to exit out and come back here to do it.
- ensure_npm(config, basepath, args.fixed_setup, check_exists=False)
- logger.info('Re-running recipe creation process after building nodejs')
- builtnpm = True
- continue
- elif e.exitcode == 15:
- raise DevtoolError('Could not auto-determine recipe name, please specify it on the command line')
- else:
- raise DevtoolError('Command \'%s\' failed' % e.command)
- break
+ try:
+ stdout, _ = exec_build_env_command(config.init_path, basepath, 'recipetool --color=%s create --devtool -o %s \'%s\' %s' % (color, tempdir, source, extracmdopts), watch=True)
+ except bb.process.ExecutionError as e:
+ if e.exitcode == 15:
+ raise DevtoolError('Could not auto-determine recipe name, please specify it on the command line')
+ else:
+ raise DevtoolError('Command \'%s\' failed' % e.command)
recipes = glob.glob(os.path.join(tempdir, '*.bb'))
if recipes: