name: Footprint Delta

on: pull_request

concurrency:
  group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.head_ref || github.ref }}
  cancel-in-progress: true

jobs:
  footprint-delta:
    runs-on: ubuntu-22.04
    if: github.repository == 'zephyrproject-rtos/zephyr'
    container:
      image: ghcr.io/zephyrproject-rtos/ci:v0.26.4
      options: '--entrypoint /bin/bash'
    strategy:
      fail-fast: false
    env:
      ZEPHYR_SDK_INSTALL_DIR: /opt/toolchains/zephyr-sdk-0.16.1
      ZEPHYR_TOOLCHAIN_VARIANT: zephyr
    steps:
      - name: Apply container owner mismatch workaround
        run: |
          # FIXME: The owner UID of the GITHUB_WORKSPACE directory may not
          #        match the container user UID because of the way GitHub
          #        Actions runner is implemented. Remove this workaround when
          #        GitHub comes up with a fundamental fix for this problem.
          git config --global --add safe.directory ${GITHUB_WORKSPACE}

      - name: Update PATH for west
        run: |
          echo "$HOME/.local/bin" >> $GITHUB_PATH

      - name: checkout
        uses: actions/checkout@v3
        with:
          ref: ${{ github.event.pull_request.head.sha }}
          fetch-depth: 0

      - name: west setup
        run: |
          west init -l . || true
          west config --global update.narrow true
          west update 2>&1 1> west.update.log || west update 2>&1 1> west.update.log

      - name: Detect Changes in Footprint
        env:
          BASE_REF: ${{ github.base_ref }}
        run: |
          export ZEPHYR_BASE=${PWD}
          git config --global user.email "actions@zephyrproject.org"
          git config --global user.name "Github Actions"
          git remote -v
          git rebase origin/${BASE_REF}
          git checkout -b this_pr
          west update
          west build -b frdm_k64f  tests/benchmarks/footprints -t ram_report
          cp build/ram.json ram2.json
          west build -b frdm_k64f  tests/benchmarks/footprints -t rom_report
          cp build/rom.json rom2.json

          git checkout origin/${BASE_REF}
          west update
          west build -p always -b frdm_k64f  tests/benchmarks/footprints -t ram_report
          west build -b frdm_k64f  tests/benchmarks/footprints -t rom_report
          cp build/ram.json ram1.json
          cp build/rom.json rom1.json

          git checkout this_pr
          ./scripts/footprint/fpdiff.py ram1.json ram2.json
          ./scripts/footprint/fpdiff.py rom1.json rom2.json
