summaryrefslogtreecommitdiffstats
path: root/scripts/lib/devtool
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/lib/devtool')
-rw-r--r--scripts/lib/devtool/__init__.py25
-rw-r--r--scripts/lib/devtool/standard.py2
2 files changed, 15 insertions, 12 deletions
diff --git a/scripts/lib/devtool/__init__.py b/scripts/lib/devtool/__init__.py
index 8c385beb89..d646b0cf63 100644
--- a/scripts/lib/devtool/__init__.py
+++ b/scripts/lib/devtool/__init__.py
@@ -261,23 +261,28 @@ 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): 264def ensure_npm(config, basepath, fixed_setup=False, check_exists=True):
265 """ 265 """
266 Ensure that npm is available and either build it or show a 266 Ensure that npm is available and either build it or show a
267 reasonable error message 267 reasonable error message
268 """ 268 """
269 tinfoil = setup_tinfoil(config_only=True, basepath=basepath) 269 if check_exists:
270 try: 270 tinfoil = setup_tinfoil(config_only=False, basepath=basepath)
271 nativepath = tinfoil.config_data.getVar('STAGING_BINDIR_NATIVE') 271 try:
272 finally: 272 rd = tinfoil.parse_recipe('nodejs-native')
273 tinfoil.shutdown() 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
274 280
275 npmpath = os.path.join(nativepath, 'npm') 281 if build_npm:
276 if not os.path.exists(npmpath):
277 logger.info('Building nodejs-native') 282 logger.info('Building nodejs-native')
278 try: 283 try:
279 exec_build_env_command(config.init_path, basepath, 284 exec_build_env_command(config.init_path, basepath,
280 'bitbake -q nodejs-native', watch=True) 285 'bitbake -q nodejs-native -c addto_recipe_sysroot', watch=True)
281 except bb.process.ExecutionError as e: 286 except bb.process.ExecutionError as e:
282 if "Nothing PROVIDES 'nodejs-native'" in e.stdout: 287 if "Nothing PROVIDES 'nodejs-native'" in e.stdout:
283 if fixed_setup: 288 if fixed_setup:
@@ -287,5 +292,3 @@ def ensure_npm(config, basepath, fixed_setup=False):
287 raise DevtoolError(msg) 292 raise DevtoolError(msg)
288 else: 293 else:
289 raise 294 raise
290 if not os.path.exists(npmpath):
291 raise DevtoolError('Built nodejs-native but npm binary still could not be found at %s' % npmpath)
diff --git a/scripts/lib/devtool/standard.py b/scripts/lib/devtool/standard.py
index ffca2c9ec4..73e629ca6f 100644
--- a/scripts/lib/devtool/standard.py
+++ b/scripts/lib/devtool/standard.py
@@ -165,7 +165,7 @@ def add(args, config, basepath, workspace):
165 # inside recipetool since recipetool keeps tinfoil active 165 # inside recipetool since recipetool keeps tinfoil active
166 # with references to it throughout the code, so we have 166 # with references to it throughout the code, so we have
167 # to exit out and come back here to do it. 167 # to exit out and come back here to do it.
168 ensure_npm(config, basepath, args.fixed_setup) 168 ensure_npm(config, basepath, args.fixed_setup, check_exists=False)
169 logger.info('Re-running recipe creation process after building nodejs') 169 logger.info('Re-running recipe creation process after building nodejs')
170 continue 170 continue
171 elif e.exitcode == 15: 171 elif e.exitcode == 15: