name: TheRock CI Linux

on:
  workflow_call:
    inputs:
      cmake_options:
        type: string
      amdgpu_families:
        type: string
      test_runs_on:
        type: string

permissions:
  contents: read

jobs:
  therock-build-linux:
    name: Build Linux Packages
    runs-on: azure-linux-scale-rocm
    permissions:
      id-token: write
    container:
      image: ghcr.io/rocm/therock_build_manylinux_x86_64@sha256:044b113562629f4bd2ec5d2e64b32eee11562d48fb1a75d7493daec9dd8d8292
    env:
      AMDGPU_FAMILIES: ${{ inputs.amdgpu_families }}
      TEATIME_FORCE_INTERACTIVE: 0
    steps:
      - name: Checkout composable_kernel repository
        uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2

      - name: Checkout TheRock repository
        uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
        with:
          repository: "ROCm/TheRock"
          ref: ec1c2ef4f2636bce7733fd8c95e1dbb6692c8a57
          path: "TheRock"

      - name: Runner Health Settings
        run: |
          df -h
          cmake --version
          echo "Installed Python versions:"
          ls -d /opt/python
          echo "python: $(which python), python3: $(which python3)"
          echo "Git version: $(git --version)"
          git config --global --add safe.directory $PWD
          git config fetch.parallel 10
      
      - name: Fetch sources
        run: |
          ./TheRock/build_tools/fetch_sources.py --jobs 12

      - name: Install python deps
        run: |
          pip install -r TheRock/requirements.txt
          pip freeze

      - name: Configure Projects
        env:
          amdgpu_families: ${{ env.AMDGPU_FAMILIES }}
          package_version: ADHOCBUILD
          extra_cmake_options: ${{ inputs.cmake_options }}
          BUILD_DIR: build
        run: |
          python3 TheRock/build_tools/github_actions/build_configure.py

      - name: Build TheRock
        run: cmake --build TheRock/build

      - name: Build therock-archives
        run: cmake --build TheRock/build --target therock-archives

      - name: Report
        if: ${{ !cancelled() }}
        run: |
          echo "Full SDK du:"
          echo "------------"
          du -h -d 1 TheRock/build/dist/rocm
          echo "Artifact Archives:"
          echo "------------------"
          ls -lh TheRock/build/artifacts/*.tar.xz
          echo "Artifacts:"
          echo "----------"
          du -h -d 1 TheRock/build/artifacts

      - name: Configure AWS Credentials
        if: always()
        uses: aws-actions/configure-aws-credentials@ececac1a45f3b08a01d2dd070d28d111c5fe6722 # v4.1.0
        with:
          aws-region: us-east-2
          role-to-assume: arn:aws:iam::692859939525:role/therock-artifacts-external

      - name: Create Logs index Files and upload logs
        if: always()
        run: |
          python3 TheRock/build_tools/github_actions/create_log_index.py \
            --build-dir=TheRock/build \
            --amdgpu-family=${{ env.AMDGPU_FAMILIES }}

          python3 TheRock/build_tools/github_actions/upload_build_logs_to_s3.py \
            --build-dir=TheRock/build \
            --run-id ${{ github.run_id }} \
            --amdgpu-family ${{ env.AMDGPU_FAMILIES }}

      - name: Upload artifacts
        run: |
          python TheRock/build_tools/github_actions/upload_build_artifacts.py \
            --run-id ${{ github.run_id }} \
            --amdgpu-family ${{ env.AMDGPU_FAMILIES }} \
            --build-dir TheRock/build

      - name: Add Links to Job Summary
        if: always()
        run: |
          python TheRock/build_tools/github_actions/upload_build_summary.py \
            --run-id ${{ github.run_id }} \
            --amdgpu-family ${{ env.AMDGPU_FAMILIES }} \
            --build-dir TheRock/build

  therock-test-linux:
    name: "Test"
    needs: [therock-build-linux]
    uses: ./.github/workflows/therock-test-packages.yml
    with:
      project_to_test: "miopen"
      amdgpu_families: ${{ inputs.amdgpu_families }}
      test_runs_on: ${{ inputs.test_runs_on }}
      platform: "linux"
