Skip to content

Commit 12e24da

Browse files
committed
Handle skipped native library in mx node.
1 parent 5e339ce commit 12e24da

File tree

1 file changed

+14
-9
lines changed

1 file changed

+14
-9
lines changed

graal-nodejs/mx.graal-nodejs/mx_graal_nodejs.py

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -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.\nYou 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

583582
def _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 '{}'.\nDid 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 '{}'.\nDid 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

600605
def mx_post_parse_cmd_line(args):
601606
mx_graal_nodejs_benchmark.register_nodejs_vms()

0 commit comments

Comments
 (0)