System Dependencies

While FIREWHEEL is a Python package, it also depends on several system-level packages. FIREWHEEL has been tested with the following operating systems:

  • Ubuntu 16.04

  • Ubuntu 18.04

  • Ubuntu 20.04

  • CentOS 7

However, the underlying system packages likely will work on all OSes.

In this section, we outline the required packages and a few optional ones which might be useful.

Required System Packages

  • minimega
    • Version: 2.7 (or higher)

    • Description: A distributed VM management tool.

    • Purpose: Default mechanism for launching VMs.

    • Source: https://www.sandia.gov/minimega/

  • discovery
  • git
    • Version: We recommend version 2.17 or higher.

    • Description: Fast, scalable, distributed revision control system

    • Purpose: Be able to clone Model Component git repositories.

    • Source: https://git-scm.com/

  • git-lfs
    • Description: Git Large File Support

    • Purpose: Be able to clone Model Component git repositories containing large file objects.

    • Source: https://git-lfs.github.com/

  • net-tools
    • Description: A collection of programs that form the base set of the NET-3 networking distribution for the Linux operating system.

    • Purpose: Enable configuration of host network interfaces.

    • Source: https://sourceforge.net/projects/net-tools/

  • procps
    • Description: procps is a set of command line and full-screen utilities that provide information out of the pseudo-filesystem most commonly located at /proc.

    • Purpose: Provide access to pkill and pgrep which are used to clean up experiments.

    • Source: https://gitlab.com/procps-ng/procps

  • Python
  • tar
    • Description: GNU version of the tar archiving utility

    • Purpose: Decompress images to cache and launch them.

Optional System Packages (for Helpers)

Additionally, some FIREWHEEL Helpers also require some system packages. These packages are completely optional as users can avoid calling those Helpers.

Optional System Packages (for Developers)

  • Graph:
    • Purpose: Generating class diagrams.

    • Ubuntu Package(s): graphviz

  • Latex:
    • Purpose: Building Sphinx documentation

    • Ubuntu Package(s): texlive-latex-recommended texlive-fonts-recommended texlive-latex-extra latexmk

  • Enchant:
    • Purpose: For checking documentation spelling.

    • Ubuntu Package(s): libenchant-dev

    • CentOS Package(s): enchant-devel

Python Dependencies

Most FIREWHEEL dependencies are Python packages. Many of these are used only for testing or development. The complete lists are located in setup.py. For completeness sake, we have generated a table of recursive Python dependencies using pip-licenses.

Name

Version

License

URL

Description

ClusterShell

1.9.2

GNU Lesser General Public License v2 or later (LGPLv2+)

https://clustershell.readthedocs.io/

ClusterShell library and tools

Jinja2

3.1.4

BSD License

https://github.com/pallets/jinja/

A very fast and expressive template engine.

MarkupSafe

3.0.2

BSD License

https://github.com/pallets/markupsafe/

Safely add untrusted strings to HTML/XML markup.

PyYAML

6.0.2

MIT License

https://pyyaml.org/

YAML parser and emitter for Python

Pygments

2.18.0

BSD License

https://pygments.org

Pygments is a syntax highlighting package written in Python.

SQLAlchemy

2.0.36

MIT License

https://www.sqlalchemy.org

Database Abstraction Library

Sphinx

8.1.3

BSD License

https://www.sphinx-doc.org/

Python documentation generator

alabaster

1.0.0

BSD License

https://alabaster.readthedocs.io/

A light, configurable Sphinx theme

asttokens

2.4.1

Apache 2.0

https://github.com/gristlabs/asttokens

Annotate AST trees with source code positions

attrs

24.2.0

MIT License

https://www.attrs.org/en/stable/changelog.html

Classes Without Boilerplate

babel

2.16.0

BSD License

https://babel.pocoo.org/

Internationalization utilities

beautysh

6.2.1

MIT License

https://github.com/lovesegfault/beautysh

A Bash beautifier for the masses.

cachetools

5.5.0

MIT License

https://github.com/tkem/cachetools/

Extensible memoizing collections and decorators

certifi

2024.8.30

Mozilla Public License 2.0 (MPL 2.0)

https://github.com/certifi/python-certifi

Python package for providing Mozilla’s CA Bundle.

cfgv

3.4.0

MIT License

https://github.com/asottile/cfgv

Validate configuration and produce human readable error messages.

chardet

5.2.0

GNU Lesser General Public License v2 or later (LGPLv2+)

https://github.com/chardet/chardet

Universal encoding detector for Python 3

