mirror of
https://github.com/meshtastic/firmware.git
synced 2025-02-01 10:19:59 +00:00
53 lines
2.6 KiB
Docker
53 lines
2.6 KiB
Docker
|
# This container is used to build Meshtastic with the libraries required by the fuzzer.
|
||
|
# ClusterFuzzLite starts the container, runs the build.sh script, and then exits.
|
||
|
|
||
|
# As this is not a long running service, health-checks are not required. ClusterFuzzLite
|
||
|
# also only works if the user remains unchanged from the base image (it expects to run
|
||
|
# as root).
|
||
|
# trunk-ignore-all(trivy/DS026): No healthcheck is needed for this builder container
|
||
|
# trunk-ignore-all(checkov/CKV_DOCKER_2): No healthcheck is needed for this builder container
|
||
|
# trunk-ignore-all(checkov/CKV_DOCKER_3): We must run as root for this container
|
||
|
# trunk-ignore-all(trivy/DS002): We must run as root for this container
|
||
|
# trunk-ignore-all(checkov/CKV_DOCKER_8): We must run as root for this container
|
||
|
# trunk-ignore-all(hadolint/DL3002): We must run as root for this container
|
||
|
|
||
|
FROM gcr.io/oss-fuzz-base/base-builder:v1
|
||
|
|
||
|
ENV PIP_ROOT_USER_ACTION=ignore
|
||
|
|
||
|
# trunk-ignore(hadolint/DL3008): apt packages are not pinned.
|
||
|
# trunk-ignore(terrascan/AC_DOCKER_0002): apt packages are not pinned.
|
||
|
RUN apt-get update && apt-get install --no-install-recommends -y \
|
||
|
cmake git zip libgpiod-dev libbluetooth-dev libi2c-dev \
|
||
|
libunistring-dev libmicrohttpd-dev libgnutls28-dev libgcrypt20-dev \
|
||
|
libusb-1.0-0-dev libssl-dev pkg-config && \
|
||
|
apt-get clean && rm -rf /var/lib/apt/lists/* && \
|
||
|
pip install --no-cache-dir -U \
|
||
|
platformio==6.1.16 \
|
||
|
grpcio-tools==1.68.1 \
|
||
|
meshtastic==2.5.9
|
||
|
|
||
|
# Ugly hack to avoid clang detecting a conflict between the math "log" function and the "log" function in framework-portduino/cores/portduino/logging.h
|
||
|
RUN sed -i -e 's/__MATHCALL_VEC (log,, (_Mdouble_ __x));//' /usr/include/x86_64-linux-gnu/bits/mathcalls.h
|
||
|
|
||
|
# A few dependencies are too old on the base-builder image. More recent versions are built from source.
|
||
|
WORKDIR $SRC
|
||
|
RUN git config --global advice.detachedHead false && \
|
||
|
git clone --depth 1 --branch 0.8.0 https://github.com/jbeder/yaml-cpp.git && \
|
||
|
git clone --depth 1 --branch v2.3.3 https://github.com/babelouest/orcania.git && \
|
||
|
git clone --depth 1 --branch v1.4.20 https://github.com/babelouest/yder.git && \
|
||
|
git clone --depth 1 --branch v2.7.15 https://github.com/babelouest/ulfius.git
|
||
|
|
||
|
COPY ./.clusterfuzzlite/build.sh $SRC/
|
||
|
|
||
|
WORKDIR $SRC/firmware
|
||
|
COPY . $SRC/firmware/
|
||
|
|
||
|
# https://docs.platformio.org/en/latest/envvars.html
|
||
|
ENV PLATFORMIO_CORE_DIR=$SRC/pio/core \
|
||
|
PLATFORMIO_LIBDEPS_DIR=$SRC/pio/libdeps \
|
||
|
PLATFORMIO_PACKAGES_DIR=$SRC/pio/packages \
|
||
|
PLATFORMIO_SETTING_ENABLE_CACHE=No \
|
||
|
PIO_ENV=buildroot
|
||
|
RUN platformio pkg install --environment $PIO_ENV
|