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