From 79154921e86e791e24b52df61493ed22676b73ad Mon Sep 17 00:00:00 2001 From: Artur Tynecki <77382963+ATmobica@users.noreply.github.com> Date: Sat, 22 Oct 2022 00:45:53 +0200 Subject: [PATCH] [OIS] Open IoT SDK platform environment (#22992) * [OIS] Add Open IoT SDK development environment to the Matter project Bump cmake version to 3.23.1 and extend libraries layer in chip-build Docker image. Remove Cmake version overriding in scripts/python.json. Create Docker image for Open IoT SDK platform. Forward Open IoT SDK components to VScode Docker image. Add necessary paths to devcontainer Docker file. Bump Docker image version. Add Open IoT SDK to docker image workflow Signed-off-by: ATmobica * [OIS] Add Open IoT SDK sources to third_party Add SDK and storage sources as submodules to third_part/open-iot-sdk directory. Add Open IoT SDK platfrom to checkout_submodules.py script. Signed-off-by: ATmobica * [OIS] Add Open IoT SDK Python environment requirements Create Open IoT SDK Python requirements. Add pytest-json-report to pigweed Python environment. Signed-off-by: ATmobica Signed-off-by: ATmobica --- .devcontainer/Dockerfile | 3 ++ .github/workflows/docker_img.yaml | 1 + .gitmodules | 10 ++++ .../images/chip-build-openiotsdk/Dockerfile | 52 +++++++++++++++++++ .../images/chip-build-openiotsdk/build.sh | 1 + .../images/chip-build-openiotsdk/run.sh | 1 + .../images/chip-build-openiotsdk/version | 1 + .../images/chip-build-vscode/Dockerfile | 18 +++++++ .../docker/images/chip-build/Dockerfile | 8 +-- integrations/docker/images/chip-build/version | 2 +- scripts/checkout_submodules.py | 1 + scripts/constraints.txt | 9 +++- scripts/python.json | 5 -- scripts/requirements.openiotsdk.txt | 1 + scripts/requirements.txt | 3 ++ third_party/open-iot-sdk/sdk | 1 + third_party/open-iot-sdk/storage | 1 + 17 files changed, 107 insertions(+), 11 deletions(-) create mode 100644 integrations/docker/images/chip-build-openiotsdk/Dockerfile create mode 120000 integrations/docker/images/chip-build-openiotsdk/build.sh create mode 120000 integrations/docker/images/chip-build-openiotsdk/run.sh create mode 120000 integrations/docker/images/chip-build-openiotsdk/version create mode 100644 scripts/requirements.openiotsdk.txt create mode 160000 third_party/open-iot-sdk/sdk create mode 160000 third_party/open-iot-sdk/storage diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index aa85ea11d42d0a..aa89d097aae4ca 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -86,3 +86,6 @@ RUN sed -i '/^TIZEN_SDK_DATA_PATH/d' $TIZEN_SDK_ROOT/sdk.info \ && : # last line ENV TIZEN_ROOTFS /tizen_rootfs + +# Fast Model GDB plugins path for debugging support +ENV FAST_MODEL_PLUGINS_PATH /opt/FastModelsPortfolio_11.16/plugins/Linux64_GCC-9.3 diff --git a/.github/workflows/docker_img.yaml b/.github/workflows/docker_img.yaml index 73c45ee303a756..98619b886d9303 100644 --- a/.github/workflows/docker_img.yaml +++ b/.github/workflows/docker_img.yaml @@ -54,6 +54,7 @@ jobs: - "-telink" - "-ti" - "-tizen" + - "-openiotsdk" # NOTE: vscode image consumes ~52 GB disk space but GitHub-hosted runners provide ~10 GB free disk space(https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners#supported-runners-and-hardware-resources) #- "-vscode" - "-zap" diff --git a/.gitmodules b/.gitmodules index 5a60849e011130..5b8d0b466a3b40 100644 --- a/.gitmodules +++ b/.gitmodules @@ -288,3 +288,13 @@ url = https://github.com/matter-mtk/genio-matter-lwip.git branch = main platforms = genio +[submodule "open-iot-sdk"] + path = third_party/open-iot-sdk/sdk + url = https://git.gitlab.arm.com/iot/open-iot-sdk/sdk.git + branch = main + platforms = openiotsdk +[submodule "open-iot-sdk-storage"] + path = third_party/open-iot-sdk/storage + url = https://git.gitlab.arm.com/iot/open-iot-sdk/storage.git + branch = main + platforms = openiotsdk diff --git a/integrations/docker/images/chip-build-openiotsdk/Dockerfile b/integrations/docker/images/chip-build-openiotsdk/Dockerfile new file mode 100644 index 00000000000000..d3daf90439b5d3 --- /dev/null +++ b/integrations/docker/images/chip-build-openiotsdk/Dockerfile @@ -0,0 +1,52 @@ +ARG VERSION=latest +FROM connectedhomeip/chip-build:${VERSION} as build + +RUN set -x \ + && apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install -fy --no-install-recommends \ + wget=1.20.3-1ubuntu2 \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/ \ + && : # last line + +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +# ------------------------------------------------------------------------------ +# Download ARM GCC toolchain 10.3-2021.10 +RUN set -x \ + && wget -q https://developer.arm.com/-/media/Files/downloads/gnu-rm/10.3-2021.10/gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2 \ + && tar -xjf gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2 -C /opt \ + && rm -r gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2 \ + && : # last line + +# ------------------------------------------------------------------------------ +# Install FVP Corstone 300 +RUN set -x \ + && wget -q https://developer.arm.com/-/media/Arm%20Developer%20Community/Downloads/OSS/FVP/Corstone-300/FVP_Corstone_SSE-300_11.16_26.tgz \ + && tar -xzf FVP_Corstone_SSE-300_11.16_26.tgz \ + && ./FVP_Corstone_SSE-300.sh --i-agree-to-the-contained-eula -d /opt/FVP_Corstone_SSE-300 -f --no-interactive \ + && rm -r FVP_Corstone_SSE-300_11.16_26.tgz FVP_Corstone_SSE-300.sh license_terms \ + && : # last line + +FROM connectedhomeip/chip-build:${VERSION} + +COPY --from=build /opt/gcc-arm-none-eabi-10.3-2021.10/ /opt/gcc-arm-none-eabi-10.3-2021.10/ +COPY --from=build /opt/FVP_Corstone_SSE-300/ /opt/FVP_Corstone_SSE-300/ + +# Required packages for building, running and testing +RUN set -x \ + && apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install -fy \ + expect \ + telnet \ + srecord \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/ \ + && : # last line + +# ------------------------------------------------------------------------------ +# Configure environment variables +ENV FVP_CORSTONE_300_PATH=/opt/FVP_Corstone_SSE-300 +ENV ARM_GCC_TOOLCHAIN_PATH=/opt/gcc-arm-none-eabi-10.3-2021.10 + +ENV PATH="${PATH}:${FVP_CORSTONE_300_PATH}/models/Linux64_GCC-6.4:${ARM_GCC_TOOLCHAIN_PATH}/bin" diff --git a/integrations/docker/images/chip-build-openiotsdk/build.sh b/integrations/docker/images/chip-build-openiotsdk/build.sh new file mode 120000 index 00000000000000..fcb4d4ee75d531 --- /dev/null +++ b/integrations/docker/images/chip-build-openiotsdk/build.sh @@ -0,0 +1 @@ +../../build.sh \ No newline at end of file diff --git a/integrations/docker/images/chip-build-openiotsdk/run.sh b/integrations/docker/images/chip-build-openiotsdk/run.sh new file mode 120000 index 00000000000000..ccbd3501b330d9 --- /dev/null +++ b/integrations/docker/images/chip-build-openiotsdk/run.sh @@ -0,0 +1 @@ +../../run.sh \ No newline at end of file diff --git a/integrations/docker/images/chip-build-openiotsdk/version b/integrations/docker/images/chip-build-openiotsdk/version new file mode 120000 index 00000000000000..a4280acd348e7f --- /dev/null +++ b/integrations/docker/images/chip-build-openiotsdk/version @@ -0,0 +1 @@ +../chip-build/version \ No newline at end of file diff --git a/integrations/docker/images/chip-build-vscode/Dockerfile b/integrations/docker/images/chip-build-vscode/Dockerfile index 669d00f80138f1..d3c4dc78efe992 100644 --- a/integrations/docker/images/chip-build-vscode/Dockerfile +++ b/integrations/docker/images/chip-build-vscode/Dockerfile @@ -12,6 +12,7 @@ FROM connectedhomeip/chip-build-ameba:${VERSION} AS ameba FROM connectedhomeip/chip-build-k32w:${VERSION} AS k32w FROM connectedhomeip/chip-build-imx:${VERSION} AS imx FROM connectedhomeip/chip-build-ti:${VERSION} AS ti +FROM connectedhomeip/chip-build-openiotsdk:${VERSION} AS openiotsdk FROM connectedhomeip/chip-build-zap:${VERSION} AS zap FROM connectedhomeip/chip-build:${VERSION} @@ -47,6 +48,9 @@ COPY --from=imx /opt/fsl-imx-xwayland /opt/fsl-imx-xwayland COPY --from=ti /opt/ti/sysconfig_1.13.0 /opt/ti/sysconfig_1.13.0 +COPY --from=openiotsdk /opt/gcc-arm-none-eabi-10.3-2021.10/ /opt/gcc-arm-none-eabi-10.3-2021.10/ +COPY --from=openiotsdk /opt/FVP_Corstone_SSE-300/ /opt/FVP_Corstone_SSE-300/ + COPY --from=zap /opt/zap /opt/zap # Android license file "acceping" is done by writing license hashes @@ -66,6 +70,17 @@ RUN set -x \ && rm -rf /var/lib/apt/lists/* \ && : # last line +# Required for the Open IoT SDK platform +RUN set -x \ + && apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install -fy \ + expect \ + telnet \ + srecord \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/ \ + && : # last line + # Required for the Bouffalolab platform RUN set -x \ && pip3 install bflb-iot-tool \ @@ -95,3 +110,6 @@ ENV ZEPHYR_TOOLCHAIN_VARIANT=gnuarmemb ENV TIZEN_VERSION 6.0 ENV TIZEN_SDK_ROOT /opt/tizen-sdk ENV TIZEN_SDK_SYSROOT $TIZEN_SDK_ROOT/platforms/tizen-$TIZEN_VERSION/mobile/rootstraps/mobile-$TIZEN_VERSION-device.core + +ENV FVP_CORSTONE_300_PATH=/opt/FVP_Corstone_SSE-300 +ENV ARM_GCC_TOOLCHAIN_PATH=/opt/gcc-arm-none-eabi-10.3-2021.10 diff --git a/integrations/docker/images/chip-build/Dockerfile b/integrations/docker/images/chip-build/Dockerfile index 861f5ecb2df4e7..782aa74f64afea 100644 --- a/integrations/docker/images/chip-build/Dockerfile +++ b/integrations/docker/images/chip-build/Dockerfile @@ -69,12 +69,12 @@ RUN set -x \ && git lfs install \ && : # last line -# Cmake (Mbed OS requires >=3.19.0-rc3 version which is not available in Ubuntu 20.04 repository) +# Cmake v3.23.1 RUN set -x \ && (cd /tmp \ - && wget --progress=dot:giga https://github.com/Kitware/CMake/releases/download/v3.19.3/cmake-3.19.3-Linux-x86_64.sh \ - && sh cmake-3.19.3-Linux-x86_64.sh --exclude-subdir --prefix=/usr/local \ - && rm -rf cmake-3.19.3-Linux-x86_64.sh) \ + && wget --progress=dot:giga https://github.com/Kitware/CMake/releases/download/v3.23.1/cmake-3.23.1-Linux-x86_64.sh \ + && sh cmake-3.23.1-Linux-x86_64.sh --exclude-subdir --prefix=/usr/local \ + && rm -rf cmake-3.23.1-Linux-x86_64.sh) \ && exec bash \ && : # last line diff --git a/integrations/docker/images/chip-build/version b/integrations/docker/images/chip-build/version index b288fd5e8ac786..a6f77c540bdd9a 100644 --- a/integrations/docker/images/chip-build/version +++ b/integrations/docker/images/chip-build/version @@ -1 +1 @@ -0.6.03 Version bump reason: [Ameba] Replace C2 notify with indicate as required by Matter spec +0.6.04 Version bump reason: [OIS] Add Open IoT SDK Docker image integration diff --git a/scripts/checkout_submodules.py b/scripts/checkout_submodules.py index ebea028957dfcf..c5967949b9cd3a 100755 --- a/scripts/checkout_submodules.py +++ b/scripts/checkout_submodules.py @@ -45,6 +45,7 @@ 'webos', 'mw320', 'genio', + 'openiotsdk', ]) Module = namedtuple('Module', 'name path platforms') diff --git a/scripts/constraints.txt b/scripts/constraints.txt index f29bbc7d5a4337..de47efb650bebd 100644 --- a/scripts/constraints.txt +++ b/scripts/constraints.txt @@ -234,7 +234,14 @@ pyserial==3.5 # mbed-tools # mobly pytest==6.2.5 ; platform_machine != "aarch64" and sys_platform == "linux" - # via -r requirements.mbed.txt + # via + # -r requirements.mbed.txt + # pytest-json-report + # pytest-metadata +pytest-json-report==1.5.0 + # via -r requirements.openiotsdk.txt +pytest-metadata==2.0.2 + # via pytest-json-report python-dateutil==2.8.1 # via # pandas diff --git a/scripts/python.json b/scripts/python.json index 06db285a2607c8..0df6cc494ab40a 100644 --- a/scripts/python.json +++ b/scripts/python.json @@ -4,11 +4,6 @@ "path": "infra/3pp/tools/cpython3/${platform}", "platforms": ["mac-amd64", "windows-amd64"], "tags": ["version:2@3.9.5.chromium.19"] - }, - { - "path": "fuchsia/third_party/cmake/${platform}", - "platforms": ["mac-amd64", "linux-amd64"], - "tags": ["version:3.20.20210428-g857373c"] } ] } diff --git a/scripts/requirements.openiotsdk.txt b/scripts/requirements.openiotsdk.txt new file mode 100644 index 00000000000000..319312169ae92e --- /dev/null +++ b/scripts/requirements.openiotsdk.txt @@ -0,0 +1 @@ +pytest-json-report>=1.5.0 \ No newline at end of file diff --git a/scripts/requirements.txt b/scripts/requirements.txt index e33963c48c2a42..21a3bb5f5cf0a0 100644 --- a/scripts/requirements.txt +++ b/scripts/requirements.txt @@ -11,6 +11,9 @@ virtualenv # bouffalolab -r requirements.bouffalolab.txt +# openiotsdk +-r requirements.openiotsdk.txt + # cirque tests requests>=2.24.0 diff --git a/third_party/open-iot-sdk/sdk b/third_party/open-iot-sdk/sdk new file mode 160000 index 00000000000000..e71066cfbe4e1d --- /dev/null +++ b/third_party/open-iot-sdk/sdk @@ -0,0 +1 @@ +Subproject commit e71066cfbe4e1dc21bcf0a88840ea8e88625de24 diff --git a/third_party/open-iot-sdk/storage b/third_party/open-iot-sdk/storage new file mode 160000 index 00000000000000..b5e4edc1b65ada --- /dev/null +++ b/third_party/open-iot-sdk/storage @@ -0,0 +1 @@ +Subproject commit b5e4edc1b65adafbe6f646c474bc8c206cd8370a