From 0cf095966fc49491781d487e81188d3ceb4f0635 Mon Sep 17 00:00:00 2001 From: "Kuba (Brecka) Mracek" Date: Mon, 16 Dec 2024 09:30:59 -0800 Subject: [PATCH] Set up Github Actions CI for swift-matter-examples, fix outstanding build failures - build.yml now builds the 3 examples projects in this repo using the `espressif/esp-matter:latest` container and a fixed swift toolchain version from swift.org - the examples are just built, not runtime testing, for now - a couple of tiny fixes to resolve build failures (strdup, missing IOU on RootNode) --- .github/workflows/build.yml | 58 ++++++++++++++++++++++++++++ empty-template/main/BridgingHeader.h | 2 + led-blink/main/BridgingHeader.h | 2 + smart-light/Matter/Matter.swift | 4 +- smart-light/main/BridgingHeader.h | 2 + 5 files changed, 67 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/build.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..90b2ca2 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,58 @@ +name: Build Matter Examples + +on: + push: + branches: ["main"] + pull_request: + branches: ["main"] + schedule: + # Build on Mondays at 9am PST every week + - cron: '0 17 * * 1' + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + build: + runs-on: ubuntu-latest + container: espressif/esp-matter:latest + + strategy: + fail-fast: false + matrix: + example: [empty-template, led-blink, smart-light] + swift: [swift-DEVELOPMENT-SNAPSHOT-2024-12-13-a] + + steps: + - name: Checkout repo + uses: actions/checkout@v4 + + - name: Install Swift ${{ matrix.swift }} & CMake + run: | + set -vex + + wget -q https://download.swift.org/development/ubuntu2404/${{ matrix.swift }}/${{ matrix.swift }}-ubuntu24.04.tar.gz + tar xzf ${{ matrix.swift }}-ubuntu24.04.tar.gz + export PATH="$PATH:`pwd`/${{ matrix.swift }}-ubuntu24.04/usr/bin/" + swiftc --version + + wget https://github.com/Kitware/CMake/releases/download/v3.30.2/cmake-3.30.2-linux-x86_64.tar.gz + tar xzf cmake-3.30.2-linux-x86_64.tar.gz + export PATH="`pwd`/cmake-3.30.2-linux-x86_64/bin:$PATH" + cmake --version + + echo "PATH=$PATH" >> $GITHUB_ENV + + - name: Build with idf.py + run: | + pwd + cd /opt/espressif/esp-idf + . ./export.sh + cd - + cd /opt/espressif/esp-matter + . ./export.sh + cd - + cd ${{ matrix.example }}/ + idf.py set-target esp32c6 && + idf.py build diff --git a/empty-template/main/BridgingHeader.h b/empty-template/main/BridgingHeader.h index b3e8395..c81b9c9 100644 --- a/empty-template/main/BridgingHeader.h +++ b/empty-template/main/BridgingHeader.h @@ -38,6 +38,8 @@ // // connectedhomeip/src/credentials/FabricTable.h:82:69: error: use of undeclared identifier 'strnlen' extern "C" size_t strnlen(const char *s, size_t maxlen); +// esp-matter/components/esp_matter/esp_matter_client.h:57:26: error: use of undeclared identifier 'strdup' +extern "C" char *strdup(const char *s1); #include #include diff --git a/led-blink/main/BridgingHeader.h b/led-blink/main/BridgingHeader.h index b3e8395..c81b9c9 100644 --- a/led-blink/main/BridgingHeader.h +++ b/led-blink/main/BridgingHeader.h @@ -38,6 +38,8 @@ // // connectedhomeip/src/credentials/FabricTable.h:82:69: error: use of undeclared identifier 'strnlen' extern "C" size_t strnlen(const char *s, size_t maxlen); +// esp-matter/components/esp_matter/esp_matter_client.h:57:26: error: use of undeclared identifier 'strdup' +extern "C" char *strdup(const char *s1); #include #include diff --git a/smart-light/Matter/Matter.swift b/smart-light/Matter/Matter.swift index ab4ac6d..452c271 100644 --- a/smart-light/Matter/Matter.swift +++ b/smart-light/Matter/Matter.swift @@ -21,7 +21,9 @@ extension Matter { endpoints.append(endpoint) } - var innerNode: RootNode + // swift-format-ignore: NeverUseImplicitlyUnwrappedOptionals + // This is never actually nil after init(), and inside init we want to form a callback closure that references self. + var innerNode: RootNode! init() { // Initialize persistent storage. diff --git a/smart-light/main/BridgingHeader.h b/smart-light/main/BridgingHeader.h index 120de9b..7ed8122 100644 --- a/smart-light/main/BridgingHeader.h +++ b/smart-light/main/BridgingHeader.h @@ -38,6 +38,8 @@ // // connectedhomeip/src/credentials/FabricTable.h:82:69: error: use of undeclared identifier 'strnlen' extern "C" size_t strnlen(const char *s, size_t maxlen); +// esp-matter/components/esp_matter/esp_matter_client.h:57:26: error: use of undeclared identifier 'strdup' +extern "C" char *strdup(const char *s1); #include #include