summaryrefslogtreecommitdiffstats
path: root/scripts/lib/devtool/__init__.py
diff options
context:
space:
mode:
authorPaul Eggleton <paul.eggleton@linux.intel.com>2017-07-20 16:48:13 +0200
committerRichard Purdie <richard.purdie@linuxfoundation.org>2017-07-21 08:44:25 +0100
commit0d72748e81186d38511cd691521cbd9fa7336879 (patch)
treef598056e76017584a69bb0882af47383a75e55b4 /scripts/lib/devtool/__init__.py
parentb5e42005e96d0c3ed5da72007f6c41722332afe6 (diff)
downloadpoky-0d72748e81186d38511cd691521cbd9fa7336879.tar.gz
recipetool: create: refactor code for ensuring npm is available
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). (From OE-Core rev: 8450de16ddb02d863204b411a94c6d84e0f88817) 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/__init__.py')
-rw-r--r--scripts/lib/devtool/__init__.py31
1 files changed, 0 insertions, 31 deletions
diff --git a/scripts/lib/devtool/__init__.py b/scripts/lib/devtool/__init__.py
index 29c4c05071..bba0721543 100644
--- a/scripts/lib/devtool/__init__.py
+++ b/scripts/lib/devtool/__init__.py
@@ -261,34 +261,3 @@ def get_bbclassextend_targets(recipefile, pn):
261 targets.append('%s-%s' % (pn, variant)) 261 targets.append('%s-%s' % (pn, variant))
262 return targets 262 return targets
263 263
264def ensure_npm(config, basepath, fixed_setup=False, check_exists=True):
265 """
266 Ensure that npm is available and either build it or show a
267 reasonable error message
268 """
269 if check_exists:
270 tinfoil = setup_tinfoil(config_only=False, basepath=basepath)
271 try:
272 rd = tinfoil.parse_recipe('nodejs-native')
273 nativepath = rd.getVar('STAGING_BINDIR_NATIVE')
274 finally:
275 tinfoil.shutdown()
276 npmpath = os.path.join(nativepath, 'npm')
277 build_npm = not os.path.exists(npmpath)
278 else:
279 build_npm = True
280
281 if build_npm:
282 logger.info('Building nodejs-native')
283 try:
284 exec_build_env_command(config.init_path, basepath,
285 'bitbake -q nodejs-native -c addto_recipe_sysroot', watch=True)
286 except bb.process.ExecutionError as e:
287 if "Nothing PROVIDES 'nodejs-native'" in e.stdout:
288 if fixed_setup:
289 msg = 'nodejs-native is required for npm but is not available within this SDK'
290 else:
291 msg = 'nodejs-native is required for npm but is not available - you will likely need to add a layer that provides nodejs'
292 raise DevtoolError(msg)
293 else:
294 raise