charset-normalizer

3.4.0

MIT License

https://github.com/Ousret/charset_normalizer

The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet.

click

8.1.7

BSD License

https://palletsprojects.com/p/click/

Composable command line interface toolkit

colorama

0.4.6

BSD License

https://github.com/tartley/colorama

Cross-platform colored terminal text.

comm

0.2.2

BSD License

https://github.com/ipython/comm

Jupyter Python Comm implementation, for usage in ipykernel, xeus-python etc.

coverage

7.6.7

Apache Software License

https://github.com/nedbat/coveragepy

Code coverage measurement for Python

debugpy

1.8.8

MIT License

https://aka.ms/debugpy

An implementation of the Debug Adapter Protocol for Python

decorator

5.1.1

BSD License

https://github.com/micheles/decorator

Decorators for Humans

distlib

0.3.9

Python Software Foundation License

https://github.com/pypa/distlib

Distribution utilities

doc8

1.1.2

Apache Software License

https://github.com/pycqa/doc8

Style checker for Sphinx (or other) RST documentation

docutils

0.21.2

BSD License; GNU General Public License (GPL); Public Domain; Python Software Foundation License

https://docutils.sourceforge.io

Docutils – Python Documentation Utilities

executing

2.1.0

MIT License

https://github.com/alexmojaki/executing

Get the currently executing AST node of a frame, and other information

fastjsonschema

2.20.0

BSD License

https://github.com/horejsek/python-fastjsonschema

Fastest Python implementation of JSON schema

filelock

3.16.1

The Unlicense (Unlicense)

https://github.com/tox-dev/py-filelock

A platform independent file lock.

firewheel

2.7.0

Apache Software License

https://www.sandia.gov/emulytics

FIREWHEEL is an experiment orchestration tool that assists a user in building, controlling, observing, and analyzing repeatable experiments of distributed network systems at any scale.

firewheel

2.7.0

Apache Software License

https://www.sandia.gov/emulytics

FIREWHEEL is an experiment orchestration tool that assists a user in building, controlling, observing, and analyzing repeatable experiments of distributed network systems at any scale.

greenlet

3.1.1

MIT License

https://greenlet.readthedocs.io/

Lightweight in-process concurrent programming

grpcio

1.67.0

Apache Software License

https://grpc.io

HTTP/2-based RPC framework

grpcio-tools

1.66.2

Apache Software License

https://grpc.io

Protobuf code generator for gRPC

identify

2.6.2

MIT License

https://github.com/pre-commit/identify

File identification library for Python

idna

3.10

BSD License

https://github.com/kjd/idna

Internationalized Domain Names in Applications (IDNA)

imagesize

1.4.1

MIT License

https://github.com/shibukawa/imagesize_py

Getting image size from png/jpeg/jpeg2000/gif file

importlib_metadata

8.5.0

Apache Software License

https://github.com/python/importlib_metadata

Read metadata from Python packages

iniconfig

2.0.0

MIT License

https://github.com/pytest-dev/iniconfig

brain-dead simple config-ini parsing

ipykernel

6.29.5

BSD License

https://ipython.org

IPython Kernel for Jupyter

ipython

8.29.0

BSD License

https://ipython.org

IPython: Productive Interactive Computing

jedi

0.19.2

MIT License

https://github.com/davidhalter/jedi

An autocompletion tool for Python that can be used for text editors.

jsonschema

4.23.0

MIT License

https://github.com/python-jsonschema/jsonschema

An implementation of JSON Schema validation for Python

jsonschema-specifications

2024.10.1

MIT License

https://github.com/python-jsonschema/jsonschema-specifications

The JSON Schema meta-schemas and vocabularies, exposed as a Registry

jupyter-cache

1.0.1

MIT License

https://github.com/executablebooks/jupyter-cache

A defined interface for working with a cache of jupyter notebooks.

jupyter_client

8.6.3

BSD License

https://jupyter.org

Jupyter protocol implementation and client libraries

jupyter_core

5.7.2

BSD License

https://jupyter.org

Jupyter core package. A base package on which Jupyter projects rely.

markdown-it-py

3.0.0

MIT License

https://github.com/executablebooks/markdown-it-py

Python port of markdown-it. Markdown parsing, done right!

matplotlib-inline

0.1.7

BSD License

https://github.com/ipython/matplotlib-inline

Inline Matplotlib backend for Jupyter

mdit-py-plugins

0.4.2

MIT License

https://github.com/executablebooks/mdit-py-plugins

Collection of plugins for markdown-it-py

