# Copyright (c) 2020-2021 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: Builds

on:
    push:
        branches-ignore:
            - 'dependabot/**'
    pull_request:
    merge_group:
    workflow_dispatch:
    workflow_call:
      inputs:
        run-codeql:
          required: false
          type: boolean
    
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
    
jobs:
    build_linux_gcc_debug:
        name: Build on Linux (gcc_debug)

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

        container:
            image: ghcr.io/project-chip/chip-build:53
            volumes:
                - "/:/runner-root-volume"
                - "/tmp/log_output:/tmp/test_logs"
            options: --privileged --sysctl "net.ipv6.conf.all.disable_ipv6=0
                net.ipv4.conf.all.forwarding=1 net.ipv6.conf.all.forwarding=1"

        steps:
            - name: Dump GitHub context
              env:
                  GITHUB_CONTEXT: ${{ toJSON(github) }}
              run: echo "$GITHUB_CONTEXT"
            - name: Dump Concurrency context
              env:
                  CONCURRENCY_CONTEXT: ${{ github.ref }}-${{ github.workflow }}-${{ (github.event_name == 'pull_request' && github.event.number) || (github.event_name == 'workflow_dispatch' && github.run_number) || github.sha }}
              run: echo "$CONCURRENCY_CONTEXT"
            - name: Checkout
              uses: actions/checkout@v4
            - name: Try to ensure the directories for core dumping exist and we
                  can write them.
              run: |
                  mkdir /tmp/cores || true
                  sysctl -w kernel.core_pattern=/tmp/cores/core.%u.%p.%t || true
            - name: Checkout submodules & Bootstrap
              uses: ./.github/actions/checkout-submodules-and-bootstrap
              with:
                platform: linux
            - name: Initialize CodeQL
              if: ${{ inputs.run-codeql  }}
              uses: github/codeql-action/init@v3
              with:
                  languages: "cpp"
            - name: Setup Build
              run: scripts/build/gn_gen.sh --args="chip_config_memory_debug_checks=true chip_config_memory_debug_dmalloc=false"
            - name: Run Build
              run: scripts/run_in_build_env.sh "ninja -C ./out"
            - name: Run Tests
              run: scripts/tests/gn_tests.sh
            # TODO Log Upload https://github.com/project-chip/connectedhomeip/issues/2227
            # TODO https://github.com/project-chip/connectedhomeip/issues/1512
            # - name: Run Code Coverage
            #   if: ${{ contains('main', env.BUILD_TYPE) }}
            #   run: scripts/tools/codecoverage.sh
            # - name: Upload Code Coverage
            #   if: ${{ contains('main', env.BUILD_TYPE) }}
            #   run: bash <(curl -s https://codecov.io/bash)
            - name: Set up Build Without Detail Logging
              run: scripts/build/gn_gen.sh --args="chip_detail_logging=false"
            - name: Run Build Without Detail Logging
              run: scripts/run_in_build_env.sh "ninja -C ./out"
            - name: Set up Build Without Progress Logging
              run: scripts/build/gn_gen.sh --args="chip_detail_logging=false chip_progress_logging=false"
            - name: Run Build Without Progress Logging
              run: scripts/run_in_build_env.sh "ninja -C ./out"
            - name: Set up Build Without Error Logging
              run: scripts/build/gn_gen.sh --args="chip_detail_logging=false chip_progress_logging=false chip_error_logging=false"
            - name: Run Build Without Error Logging
              run: scripts/run_in_build_env.sh "ninja -C ./out"
            - name: Set up Build Without Logging
              run: scripts/build/gn_gen.sh --args="chip_logging=false"
            - name: Run Build Without Logging
              run: scripts/run_in_build_env.sh "ninja -C ./out"
            - name: Uploading core files
              uses: actions/upload-artifact@v4
              if: ${{ failure() && !env.ACT }}
              with:
                  name: crash-core-linux-gcc-debug
                  path: /tmp/cores/
                  # Cores are big; don't hold on to them too long.
                  retention-days: 5
            - name: Perform CodeQL Analysis
              if: ${{ inputs.run-codeql  }}
              uses: ./.github/actions/perform-codeql-analysis
              with:
                language: cpp
            # OBJDIR on linux is > 10K files and takes more than 50 minutes to upload, usually
            # having the job timeout.
            #
            # If re-enabling, some subset of this should be picked
            #
            # - name: Uploading objdir for debugging
            #   uses: actions/upload-artifact@v4
            #   if: ${{ failure() && !env.ACT }}
            #   with:
            #       name: crash-objdir-linux-gcc-debug
            #       path: out/
            #       # objdirs are big; don't hold on to them too long.
            #       retention-days: 5

    build_linux:
        name: Build on Linux (fake, gcc_release, clang, simulated)

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

        container:
            image: ghcr.io/project-chip/chip-build:53
            volumes:
                - "/:/runner-root-volume"
                - "/tmp/log_output:/tmp/test_logs"
            options: --privileged --sysctl "net.ipv6.conf.all.disable_ipv6=0
                net.ipv4.conf.all.forwarding=1 net.ipv6.conf.all.forwarding=1"

        steps:
            - name: Dump GitHub context
              env:
                  GITHUB_CONTEXT: ${{ toJSON(github) }}
              run: echo "$GITHUB_CONTEXT"
            - name: Dump Concurrency context
              env:
                  CONCURRENCY_CONTEXT: ${{ github.ref }}-${{ github.workflow }}-${{ (github.event_name == 'pull_request' && github.event.number) || (github.event_name == 'workflow_dispatch' && github.run_number) || github.sha }}
              run: echo "$CONCURRENCY_CONTEXT"
            - name: Checkout
              uses: actions/checkout@v4
            - name: Try to ensure the directories for core dumping exist and we
                  can write them.
              run: |
                  mkdir /tmp/cores || true
                  sysctl -w kernel.core_pattern=/tmp/cores/core.%u.%p.%t || true
            - name: Checkout submodules & Bootstrap
              uses: ./.github/actions/checkout-submodules-and-bootstrap
              with:
                platform: linux
            - name: Initialize CodeQL
              if: ${{ inputs.run-codeql  }}
              uses: github/codeql-action/init@v3
              with:
                  languages: "cpp"
            - name: Setup and Build Simulated Device
              run: |
                  BUILD_TYPE=simulated
                  GN_ARGS='chip_tests_zap_config="app1" chip_project_config_include_dirs=["../../examples/placeholder/linux/apps/app1/include", "../../config/standalone"] chip_config_network_layer_ble=false'
                  CHIP_ROOT_PATH=examples/placeholder/linux
                  CHIP_ROOT_PATH="$CHIP_ROOT_PATH" BUILD_TYPE="$BUILD_TYPE" scripts/build/gn_gen.sh --args="$GN_ARGS"
                  scripts/run_in_build_env.sh "ninja -C ./out/$BUILD_TYPE"
            - name: Setup Build, Run Build and Run Tests
              run: |
                  BUILD_TYPE=gcc_release scripts/build/gn_gen.sh --args="is_debug=false"
                  scripts/run_in_build_env.sh "ninja -C ./out/gcc_release"
                  BUILD_TYPE=gcc_release scripts/tests/gn_tests.sh
            - name: Clean output
              run: rm -rf ./out
            - name: Run Tests with sanitizers
              env:
                  LSAN_OPTIONS: detect_leaks=1
              run: |
                  for BUILD_TYPE in asan tsan ubsan; do
                      case $BUILD_TYPE in
                          "asan") GN_ARGS='is_clang=true is_asan=true';;
                          "msan") GN_ARGS='is_clang=true is_msan=true';;
                          "tsan") GN_ARGS='is_clang=true is_tsan=true chip_enable_wifi=false';;
                          "ubsan") GN_ARGS='is_clang=true is_ubsan=true';;
                      esac

                      rm -rf ./out/sanitizers
                      BUILD_TYPE=sanitizers scripts/build/gn_gen.sh --args="$GN_ARGS" --export-compile-commands
                      BUILD_TYPE=sanitizers scripts/tests/gn_tests.sh
                  done
            - name: Ensure codegen is done for sanitize
              run: |
                  ./scripts/run_in_build_env.sh "./scripts/run_codegen_targets.sh out/sanitizers"
            - name: Clang-tidy validation
              run: |
                  ./scripts/run_in_build_env.sh \
                    "./scripts/run-clang-tidy-on-compile-commands.py \
                       --compile-database out/sanitizers/compile_commands.json \
                       --file-exclude-regex '/(repo|zzz_generated|lwip/standalone)/|-ReadImpl|-InvokeSubscribeImpl' \
                       check \
                    "
            - name: Clean output
              run: rm -rf ./out
            - name: Build using build_examples.py
              run: |
                  ./scripts/run_in_build_env.sh \
                    "./scripts/build/build_examples.py \
                       --target linux-x64-minmdns-ipv6only-clang \
                       --target linux-x64-rpc-console \
                       build \
                    "
            - name: Create a pre-generate directory and ensure compile-time codegen would fail
              run: |
                  ./scripts/run_in_build_env.sh "./scripts/codepregen.py ./zzz_pregenerated"
                  mv scripts/codegen.py scripts/codegen.py.renamed
                  mv scripts/tools/zap/generate.py scripts/tools/zap/generate.py.renamed
            - name: Clean output
              run: rm -rf ./out
            - name: Build using build_examples.py (pregen)
              run: |
                  ./scripts/run_in_build_env.sh \
                    "./scripts/build/build_examples.py \
                       --target linux-x64-all-clusters-ipv6only-clang \
                       --target linux-x64-chip-tool-ipv6only-clang \
                       --pregen-dir ./zzz_pregenerated \
                       build \
                    "
            - name: Undo code pre-generation changes (make compile time codegen work again)
              run: |
                  rm -rf ./zzz_pregenerated
                  mv scripts/codegen.py.renamed scripts/codegen.py
                  mv scripts/tools/zap/generate.py.renamed scripts/tools/zap/generate.py 
            - name: Run fake linux tests with build_examples
              run: |
                  ./scripts/run_in_build_env.sh \
                    "./scripts/build/build_examples.py --target linux-fake-tests build"
            - name: Perform CodeQL Analysis
              if: ${{ inputs.run-codeql  }}
              uses: ./.github/actions/perform-codeql-analysis
              with:
                language: cpp
        
            - name: Uploading core files
              uses: actions/upload-artifact@v4
              if: ${{ failure() && !env.ACT }}
              with:
                  name: crash-core-linux
                  path: /tmp/cores/
                  # Cores are big; don't hold on to them too long.
                  retention-days: 5
            # OBJDIR on linux is > 10K files and takes more than 50 minutes to upload, usually
            # having the job timeout.
            #
            # If re-enabling, some subset of this should be picked
            #
            # - name: Uploading objdir for debugging
            #   uses: actions/upload-artifact@v4
            #   if: ${{ failure() && !env.ACT }}
            #   with:
            #       name: crash-objdir-linux
            #       path: out/
            #       # objdirs are big; don't hold on to them too long.
            #       retention-days: 5

    build_linux_python_lib:
        name: Build on Linux (python_lib)

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

        container:
            image: ghcr.io/project-chip/chip-build:53
            volumes:
                - "/:/runner-root-volume"
                - "/tmp/log_output:/tmp/test_logs"
            options: --sysctl "net.ipv6.conf.all.disable_ipv6=0
                net.ipv4.conf.all.forwarding=1 net.ipv6.conf.all.forwarding=1"

        steps:
            - name: Dump GitHub context
              env:
                  GITHUB_CONTEXT: ${{ toJSON(github) }}
              run: echo "$GITHUB_CONTEXT"
            - name: Dump Concurrency context
              env:
                  CONCURRENCY_CONTEXT: ${{ github.ref }}-${{ github.workflow }}-${{ (github.event_name == 'pull_request' && github.event.number) || (github.event_name == 'workflow_dispatch' && github.run_number) || github.sha }}
              run: echo "$CONCURRENCY_CONTEXT"
            - name: Checkout
              uses: actions/checkout@v4
            - name: Checkout submodules & Bootstrap
              uses: ./.github/actions/checkout-submodules-and-bootstrap
              with:
                platform: linux

            - name: Setup Build, Run Build and Run Tests
              run: |
                  scripts/build/gn_gen.sh --args="enable_rtti=true enable_pylib=true chip_config_memory_debug_checks=false chip_config_memory_debug_dmalloc=false chip_generate_link_map_file=false"
                  scripts/run_in_build_env.sh "ninja -C ./out"
                  scripts/tests/gn_tests.sh
            - name: Setup test python environment
              shell: bash
              run: |
                  scripts/run_in_build_env.sh 'virtualenv pyenv'
                  source pyenv/bin/activate
                  pip3 install ./out/controller/python/chip_core-0.0-cp37-abi3-linux_x86_64.whl
                  pip3 install ./out/controller/python/chip_clusters-0.0-py3-none-any.whl
                  pip3 install ./out/controller/python/chip_repl-0.0-py3-none-any.whl

            - name: Run Python tests
              shell: bash
              run: |
                  source pyenv/bin/activate
                  cd src/controller/python/test/unit_tests/
                  python3 -m unittest -v
            - name: Clean previous outputs
              run: rm -rf out pyenv
            - name: Run Python Setup Payload Generator Test
              shell: bash
              run: |
                  scripts/run_in_build_env.sh 'scripts/examples/gn_build_example.sh examples/chip-tool out/'
                  scripts/run_in_build_env.sh 'virtualenv pyenv'
                  source pyenv/bin/activate
                  pip3 install -r src/setup_payload/python/requirements.txt
                  python3 src/setup_payload/tests/run_python_setup_payload_test.py out/chip-tool

    build_linux_python_lighting_device:
        name: Build on Linux (python lighting-app)

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

        container:
            image: ghcr.io/project-chip/chip-build:53
            volumes:
                - "/:/runner-root-volume"
                - "/tmp/log_output:/tmp/test_logs"
            options: --sysctl "net.ipv6.conf.all.disable_ipv6=0
                net.ipv4.conf.all.forwarding=1 net.ipv6.conf.all.forwarding=1"

        steps:
            - name: Dump GitHub context
              env:
                  GITHUB_CONTEXT: ${{ toJSON(github) }}
              run: echo "$GITHUB_CONTEXT"
            - name: Dump Concurrency context
              env:
                  CONCURRENCY_CONTEXT: ${{ github.ref }}-${{ github.workflow }}-${{ (github.event_name == 'pull_request' && github.event.number) || (github.event_name == 'workflow_dispatch' && github.run_number) || github.sha }}
              run: echo "$CONCURRENCY_CONTEXT"
            - name: Checkout
              uses: actions/checkout@v4
            - name: Checkout submodules & Bootstrap
              uses: ./.github/actions/checkout-submodules-and-bootstrap
              with:
                platform: linux

            - name: Setup Build
              run: |
                  scripts/build_python_device.sh --chip_detail_logging true

    build_darwin:
        name: Build on Darwin (clang, python_lib, simulated)
        runs-on: macos-13
        if: github.actor != 'restyled-io[bot]'

        steps:
            - name: Checkout
              uses: actions/checkout@v4
            - name: Checkout submodules & Bootstrap
              uses: ./.github/actions/checkout-submodules-and-bootstrap
              with:
                platform: darwin
            - name: Try to ensure the directory for diagnostic log collection exists
              run: |
                  mkdir -p ~/Library/Logs/DiagnosticReports || true
            - name: Initialize CodeQL
              if: ${{ inputs.run-codeql  }}
              uses: github/codeql-action/init@v3
              with:
                  languages: "cpp"

            - name: Setup and Build Simulated Device
              run: |
                  BUILD_TYPE=simulated
                  GN_ARGS='chip_tests_zap_config="app1" chip_project_config_include_dirs=["../../examples/placeholder/linux/apps/app1/include", "../../config/standalone"] chip_config_network_layer_ble=false'
                  CHIP_ROOT_PATH=examples/placeholder/linux
                  CHIP_ROOT_PATH="$CHIP_ROOT_PATH" BUILD_TYPE="$BUILD_TYPE" scripts/build/gn_gen.sh --args="$GN_ARGS"
                  scripts/run_in_build_env.sh "ninja -C ./out/$BUILD_TYPE"
            - name: Setup Build, Run Build and Run Tests
              # We can't enable leak checking here in LSAN_OPTIONS, because on
              # Darwin that's only supported with a new enough clang, and we're
              # not building with the pigweed clang here.
              run: |
                  for BUILD_TYPE in default python_lib; do
                      case $BUILD_TYPE in
                          # We want to build various standalone example apps
                          # (similar to what examples-linux-standalone.yaml
                          # does), so use target_os="all" to get those picked
                          # up as part of the "unified" build.  But then to
                          # save CI resources we want to exclude the
                          # "host clang" build, which uses the pigweed
                          # clang.
                          "default") GN_ARGS='target_os="all" is_asan=true enable_host_clang_build=false';;
                          "python_lib") GN_ARGS='enable_rtti=true enable_pylib=true';;
                      esac
                      BUILD_TYPE=$BUILD_TYPE scripts/build/gn_gen.sh --args="$GN_ARGS" --export-compile-commands
                      scripts/run_in_build_env.sh "ninja -C ./out/$BUILD_TYPE"
                      BUILD_TYPE=$BUILD_TYPE scripts/tests/gn_tests.sh
                  done
            - name: Ensure codegen is done for sanitize
              run: |
                  ./scripts/run_in_build_env.sh "./scripts/run_codegen_targets.sh out/default"
            - name: Clang-tidy validation
              run: |
                  ./scripts/run_in_build_env.sh \
                    "./scripts/run-clang-tidy-on-compile-commands.py \
                       --compile-database out/default/compile_commands.json \
                       check \
                    "
            - name: Uploading diagnostic logs
              uses: actions/upload-artifact@v4
              if: ${{ failure() && !env.ACT }}
              with:
                  name: crash-log-darwin
                  path: ~/Library/Logs/DiagnosticReports/

            - name: Perform CodeQL Analysis
              if: ${{ inputs.run-codeql  }}
              uses: ./.github/actions/perform-codeql-analysis
              with:
                language: cpp
        
            # TODO Log Upload https://github.com/project-chip/connectedhomeip/issues/2227
            # TODO https://github.com/project-chip/connectedhomeip/issues/1512

    build_linux_gcc_coverage:
        name: Build on Linux (coverage)

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

        container:
            image: ghcr.io/project-chip/chip-build:53
            volumes:
                - "/:/runner-root-volume"
                - "/tmp/log_output:/tmp/test_logs"
            options: --privileged --sysctl "net.ipv6.conf.all.disable_ipv6=0
                net.ipv4.conf.all.forwarding=1 net.ipv6.conf.all.forwarding=1"

        steps:
            - name: Checkout
              uses: actions/checkout@v4
            - name: Checkout submodules & Bootstrap
              uses: ./.github/actions/checkout-submodules-and-bootstrap
              with:
                platform: linux

            - name: Run Build Coverage
              run: ./scripts/build_coverage.sh
