# Copyright (c) 2020 Project CHIP Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

name: Build example - EFR32

on:
  push:
  pull_request:
  merge_group:

concurrency:
  group: ${{ github.ref }}-${{ github.workflow }}-${{ (github.event_name == 'pull_request' && github.event.number) || (github.event_name == 'workflow_dispatch' && github.run_number) || github.sha }}
  cancel-in-progress: true

env:
  CHIP_NO_LOG_TIMESTAMPS: true
  # XXX: Workaround for https://github.com/actions/cache/issues/1141
  SEGMENT_DOWNLOAD_TIMEOUT_MINS: 3

jobs:
  efr32:
    name: EFR32
    timeout-minutes: 110

    env:
      SILABS_BOARD: BRD4161A
      BUILD_TYPE: gn_efr32

    runs-on: ubuntu-latest
    if: github.actor != 'restyled-io[bot]'

    container:
      image: connectedhomeip/chip-build-efr32:0.7.3
      volumes:
        - "/tmp/bloat_reports:/tmp/bloat_reports"
    steps:
      - uses: Wandalen/wretry.action@v1.0.36
        name: Checkout
        with:
          action: actions/checkout@v3.5.2
          with: |
            token: ${{ github.token }}
          attempt_limit: 3
          attempt_delay: 2000
      - name: Checkout submodules
        run: scripts/checkout_submodules.py --allow-changing-global-git-config --shallow --platform silabs_docker

      # - name: Out of Tree verification
      #   run: third_party/silabs/out_of_tree_verification.sh

      - name: Set up environment for size reports
        if: ${{ !env.ACT }}
        env:
          GH_CONTEXT: ${{ toJson(github) }}
        run: scripts/tools/memory/gh_sizes_environment.py "${GH_CONTEXT}"

      - name: Bootstrap cache
        uses: buildjet/cache@v3
        timeout-minutes: 10
        with:
          key: ${{ runner.os }}-env-${{ hashFiles('scripts/setup/*', 'third_party/pigweed/**') }}
          path: |
            .environment
            build_overrides/pigweed_environment.gni
      - name: Bootstrap
        timeout-minutes: 25
        run: bash scripts/bootstrap.sh
      - name: Uploading bootstrap logs
        uses: actions/upload-artifact@v3
        if: ${{ always() && !env.ACT }}
        with:
          name: bootstrap-logs
          path: |
            .environment/gn_out/.ninja_log
            .environment/pigweed-venv/*.log
      - name: Test SLC gen
        timeout-minutes: 30
        run: |
          scripts/examples/gn_silabs_example.sh examples/lighting-app/silabs ./out/light-app BRD4187C --slc_generate --docker
          scripts/examples/gn_silabs_example.sh examples/lighting-app/silabs ./out/light-app BRD4164A --slc_generate --docker
          rm -rf ./out/
      - name: Build some BRD4187C variants
        timeout-minutes: 90
        run: |
          ./scripts/run_in_build_env.sh \
             "./scripts/build/build_examples.py \
                --enable-flashbundle \
                --target efr32-brd4187c-window-covering-additional_data_advertising \
                --target efr32-brd4187c-thermostat-openthread_mtd \
                --target efr32-brd4187c-switch-sed-shell-use_ot_coap_lib \
                --target efr32-brd4187c-unit-test \
                --target efr32-brd4187c-light-use_ot_lib \
                --target efr32-brd4187c-light-rpc \
                --target efr32-brd4187c-lock-rpc-shell-enable_heap_monitoring \
                build \
                --copy-artifacts-to out/artifacts \
             "
      - name: Prepare some bloat report from the previous builds
        run: |
          .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
             efr32 BRD4187C lighting-app \
             out/efr32-brd4187c-light-rpc/matter-silabs-lighting-example.out \
             /tmp/bloat_reports/
          .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py  \
             efr32 BRD4187C window-app \
             out/efr32-brd4187c-window-covering-additional_data_advertising/matter-silabs-window-example.out \
             /tmp/bloat_reports/
      - name: Clean out build output
        run: rm -rf ./out
      - name: Build example EFR32+WF200 WiFi Lock app for BRD4161A
        timeout-minutes: 15
        run: |
          scripts/examples/gn_silabs_example.sh examples/lock-app/silabs out/lock_app_wifi_wf200 BRD4161A is_debug=false chip_logging=false --wifi wf200 --docker
          .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py efr32 BRD4161A+wf200 lock-app \
            out/lock_app_wifi_wf200/BRD4161A/matter-silabs-lock-example.out /tmp/bloat_reports/
      - name: Clean out build output
        run: rm -rf ./out
      - name: Build example EFR32+RS9116 WiFi Lighting app for BRD4161A
        timeout-minutes: 15
        run: |
          scripts/examples/gn_silabs_example.sh examples/lighting-app/silabs out/lighting_app_wifi_rs9116 BRD4161A --wifi rs9116 --docker
          .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py efr32 BRD4161A+rs9116 lighting-app \
            out/lighting_app_wifi_rs9116/BRD4161A/matter-silabs-lighting-example.out /tmp/bloat_reports/
      - name: Clean out build output
        run: rm -rf ./out
      - name: Uploading Size Reports
        uses: actions/upload-artifact@v3
        if: ${{ !env.ACT }}
        with:
          name: Size,EFR32-Examples,${{ env.GH_EVENT_PR }},${{ env.GH_EVENT_HASH }},${{ env.GH_EVENT_PARENT }},${{ github.event_name }}
          path: |
            /tmp/bloat_reports/
