mirror of
https://git.yoctoproject.org/poky
synced 2026-05-30 00:20:08 +00:00
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>
This commit is contained in:
committed by
Richard Purdie
parent
b5e42005e9
commit
0d72748e81
@@ -1152,22 +1152,6 @@ def convert_rpm_xml(xmlfile):
|
||||
return values
|
||||
|
||||
|
||||
def check_npm(tinfoil, debugonly=False):
|
||||
try:
|
||||
rd = tinfoil.parse_recipe('nodejs-native')
|
||||
except bb.providers.NoProvider:
|
||||
# We still conditionally show the message and exit with the special
|
||||
# return code, otherwise we can't show the proper message for eSDK
|
||||
# users
|
||||
log_error_cond('nodejs-native is required for npm but is not available - you will likely need to add a layer that provides nodejs', debugonly)
|
||||
sys.exit(14)
|
||||
bindir = rd.getVar('STAGING_BINDIR_NATIVE')
|
||||
npmpath = os.path.join(bindir, 'npm')
|
||||
if not os.path.exists(npmpath):
|
||||
log_error_cond('npm required to process specified source, but npm is not available - you need to run bitbake -c addto_recipe_sysroot nodejs-native first', debugonly)
|
||||
sys.exit(14)
|
||||
return bindir
|
||||
|
||||
def register_commands(subparsers):
|
||||
parser_create = subparsers.add_parser('create',
|
||||
help='Create a new recipe',
|
||||
@@ -1185,8 +1169,5 @@ def register_commands(subparsers):
|
||||
parser_create.add_argument('--keep-temp', action="store_true", help='Keep temporary directory (for debugging)')
|
||||
parser_create.add_argument('--fetch-dev', action="store_true", help='For npm, also fetch devDependencies')
|
||||
parser_create.add_argument('--devtool', action="store_true", help=argparse.SUPPRESS)
|
||||
# FIXME I really hate having to set parserecipes for this, but given we may need
|
||||
# to call into npm (and we don't know in advance if we will or not) and in order
|
||||
# to do so we need to know npm's recipe sysroot path, there's not much alternative
|
||||
parser_create.set_defaults(func=create_recipe, parserecipes=True)
|
||||
parser_create.set_defaults(func=create_recipe)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user