summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShuhao Wu <shuhao@shuhaowu.com>2021-02-02 23:21:18 (GMT)
committerDaniel Thompson <daniel@redfelineninja.org.uk>2021-02-20 08:44:22 (GMT)
commit268f8c06e9058338fe7a56051757efb3ddc19e33 (patch)
treefbc5dcfea52b62a4f3841a1cb66978b6cc5da33a
parent090ed8489ba830879a8dfa094a05fc178020fa4f (diff)
Added Docker setup to build wasp-os.
This should make it a bit easier for people to contribute. Also fixed the documentations on how to setup on Debian, as certain recommended packages don't exist. Signed-off-by: Shuhao Wu <shuhao@shuhaowu.com>
-rw-r--r--docs/install.rst23
-rw-r--r--tools/docker/Dockerfile24
-rw-r--r--tools/docker/setup-env.sh3
-rwxr-xr-xtools/docker/shell15
4 files changed, 65 insertions, 0 deletions
diff --git a/docs/install.rst b/docs/install.rst
index 99fafb1..f0501ed 100644
--- a/docs/install.rst
+++ b/docs/install.rst
@@ -9,6 +9,9 @@ Installation Guide
Building wasp-os from source
----------------------------
+Install prerequisites
+~~~~~~~~~~~~~~~~~~~~~
+
Building wasp-os and launching the wasp-os simulator requires Python 3.6
(or later) and the following python modules: click, numpy, pexpect, PIL
(or Pillow), pydbus, pygobject, pyserial, pysdl2.
@@ -50,6 +53,22 @@ tested using the `GNU-RM toolchain
link time optimization is enabled during the MicroPython build
(LTO is enabled by default).
+Install prerequisites via docker
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+To build via docker, simply invoke `tool/docker/shell` from the root directory
+after having docker installed. This will build the docker image and also drop
+you into a shell with wasp os's source code shared into the container at
+``/home/user/wasp-os``. All ``make`` commands should be usable from this shell,
+including ``make sim`` and ``make check``. Some commands that interact with
+bluetooth such as ``wasptool`` may not work, for now.
+
+.. note::
+
+ If you want to use the Docker-based setup, it is assumed that you're using
+ and x86 machine on Linux, running Xorg. Other setup may require some
+ patching for now.
+
Fetch the code from
`https://github.com/daniel-thompson/wasp-os <https://github.com/daniel-thompson/wasp-os>`_ and download the prerequisites:
@@ -69,12 +88,16 @@ list below:
make -j `nproc` BOARD=k9 all
make -j `nproc` BOARD=p8 all
+The output of these will be stored in ``build-${BOARD}/``.
+
To rebuild the documentation:
.. code-block:: sh
make docs
+The docs will be browsable in ``docs/build/html`` as per Sphinx standards.
+
Device Support
--------------
diff --git a/tools/docker/Dockerfile b/tools/docker/Dockerfile
new file mode 100644
index 0000000..96798f2
--- /dev/null
+++ b/tools/docker/Dockerfile
@@ -0,0 +1,24 @@
+FROM ubuntu:focal
+
+ARG uid
+ARG gid
+
+RUN set -xe; \
+ export DEBIAN_FRONTEND=noninteractive; \
+ apt-get update; \
+ apt-get install -y \
+ wget git build-essential pkg-config libsdl2-2.0.0 python3-click \
+ python3-numpy python3-pexpect python3-pil python3-pip python3-pydbus \
+ libcairo2-dev python3-serial unzip python3-sphinx graphviz \
+ python3-recommonmark python3-pytest \
+ ; \
+ pip3 install cbor pysdl2 pygobject cryptography;
+
+RUN set -xe; \
+ wget --progress=dot:mega -O - https://developer.arm.com/-/media/Files/downloads/gnu-rm/9-2019q4/gcc-arm-none-eabi-9-2019-q4-major-x86_64-linux.tar.bz2 | tar xjf - -C /opt
+
+RUN set -xe; \
+ addgroup --gid $gid user; \
+ adduser --gecos "" --disabled-password --uid $uid --gid $gid user;
+
+COPY setup-env.sh /etc/profile.d/setup-env.sh
diff --git a/tools/docker/setup-env.sh b/tools/docker/setup-env.sh
new file mode 100644
index 0000000..f97b1f3
--- /dev/null
+++ b/tools/docker/setup-env.sh
@@ -0,0 +1,3 @@
+export PATH=/opt/gcc-arm-none-eabi-9-2019-q4-major/bin:$PATH
+
+cd ~/wasp-os
diff --git a/tools/docker/shell b/tools/docker/shell
new file mode 100755
index 0000000..01561b1
--- /dev/null
+++ b/tools/docker/shell
@@ -0,0 +1,15 @@
+#!/bin/bash
+
+docker build --build-arg uid=$UID --build-arg gid=$(id -g) -t wasp-os-dev ./tools/docker
+
+docker run \
+ -v /tmp/.X11-unix:/tmp/.X11-unix:rw \
+ -v $(pwd):/home/user/wasp-os \
+ -u user \
+ -e DISPLAY \
+ --init \
+ --device /dev/dri \
+ -it \
+ --rm \
+ wasp-os-dev \
+ bash -l