FROM ubuntu:xenial # 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/gcc-arm-none-eabi-9-2019-q4-major-aarch64-linux.tar.bz2?revision=4583ce78-e7e7-459a-ad9f-bff8e94839f1&rev=4583ce78e7e7459aad9fbff8e94839f1&hash=C9B942D74CEA05FF9DE28380F267BB7D3F3B17A6 \ PATH=$HOME/bin:$PATH:/opt/build/armbin/bin #Create volume /havoc/bin for compiled firmware binaries VOLUME /havoc WORKDIR /havoc/firmware # Fetch dependencies from APT RUN apt-get update \ && apt-get install -y git tar wget dfu-util cmake python3 ccache bzip2 liblz4-tool curl ninja-build \ && apt-get -qy autoremove \ && rm -rf /var/lib/apt/lists/* #Install current pip from PyPa RUN curl https://bootstrap.pypa.io/pip/3.4/get-pip.py -o get-pip.py && \ python3 get-pip.py #Fetch additional dependencies from Python 3.x pip RUN pip install pyyaml \ && ln -s /usr/bin/python3 /usr/bin/python \ && ln -s /usr/bin/pip3 /usr/bin/pip ENV LANG C.UTF-8 ENV LC_ALL C.UTF-8 # 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 # Configure CCACHE RUN mkdir ~/bin \ && cd ~/bin \ && for tool in gcc g++ cpp c++; do \ ln -s $(which ccache) arm-none-eabi-$tool \ ; done ADD firmware/tools/docker-entrypoint.sh /usr/local/bin/entrypoint.sh ENTRYPOINT ["/usr/local/bin/entrypoint.sh"] # replace make with ninja temporarily while building your image if you prefer to use that by default CMD ["make"]