1# Build environment for Floss 2# 3# This dockerfile generates the build environment required to build Floss, which 4# is the Linux build for the Fluoride Bluetooth stack. 5 6# Inherit from a recent Debian version. The slim version is a smaller variant 7# meant for containers. 8# This digest is taken from the tag debian:bookworm-slim (if you want to update) 9FROM debian@sha256:b66f66d473ef3128436ba2812198edcae86c268eb530dff44ff6ae26f9a2ee30 10 11# First install all required apt packages. 12RUN apt-get update && \ 13 apt-get install -y \ 14 bison \ 15 build-essential \ 16 clang \ 17 cmake \ 18 curl \ 19 debmake \ 20 flatbuffers-compiler \ 21 flex \ 22 g++-multilib \ 23 gcc-multilib \ 24 generate-ninja \ 25 gnupg \ 26 gperf \ 27 libabsl-dev \ 28 libc++abi-dev \ 29 libc++-dev \ 30 libdbus-1-dev \ 31 libdouble-conversion-dev \ 32 libevent-dev \ 33 libflatbuffers-dev \ 34 libgl1-mesa-dev \ 35 libglib2.0-dev \ 36 libgtest-dev \ 37 libgmock-dev \ 38 liblz4-tool \ 39 libncurses5 \ 40 libnss3-dev \ 41 libprotobuf-dev \ 42 libre2-9 \ 43 libre2-dev \ 44 libssl-dev \ 45 libtinyxml2-dev \ 46 libx11-dev \ 47 libxml2-utils \ 48 ninja-build \ 49 openssl \ 50 protobuf-compiler \ 51 python3 \ 52 unzip \ 53 x11proto-core-dev \ 54 xsltproc \ 55 zip \ 56 zlib1g-dev \ 57 ; 58 59# Next install the Rust toolchain. Download the toolchain to the local folder 60# using curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs 61ADD rustup/rustup.sh /tmp 62RUN /tmp/rustup.sh -y --default-toolchain 1.68.2 63 64# Add .cargo/bin to $PATH 65ENV PATH="/root/.cargo/bin:${PATH}" 66 67# Install cargo packages required on build image. 68RUN cargo install cxxbridge-cmd --version 1.0.94 69 70# Rename llvm packages. By default, they are named 11vm-ar-13, etc. which won't 71# work properly with the build. 72ADD llvm-rename.sh /tmp 73RUN /tmp/llvm-rename.sh 14 74 75# At this point, the base container is ready. Now we need to build and install 76# both libchrome and modp-b64. If you ran this via `docker-build-image.py`, this 77# will be done after the image is created and tagged. Otherwise, you need to 78# manually mount the source and run the dpkg builders in `system/build/dpkg`. 79