.. program:: gramine-manifest
.. _gramine-manifest:
============================================================
:program:`gramine-manifest` -- Gramine manifest preprocessor
============================================================
Synopsis
========
:command:`gramine-manifest` [*OPTION*]... [*SOURCE-FILE* [*OUTPUT-FILE*]]
Description
===========
:program:`gramine-manifest` is used to preprocess manifests for Gramine using
`Jinja markup `__.
Command line arguments
======================
.. option:: --define =, -D =
Have a |~| variable available in the template.
Functions and constants available in templates
==============================================
.. default-domain:: py
.. data:: gramine.libos
Path to :file:`libsysdb.so`.
.. function:: gramine.runtimedir(libc='glibc')
The path to runtime directory with patched libc. Currently supported options
are: ``'glibc'`` and ``'musl'``.
.. data:: python.stdlib
``stdlib`` installation path from `sysconfig module
`__
.. data:: python.platstdlib
``platstdlib`` installation path from `sysconfig module
`__
.. data:: python.purelib
``purelib`` installation path from `sysconfig module
`__
.. data:: python.distlib
On Debian systems, this is :file:`/usr/lib/python3/dist-packages`.
.. function:: python.get_path(...)
`sysconfig.get_path
`__
.. function:: python.get_paths(...)
`sysconfig.get_paths
`__
.. data:: python.implementation
`sys.implementation
`__
.. data:: env.[ENVVAR]
The content of ``$ENVVAR`` environment variable.
.. function:: ldd(\*executables)
List of libraries which are linked from *executables*. Each library is
provided at most once.
Example
=======
:file:`manifest.template`:
.. code-block:: jinja
loader.entrypoint = "file:{{ gramine.libos }}"
libos.entrypoint = "{{ entrypoint }}"
loader.env.LD_LIBRARY_PATH = "/lib:{{ arch_libdir }}:/usr{{ arch_libdir }}"
fs.mounts = [
{ path = "/lib", uri = "file:{{ gramine.runtimedir() }}" },
]
sgx.trusted_files = [
"file:{{ entrypoint }}",
"file:{{ gramine.runtimedir() }}/",
]
:file:`Makefile`:
.. code-block:: make
%.manifest: manifest.template
gramine-manifest \
-Dentrypoint=$(ENTRYPOINT) \
-Darch_libdir=$(ARCH_LIBDIR) \
$< $@