@@ -433,8 +433,7 @@ def setupNodeEnvironment(args, add_graal_vm_args=True):
433433 else :
434434 mx .warn ("No standalones available. Falling back to default mx node command.\n You need to dynamically import '/vm,/substratevm' (or at least '/vm'). Example: 'mx --env svm node'" )
435435
436- if mx .suite ('vm' , fatalIfMissing = False ) is not None and mx .suite ('substratevm' , fatalIfMissing = False ) is not None :
437- _prepare_svm_env ()
436+ if mx .suite ('vm' , fatalIfMissing = False ) is not None and mx .suite ('substratevm' , fatalIfMissing = False ) is not None and _prepare_svm_env ():
438437 return mode , vmArgs , progArgs , nodeExe
439438
440439 if mx .suite ('vm' , fatalIfMissing = False ) is not None or mx .suite ('substratevm' , fatalIfMissing = False ) is not None :
@@ -581,21 +580,27 @@ def build(args):
581580 overrideBuild ()
582581
583582def _prepare_svm_env ():
583+ nodejs_component = mx_sdk_vm .graalvm_component_by_name ('njs' )
584584 import mx_vm
585585 if hasattr (mx_vm , 'graalvm_home' ):
586586 graalvm_home = mx_vm .graalvm_home ()
587587 else :
588588 import mx_sdk_vm_impl
589589 graalvm_home = mx_sdk_vm_impl .graalvm_home ()
590+ try :
591+ import mx_sdk_vm_impl
592+ if mx_sdk_vm_impl ._has_skipped_libraries (nodejs_component ):
593+ mx .logv (f"Not running on SubstrateVM since { nodejs_component } component has skipped libraries" )
594+ return False
595+ except (ModuleNotFoundError , AttributeError ) as e :
596+ mx .warn (f"{ e } " )
597+
590598 libgraal_nodejs_filename = mx .add_lib_suffix (mx .add_lib_prefix ('graal-nodejs' ))
591- candidates = [join (graalvm_home , directory , libgraal_nodejs_filename ) for directory in [join ('jre' , 'languages' , 'nodejs' , 'lib' ), join ('languages' , 'nodejs' , 'lib' )]]
592- libgraal_nodejs = None
593- for candidate in candidates :
594- if exists (candidate ):
595- libgraal_nodejs = candidate
596- if libgraal_nodejs is None :
597- mx .abort ("Cannot find graal-nodejs library in '{}'.\n Did you forget to build it (e.g., using 'mx --env svm build')?" .format (candidates ))
599+ libgraal_nodejs = join (graalvm_home , 'languages' , 'nodejs' , 'lib' , libgraal_nodejs_filename )
600+ if not exists (libgraal_nodejs ):
601+ mx .abort ("Cannot find graal-nodejs library in '{}'.\n Did you forget to build it (e.g., using 'mx --env svm build')?" .format (libgraal_nodejs ))
598602 _setEnvVar ('NODE_JVM_LIB' , libgraal_nodejs )
603+ return True
599604
600605def mx_post_parse_cmd_line (args ):
601606 mx_graal_nodejs_benchmark .register_nodejs_vms ()
0 commit comments