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

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

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.6.06
      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 --shallow --recursive --platform efr32

      # - 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
        timeout-minutes: 25
        run: scripts/build/gn_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: 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 \
                --target efr32-brd4187c-switch \
                --target efr32-brd4187c-unit-test \
                --target efr32-brd4187c-light \
                --target efr32-brd4187c-light-rpc \
                --target efr32-brd4187c-lock-rpc \
                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/chip-efr32-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/chip-efr32-window-example.out \
             /tmp/bloat_reports/
      - name: Clean out build output
        run: rm -rf ./out
      - name: Build example EFR32 Lighting App for BRD4161A with RPCs
        timeout-minutes: 15
        run: |
          scripts/examples/gn_efr32_example.sh examples/lighting-app/silabs/efr32/ out/lighting_app_debug_rpc BRD4161A "is_debug=false" \
            disable_lcd=true 'import("//with_pw_rpc.gni")'
          .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py efr32 BRD4161A+rpc lighting-app \
            out/lighting_app_debug_rpc/BRD4161A/chip-efr32-lighting-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_efr32_example.sh examples/lock-app/efr32/ out/lock_app_wifi_wf200 BRD4161A is_debug=false --wifi wf200
          .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py efr32 BRD4161A+wf200 lock-app \
            out/lock_app_wifi_wf200/BRD4161A/chip-efr32-lock-example.out /tmp/bloat_reports/
      - name: Clean out build output
        run: rm -rf ./out
      - name: Build example EFR32+RS911x WiFi Lighting app for BRD4161A
        timeout-minutes: 15
        run: |
          scripts/examples/gn_efr32_example.sh examples/lighting-app/silabs/efr32/ out/lighting_app_wifi_rs911x BRD4161A --wifi rs911x
          .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py efr32 BRD4161A+rs911x lighting-app \
            out/lighting_app_wifi_rs911x/BRD4161A/chip-efr32-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/
