Files
graphene/Examples/nodejs/nodejs.manifest.template
T
Stefan Berger 206eb81eec [Makefiles] Get arch and distro specific vars from Makefile.configs
Extend Makefile.configs and define several variables for make to use
derived from 'gcc -dumpmachine'. In particular:
- ARCH as the architecture, e.g., x86_64
- ARCH_LONG as the long version of the architecture, e.g., x86_64-linux-gnu
- ARCH_LIBDIR as the directory where libraries are located,
  e.g., /lib/x86_64-linux-gnu

In Makefiles and manifest templates, replace the hard-coded
x86_64-linux_gnu and /lib/x86_64-linux-gnu through these variables.
Extend the already existing sed scripts to replace the necessary
variables.
2020-05-01 20:54:04 +00:00

58 lines
2.3 KiB
Plaintext

# Nodejs manifest file example
#
# This manifest was prepared and tested on Ubuntu 18.04.
# Executable to load into Graphene and run.
loader.exec = file:$(NODEJS_DIR)nodejs
loader.execname = file:nodejs
# LibOS layer library of Graphene. There is currently only one implementation,
# so it is always set to libsysdb.so.
loader.preload = file:$(GRAPHENEDIR)/Runtime/libsysdb.so
# Show/hide debug log of Graphene ('inline' or 'none' respectively).
loader.debug_type = $(GRAPHENEDEBUG)
# Specify paths to search for libraries. The usual LD_LIBRARY_PATH syntax
# applies. Paths must be in-Graphene visible paths, not host-OS paths (i.e.,
# paths must be taken from fs.mount.xxx.path, not fs.mount.xxx.uri).
loader.env.LD_LIBRARY_PATH = /lib:$(ARCH_LIBDIR):/usr/$(ARCH_LIBDIR)
# Mount host-OS directory to required libraries (in 'uri') into in-Graphene
# visible directory /lib (in 'path').
fs.mount.lib.type = chroot
fs.mount.lib.path = /lib
fs.mount.lib.uri = file:$(GRAPHENEDIR)/Runtime
fs.mount.lib2.type = chroot
fs.mount.lib2.path = $(ARCH_LIBDIR)
fs.mount.lib2.uri = file:$(ARCH_LIBDIR)
fs.mount.lib3.type = chroot
fs.mount.lib3.path = /usr/$(ARCH_LIBDIR)
fs.mount.lib3.uri = file:/usr/$(ARCH_LIBDIR)
# Set enclave size to 2GB; NodeJS expects around 1.7GB of heap on startup,
# see e.g. https://github.com/nodejs/node/issues/13018.
# Recall that SGX v1 requires to specify enclave size at enclave creation time.
sgx.enclave_size = 2G
# Set maximum number of in-enclave threads (somewhat arbitrarily) to 8. Recall
# that SGX v1 requires to specify the maximum number of simultaneous threads at
# enclave creation time.
sgx.thread_num = 8
# Specify all libraries used by Node.js and its dependencies (including all libs
# which can be loaded at runtime via dlopen).
sgx.trusted_files.ld = file:$(GRAPHENEDIR)/Runtime/ld-linux-x86-64.so.2
sgx.trusted_files.libc = file:$(GRAPHENEDIR)/Runtime/libc.so.6
sgx.trusted_files.libm = file:$(GRAPHENEDIR)/Runtime/libm.so.6
sgx.trusted_files.libdl = file:$(GRAPHENEDIR)/Runtime/libdl.so.2
sgx.trusted_files.librt = file:$(GRAPHENEDIR)/Runtime/librt.so.1
sgx.trusted_files.libutil = file:$(GRAPHENEDIR)/Runtime/libutil.so.1
sgx.trusted_files.libpthread = file:$(GRAPHENEDIR)/Runtime/libpthread.so.0
$(NODEJS_TRUSTED_LIBS)
# JavaScript (trusted)
sgx.trusted_files.javascript = file:helloworld.js