[Silabs] Adds support for WiseConnect SDK 3.0 in docker image and image optimization (#29304)
* Adding wiseconnect in efr32 docker image
* Optimize Dockerfile build
* Adds SDK support to VScode docker image
* Adds changes as per comments
* Adds fix for extracting to /tmp (RAM)
* Adds the changes in filepath
---------
Co-authored-by: Rohan Sahay <rohan.sahay@silabs.com>
diff --git a/integrations/docker/images/base/chip-build/version b/integrations/docker/images/base/chip-build/version
index e7fa94e..6b3a285 100644
--- a/integrations/docker/images/base/chip-build/version
+++ b/integrations/docker/images/base/chip-build/version
@@ -1 +1 @@
-13 : [Bouffalolab] Update bflb-iot-tool to 1.8.6
+14 : [Silabs] Adding Wiseconnect sdk and and image optimization
diff --git a/integrations/docker/images/stage-2/chip-build-efr32/Dockerfile b/integrations/docker/images/stage-2/chip-build-efr32/Dockerfile
index 619dcb8..fbbe850 100644
--- a/integrations/docker/images/stage-2/chip-build-efr32/Dockerfile
+++ b/integrations/docker/images/stage-2/chip-build-efr32/Dockerfile
@@ -1,43 +1,69 @@
ARG VERSION=1
-FROM ghcr.io/project-chip/chip-build:${VERSION}
+FROM ghcr.io/project-chip/chip-build:${VERSION} as build
LABEL org.opencontainers.image.source https://github.com/project-chip/connectedhomeip
+# Requirements to clone SDKs in temporary container
+RUN set -x \
+ && apt-get update \
+ && DEBIAN_FRONTEND=noninteractive apt-get install -fy --no-install-recommends \
+ git \
+ git-lfs \
+ && apt-get clean \
+ && rm -rf /var/lib/apt/lists/ \
+ && : # last line
+
+
+# Clone Gecko SDK 4.3.1 (2ba59bf)
+RUN git clone --depth=1 --branch=v4.3.1 https://github.com/SiliconLabs/gecko_sdk.git /tmp/gecko_sdk && \
+ cd /tmp/gecko_sdk && \
+ rm -rf .git \
+ && : # last line
+
+# Clone Wiseconnect SDK 3.1.0-MatterCert (f84bf66)
+RUN git clone --depth=1 --branch=MatterCert https://github.com/SiliconLabs/wiseconnect.git /tmp/wifi_sdk && \
+ cd /tmp/wifi_sdk && \
+ rm -rf .git \
+ && : # last line
+
+# SLC-cli install
+# TODO: figure out a way to make this a fixed version. Currently a moving target.
+RUN wget https://www.silabs.com/documents/login/software/slc_cli_linux.zip && \
+ unzip ./slc_cli_linux.zip -d /tmp/slc_cli && \
+ rm ./slc_cli_linux.zip \
+ && : # last line
+
+# Final SDK container for compiling using Silabs SDK
+FROM ghcr.io/project-chip/chip-build:${VERSION}
+
# GNU ARM Embedded toolchain, cross compiler for various platform builds
RUN set -x \
&& apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -fy --no-install-recommends \
gcc-arm-none-eabi \
binutils-arm-none-eabi \
- git-lfs \
- openjdk-17-jdk \
+ openjdk-17-jdk-headless \
python3-sphinx \
ccache \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/ \
+ # Install Python Packages
+ && pip3 install \
+ # codegen.py build requirements
+ # TODO: why are these added here instead of build-env?
+ lark \
+ jinja2 \
+ stringcase \
+ # Sphinx dependencies (for slc-cli)
+ myst_parser \
+ sphinx_rtd_theme \
+ sphinx_tabs \
+ linkify-it-py \
&& : # last line
+ENV GSDK_ROOT=/opt/silabs/gecko_sdk/
+ENV WISECONNECT_PATH=/opt/silabs/wifi_sdk/
+ENV PATH="${PATH}:/opt/silabs/slc_cli/"
-#Clone Gecko SDK 4.3.1 (2ba59bf)
-RUN git clone --depth=1 --branch=v4.3.1 https://github.com/SiliconLabs/gecko_sdk.git && \
- cd gecko_sdk && \
- rm -rf .git \
- && : # last line
-
-ENV GSDK_ROOT=/gecko_sdk/
-
-# SLC-cli install
-# TODO: figure out a way to make this a fixed version. Currently a moving target.
-RUN wget https://www.silabs.com/documents/login/software/slc_cli_linux.zip && \
- unzip ./slc_cli_linux.zip -d ./ && \
- rm ./slc_cli_linux.zip
-
-ENV PATH="${PATH}:/slc_cli/"
-
-# Install Python Packages
-
-# codegen.py build requirements
-# TODO: why are these added here instead of build-env?
-RUN pip3 install lark jinja2 stringcase
-
-# Sphinx dependencies (for slc-cli)
-RUN pip3 install myst_parser sphinx_rtd_theme sphinx_tabs linkify-it-py
+COPY --from=build /tmp/gecko_sdk /opt/silabs/gecko_sdk
+COPY --from=build /tmp/wifi_sdk /opt/silabs/wifi_sdk
+COPY --from=build /tmp/slc_cli /opt/silabs/slc_cli
diff --git a/integrations/docker/images/vscode/chip-build-vscode/Dockerfile b/integrations/docker/images/vscode/chip-build-vscode/Dockerfile
index 0873988..024936a 100644
--- a/integrations/docker/images/vscode/chip-build-vscode/Dockerfile
+++ b/integrations/docker/images/vscode/chip-build-vscode/Dockerfile
@@ -60,6 +60,9 @@
COPY --from=asr /opt/asr /opt/asr
+COPY --from=efr32 /opt/silabs/gecko_sdk /opt/silabs/gecko_sdk
+COPY --from=efr32 /opt/silabs/wifi_sdk /opt/silabs/wifi_sdk
+
# Android license file "acceping" is done by writing license hashes
# into the 'licenses' subfolder. This allows any user (in particular
# 'vscode' to accept licenses)
@@ -99,6 +102,8 @@
ENV ANDROID_NDK_HOME=/opt/android/android-ndk-r23c
ENV CY_TOOLS_PATHS="/opt/ModusToolbox/tools_2.4"
ENV SILABS_BOARD=BRD4161A
+ENV GSDK_ROOT=/opt/silabs/gecko_sdk/
+ENV WISECONNECT_PATH=/opt/silabs/wifi_sdk
ENV IDF_PATH=/opt/espressif/esp-idf/
ENV IDF_TOOLS_PATH=/opt/espressif/tools
ENV IMX_SDK_ROOT=/opt/fsl-imx-xwayland/6.1-langdale