Installation#
Requirements#
The project is developed and tested on Linux. To build and run it you need:
C toolchain:
gccandmakeBuild system:
meson,ninja-build, andpkg-configDevelopment packages:
libcjson-dev,zlib1g-dev, andlibcap-devPython 3.10 or later — for the fetcher and grader (with
python3-venvandpython3-pipto 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/