From a37d8cd10c951333e422f5bb879ef5afc8c65d80 Mon Sep 17 00:00:00 2001
From: Brian Lechthaler <brianlechthaler@protonmail.ch>
Date: Sun, 29 Dec 2019 01:02:03 -0800
Subject: [PATCH] dockerfile improvements (#296)

**Summary of changes:**

 - Added *some* inline documentation to make things a little more understandable
 - Replaced ARM toolchain dependency fetching, see #274
 - Environment variable included to specify new or custom ARM toolchain. As ARM releases new versions of the toolchain, this URL can be changed.
---
 dockerfile | 35 ++++++++++++++++++++++++++++-------
 1 file changed, 28 insertions(+), 7 deletions(-)

diff --git a/dockerfile b/dockerfile
index 6864afac..d6fb504e 100644
--- a/dockerfile
+++ b/dockerfile
@@ -1,14 +1,35 @@
 #Download base image.
 #The ubuntu:latest tag points to the "latest LTS"
 FROM ubuntu:latest
-VOLUME /myvol
 
-RUN apt-get update && \
-    apt-get install -y software-properties-common && \
-    apt-get install -y apt-transport-https
+#Set location to download ARM toolkit from.
+# This will need to be changed over time or replaced with a static link to the latest release.
+ENV ARMBINURL="https://developer.arm.com/-/media/Files/downloads/gnu-rm/9-2019q4/RC2.1/gcc-arm-none-eabi-9-2019-q4-major-x86_64-linux.tar.bz2?revision=6e63531f-8cb1-40b9-bbfc-8a57cdfc01b4&la=en&hash=F761343D43A0587E8AC0925B723C04DBFB848339"
+
+#Create volume /havocbin for compiled firmware binaries
+VOLUME /havocbin
+
+#Copy build context (repository root) to /havocsrc
+COPY ./ /havocsrc
 
-# 
-RUN add-apt-repository ppa:team-gcc-arm-embedded/ppa && apt-get update && apt-get install -y gcc-arm-embedded dfu-util cmake git python python-pip && apt-get -qy autoremove
+#Fetch dependencies from APT
+RUN apt-get update && \
+	apt-get install -y tar wget dfu-util cmake python python-pip && \
+	apt-get -qy autoremove
+#Fetch additional dependencies from Python 2.x pip
 RUN pip install pyyaml
 
-CMD git clone https://github.com/furrtek/portapack-havoc.git portapack-havoc && cd portapack-havoc && mkdir build && cd build && cmake .. && make firmware && cp /portapack-havoc/firmware/portapack-h1-havoc.bin /myvol
+#Grab the GNU ARM toolchain from arm.com
+#Then extract contents to /opt/build/armbin/
+RUN mkdir /opt/build && cd /opt/build && \
+	wget -O gcc-arm-none-eabi $ARMBINURL && \
+	mkdir armbin && \
+	tar --strip=1 -xjvf gcc-arm-none-eabi -C armbin
+    
+#Set environment variable so compiler knows where the toolchain lives
+ENV PATH=$PATH:/opt/build/armbin/bin
+
+CMD cd /havocsrc && \
+    mkdir build && cd build && \ 
+    cmake .. && make firmware && \
+    cp /portapack-havoc/firmware/portapack-h1-havoc.bin /havocbin
-- 
GitLab