From 93a6017816975f41d2c6d67a5dde6453d6549cf6 Mon Sep 17 00:00:00 2001 From: Dmitrii Kuvaiskii Date: Thu, 9 Sep 2021 07:56:04 -0700 Subject: [PATCH] First commit. Currently this repo is empty, with some initial documentation. The documentation source files are taken from the main Gramine repo. Signed-off-by: Dmitrii Kuvaiskii --- Documentation/.gitignore | 1 + Documentation/Doxyfile | 18 +++ Documentation/Makefile | 22 ++++ Documentation/_static/css/gramine.css | 3 + Documentation/_templates/.gitignore | 0 Documentation/conf.py | 151 ++++++++++++++++++++++++++ Documentation/gramine_logo.svg | 37 +++++++ Documentation/img/.gitignore | 0 Documentation/index.rst | 46 ++++++++ Documentation/manpages/.gitignore | 0 Documentation/requirements.txt | 3 + Documentation/tutorials/.gitignore | 0 README.rst | 23 ++++ 13 files changed, 304 insertions(+) create mode 100644 Documentation/.gitignore create mode 100644 Documentation/Doxyfile create mode 100644 Documentation/Makefile create mode 100644 Documentation/_static/css/gramine.css create mode 100644 Documentation/_templates/.gitignore create mode 100644 Documentation/conf.py create mode 100644 Documentation/gramine_logo.svg create mode 100644 Documentation/img/.gitignore create mode 100644 Documentation/index.rst create mode 100644 Documentation/manpages/.gitignore create mode 100644 Documentation/requirements.txt create mode 100644 Documentation/tutorials/.gitignore create mode 100644 README.rst diff --git a/Documentation/.gitignore b/Documentation/.gitignore new file mode 100644 index 0000000..e35d885 --- /dev/null +++ b/Documentation/.gitignore @@ -0,0 +1 @@ +_build diff --git a/Documentation/Doxyfile b/Documentation/Doxyfile new file mode 100644 index 0000000..1af19f6 --- /dev/null +++ b/Documentation/Doxyfile @@ -0,0 +1,18 @@ +PROJECT_NAME = "gramine-contrib" +OUTPUT_DIRECTORY = _build/doxygen +INPUT = ../src + +GENERATE_XML = YES +XML_PROGRAMLISTING = NO +XML_OUTPUT = xml + +GENERATE_HTML = NO +GENERATE_LATEX = NO + +WARN_NO_PARAMDOC = YES +WARN_AS_ERROR = NO +OPTIMIZE_OUTPUT_FOR_C = YES +EXTRACT_STATIC = YES + +ALIASES = "rst=\verbatim embed:rst:leading-asterisk" +ALIASES += "endrst=\endverbatim" diff --git a/Documentation/Makefile b/Documentation/Makefile new file mode 100644 index 0000000..165d097 --- /dev/null +++ b/Documentation/Makefile @@ -0,0 +1,22 @@ +# Minimal makefile for Sphinx documentation +# + +# You can set these variables from the command line. +SPHINXOPTS = +SPHINXBUILD = sphinx-build +SOURCEDIR = . +BUILDDIR = _build + +# Put it first so that "make" without argument is like "make help". +help: + @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + +clean: + $(RM) -r "$(BUILDDIR)" + +.PHONY: help Makefile Doxyfile clean + +# Catch-all target: route all unknown targets to Sphinx using the new +# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). +%: Makefile + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) diff --git a/Documentation/_static/css/gramine.css b/Documentation/_static/css/gramine.css new file mode 100644 index 0000000..3e6922a --- /dev/null +++ b/Documentation/_static/css/gramine.css @@ -0,0 +1,3 @@ +.rst-content dl:not(.docutils)>dt { + font-family: SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",Courier,monospace; +} diff --git a/Documentation/_templates/.gitignore b/Documentation/_templates/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/Documentation/conf.py b/Documentation/conf.py new file mode 100644 index 0000000..0a02724 --- /dev/null +++ b/Documentation/conf.py @@ -0,0 +1,151 @@ +# pylint: skip-file +# +# Configuration file for the Sphinx documentation builder. +# +# This file does only contain a selection of the most common options. For a +# full list see the documentation: +# http://www.sphinx-doc.org/en/master/config + +# -- Path setup -------------------------------------------------------------- + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +# +# import os +# import sys +# sys.path.insert(0, os.path.abspath('.')) + +import collections +import pathlib +import subprocess + +# -- Project information ----------------------------------------------------- + +project = 'Gramine External Contributions' +copyright = '2021, Gramine Contributors' +author = 'Gramine Contributors' + +# The short X.Y version +version = '' +# The full version, including alpha/beta/rc tags +release = '' + + +# -- General configuration --------------------------------------------------- + +# If your documentation needs a minimal Sphinx version, state it here. +# +# needs_sphinx = '1.0' + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [ + 'sphinx.ext.autodoc', + 'sphinx.ext.todo', + 'breathe', + 'sphinx_rtd_theme', +] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# The suffix(es) of source filenames. +source_suffix = { + '.rst': 'restructuredtext', +} + +# The master toctree document. +master_doc = 'index' + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +# +# This is also used if you do content translation via gettext catalogs. +# Usually you set "language" from the command line for these cases. +language = None + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +# This pattern also affects html_static_path and html_extra_path. +exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = None + +highlight_language = 'c' +primary_domain = 'c' + +rst_prolog = ''' +.. |~| unicode:: 0xa0 + :trim: +''' + +breathe_projects = { + 'gramine-contrib': '_build/doxygen/xml', +} + +def generate_doxygen(app): + subprocess.check_call(['doxygen', 'Doxyfile']) + +def setup(app): + app.add_stylesheet('css/gramine.css') + app.connect('builder-inited', generate_doxygen) + +breathe_domain_by_extension = { + 'h': 'c', +} + +todo_include_todos = True + +nitpicky = True +nitpick_ignore = [ + ('c:type', 'bool'), + ('c:type', 'toml_table_t'), + ('c:type', 'uint32_t'), + ('c:type', 'uint64_t'), + ('c:type', 'union'), +] + +# -- Options for HTML output ------------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +# +html_theme = 'sphinx_rtd_theme' +html_theme_options = { + 'logo_only': True, +} +html_logo = 'gramine_logo.svg' + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['_static'] + +# Custom sidebar templates, must be a dictionary that maps document names +# to template names. +# +# The default sidebars (for documents that don't match any pattern) are +# defined by theme itself. Builtin themes are using these templates by +# default: ``['localtoc.html', 'relations.html', 'sourcelink.html', +# 'searchbox.html']``. +# +# html_sidebars = {} + + +# -- Options for manual page output ------------------------------------------ + +# One entry per manual page. List of tuples +# (source start file, name, description, authors, manual section). +man_pages = [ +# ('manpages/is_sgx_available', 'is_sgx_available', 'Check SGX compatibility', [author], 1), +] + +# barf if a page is not included +assert (collections.Counter(str(p.with_suffix('')) + for p in pathlib.Path().glob('manpages/*.rst') + if not p.stem == 'index') + == collections.Counter(source + for source, *_ in man_pages)) diff --git a/Documentation/gramine_logo.svg b/Documentation/gramine_logo.svg new file mode 100644 index 0000000..80fff2a --- /dev/null +++ b/Documentation/gramine_logo.svg @@ -0,0 +1,37 @@ + + + + 074510C7-BDF4-416F-A6C3-8C2B191E0454 + Created with sketchtool. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Documentation/img/.gitignore b/Documentation/img/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/Documentation/index.rst b/Documentation/index.rst new file mode 100644 index 0000000..5e974da --- /dev/null +++ b/Documentation/index.rst @@ -0,0 +1,46 @@ +***************************************** +Gramine Library OS External Contributions +***************************************** + +What is this? +============= + +This repository contains external contributions (like useful scripts, snippets, +etc.) for `Gramine Project `__. + +Disclaimer +========== + +This is not an official part of Gramine Project. The code included here wasn't +thoroughly reviewed and may contain security issues. **Use at your own risk!** + +How to contribute? +================== + +We welcome contributions through GitHub pull requests. Please keep in mind that +they are governed by `the same rules as the main project +`__, modulo +more forgiving reviews. + + +***************** +Table of Contents +***************** + +.. toctree:: + :caption: Tutorials + :maxdepth: 2 + +.. toctree:: + :caption: Manual pages + :maxdepth: 1 + :glob: + + manpages/* + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` diff --git a/Documentation/manpages/.gitignore b/Documentation/manpages/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/Documentation/requirements.txt b/Documentation/requirements.txt new file mode 100644 index 0000000..e98b3ef --- /dev/null +++ b/Documentation/requirements.txt @@ -0,0 +1,3 @@ +sphinx==1.8.0 +breathe<4.13.0 +sphinx_rtd_theme diff --git a/Documentation/tutorials/.gitignore b/Documentation/tutorials/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/README.rst b/README.rst new file mode 100644 index 0000000..bfd1979 --- /dev/null +++ b/README.rst @@ -0,0 +1,23 @@ +***************************************** +Gramine Library OS External Contributions +***************************************** + +What is this? +============= + +This repository contains external contributions (like useful scripts, snippets, +etc.) for `Gramine Project `_. + +Disclaimer +========== + +This is not an official part of Gramine Project. The code included here wasn't +thoroughly reviewed and may contain security issues. **Use at your own risk!** + +How to contribute? +================== + +We welcome contributions through GitHub pull requests. Please keep in mind that +they are governed by `the same rules as the main project +`_, modulo +more forgiving reviews.