From f0d94559db1a8acb2b01ae2aca29eb3ad97483b8 Mon Sep 17 00:00:00 2001
From: Kai <sistason@sistason.de>
Date: Thu, 21 May 2020 16:40:45 +0200
Subject: [PATCH] feat(build): Add a Dockerfile for firmware building

Original work from @sistason in MR !121, rebased
on latest master.

Commit 1ea42e8eac0498a027f8c303e33a87f93df4dba5
Author: Kai <sistason@sistason.de>
Date:   Mon Aug 19 21:58:11 2019 +0200

    Adds Docker for firmware-building

    This commit adds a Dockerfile to build a docker
    container to build the firmware with.  It also
    updates the documentation on how to do that.
---
 Documentation/how-to-build.rst | 22 ++++++++++++++++++++++
 docker/Dockerfile_fwbuild      | 10 ++++++++++
 2 files changed, 32 insertions(+)
 create mode 100644 docker/Dockerfile_fwbuild

diff --git a/Documentation/how-to-build.rst b/Documentation/how-to-build.rst
index 781fc44a1..b152bf75f 100644
--- a/Documentation/how-to-build.rst
+++ b/Documentation/how-to-build.rst
@@ -183,3 +183,25 @@ Otherwise, rerunning ``./bootstrap.sh`` will also clean the build-directory.
    (it's supposed to create a large file with 0xff in it) - this requires the 
    LC_ALL environment variable to be not set, or set to "C" 
    (but not UTF8 or similar).
+
+Docker
+======
+Alternatively, clone the ``master`` branch of the firmware repository and enter it:
+
+.. code-block:: shell-session
+
+   $ git clone https://git.card10.badge.events.ccc.de/card10/firmware.git
+   $ cd firmware
+
+Afterwards, build a docker-container which will build the firmware via:
+
+.. code-block:: shell-session
+
+   $ docker build -f docker/Dockerfile_fwbuild -t card10-firmware-builder .
+
+Now, you can start the container with the firmware directory mounted, which will build the
+firmware into the firmware/build directory:
+
+.. code-block:: shell-session
+
+   $ docker run -v $(pwd):/firmware card10-firmware-builder
diff --git a/docker/Dockerfile_fwbuild b/docker/Dockerfile_fwbuild
new file mode 100644
index 000000000..6845cb52f
--- /dev/null
+++ b/docker/Dockerfile_fwbuild
@@ -0,0 +1,10 @@
+FROM ubuntu
+
+RUN apt-get update && apt-get -y install gcc-arm-none-eabi binutils-arm-none-eabi libnewlib-arm-none-eabi python3 python3-pip ninja-build git
+
+RUN pip3 install meson crc16 pillow
+
+VOLUME /firmware
+WORKDIR /firmware
+
+CMD ./bootstrap.sh && ninja -C build && chown -R --reference=/firmware build
-- 
GitLab