Installation#

Requirements#

The project is developed and tested on Linux. To build and run it you need:

  • C toolchain: gcc and make

  • Build system: meson, ninja-build, and pkg-config

  • Development packages: libcjson-dev, zlib1g-dev, and libcap-dev

  • Python 3.10 or later — for the fetcher and grader (with python3-venv and python3-pip to create the virtual environment)

  • A GitHub personal access token with read access to the organization, plus network access to api.github.com

On Debian/Ubuntu, install the system dependencies with:

sudo apt install gcc make pkg-config meson ninja-build libcjson-dev zlib1g-dev libcap-dev python3-venv python3-pip

Important

Running the sandbox requires enabling unprivileged user namespaces:

sudo sysctl kernel.unprivileged_userns_clone=1
sudo sysctl apparmor_restrict_unprivileged_userns=0

Build#

git clone https://github.com/nkua/uoabot.git
cd uoabot

After cloning the repository, all you have to do is run:

git submodule update --init --recursive   # pulls makis/bubblewrap
make                                      # builds uoabot and makis/bwrap

Install#

sudo make install

Assuming the binaries from the Build step are already in place, the installation phase places them all in /opt/uoabot, and properly installs the python requirements in a venv.

Configure#

Configuring the system requires editing system.json, which lives in the project root, and is used by all modules.

For more information on the configuration file, see system.md.

Documentation#

Project documentation is written in reStructuredText and Markdown. It lives in docs/ and to build it you will need to install Sphinx and run:

cd docs
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
make html
deactivate
cd ..

It will then be available under docs/_build/html/