# 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: actions/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
          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/
