diff options
Diffstat (limited to 'scripts/lib/devtool/__init__.py')
| -rw-r--r-- | scripts/lib/devtool/__init__.py | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/scripts/lib/devtool/__init__.py b/scripts/lib/devtool/__init__.py index b432e3d44e..e675133f63 100644 --- a/scripts/lib/devtool/__init__.py +++ b/scripts/lib/devtool/__init__.py | |||
| @@ -259,3 +259,32 @@ def get_bbclassextend_targets(recipefile, pn): | |||
| 259 | elif variant in ['native', 'cross', 'crosssdk']: | 259 | elif variant in ['native', 'cross', 'crosssdk']: |
| 260 | targets.append('%s-%s' % (pn, variant)) | 260 | targets.append('%s-%s' % (pn, variant)) |
| 261 | return targets | 261 | return targets |
| 262 | |||
| 263 | def ensure_npm(config, basepath, fixed_setup=False): | ||
| 264 | """ | ||
| 265 | Ensure that npm is available and either build it or show a | ||
| 266 | reasonable error message | ||
| 267 | """ | ||
| 268 | tinfoil = setup_tinfoil(config_only=True, basepath=basepath) | ||
| 269 | try: | ||
| 270 | nativepath = tinfoil.config_data.getVar('STAGING_BINDIR_NATIVE', True) | ||
| 271 | finally: | ||
| 272 | tinfoil.shutdown() | ||
| 273 | |||
| 274 | npmpath = os.path.join(nativepath, 'npm') | ||
| 275 | if not os.path.exists(npmpath): | ||
| 276 | logger.info('Building nodejs-native') | ||
| 277 | try: | ||
| 278 | exec_build_env_command(config.init_path, basepath, | ||
| 279 | 'bitbake -q nodejs-native', watch=True) | ||
| 280 | except bb.process.ExecutionError as e: | ||
| 281 | if "Nothing PROVIDES 'nodejs-native'" in e.stdout: | ||
| 282 | if fixed_setup: | ||
| 283 | msg = 'nodejs-native is required for npm but is not available within this SDK' | ||
| 284 | else: | ||
| 285 | msg = 'nodejs-native is required for npm but is not available - you will likely need to add a layer that provides nodejs' | ||
| 286 | raise DevtoolError(msg) | ||
| 287 | else: | ||
| 288 | raise | ||
| 289 | if not os.path.exists(npmpath): | ||
| 290 | raise DevtoolError('Built nodejs-native but npm binary still could not be found at %s' % npmpath) | ||