mdurl

0.1.2

MIT License

https://github.com/executablebooks/mdurl

Markdown URL utilities

minimega

2.9

GNU General Public License v3 (GPLv3)

https://minimega.org

Python API for minimega

myst-nb

1.1.2

UNKNOWN

https://github.com/executablebooks/myst-nb

A Jupyter Notebook Sphinx reader built on top of the MyST markdown parser.

myst-parser

4.0.0

MIT License

https://github.com/executablebooks/MyST-Parser

An extended [CommonMark](https://spec.commonmark.org/) compliant parser,

nbclient

0.10.0

BSD License

https://jupyter.org

A client library for executing notebooks. Formerly nbconvert’s ExecutePreprocessor.

nbformat

5.10.4

BSD License

https://jupyter.org

The Jupyter Notebook format

nest-asyncio

1.6.0

BSD License

https://github.com/erdewit/nest_asyncio

Patch asyncio to allow nested event loops

netaddr

1.3.0

BSD License

https://github.com/netaddr/netaddr/

A network address manipulation library for Python

networkx

3.4.2

BSD License

https://networkx.org/

Python package for creating and manipulating graphs and networks

nodeenv

1.9.1

BSD License

https://github.com/ekalinin/nodeenv

Node.js virtual environment builder

packaging

24.2

Apache Software License; BSD License

https://github.com/pypa/packaging

Core utilities for Python packages

parso

0.8.4

MIT License

https://github.com/davidhalter/parso

A Python Parser

pbr

6.1.0

Apache Software License

https://docs.openstack.org/pbr/latest/

Python Build Reasonableness

pexpect

4.9.0

ISC License (ISCL)

https://pexpect.readthedocs.io/

Pexpect allows easy control of interactive console applications.

pip

24.3.1

MIT License

https://pip.pypa.io/

The PyPA recommended tool for installing Python packages.

pip-licenses

5.0.0

MIT License

https://github.com/raimon49/pip-licenses

Dump the software license list of Python packages installed with pip.

platformdirs

4.3.6

MIT License

https://github.com/tox-dev/platformdirs

A small Python package for determining appropriate platform-specific dirs, e.g. a user data dir.

pluggy

1.5.0

MIT License

https://github.com/pytest-dev/pluggy

plugin and hook calling mechanisms for python

pre_commit

4.0.1

MIT License

https://github.com/pre-commit/pre-commit

A framework for managing and maintaining multi-language pre-commit hooks.

prettytable

3.12.0

BSD License

https://github.com/prettytable/prettytable

A simple Python library for easily displaying tabular data in a visually appealing ASCII table format

prompt_toolkit

3.0.48

BSD License

https://github.com/prompt-toolkit/python-prompt-toolkit

Library for building powerful interactive command lines in Python

protobuf

5.28.3

3-Clause BSD License

https://developers.google.com/protocol-buffers/

UNKNOWN

psutil

6.1.0

BSD License

https://github.com/giampaolo/psutil

Cross-platform lib for process and system monitoring in Python.

ptyprocess

0.7.0

ISC License (ISCL)

https://github.com/pexpect/ptyprocess

Run a subprocess in a pseudo terminal

pure_eval

0.2.3

MIT License

http://github.com/alexmojaki/pure_eval

Safely evaluate AST nodes without side effects

pyenchant

3.2.2

GNU Library or Lesser General Public License (LGPL)

https://pyenchant.github.io/pyenchant/

Python bindings for the Enchant spellchecking system

pyproject-api

1.8.0

MIT License

https://pyproject-api.readthedocs.io

API to interact with the python pyproject.toml based projects

pytest

8.3.3

MIT License

https://docs.pytest.org/en/latest/

pytest: simple powerful testing with Python

pytest-cov

6.0.0

MIT License

https://github.com/pytest-dev/pytest-cov

Pytest plugin for measuring coverage.

python-dateutil

2.9.0.post0

Apache Software License; BSD License

https://github.com/dateutil/dateutil

Extensions to the standard Python datetime module

python-dotenv

1.0.1

BSD License

https://github.com/theskumar/python-dotenv

Read key-value pairs from a .env file and set them as environment variables

pyzmq

26.2.0

BSD License

https://pyzmq.readthedocs.org

Python bindings for 0MQ

qemu.qmp

0.0.3

GNU General Public License v2 (GPLv2); GNU Lesser General Public License v2 or later (LGPLv2+)

https://gitlab.com/qemu-project/python-qemu-qmp

QEMU Monitor Protocol library

referencing

0.35.1

MIT License

https://github.com/python-jsonschema/referencing

JSON Referencing + Python

requests

2.32.3

Apache Software License

https://requests.readthedocs.io

Python HTTP for Humans.

restructuredtext_lint

1.4.0

Public Domain

https://github.com/twolfson/restructuredtext-lint

reStructuredText linter

rich

13.9.4

MIT License

https://github.com/Textualize/rich

Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal

rpds-py

0.21.0

MIT License

https://github.com/crate-py/rpds

Python bindings to Rust’s persistent data structures (rpds)

ruff

0.7.4

MIT License

https://docs.astral.sh/ruff

An extremely fast Python linter and code formatter, written in Rust.

setuptools

75.5.0

MIT License

https://github.com/pypa/setuptools

Easily download, build, install, upgrade, and uninstall Python packages

six

1.16.0

MIT License

https://github.com/benjaminp/six

Python 2 and 3 compatibility utilities

snowballstemmer

2.2.0

BSD License

https://github.com/snowballstem/snowball

This package provides 29 stemmers for 28 languages generated from Snowball algorithms.

sphinx-copybutton

0.5.2

MIT License

https://github.com/executablebooks/sphinx-copybutton

Add a copy button to each of your code cells.

sphinx-rtd-theme

3.0.2

MIT License

https://github.com/readthedocs/sphinx_rtd_theme

Read the Docs theme for Sphinx

sphinx_design

0.6.1

MIT License

https://github.com/executablebooks/sphinx-design

A sphinx extension for designing beautiful, view size responsive web components.

sphinxcontrib-applehelp

2.0.0

BSD License

https://www.sphinx-doc.org/

sphinxcontrib-applehelp is a Sphinx extension which outputs Apple help books

sphinxcontrib-devhelp

2.0.0

BSD License

https://www.sphinx-doc.org/

sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp documents

sphinxcontrib-htmlhelp

2.1.0

BSD License

https://www.sphinx-doc.org/

sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files

sphinxcontrib-jquery

4.1

BSD License

https://github.com/sphinx-contrib/jquery/

Extension to include jQuery on newer Sphinx releases

sphinxcontrib-jsmath

1.0.1

BSD License

http://sphinx-doc.org/

A sphinx extension which renders display math in HTML via JavaScript

sphinxcontrib-qthelp

2.0.0

BSD License

https://www.sphinx-doc.org/

sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp documents

sphinxcontrib-serializinghtml

2.0.0

BSD License

https://www.sphinx-doc.org/

sphinxcontrib-serializinghtml is a sphinx extension which outputs “serialized” HTML files (json and pickle)

sphinxcontrib-spelling

8.0.0

BSD License

https://sphinxcontrib-spelling.readthedocs.io/en/latest/

Sphinx spelling extension

stack-data

0.6.3

MIT License

http://github.com/alexmojaki/stack_data

Extract data from python stack frames and tracebacks for informative displays

stevedore

5.3.0

Apache Software License

https://docs.openstack.org/stevedore/latest/

Manage dynamic plugins for Python applications

tabulate

0.9.0

MIT License

https://github.com/astanin/python-tabulate

Pretty-print tabular data

tomli

2.1.0

MIT License

https://github.com/hukkin/tomli

A lil’ TOML parser

tornado

6.4.1

Apache Software License

http://www.tornadoweb.org/

Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed.

tox

4.23.2

MIT License

http://tox.readthedocs.org

tox is a generic virtualenv management and test command line tool

traitlets

5.14.3

BSD License

https://github.com/ipython/traitlets

Traitlets Python configuration system

types-colorama

0.4.15.20240311

Apache Software License

https://github.com/python/typeshed

Typing stubs for colorama

types-setuptools

57.4.18

Apache Software License

https://github.com/python/typeshed

Typing stubs for setuptools

typing_extensions

4.12.2

Python Software Foundation License

https://github.com/python/typing_extensions

Backported and Experimental Type Hints for Python 3.8+

urllib3

2.2.3

MIT License

https://github.com/urllib3/urllib3/blob/main/CHANGES.rst

HTTP library with thread-safe connection pooling, file post, and more.

virtualenv

20.27.1

MIT License

https://github.com/pypa/virtualenv

Virtual Python Environment builder

wcwidth

0.2.13

MIT License

https://github.com/jquast/wcwidth

Measures the displayed width of unicode strings in a terminal

zipp

3.21.0

MIT License

https://github.com/jaraco/zipp

Backport of pathlib-compatible object wrapper for zip files