From 97e24a3a591ab17fccb71471c4a0072257cbadc5 Mon Sep 17 00:00:00 2001 From: Stuti Ravikiran Wali Date: Thu, 7 May 2026 16:29:08 +0530 Subject: [PATCH 1/7] Implement check_changes job in PR workflow Add a job to check for relevant file changes before build. --- .github/workflows/pr-build.yaml | 91 +++++++++++++++++++++++++++++++-- 1 file changed, 88 insertions(+), 3 deletions(-) diff --git a/.github/workflows/pr-build.yaml b/.github/workflows/pr-build.yaml index 00f32e096a..e9b76cb0ed 100644 --- a/.github/workflows/pr-build.yaml +++ b/.github/workflows/pr-build.yaml @@ -28,7 +28,53 @@ run-name: > jobs: + check_changes: + runs-on: ubuntu-latest + outputs: + should_build: ${{ steps.filter.outputs.should_build }} + changed_files: ${{ steps.filter.outputs.changed_files }} + steps: + - name: Checkout code + uses: actions/checkout@v6 + with: + fetch-depth: 0 + + - name: Check for relevant file changes + id: filter + run: | + if [ "${{ github.event_name }}" == "workflow_dispatch" ]; then + echo "should_build=true" >> $GITHUB_OUTPUT + echo "Workflow dispatch - proceeding with build" + exit 0 + fi + + git fetch origin ${{ github.base_ref }} --depth=1 + CHANGED_FILES=$(git diff --name-only origin/${{ github.base_ref }}...HEAD) + + echo "Changed files:" + echo "$CHANGED_FILES" + + # Store changed files for reuse in later jobs + echo "changed_files<> $GITHUB_OUTPUT + echo "$CHANGED_FILES" >> $GITHUB_OUTPUT + echo "EOF" >> $GITHUB_OUTPUT + + # Check for build_info.json, .sh scripts, or Dockerfile + RELEVANT_CHANGES=$(echo "$CHANGED_FILES" | grep -E '(build_info\.json|\.sh$|Dockerfile)' || true) + + if [ -n "$RELEVANT_CHANGES" ]; then + echo "should_build=true" >> $GITHUB_OUTPUT + echo "✅ Found relevant changes:" + echo "$RELEVANT_CHANGES" + else + echo "should_build=false" >> $GITHUB_OUTPUT + echo "⏭️ Skipping PR build CI check - no changes related to build_info.json, build scripts (.sh), or Dockerfile" + fi + + build_info: + needs: check_changes + if: needs.check_changes.outputs.should_build == 'true' runs-on: ${{ github.event_name == 'pull_request' && 'ubuntu-24.04-ppc64le-p10' || inputs.large-runner }} steps: @@ -77,10 +123,50 @@ jobs: - name: Fetch base branch run: git fetch origin ${{ github.base_ref }} --depth=1 + # - name: Locate and parse build_info.json + # run: | + + # CHANGED_FILES=$(git diff --name-only origin/${{ github.base_ref }}...HEAD) + + # BUILD_INFO_FILE=$(echo "$CHANGED_FILES" | grep 'build_info.json' | head -n 1) + + # if [ -z "$BUILD_INFO_FILE" ]; then + # echo "No build_info.json modified, trying to detect from changed files..." + + # PACKAGE_DIR=$(echo "$CHANGED_FILES" | head -n 1 | cut -d'/' -f1-2) + + # BUILD_INFO_FILE="$PACKAGE_DIR/build_info.json" + + # if [ ! -f "$BUILD_INFO_FILE" ]; then + # echo "Could not locate build_info.json!" + # exit 1 + # fi + + # echo "Using fallback build_info: $BUILD_INFO_FILE" + # fi + + # PACKAGE_NAME=$(jq -r '.package_name // ""' $BUILD_INFO_FILE) + # VERSION=$(jq -r '.version // ""' $BUILD_INFO_FILE) + + # echo "BUILD_INFO_FILE=$BUILD_INFO_FILE" >> $GITHUB_ENV + # echo "PACKAGE_NAME=$PACKAGE_NAME" >> $GITHUB_ENV + # echo "VERSION=$VERSION" >> $GITHUB_ENV + # echo "CHANGED_FILES<> $GITHUB_ENV + # echo "$CHANGED_FILES" >> $GITHUB_ENV + # echo "EOF" >> $GITHUB_ENV + + + - name: Locate and parse build_info.json run: | - - CHANGED_FILES=$(git diff --name-only origin/${{ github.base_ref }}...HEAD) + # Reuse changed files from check_changes job + CHANGED_FILES="${{ needs.check_changes.outputs.changed_files }}" + + # If workflow_dispatch, fetch and compute changed files + if [ "${{ github.event_name }}" == "workflow_dispatch" ]; then + git fetch origin ${{ github.base_ref }} --depth=1 + CHANGED_FILES=$(git diff --name-only origin/${{ github.base_ref }}...HEAD) + fi BUILD_INFO_FILE=$(echo "$CHANGED_FILES" | grep 'build_info.json' | head -n 1) @@ -109,7 +195,6 @@ jobs: echo "$CHANGED_FILES" >> $GITHUB_ENV echo "EOF" >> $GITHUB_ENV - - name: Read build_info.json run: | chmod +x ./gha-script/read_buildinfo.sh From 71090b2a28d950a2162463ff223cd54853e79d11 Mon Sep 17 00:00:00 2001 From: Stuti Ravikiran Wali Date: Thu, 7 May 2026 16:30:10 +0530 Subject: [PATCH 2/7] Change GitHub build script owner to 'stutiibm' --- gha-script/validate_builds.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gha-script/validate_builds.py b/gha-script/validate_builds.py index 54094dcce1..9b568fab84 100644 --- a/gha-script/validate_builds.py +++ b/gha-script/validate_builds.py @@ -11,7 +11,7 @@ GITHUB_BUILD_SCRIPT_BASE_REPO = "build-scripts" -GITHUB_BUILD_SCRIPT_BASE_OWNER = "ppc64le" +GITHUB_BUILD_SCRIPT_BASE_OWNER = "stutiibm" HOME = os.getcwd() package_data = {} From 3bd35404c5e8b66957832739502cf29aa5ff5e99 Mon Sep 17 00:00:00 2001 From: Stuti Ravikiran Wali Date: Thu, 7 May 2026 16:31:56 +0530 Subject: [PATCH 3/7] Update checkout steps to use pull request repo and ref --- .github/workflows/pr-build.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/pr-build.yaml b/.github/workflows/pr-build.yaml index e9b76cb0ed..8e365dc7d8 100644 --- a/.github/workflows/pr-build.yaml +++ b/.github/workflows/pr-build.yaml @@ -37,6 +37,8 @@ jobs: - name: Checkout code uses: actions/checkout@v6 with: + repository: ${{ github.event.pull_request.head.repo.full_name }} + ref: ${{ github.event.pull_request.head.ref }} fetch-depth: 0 - name: Check for relevant file changes @@ -82,6 +84,8 @@ jobs: if: github.event_name == 'pull_request' uses: actions/checkout@v6 with: + repository: ${{ github.event.pull_request.head.repo.full_name }} + ref: ${{ github.event.pull_request.head.ref }} fetch-depth: 0 - name: Checkout code (Workflow Dispatch) From 86e6cd89e8862e20a1f562efb11785050160e5f0 Mon Sep 17 00:00:00 2001 From: Stuti Ravikiran Wali Date: Thu, 7 May 2026 17:05:25 +0530 Subject: [PATCH 4/7] Update pr-build.yaml --- .github/workflows/pr-build.yaml | 124 +++++++++++++++++++------------- 1 file changed, 76 insertions(+), 48 deletions(-) diff --git a/.github/workflows/pr-build.yaml b/.github/workflows/pr-build.yaml index 8e365dc7d8..bbc711d647 100644 --- a/.github/workflows/pr-build.yaml +++ b/.github/workflows/pr-build.yaml @@ -50,7 +50,7 @@ jobs: exit 0 fi - git fetch origin ${{ github.base_ref }} --depth=1 + git fetch origin ${{ github.base_ref }} --=1 CHANGED_FILES=$(git diff --name-only origin/${{ github.base_ref }}...HEAD) echo "Changed files:" @@ -73,19 +73,22 @@ jobs: echo "⏭️ Skipping PR build CI check - no changes related to build_info.json, build scripts (.sh), or Dockerfile" fi - build_info: needs: check_changes if: needs.check_changes.outputs.should_build == 'true' runs-on: ${{ github.event_name == 'pull_request' && 'ubuntu-24.04-ppc64le-p10' || inputs.large-runner }} + outputs: + wheel_build_enabled: ${{ steps.set_flags.outputs.wheel_build_enabled }} + has_sh_changes: ${{ steps.set_flags.outputs.has_sh_changes }} + has_dockerfile_changes: ${{ steps.set_flags.outputs.has_dockerfile_changes }} + docker_build_enabled: ${{ steps.set_flags.outputs.docker_build_enabled }} + build_package_enabled: ${{ steps.set_flags.outputs.build_package_enabled }} steps: - name: Checkout code (Pull Request) if: github.event_name == 'pull_request' uses: actions/checkout@v6 with: - repository: ${{ github.event.pull_request.head.repo.full_name }} - ref: ${{ github.event.pull_request.head.ref }} fetch-depth: 0 - name: Checkout code (Workflow Dispatch) @@ -124,43 +127,6 @@ jobs: echo "Script completed successfully for PR #${PR_NUMBER}" fi - - name: Fetch base branch - run: git fetch origin ${{ github.base_ref }} --depth=1 - - # - name: Locate and parse build_info.json - # run: | - - # CHANGED_FILES=$(git diff --name-only origin/${{ github.base_ref }}...HEAD) - - # BUILD_INFO_FILE=$(echo "$CHANGED_FILES" | grep 'build_info.json' | head -n 1) - - # if [ -z "$BUILD_INFO_FILE" ]; then - # echo "No build_info.json modified, trying to detect from changed files..." - - # PACKAGE_DIR=$(echo "$CHANGED_FILES" | head -n 1 | cut -d'/' -f1-2) - - # BUILD_INFO_FILE="$PACKAGE_DIR/build_info.json" - - # if [ ! -f "$BUILD_INFO_FILE" ]; then - # echo "Could not locate build_info.json!" - # exit 1 - # fi - - # echo "Using fallback build_info: $BUILD_INFO_FILE" - # fi - - # PACKAGE_NAME=$(jq -r '.package_name // ""' $BUILD_INFO_FILE) - # VERSION=$(jq -r '.version // ""' $BUILD_INFO_FILE) - - # echo "BUILD_INFO_FILE=$BUILD_INFO_FILE" >> $GITHUB_ENV - # echo "PACKAGE_NAME=$PACKAGE_NAME" >> $GITHUB_ENV - # echo "VERSION=$VERSION" >> $GITHUB_ENV - # echo "CHANGED_FILES<> $GITHUB_ENV - # echo "$CHANGED_FILES" >> $GITHUB_ENV - # echo "EOF" >> $GITHUB_ENV - - - - name: Locate and parse build_info.json run: | # Reuse changed files from check_changes job @@ -199,11 +165,72 @@ jobs: echo "$CHANGED_FILES" >> $GITHUB_ENV echo "EOF" >> $GITHUB_ENV + - name: Read build_info.json run: | chmod +x ./gha-script/read_buildinfo.sh bash ./gha-script/read_buildinfo.sh + - name: Set job control flags + id: set_flags + run: | + PACKAGE_DIR=$(jq -r '.package_dir // ""' $BUILD_INFO_FILE) + WHEEL_BUILD=$(jq -r '.wheel_build // "false"' $BUILD_INFO_FILE) + + # Robust docker_build extraction + if jq -e '.docker_build == true or .docker_build == "true"' "$BUILD_INFO_FILE" > /dev/null; then + DOCKER_BUILD="true" + else + DOCKER_BUILD="false" + fi + + # Check if .sh scripts changed in this package + SH_SCRIPT_CHANGED=$(echo "$CHANGED_FILES" | grep -E "^$PACKAGE_DIR/.*\.sh$" || true) + + # Check if Dockerfile changed + DOCKERFILE_CHANGED=$(echo "$CHANGED_FILES" | grep -i 'Dockerfile' || true) + + # Set outputs for wheel builds + if [ "$WHEEL_BUILD" == "true" ] && [ -n "$SH_SCRIPT_CHANGED" ]; then + echo "wheel_build_enabled=true" >> $GITHUB_OUTPUT + echo "✅ Wheel builds will run (WHEEL_BUILD=true and .sh scripts changed)" + else + echo "wheel_build_enabled=false" >> $GITHUB_OUTPUT + echo "⏭️ Wheel builds will be skipped (WHEEL_BUILD=$WHEEL_BUILD, .sh changes: ${SH_SCRIPT_CHANGED:-none})" + fi + + # Set output for sh changes + if [ -n "$SH_SCRIPT_CHANGED" ]; then + echo "has_sh_changes=true" >> $GITHUB_OUTPUT + else + echo "has_sh_changes=false" >> $GITHUB_OUTPUT + fi + + # Set outputs for docker build + if [ "$DOCKER_BUILD" == "true" ] && [ -n "$DOCKERFILE_CHANGED" ]; then + echo "docker_build_enabled=true" >> $GITHUB_OUTPUT + echo "has_dockerfile_changes=true" >> $GITHUB_OUTPUT + echo "✅ Docker build will run (BUILD_DOCKER=true and Dockerfile changed)" + else + echo "docker_build_enabled=false" >> $GITHUB_OUTPUT + if [ -n "$DOCKERFILE_CHANGED" ]; then + echo "has_dockerfile_changes=true" >> $GITHUB_OUTPUT + else + echo "has_dockerfile_changes=false" >> $GITHUB_OUTPUT + fi + echo "⏭️ Docker build will be skipped (BUILD_DOCKER=$DOCKER_BUILD, Dockerfile changes: ${DOCKERFILE_CHANGED:-none})" + fi + + # Set output for build job (runs when build_info.json or .sh scripts change) + BUILD_INFO_CHANGED=$(echo "$CHANGED_FILES" | grep 'build_info\.json' || true) + if [ -n "$BUILD_INFO_CHANGED" ] || [ -n "$SH_SCRIPT_CHANGED" ]; then + echo "build_package_enabled=true" >> $GITHUB_OUTPUT + echo "✅ Build package job will run (build_info.json or .sh scripts changed)" + else + echo "build_package_enabled=false" >> $GITHUB_OUTPUT + echo "⏭️ Build package job will be skipped (no build_info.json or .sh script changes)" + fi + - name: Create scanner-env.sh run: | mkdir -p package-cache @@ -240,6 +267,7 @@ jobs: build: needs: build_info + if: needs.build_info.outputs.build_package_enabled == 'true' runs-on: ${{ github.event_name == 'pull_request' && 'ubuntu-24.04-ppc64le-p10' || inputs.large-runner }} steps: @@ -271,7 +299,7 @@ jobs: wheel_build_py39: needs: build_info - if: ${{ success() }} + if: needs.build_info.outputs.wheel_build_enabled == 'true' runs-on: ${{ github.event_name == 'pull_request' && 'ubuntu-24.04-ppc64le-p10' || inputs.large-runner }} continue-on-error: true env: @@ -333,7 +361,7 @@ jobs: wheel_build_py310: needs: build_info - if: ${{ success() }} + if: needs.build_info.outputs.wheel_build_enabled == 'true' runs-on: ${{ github.event_name == 'pull_request' && 'ubuntu-24.04-ppc64le-p10' || inputs.large-runner }} continue-on-error: false env: @@ -395,7 +423,7 @@ jobs: wheel_build_py311: needs: build_info - if: ${{ success() }} + if: needs.build_info.outputs.wheel_build_enabled == 'true' runs-on: ${{ github.event_name == 'pull_request' && 'ubuntu-24.04-ppc64le-p10' || inputs.large-runner }} continue-on-error: false env: @@ -458,7 +486,7 @@ jobs: wheel_build_py312: needs: build_info - if: ${{ success() }} + if: needs.build_info.outputs.wheel_build_enabled == 'true' runs-on: ${{ github.event_name == 'pull_request' && 'ubuntu-24.04-ppc64le-p10' || inputs.large-runner }} continue-on-error: false env: @@ -519,7 +547,7 @@ jobs: wheel_build_py313: needs: build_info - if: ${{ success() }} + if: needs.build_info.outputs.wheel_build_enabled == 'true' runs-on: ${{ github.event_name == 'pull_request' && 'ubuntu-24.04-ppc64le-p10' || inputs.large-runner }} continue-on-error: true env: @@ -581,7 +609,7 @@ jobs: wheel_build_py314: needs: build_info - if: ${{ success() }} + if: needs.build_info.outputs.wheel_build_enabled == 'true' runs-on: ${{ github.event_name == 'pull_request' && 'ubuntu-24.04-ppc64le-p10' || inputs.large-runner }} continue-on-error: true env: @@ -644,7 +672,7 @@ jobs: build_docker: needs: build_info - if: ${{ success() }} + if: needs.build_info.outputs.docker_build_enabled == 'true' runs-on: ${{ github.event_name == 'pull_request' && 'ubuntu-24.04-ppc64le-p10' || inputs.large-runner }} steps: From 98b6af82eed0dbf332bfdf335c9cc90d01d5ef54 Mon Sep 17 00:00:00 2001 From: Stuti Ravikiran Wali Date: Thu, 7 May 2026 17:12:27 +0530 Subject: [PATCH 5/7] Update fmt.Println message from 'Hello' to 'Goodbye' --- .github/workflows/pr-build.yaml | 1399 ++++++++++++++++--------------- 1 file changed, 744 insertions(+), 655 deletions(-) diff --git a/.github/workflows/pr-build.yaml b/.github/workflows/pr-build.yaml index bbc711d647..8e1d8897bb 100644 --- a/.github/workflows/pr-build.yaml +++ b/.github/workflows/pr-build.yaml @@ -1,734 +1,823 @@ -name: PR build +# name: PR build -on: - pull_request: - branches: - - master - - replica-master +# on: +# pull_request: +# branches: +# - master +# - replica-master - workflow_dispatch: - inputs: - large-runner: - description: "New runner to use for failing build" - required: true - default: "ubuntu-24.04-ppc64le-2xlarge-p10" - type: choice - options: - - ubuntu-24.04-ppc64le-2xlarge-p10 - - ubuntu-24.04-ppc64le-4xlarge-p10 - pr_number: - description: "PR number of failing build" - required: true - type: string - -run-name: > - ${{ github.event_name == 'workflow_dispatch' - && format('Retriggered build on {0} for PR {1}', inputs.large-runner, inputs.pr_number) - || github.event.pull_request.title }} - -jobs: - - check_changes: - runs-on: ubuntu-latest - outputs: - should_build: ${{ steps.filter.outputs.should_build }} - changed_files: ${{ steps.filter.outputs.changed_files }} - steps: - - name: Checkout code - uses: actions/checkout@v6 - with: - repository: ${{ github.event.pull_request.head.repo.full_name }} - ref: ${{ github.event.pull_request.head.ref }} - fetch-depth: 0 - - - name: Check for relevant file changes - id: filter - run: | - if [ "${{ github.event_name }}" == "workflow_dispatch" ]; then - echo "should_build=true" >> $GITHUB_OUTPUT - echo "Workflow dispatch - proceeding with build" - exit 0 - fi - - git fetch origin ${{ github.base_ref }} --=1 - CHANGED_FILES=$(git diff --name-only origin/${{ github.base_ref }}...HEAD) +# workflow_dispatch: +# inputs: +# large-runner: +# description: "New runner to use for failing build" +# required: true +# default: "ubuntu-24.04-ppc64le-2xlarge-p10" +# type: choice +# options: +# - ubuntu-24.04-ppc64le-2xlarge-p10 +# - ubuntu-24.04-ppc64le-4xlarge-p10 +# pr_number: +# description: "PR number of failing build" +# required: true +# type: string + +# run-name: > +# ${{ github.event_name == 'workflow_dispatch' +# && format('Retriggered build on {0} for PR {1}', inputs.large-runner, inputs.pr_number) +# || github.event.pull_request.title }} + +# jobs: + +# check_changes: +# runs-on: ubuntu-latest +# outputs: +# should_build: ${{ steps.filter.outputs.should_build }} +# changed_files: ${{ steps.filter.outputs.changed_files }} +# steps: +# - name: Checkout code +# uses: actions/checkout@v6 +# with: +# repository: ${{ github.event.pull_request.head.repo.full_name }} +# ref: ${{ github.event.pull_request.head.ref }} +# fetch-depth: 0 + +# - name: Check for relevant file changes +# id: filter +# run: | +# if [ "${{ github.event_name }}" == "workflow_dispatch" ]; then +# echo "should_build=true" >> $GITHUB_OUTPUT +# echo "Workflow dispatch - proceeding with build" +# exit 0 +# fi + +# git fetch origin ${{ github.base_ref }} --=1 +# CHANGED_FILES=$(git diff --name-only origin/${{ github.base_ref }}...HEAD) - echo "Changed files:" - echo "$CHANGED_FILES" +# echo "Changed files:" +# echo "$CHANGED_FILES" - # Store changed files for reuse in later jobs - echo "changed_files<> $GITHUB_OUTPUT - echo "$CHANGED_FILES" >> $GITHUB_OUTPUT - echo "EOF" >> $GITHUB_OUTPUT +# # Store changed files for reuse in later jobs +# echo "changed_files<> $GITHUB_OUTPUT +# echo "$CHANGED_FILES" >> $GITHUB_OUTPUT +# echo "EOF" >> $GITHUB_OUTPUT - # Check for build_info.json, .sh scripts, or Dockerfile - RELEVANT_CHANGES=$(echo "$CHANGED_FILES" | grep -E '(build_info\.json|\.sh$|Dockerfile)' || true) +# # Check for build_info.json, .sh scripts, or Dockerfile +# RELEVANT_CHANGES=$(echo "$CHANGED_FILES" | grep -E '(build_info\.json|\.sh$|Dockerfile)' || true) - if [ -n "$RELEVANT_CHANGES" ]; then - echo "should_build=true" >> $GITHUB_OUTPUT - echo "✅ Found relevant changes:" - echo "$RELEVANT_CHANGES" - else - echo "should_build=false" >> $GITHUB_OUTPUT - echo "⏭️ Skipping PR build CI check - no changes related to build_info.json, build scripts (.sh), or Dockerfile" - fi - - build_info: - needs: check_changes - if: needs.check_changes.outputs.should_build == 'true' - runs-on: ${{ github.event_name == 'pull_request' && 'ubuntu-24.04-ppc64le-p10' || inputs.large-runner }} - outputs: - wheel_build_enabled: ${{ steps.set_flags.outputs.wheel_build_enabled }} - has_sh_changes: ${{ steps.set_flags.outputs.has_sh_changes }} - has_dockerfile_changes: ${{ steps.set_flags.outputs.has_dockerfile_changes }} - docker_build_enabled: ${{ steps.set_flags.outputs.docker_build_enabled }} - build_package_enabled: ${{ steps.set_flags.outputs.build_package_enabled }} - - steps: - - name: Checkout code (Pull Request) - if: github.event_name == 'pull_request' - uses: actions/checkout@v6 - with: - fetch-depth: 0 - - - name: Checkout code (Workflow Dispatch) - if: github.event_name == 'workflow_dispatch' - uses: actions/checkout@v6 - with: - ref: refs/pull/${{ inputs.pr_number }}/head - - - name: Install required packages - run: | - sudo apt update -y - sudo apt-get install -y file jq - - - name: Install Python dependencies - run: | - pip3 install --force-reinstall -v "requests==2.31.0" - pip3 install --upgrade docker - - - name: Set PR number - run: echo "PR_NUMBER=${{ github.event.pull_request.number || inputs.pr_number }}" >> $GITHUB_ENV - - - name: Run validate_builds.py script with live logs - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - python3 -u gha-script/validate_builds.py ${PR_NUMBER:-false} 2>&1 | tee build_log - my_pid_status=${PIPESTATUS[0]} - - if [ "$my_pid_status" -ne 0 ]; then - echo "Script failed for PR #${PR_NUMBER}" - echo "::group::Validation Logs" - tail -200 build_log - echo "::endgroup::" - exit 1 - else - echo "Script completed successfully for PR #${PR_NUMBER}" - fi - - - name: Locate and parse build_info.json - run: | - # Reuse changed files from check_changes job - CHANGED_FILES="${{ needs.check_changes.outputs.changed_files }}" +# if [ -n "$RELEVANT_CHANGES" ]; then +# echo "should_build=true" >> $GITHUB_OUTPUT +# echo "✅ Found relevant changes:" +# echo "$RELEVANT_CHANGES" +# else +# echo "should_build=false" >> $GITHUB_OUTPUT +# echo "⏭️ Skipping PR build CI check - no changes related to build_info.json, build scripts (.sh), or Dockerfile" +# fi + +# build_info: +# needs: check_changes +# if: needs.check_changes.outputs.should_build == 'true' +# runs-on: ${{ github.event_name == 'pull_request' && 'ubuntu-24.04-ppc64le-p10' || inputs.large-runner }} +# outputs: +# wheel_build_enabled: ${{ steps.set_flags.outputs.wheel_build_enabled }} +# has_sh_changes: ${{ steps.set_flags.outputs.has_sh_changes }} +# has_dockerfile_changes: ${{ steps.set_flags.outputs.has_dockerfile_changes }} +# docker_build_enabled: ${{ steps.set_flags.outputs.docker_build_enabled }} +# build_package_enabled: ${{ steps.set_flags.outputs.build_package_enabled }} + +# steps: +# - name: Checkout code (Pull Request) +# if: github.event_name == 'pull_request' +# uses: actions/checkout@v6 +# with: +# fetch-depth: 0 + +# - name: Checkout code (Workflow Dispatch) +# if: github.event_name == 'workflow_dispatch' +# uses: actions/checkout@v6 +# with: +# ref: refs/pull/${{ inputs.pr_number }}/head + +# - name: Install required packages +# run: | +# sudo apt update -y +# sudo apt-get install -y file jq + +# - name: Install Python dependencies +# run: | +# pip3 install --force-reinstall -v "requests==2.31.0" +# pip3 install --upgrade docker + +# - name: Set PR number +# run: echo "PR_NUMBER=${{ github.event.pull_request.number || inputs.pr_number }}" >> $GITHUB_ENV + +# - name: Run validate_builds.py script with live logs +# env: +# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} +# run: | +# python3 -u gha-script/validate_builds.py ${PR_NUMBER:-false} 2>&1 | tee build_log +# my_pid_status=${PIPESTATUS[0]} + +# if [ "$my_pid_status" -ne 0 ]; then +# echo "Script failed for PR #${PR_NUMBER}" +# echo "::group::Validation Logs" +# tail -200 build_log +# echo "::endgroup::" +# exit 1 +# else +# echo "Script completed successfully for PR #${PR_NUMBER}" +# fi + +# - name: Locate and parse build_info.json +# run: | +# # Reuse changed files from check_changes job +# CHANGED_FILES="${{ needs.check_changes.outputs.changed_files }}" - # If workflow_dispatch, fetch and compute changed files - if [ "${{ github.event_name }}" == "workflow_dispatch" ]; then - git fetch origin ${{ github.base_ref }} --depth=1 - CHANGED_FILES=$(git diff --name-only origin/${{ github.base_ref }}...HEAD) - fi +# # If workflow_dispatch, fetch and compute changed files +# if [ "${{ github.event_name }}" == "workflow_dispatch" ]; then +# git fetch origin ${{ github.base_ref }} --depth=1 +# CHANGED_FILES=$(git diff --name-only origin/${{ github.base_ref }}...HEAD) +# fi - BUILD_INFO_FILE=$(echo "$CHANGED_FILES" | grep 'build_info.json' | head -n 1) +# BUILD_INFO_FILE=$(echo "$CHANGED_FILES" | grep 'build_info.json' | head -n 1) - if [ -z "$BUILD_INFO_FILE" ]; then - echo "No build_info.json modified, trying to detect from changed files..." +# if [ -z "$BUILD_INFO_FILE" ]; then +# echo "No build_info.json modified, trying to detect from changed files..." - PACKAGE_DIR=$(echo "$CHANGED_FILES" | head -n 1 | cut -d'/' -f1-2) +# PACKAGE_DIR=$(echo "$CHANGED_FILES" | head -n 1 | cut -d'/' -f1-2) - BUILD_INFO_FILE="$PACKAGE_DIR/build_info.json" +# BUILD_INFO_FILE="$PACKAGE_DIR/build_info.json" - if [ ! -f "$BUILD_INFO_FILE" ]; then - echo "Could not locate build_info.json!" - exit 1 - fi +# if [ ! -f "$BUILD_INFO_FILE" ]; then +# echo "Could not locate build_info.json!" +# exit 1 +# fi - echo "Using fallback build_info: $BUILD_INFO_FILE" - fi +# echo "Using fallback build_info: $BUILD_INFO_FILE" +# fi - PACKAGE_NAME=$(jq -r '.package_name // ""' $BUILD_INFO_FILE) - VERSION=$(jq -r '.version // ""' $BUILD_INFO_FILE) +# PACKAGE_NAME=$(jq -r '.package_name // ""' $BUILD_INFO_FILE) +# VERSION=$(jq -r '.version // ""' $BUILD_INFO_FILE) - echo "BUILD_INFO_FILE=$BUILD_INFO_FILE" >> $GITHUB_ENV - echo "PACKAGE_NAME=$PACKAGE_NAME" >> $GITHUB_ENV - echo "VERSION=$VERSION" >> $GITHUB_ENV - echo "CHANGED_FILES<> $GITHUB_ENV - echo "$CHANGED_FILES" >> $GITHUB_ENV - echo "EOF" >> $GITHUB_ENV +# echo "BUILD_INFO_FILE=$BUILD_INFO_FILE" >> $GITHUB_ENV +# echo "PACKAGE_NAME=$PACKAGE_NAME" >> $GITHUB_ENV +# echo "VERSION=$VERSION" >> $GITHUB_ENV +# echo "CHANGED_FILES<> $GITHUB_ENV +# echo "$CHANGED_FILES" >> $GITHUB_ENV +# echo "EOF" >> $GITHUB_ENV - - name: Read build_info.json - run: | - chmod +x ./gha-script/read_buildinfo.sh - bash ./gha-script/read_buildinfo.sh +# - name: Read build_info.json +# run: | +# chmod +x ./gha-script/read_buildinfo.sh +# bash ./gha-script/read_buildinfo.sh - - name: Set job control flags - id: set_flags - run: | - PACKAGE_DIR=$(jq -r '.package_dir // ""' $BUILD_INFO_FILE) - WHEEL_BUILD=$(jq -r '.wheel_build // "false"' $BUILD_INFO_FILE) +# - name: Set job control flags +# id: set_flags +# run: | +# PACKAGE_DIR=$(jq -r '.package_dir // ""' $BUILD_INFO_FILE) +# WHEEL_BUILD=$(jq -r '.wheel_build // "false"' $BUILD_INFO_FILE) - # Robust docker_build extraction - if jq -e '.docker_build == true or .docker_build == "true"' "$BUILD_INFO_FILE" > /dev/null; then - DOCKER_BUILD="true" - else - DOCKER_BUILD="false" - fi +# # Robust docker_build extraction +# if jq -e '.docker_build == true or .docker_build == "true"' "$BUILD_INFO_FILE" > /dev/null; then +# DOCKER_BUILD="true" +# else +# DOCKER_BUILD="false" +# fi - # Check if .sh scripts changed in this package - SH_SCRIPT_CHANGED=$(echo "$CHANGED_FILES" | grep -E "^$PACKAGE_DIR/.*\.sh$" || true) +# # Check if .sh scripts changed in this package +# SH_SCRIPT_CHANGED=$(echo "$CHANGED_FILES" | grep -E "^$PACKAGE_DIR/.*\.sh$" || true) - # Check if Dockerfile changed - DOCKERFILE_CHANGED=$(echo "$CHANGED_FILES" | grep -i 'Dockerfile' || true) +# # Check if Dockerfile changed +# DOCKERFILE_CHANGED=$(echo "$CHANGED_FILES" | grep -i 'Dockerfile' || true) - # Set outputs for wheel builds - if [ "$WHEEL_BUILD" == "true" ] && [ -n "$SH_SCRIPT_CHANGED" ]; then - echo "wheel_build_enabled=true" >> $GITHUB_OUTPUT - echo "✅ Wheel builds will run (WHEEL_BUILD=true and .sh scripts changed)" - else - echo "wheel_build_enabled=false" >> $GITHUB_OUTPUT - echo "⏭️ Wheel builds will be skipped (WHEEL_BUILD=$WHEEL_BUILD, .sh changes: ${SH_SCRIPT_CHANGED:-none})" - fi +# # Set outputs for wheel builds +# if [ "$WHEEL_BUILD" == "true" ] && [ -n "$SH_SCRIPT_CHANGED" ]; then +# echo "wheel_build_enabled=true" >> $GITHUB_OUTPUT +# echo "✅ Wheel builds will run (WHEEL_BUILD=true and .sh scripts changed)" +# else +# echo "wheel_build_enabled=false" >> $GITHUB_OUTPUT +# echo "⏭️ Wheel builds will be skipped (WHEEL_BUILD=$WHEEL_BUILD, .sh changes: ${SH_SCRIPT_CHANGED:-none})" +# fi - # Set output for sh changes - if [ -n "$SH_SCRIPT_CHANGED" ]; then - echo "has_sh_changes=true" >> $GITHUB_OUTPUT - else - echo "has_sh_changes=false" >> $GITHUB_OUTPUT - fi +# # Set output for sh changes +# if [ -n "$SH_SCRIPT_CHANGED" ]; then +# echo "has_sh_changes=true" >> $GITHUB_OUTPUT +# else +# echo "has_sh_changes=false" >> $GITHUB_OUTPUT +# fi - # Set outputs for docker build - if [ "$DOCKER_BUILD" == "true" ] && [ -n "$DOCKERFILE_CHANGED" ]; then - echo "docker_build_enabled=true" >> $GITHUB_OUTPUT - echo "has_dockerfile_changes=true" >> $GITHUB_OUTPUT - echo "✅ Docker build will run (BUILD_DOCKER=true and Dockerfile changed)" - else - echo "docker_build_enabled=false" >> $GITHUB_OUTPUT - if [ -n "$DOCKERFILE_CHANGED" ]; then - echo "has_dockerfile_changes=true" >> $GITHUB_OUTPUT - else - echo "has_dockerfile_changes=false" >> $GITHUB_OUTPUT - fi - echo "⏭️ Docker build will be skipped (BUILD_DOCKER=$DOCKER_BUILD, Dockerfile changes: ${DOCKERFILE_CHANGED:-none})" - fi +# # Set outputs for docker build +# if [ "$DOCKER_BUILD" == "true" ] && [ -n "$DOCKERFILE_CHANGED" ]; then +# echo "docker_build_enabled=true" >> $GITHUB_OUTPUT +# echo "has_dockerfile_changes=true" >> $GITHUB_OUTPUT +# echo "✅ Docker build will run (BUILD_DOCKER=true and Dockerfile changed)" +# else +# echo "docker_build_enabled=false" >> $GITHUB_OUTPUT +# if [ -n "$DOCKERFILE_CHANGED" ]; then +# echo "has_dockerfile_changes=true" >> $GITHUB_OUTPUT +# else +# echo "has_dockerfile_changes=false" >> $GITHUB_OUTPUT +# fi +# echo "⏭️ Docker build will be skipped (BUILD_DOCKER=$DOCKER_BUILD, Dockerfile changes: ${DOCKERFILE_CHANGED:-none})" +# fi - # Set output for build job (runs when build_info.json or .sh scripts change) - BUILD_INFO_CHANGED=$(echo "$CHANGED_FILES" | grep 'build_info\.json' || true) - if [ -n "$BUILD_INFO_CHANGED" ] || [ -n "$SH_SCRIPT_CHANGED" ]; then - echo "build_package_enabled=true" >> $GITHUB_OUTPUT - echo "✅ Build package job will run (build_info.json or .sh scripts changed)" - else - echo "build_package_enabled=false" >> $GITHUB_OUTPUT - echo "⏭️ Build package job will be skipped (no build_info.json or .sh script changes)" - fi +# # Set output for build job (runs when build_info.json or .sh scripts change) +# BUILD_INFO_CHANGED=$(echo "$CHANGED_FILES" | grep 'build_info\.json' || true) +# if [ -n "$BUILD_INFO_CHANGED" ] || [ -n "$SH_SCRIPT_CHANGED" ]; then +# echo "build_package_enabled=true" >> $GITHUB_OUTPUT +# echo "✅ Build package job will run (build_info.json or .sh scripts changed)" +# else +# echo "build_package_enabled=false" >> $GITHUB_OUTPUT +# echo "⏭️ Build package job will be skipped (no build_info.json or .sh script changes)" +# fi + +# - name: Create scanner-env.sh +# run: | +# mkdir -p package-cache + +# PACKAGE_DIR=$(jq -r '.package_dir // ""' $BUILD_INFO_FILE) +# WHEEL_BUILD=$(jq -r '.wheel_build // "false"' $BUILD_INFO_FILE) + +# # Robust docker_build extraction +# if jq -e '.docker_build == true or .docker_build == "true"' "$BUILD_INFO_FILE" > /dev/null; then +# DOCKER_BUILD="true" +# else +# DOCKER_BUILD="false" +# fi + +# cat < package-cache/scanner-env.sh +# export PACKAGE_NAME=$PACKAGE_NAME +# export VERSION=$VERSION +# export PACKAGE_DIR=$PACKAGE_DIR +# export WHEEL_BUILD=$WHEEL_BUILD +# export BUILD_DOCKER=$DOCKER_BUILD +# export CHANGED_FILES="$CHANGED_FILES" +# EOF + +# mv variable.sh package-cache/ + +# - name: Archive package cache +# run: tar -czf package-cache.tar.gz package-cache/ + +# - name: Upload package cache +# uses: actions/upload-artifact@v6 +# with: +# name: package-cache +# path: package-cache.tar.gz + +# build: +# needs: build_info +# if: needs.build_info.outputs.build_package_enabled == 'true' +# runs-on: ${{ github.event_name == 'pull_request' && 'ubuntu-24.04-ppc64le-p10' || inputs.large-runner }} + +# steps: +# - uses: actions/checkout@v6 + +# - name: Download package-cache +# uses: actions/download-artifact@v7 +# with: +# name: package-cache + +# - name: Extract package cache +# run: tar -xzf package-cache.tar.gz + +# - name: Build Package +# run: | +# source package-cache/variable.sh +# source package-cache/scanner-env.sh + +# echo "------------------- variable.sh -----------------------------" +# cat package-cache/variable.sh +# echo "------------------- scanner-env.sh -----------------------------" +# cat package-cache/scanner-env.sh + +# chmod +x ./gha-script/build_package.sh +# bash ./gha-script/build_package.sh + +# # ===================== WHEEL JOBS ===================== + + +# wheel_build_py39: +# needs: build_info +# if: needs.build_info.outputs.wheel_build_enabled == 'true' +# runs-on: ${{ github.event_name == 'pull_request' && 'ubuntu-24.04-ppc64le-p10' || inputs.large-runner }} +# continue-on-error: true +# env: +# GHA_CURRENCY_SERVICE_ID_API_KEY: ${{ secrets.GHA_CURRENCY_SERVICE_ID_API_KEY }} +# GHA_CURRENCY_SERVICE_ID: ${{ secrets.GHA_CURRENCY_SERVICE_ID }} +# PYTHON_VERSION: "3.9" + +# steps: +# - name: Checkout code +# uses: actions/checkout@v6 +# with: +# fetch-depth: 0 + +# - name: Install system dependencies +# run: | +# sudo apt update -y + +# - name: Download package-cache from previous step +# uses: actions/download-artifact@v7 +# with: +# name: package-cache + +# - name: Extract package cache +# run: tar -xzf package-cache.tar.gz + +# - name: Run build_wheels.sh +# run: | +# ls +# echo "---------------------updated cache-----------------------" +# ls package-cache + +# chmod +x package-cache/variable.sh +# chmod +x package-cache/scanner-env.sh +# source package-cache/variable.sh +# source package-cache/scanner-env.sh + +# # CONTROL FLAG HERE +# if [ "$WHEEL_BUILD" != "true" ]; then +# echo "Skipping wheel build as WHEEL_BUILD=false" +# exit 0 +# fi + +# # Check if any .sh build script is modified in this package +# BUILD_SCRIPT_CHANGED=$(echo "$CHANGED_FILES" | grep -E "^$PACKAGE_DIR/.*\.sh$" || true) + +# if [[ -z "$BUILD_SCRIPT_CHANGED" ]]; then +# echo "Skipping wheel build as no .sh build script changes detected" +# exit 0 +# fi + +# chmod +x ./gha-script/build_wheels.sh +# bash ./gha-script/build_wheels.sh + +# echo "===========after execution ==================" +# sudo apt update -y +# sudo lsb_release -a 2>/dev/null || echo "lsb_release not available" +# sudo uname -a + + +# wheel_build_py310: +# needs: build_info +# if: needs.build_info.outputs.wheel_build_enabled == 'true' +# runs-on: ${{ github.event_name == 'pull_request' && 'ubuntu-24.04-ppc64le-p10' || inputs.large-runner }} +# continue-on-error: false +# env: +# GHA_CURRENCY_SERVICE_ID_API_KEY: ${{ secrets.GHA_CURRENCY_SERVICE_ID_API_KEY }} +# GHA_CURRENCY_SERVICE_ID: ${{ secrets.GHA_CURRENCY_SERVICE_ID }} +# PYTHON_VERSION: "3.10" + +# steps: +# - name: Checkout code +# uses: actions/checkout@v6 +# with: +# fetch-depth: 0 + +# - name: Install system dependencies +# run: | +# sudo apt update -y + +# - name: Download package-cache from previous step +# uses: actions/download-artifact@v7 +# with: +# name: package-cache + +# - name: Extract package cache +# run: tar -xzf package-cache.tar.gz + +# - name: Run build_wheels.sh +# run: | +# ls +# echo "---------------------updated cache-----------------------" +# ls package-cache + +# chmod +x package-cache/variable.sh +# chmod +x package-cache/scanner-env.sh +# source package-cache/variable.sh +# source package-cache/scanner-env.sh + +# # CONTROL FLAG HERE +# if [ "$WHEEL_BUILD" != "true" ]; then +# echo "Skipping wheel build as WHEEL_BUILD=false" +# exit 0 +# fi + +# # Check if any .sh build script is modified in this package +# BUILD_SCRIPT_CHANGED=$(echo "$CHANGED_FILES" | grep -E "^$PACKAGE_DIR/.*\.sh$" || true) + +# if [[ -z "$BUILD_SCRIPT_CHANGED" ]]; then +# echo "Skipping wheel build as no .sh build script changes detected" +# exit 0 +# fi + +# chmod +x ./gha-script/build_wheels.sh +# bash ./gha-script/build_wheels.sh + +# echo "===========after execution ==================" +# sudo apt update -y +# sudo lsb_release -a 2>/dev/null || echo "lsb_release not available" +# sudo uname -a + + +# wheel_build_py311: +# needs: build_info +# if: needs.build_info.outputs.wheel_build_enabled == 'true' +# runs-on: ${{ github.event_name == 'pull_request' && 'ubuntu-24.04-ppc64le-p10' || inputs.large-runner }} +# continue-on-error: false +# env: +# GHA_CURRENCY_SERVICE_ID_API_KEY: ${{ secrets.GHA_CURRENCY_SERVICE_ID_API_KEY }} +# GHA_CURRENCY_SERVICE_ID: ${{ secrets.GHA_CURRENCY_SERVICE_ID }} +# PYTHON_VERSION: "3.11" + +# steps: +# - name: Checkout code +# uses: actions/checkout@v6 +# with: +# fetch-depth: 0 + +# - name: Install system dependencies +# run: | +# sudo apt update -y + +# - name: Download package-cache from previous step +# uses: actions/download-artifact@v7 +# with: +# name: package-cache + +# - name: Extract package cache +# run: tar -xzf package-cache.tar.gz + +# - name: Run build_wheels.sh +# run: | +# ls +# echo "---------------------updated cache-----------------------" +# ls package-cache + +# chmod +x package-cache/variable.sh +# chmod +x package-cache/scanner-env.sh +# source package-cache/variable.sh +# source package-cache/scanner-env.sh + +# # CONTROL FLAG HERE +# if [ "$WHEEL_BUILD" != "true" ]; then +# echo "Skipping wheel build as WHEEL_BUILD=false" +# exit 0 +# fi + +# # Check if any .sh build script is modified in this package +# BUILD_SCRIPT_CHANGED=$(echo "$CHANGED_FILES" | grep -E "^$PACKAGE_DIR/.*\.sh$" || true) + +# if [[ -z "$BUILD_SCRIPT_CHANGED" ]]; then +# echo "Skipping wheel build as no .sh build script changes detected" +# exit 0 +# fi + +# chmod +x ./gha-script/build_wheels.sh +# bash ./gha-script/build_wheels.sh + +# echo "===========after execution ==================" +# sudo apt update -y +# sudo lsb_release -a 2>/dev/null || echo "lsb_release not available" +# sudo uname -a + + + +# wheel_build_py312: +# needs: build_info +# if: needs.build_info.outputs.wheel_build_enabled == 'true' +# runs-on: ${{ github.event_name == 'pull_request' && 'ubuntu-24.04-ppc64le-p10' || inputs.large-runner }} +# continue-on-error: false +# env: +# GHA_CURRENCY_SERVICE_ID_API_KEY: ${{ secrets.GHA_CURRENCY_SERVICE_ID_API_KEY }} +# GHA_CURRENCY_SERVICE_ID: ${{ secrets.GHA_CURRENCY_SERVICE_ID }} +# PYTHON_VERSION: "3.12" + +# steps: +# - name: Checkout code +# uses: actions/checkout@v6 +# with: +# fetch-depth: 0 + +# - name: Install system dependencies +# run: | +# sudo apt update -y + +# - name: Download package-cache from previous step +# uses: actions/download-artifact@v7 +# with: +# name: package-cache + +# - name: Extract package cache +# run: tar -xzf package-cache.tar.gz + +# - name: Run build_wheels.sh +# run: | +# ls +# echo "---------------------updated cache-----------------------" +# ls package-cache + +# chmod +x package-cache/variable.sh +# chmod +x package-cache/scanner-env.sh +# source package-cache/variable.sh +# source package-cache/scanner-env.sh + +# # CONTROL FLAG HERE +# if [ "$WHEEL_BUILD" != "true" ]; then +# echo "Skipping wheel build as WHEEL_BUILD=false" +# exit 0 +# fi + +# # Check if any .sh build script is modified in this package +# BUILD_SCRIPT_CHANGED=$(echo "$CHANGED_FILES" | grep -E "^$PACKAGE_DIR/.*\.sh$" || true) + +# if [[ -z "$BUILD_SCRIPT_CHANGED" ]]; then +# echo "Skipping wheel build as no .sh build script changes detected" +# exit 0 +# fi + +# chmod +x ./gha-script/build_wheels.sh +# bash ./gha-script/build_wheels.sh + +# echo "===========after execution ==================" +# sudo apt update -y +# sudo lsb_release -a 2>/dev/null || echo "lsb_release not available" +# sudo uname -a + +# wheel_build_py313: +# needs: build_info +# if: needs.build_info.outputs.wheel_build_enabled == 'true' +# runs-on: ${{ github.event_name == 'pull_request' && 'ubuntu-24.04-ppc64le-p10' || inputs.large-runner }} +# continue-on-error: true +# env: +# GHA_CURRENCY_SERVICE_ID_API_KEY: ${{ secrets.GHA_CURRENCY_SERVICE_ID_API_KEY }} +# GHA_CURRENCY_SERVICE_ID: ${{ secrets.GHA_CURRENCY_SERVICE_ID }} +# PYTHON_VERSION: "3.13" + +# steps: +# - name: Checkout code +# uses: actions/checkout@v6 +# with: +# fetch-depth: 0 + +# - name: Install system dependencies +# run: | +# sudo apt update -y + +# - name: Download package-cache from previous step +# uses: actions/download-artifact@v7 +# with: +# name: package-cache + +# - name: Extract package cache +# run: tar -xzf package-cache.tar.gz + +# - name: Run build_wheels.sh +# run: | +# ls +# echo "---------------------updated cache-----------------------" +# ls package-cache + +# chmod +x package-cache/variable.sh +# chmod +x package-cache/scanner-env.sh +# source package-cache/variable.sh +# source package-cache/scanner-env.sh + +# # CONTROL FLAG HERE +# if [ "$WHEEL_BUILD" != "true" ]; then +# echo "Skipping wheel build as WHEEL_BUILD=false" +# exit 0 +# fi + +# # Check if any .sh build script is modified in this package +# BUILD_SCRIPT_CHANGED=$(echo "$CHANGED_FILES" | grep -E "^$PACKAGE_DIR/.*\.sh$" || true) + +# if [[ -z "$BUILD_SCRIPT_CHANGED" ]]; then +# echo "Skipping wheel build as no .sh build script changes detected" +# exit 0 +# fi + +# chmod +x ./gha-script/build_wheels.sh +# bash ./gha-script/build_wheels.sh + +# echo "===========after execution ==================" +# sudo apt update -y +# sudo lsb_release -a 2>/dev/null || echo "lsb_release not available" +# sudo uname -a + + +# wheel_build_py314: +# needs: build_info +# if: needs.build_info.outputs.wheel_build_enabled == 'true' +# runs-on: ${{ github.event_name == 'pull_request' && 'ubuntu-24.04-ppc64le-p10' || inputs.large-runner }} +# continue-on-error: true +# env: +# GHA_CURRENCY_SERVICE_ID_API_KEY: ${{ secrets.GHA_CURRENCY_SERVICE_ID_API_KEY }} +# GHA_CURRENCY_SERVICE_ID: ${{ secrets.GHA_CURRENCY_SERVICE_ID }} +# PYTHON_VERSION: "3.14" + +# steps: +# - name: Checkout code +# uses: actions/checkout@v6 +# with: +# fetch-depth: 0 + +# - name: Install system dependencies +# run: | +# sudo apt update -y + +# - name: Download package-cache from previous step +# uses: actions/download-artifact@v7 +# with: +# name: package-cache - - name: Create scanner-env.sh - run: | - mkdir -p package-cache +# - name: Extract package cache +# run: tar -xzf package-cache.tar.gz - PACKAGE_DIR=$(jq -r '.package_dir // ""' $BUILD_INFO_FILE) - WHEEL_BUILD=$(jq -r '.wheel_build // "false"' $BUILD_INFO_FILE) +# - name: Run build_wheels.sh +# run: | +# ls +# echo "---------------------updated cache-----------------------" +# ls package-cache + +# chmod +x package-cache/variable.sh +# chmod +x package-cache/scanner-env.sh +# source package-cache/variable.sh +# source package-cache/scanner-env.sh + +# # CONTROL FLAG HERE +# if [ "$WHEEL_BUILD" != "true" ]; then +# echo "Skipping wheel build as WHEEL_BUILD=false" +# exit 0 +# fi - # Robust docker_build extraction - if jq -e '.docker_build == true or .docker_build == "true"' "$BUILD_INFO_FILE" > /dev/null; then - DOCKER_BUILD="true" - else - DOCKER_BUILD="false" - fi +# # Check if any .sh build script is modified in this package +# BUILD_SCRIPT_CHANGED=$(echo "$CHANGED_FILES" | grep -E "^$PACKAGE_DIR/.*\.sh$" || true) - cat < package-cache/scanner-env.sh - export PACKAGE_NAME=$PACKAGE_NAME - export VERSION=$VERSION - export PACKAGE_DIR=$PACKAGE_DIR - export WHEEL_BUILD=$WHEEL_BUILD - export BUILD_DOCKER=$DOCKER_BUILD - export CHANGED_FILES="$CHANGED_FILES" - EOF +# if [[ -z "$BUILD_SCRIPT_CHANGED" ]]; then +# echo "Skipping wheel build as no .sh build script changes detected" +# exit 0 +# fi - mv variable.sh package-cache/ +# chmod +x ./gha-script/build_wheels.sh +# bash ./gha-script/build_wheels.sh - - name: Archive package cache - run: tar -czf package-cache.tar.gz package-cache/ +# echo "===========after execution ==================" +# sudo apt update -y +# sudo lsb_release -a 2>/dev/null || echo "lsb_release not available" +# sudo uname -a - - name: Upload package cache - uses: actions/upload-artifact@v6 - with: - name: package-cache - path: package-cache.tar.gz - build: - needs: build_info - if: needs.build_info.outputs.build_package_enabled == 'true' - runs-on: ${{ github.event_name == 'pull_request' && 'ubuntu-24.04-ppc64le-p10' || inputs.large-runner }} - steps: - - uses: actions/checkout@v6 +# build_docker: +# needs: build_info +# if: needs.build_info.outputs.docker_build_enabled == 'true' +# runs-on: ${{ github.event_name == 'pull_request' && 'ubuntu-24.04-ppc64le-p10' || inputs.large-runner }} - - name: Download package-cache - uses: actions/download-artifact@v7 - with: - name: package-cache +# steps: +# - name: Checkout code +# uses: actions/checkout@v6 - - name: Extract package cache - run: tar -xzf package-cache.tar.gz +# - name: Download package-cache +# uses: actions/download-artifact@v7 +# with: +# name: package-cache - - name: Build Package - run: | - source package-cache/variable.sh - source package-cache/scanner-env.sh +# - name: Extract package cache +# run: tar -xzf package-cache.tar.gz - echo "------------------- variable.sh -----------------------------" - cat package-cache/variable.sh - echo "------------------- scanner-env.sh -----------------------------" - cat package-cache/scanner-env.sh +# - name: Build Docker Image +# run: | +# echo "===== Sourcing environment =====" +# ls package-cache - chmod +x ./gha-script/build_package.sh - bash ./gha-script/build_package.sh +# chmod +x package-cache/variable.sh +# chmod +x package-cache/scanner-env.sh +# source package-cache/variable.sh +# source package-cache/scanner-env.sh -# ===================== WHEEL JOBS ===================== +# BUILD_DOCKER=$(echo "$BUILD_DOCKER" | tr -d '[:space:]' | tr '[:upper:]' '[:lower:]') +# DOCKERFILE_CHANGED=$(echo "$CHANGED_FILES" | grep -i 'Dockerfile' || true) +# if [[ "$BUILD_DOCKER" != "true" ]]; then +# echo "Skipping Docker build as BUILD_DOCKER=$BUILD_DOCKER" +# exit 0 +# fi - wheel_build_py39: - needs: build_info - if: needs.build_info.outputs.wheel_build_enabled == 'true' - runs-on: ${{ github.event_name == 'pull_request' && 'ubuntu-24.04-ppc64le-p10' || inputs.large-runner }} - continue-on-error: true - env: - GHA_CURRENCY_SERVICE_ID_API_KEY: ${{ secrets.GHA_CURRENCY_SERVICE_ID_API_KEY }} - GHA_CURRENCY_SERVICE_ID: ${{ secrets.GHA_CURRENCY_SERVICE_ID }} - PYTHON_VERSION: "3.9" - - steps: - - name: Checkout code - uses: actions/checkout@v6 - with: - fetch-depth: 0 - - - name: Install system dependencies - run: | - sudo apt update -y - - - name: Download package-cache from previous step - uses: actions/download-artifact@v7 - with: - name: package-cache - - - name: Extract package cache - run: tar -xzf package-cache.tar.gz - - - name: Run build_wheels.sh - run: | - ls - echo "---------------------updated cache-----------------------" - ls package-cache - - chmod +x package-cache/variable.sh - chmod +x package-cache/scanner-env.sh - source package-cache/variable.sh - source package-cache/scanner-env.sh - - # CONTROL FLAG HERE - if [ "$WHEEL_BUILD" != "true" ]; then - echo "Skipping wheel build as WHEEL_BUILD=false" - exit 0 - fi - - # Check if any .sh build script is modified in this package - BUILD_SCRIPT_CHANGED=$(echo "$CHANGED_FILES" | grep -E "^$PACKAGE_DIR/.*\.sh$" || true) - - if [[ -z "$BUILD_SCRIPT_CHANGED" ]]; then - echo "Skipping wheel build as no .sh build script changes detected" - exit 0 - fi - - chmod +x ./gha-script/build_wheels.sh - bash ./gha-script/build_wheels.sh - - echo "===========after execution ==================" - sudo apt update -y - sudo lsb_release -a 2>/dev/null || echo "lsb_release not available" - sudo uname -a +# if [[ -z "$DOCKERFILE_CHANGED" ]]; then +# echo "Skipping Docker build as no Dockerfile changes detected in PR" +# exit 0 +# fi +# echo "Dockerfile change detected, proceeding with build..." - wheel_build_py310: - needs: build_info - if: needs.build_info.outputs.wheel_build_enabled == 'true' - runs-on: ${{ github.event_name == 'pull_request' && 'ubuntu-24.04-ppc64le-p10' || inputs.large-runner }} - continue-on-error: false - env: - GHA_CURRENCY_SERVICE_ID_API_KEY: ${{ secrets.GHA_CURRENCY_SERVICE_ID_API_KEY }} - GHA_CURRENCY_SERVICE_ID: ${{ secrets.GHA_CURRENCY_SERVICE_ID }} - PYTHON_VERSION: "3.10" +# echo "===== Starting Docker build =====" +# chmod +x ./gha-script/build_docker.sh +# bash ./gha-script/build_docker.sh - steps: - - name: Checkout code - uses: actions/checkout@v6 - with: - fetch-depth: 0 +# echo "===== Docker images after build =====" +# docker images - - name: Install system dependencies - run: | - sudo apt update -y +# echo "===== Saving Docker image =====" +# docker save -o package-cache/image.tar "$IMAGE_NAME" - - name: Download package-cache from previous step - uses: actions/download-artifact@v7 - with: - name: package-cache +# ls -lh package-cache/image.tar - - name: Extract package cache - run: tar -xzf package-cache.tar.gz - - name: Run build_wheels.sh - run: | - ls - echo "---------------------updated cache-----------------------" - ls package-cache - - chmod +x package-cache/variable.sh - chmod +x package-cache/scanner-env.sh - source package-cache/variable.sh - source package-cache/scanner-env.sh - - # CONTROL FLAG HERE - if [ "$WHEEL_BUILD" != "true" ]; then - echo "Skipping wheel build as WHEEL_BUILD=false" - exit 0 - fi - # Check if any .sh build script is modified in this package - BUILD_SCRIPT_CHANGED=$(echo "$CHANGED_FILES" | grep -E "^$PACKAGE_DIR/.*\.sh$" || true) - if [[ -z "$BUILD_SCRIPT_CHANGED" ]]; then - echo "Skipping wheel build as no .sh build script changes detected" - exit 0 - fi - - chmod +x ./gha-script/build_wheels.sh - bash ./gha-script/build_wheels.sh - - echo "===========after execution ==================" - sudo apt update -y - sudo lsb_release -a 2>/dev/null || echo "lsb_release not available" - sudo uname -a +############################################################################################################################################### +name: PR build - wheel_build_py311: - needs: build_info - if: needs.build_info.outputs.wheel_build_enabled == 'true' - runs-on: ${{ github.event_name == 'pull_request' && 'ubuntu-24.04-ppc64le-p10' || inputs.large-runner }} - continue-on-error: false - env: - GHA_CURRENCY_SERVICE_ID_API_KEY: ${{ secrets.GHA_CURRENCY_SERVICE_ID_API_KEY }} - GHA_CURRENCY_SERVICE_ID: ${{ secrets.GHA_CURRENCY_SERVICE_ID }} - PYTHON_VERSION: "3.11" - - steps: - - name: Checkout code - uses: actions/checkout@v6 - with: - fetch-depth: 0 - - - name: Install system dependencies - run: | - sudo apt update -y - - - name: Download package-cache from previous step - uses: actions/download-artifact@v7 - with: - name: package-cache - - - name: Extract package cache - run: tar -xzf package-cache.tar.gz - - - name: Run build_wheels.sh - run: | - ls - echo "---------------------updated cache-----------------------" - ls package-cache - - chmod +x package-cache/variable.sh - chmod +x package-cache/scanner-env.sh - source package-cache/variable.sh - source package-cache/scanner-env.sh - - # CONTROL FLAG HERE - if [ "$WHEEL_BUILD" != "true" ]; then - echo "Skipping wheel build as WHEEL_BUILD=false" - exit 0 - fi - - # Check if any .sh build script is modified in this package - BUILD_SCRIPT_CHANGED=$(echo "$CHANGED_FILES" | grep -E "^$PACKAGE_DIR/.*\.sh$" || true) - - if [[ -z "$BUILD_SCRIPT_CHANGED" ]]; then - echo "Skipping wheel build as no .sh build script changes detected" - exit 0 - fi - - chmod +x ./gha-script/build_wheels.sh - bash ./gha-script/build_wheels.sh - - echo "===========after execution ==================" - sudo apt update -y - sudo lsb_release -a 2>/dev/null || echo "lsb_release not available" - sudo uname -a - - - - wheel_build_py312: - needs: build_info - if: needs.build_info.outputs.wheel_build_enabled == 'true' - runs-on: ${{ github.event_name == 'pull_request' && 'ubuntu-24.04-ppc64le-p10' || inputs.large-runner }} - continue-on-error: false - env: - GHA_CURRENCY_SERVICE_ID_API_KEY: ${{ secrets.GHA_CURRENCY_SERVICE_ID_API_KEY }} - GHA_CURRENCY_SERVICE_ID: ${{ secrets.GHA_CURRENCY_SERVICE_ID }} - PYTHON_VERSION: "3.12" - - steps: - - name: Checkout code - uses: actions/checkout@v6 - with: - fetch-depth: 0 - - - name: Install system dependencies - run: | - sudo apt update -y - - - name: Download package-cache from previous step - uses: actions/download-artifact@v7 - with: - name: package-cache - - - name: Extract package cache - run: tar -xzf package-cache.tar.gz - - - name: Run build_wheels.sh - run: | - ls - echo "---------------------updated cache-----------------------" - ls package-cache - - chmod +x package-cache/variable.sh - chmod +x package-cache/scanner-env.sh - source package-cache/variable.sh - source package-cache/scanner-env.sh - - # CONTROL FLAG HERE - if [ "$WHEEL_BUILD" != "true" ]; then - echo "Skipping wheel build as WHEEL_BUILD=false" - exit 0 - fi - - # Check if any .sh build script is modified in this package - BUILD_SCRIPT_CHANGED=$(echo "$CHANGED_FILES" | grep -E "^$PACKAGE_DIR/.*\.sh$" || true) - - if [[ -z "$BUILD_SCRIPT_CHANGED" ]]; then - echo "Skipping wheel build as no .sh build script changes detected" - exit 0 - fi - - chmod +x ./gha-script/build_wheels.sh - bash ./gha-script/build_wheels.sh +on: + pull_request: + branches: + - master + - replica-master + + workflow_dispatch: + inputs: + large-runner: + description: "New runner to use for failing build" + required: true + default: "ubuntu-24.04-ppc64le-2xlarge-p10" + type: choice + options: + - ubuntu-24.04-ppc64le-2xlarge-p10 + - ubuntu-24.04-ppc64le-4xlarge-p10 + pr_number: + description: "PR number of failing build" + required: true + type: string - echo "===========after execution ==================" - sudo apt update -y - sudo lsb_release -a 2>/dev/null || echo "lsb_release not available" - sudo uname -a +run-name: > + ${{ github.event_name == 'workflow_dispatch' + && format('Retriggered build on {0} for PR {1}', inputs.large-runner, inputs.pr_number) + || github.event.pull_request.title }} - wheel_build_py313: - needs: build_info - if: needs.build_info.outputs.wheel_build_enabled == 'true' +jobs: + validate: runs-on: ${{ github.event_name == 'pull_request' && 'ubuntu-24.04-ppc64le-p10' || inputs.large-runner }} - continue-on-error: true - env: - GHA_CURRENCY_SERVICE_ID_API_KEY: ${{ secrets.GHA_CURRENCY_SERVICE_ID_API_KEY }} - GHA_CURRENCY_SERVICE_ID: ${{ secrets.GHA_CURRENCY_SERVICE_ID }} - PYTHON_VERSION: "3.13" steps: - - name: Checkout code + - name: Checkout code (Pull Request) + if: github.event_name == 'pull_request' uses: actions/checkout@v6 with: - fetch-depth: 0 - - - name: Install system dependencies - run: | - sudo apt update -y - - - name: Download package-cache from previous step - uses: actions/download-artifact@v7 - with: - name: package-cache - - - name: Extract package cache - run: tar -xzf package-cache.tar.gz - - - name: Run build_wheels.sh - run: | - ls - echo "---------------------updated cache-----------------------" - ls package-cache - - chmod +x package-cache/variable.sh - chmod +x package-cache/scanner-env.sh - source package-cache/variable.sh - source package-cache/scanner-env.sh - - # CONTROL FLAG HERE - if [ "$WHEEL_BUILD" != "true" ]; then - echo "Skipping wheel build as WHEEL_BUILD=false" - exit 0 - fi - - # Check if any .sh build script is modified in this package - BUILD_SCRIPT_CHANGED=$(echo "$CHANGED_FILES" | grep -E "^$PACKAGE_DIR/.*\.sh$" || true) - - if [[ -z "$BUILD_SCRIPT_CHANGED" ]]; then - echo "Skipping wheel build as no .sh build script changes detected" - exit 0 - fi - - chmod +x ./gha-script/build_wheels.sh - bash ./gha-script/build_wheels.sh - - echo "===========after execution ==================" - sudo apt update -y - sudo lsb_release -a 2>/dev/null || echo "lsb_release not available" - sudo uname -a - + repository: ${{ github.event.pull_request.head.repo.full_name }} + ref: ${{ github.event.pull_request.head.ref }} + fetch-depth: 0 - wheel_build_py314: - needs: build_info - if: needs.build_info.outputs.wheel_build_enabled == 'true' - runs-on: ${{ github.event_name == 'pull_request' && 'ubuntu-24.04-ppc64le-p10' || inputs.large-runner }} - continue-on-error: true - env: - GHA_CURRENCY_SERVICE_ID_API_KEY: ${{ secrets.GHA_CURRENCY_SERVICE_ID_API_KEY }} - GHA_CURRENCY_SERVICE_ID: ${{ secrets.GHA_CURRENCY_SERVICE_ID }} - PYTHON_VERSION: "3.14" - steps: - - name: Checkout code + - name: Checkout code (Workflow Dispatch) + if: github.event_name == 'workflow_dispatch' uses: actions/checkout@v6 with: - fetch-depth: 0 + ref: refs/pull/${{ inputs.pr_number }}/head - - name: Install system dependencies + - name: Install required packages run: | sudo apt update -y + sudo apt-get install -y file - - name: Download package-cache from previous step - uses: actions/download-artifact@v7 - with: - name: package-cache - - - name: Extract package cache - run: tar -xzf package-cache.tar.gz - - - name: Run build_wheels.sh + - name: Install Python dependencies run: | - ls - echo "---------------------updated cache-----------------------" - ls package-cache - - chmod +x package-cache/variable.sh - chmod +x package-cache/scanner-env.sh - source package-cache/variable.sh - source package-cache/scanner-env.sh - - # CONTROL FLAG HERE - if [ "$WHEEL_BUILD" != "true" ]; then - echo "Skipping wheel build as WHEEL_BUILD=false" - exit 0 - fi - - # Check if any .sh build script is modified in this package - BUILD_SCRIPT_CHANGED=$(echo "$CHANGED_FILES" | grep -E "^$PACKAGE_DIR/.*\.sh$" || true) - - if [[ -z "$BUILD_SCRIPT_CHANGED" ]]; then - echo "Skipping wheel build as no .sh build script changes detected" - exit 0 - fi - - chmod +x ./gha-script/build_wheels.sh - bash ./gha-script/build_wheels.sh - - echo "===========after execution ==================" - sudo apt update -y - sudo lsb_release -a 2>/dev/null || echo "lsb_release not available" - sudo uname -a - - - - build_docker: - needs: build_info - if: needs.build_info.outputs.docker_build_enabled == 'true' - runs-on: ${{ github.event_name == 'pull_request' && 'ubuntu-24.04-ppc64le-p10' || inputs.large-runner }} - - steps: - - name: Checkout code - uses: actions/checkout@v6 - - - name: Download package-cache - uses: actions/download-artifact@v7 - with: - name: package-cache + pip3 install --force-reinstall -v "requests==2.31.0" + pip3 install --upgrade docker - - name: Extract package cache - run: tar -xzf package-cache.tar.gz + - name: Set PR number + run: echo "PR_NUMBER=${{ github.event.pull_request.number || inputs.pr_number }}" >> $GITHUB_ENV - - name: Build Docker Image + - name: Run validate_builds.py script with live logs + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | - echo "===== Sourcing environment =====" - ls package-cache - - chmod +x package-cache/variable.sh - chmod +x package-cache/scanner-env.sh - source package-cache/variable.sh - source package-cache/scanner-env.sh - - BUILD_DOCKER=$(echo "$BUILD_DOCKER" | tr -d '[:space:]' | tr '[:upper:]' '[:lower:]') - DOCKERFILE_CHANGED=$(echo "$CHANGED_FILES" | grep -i 'Dockerfile' || true) + python3 -u gha-script/validate_builds.py ${PR_NUMBER:-false} 2>&1 | tee build_log + my_pid_status=${PIPESTATUS[0]} - if [[ "$BUILD_DOCKER" != "true" ]]; then - echo "Skipping Docker build as BUILD_DOCKER=$BUILD_DOCKER" - exit 0 - fi + build_size=$(stat -c %s build_log) - if [[ -z "$DOCKERFILE_CHANGED" ]]; then - echo "Skipping Docker build as no Dockerfile changes detected in PR" - exit 0 + if [ "$my_pid_status" -ne 0 ]; then + echo "Script failed for PR #${PR_NUMBER}" + if [ "$build_size" -lt 1800000 ]; then + cat build_log + else + echo "Build log too large, showing last 100 lines" + tail -100 build_log + fi + exit 1 + else + echo "Script completed successfully for PR #${PR_NUMBER}" + if [ "$build_size" -lt 1800000 ]; then + cat build_log + else + echo "Build log too large, showing last 100 lines" + tail -100 build_log + fi fi - echo "Dockerfile change detected, proceeding with build..." - - echo "===== Starting Docker build =====" - chmod +x ./gha-script/build_docker.sh - bash ./gha-script/build_docker.sh - - echo "===== Docker images after build =====" - docker images - - echo "===== Saving Docker image =====" - docker save -o package-cache/image.tar "$IMAGE_NAME" - - ls -lh package-cache/image.tar - - - - - - From 3b4e7940652e9acae8d0d311803b1dfabf7f4da8 Mon Sep 17 00:00:00 2001 From: Stuti Ravikiran Wali Date: Thu, 7 May 2026 17:14:15 +0530 Subject: [PATCH 6/7] Add installation script for PyTorch v2.7.1 on UBI 9.3 This script installs PyTorch v2.7.1 on UBI 9.3, including dependencies like OpenBLAS and Protobuf, and performs basic import tests. --- p/pytorch/pytorch_2.7.1_ubi_9.3.sh | 263 +++++++++++++++++++++++++++++ 1 file changed, 263 insertions(+) create mode 100644 p/pytorch/pytorch_2.7.1_ubi_9.3.sh diff --git a/p/pytorch/pytorch_2.7.1_ubi_9.3.sh b/p/pytorch/pytorch_2.7.1_ubi_9.3.sh new file mode 100644 index 0000000000..af768ddc56 --- /dev/null +++ b/p/pytorch/pytorch_2.7.1_ubi_9.3.sh @@ -0,0 +1,263 @@ +#!/bin/bash -e +# ----------------------------------------------------------------------------- +# +# Package : pytorch +# Version : v2.7.1 +# Source repo : https://github.com/pytorch/pytorch.git +# Tested on : UBI:9.3 +# Language : Python +# Ci-Check : True +# Script License : Apache License, Version 2 or later +# Maintainer : Srighakollapu Sai Srivatsa +# +# Disclaimer : This script has been tested in root mode on given +# ========== platform using the mentioned version of the package. +# It may not work as expected with newer versions of the +# package and/or distribution. In such case, please +# contact "Maintainer" of this script. +# +# --------------------------------------------------------------------------- + +set -e +# Variables +PACKAGE_NAME=pytorch +PACKAGE_URL=https://github.com/pytorch/pytorch.git +PACKAGE_VERSION=${1:-v2.7.1} +SCRIPT_DIR=$(pwd) + +yum install -y git make wget python3.12 python3.12-devel python3.12-pip pkgconfig atlas +yum install gcc-toolset-13 -y +echo "Installed gcc-toolset" +yum install -y make libtool xz zlib-devel openssl-devel bzip2-devel libffi-devel libevent-devel patch ninja-build gcc-toolset-13 pkg-config pkgconf-pkg-config +dnf install -y gcc-toolset-13-libatomic-devel +echo "Installed required deps from RH" + +export PATH=/opt/rh/gcc-toolset-13/root/usr/bin:$PATH +export LD_LIBRARY_PATH=/opt/rh/gcc-toolset-13/root/usr/lib64:$LD_LIBRARY_PATH + +# Ensure pkg-config can find Python (required for NumPy build with Meson) +export PKG_CONFIG_PATH="/usr/lib64/pkgconfig:${PKG_CONFIG_PATH:-}" + +echo "Installing cmake..." +wget https://cmake.org/files/v3.31/cmake-3.31.6.tar.gz +tar -zxvf cmake-3.31.6.tar.gz +cd cmake-3.31.6 +./bootstrap +make -j$(nproc) +make install +cd $SCRIPT_DIR + +# -------------------- OpenBLAS -------------------- +echo "---------------------openblas installing---------------------" + +git clone https://github.com/OpenMathLib/OpenBLAS +cd OpenBLAS +git checkout v0.3.32 + +make -j$(nproc) \ + TARGET=POWER9 \ + BUILD_BFLOAT16=1 \ + BINARY=64 \ + USE_OPENMP=1 \ + USE_THREAD=1 \ + NUM_THREADS=$(nproc) \ + DYNAMIC_ARCH=1 \ + INTERFACE64=0 + +make install PREFIX=/usr/local + +export OPENBLAS_HOME=/usr/local +export LD_LIBRARY_PATH=/usr/local/lib:/usr/local/lib64:${LD_LIBRARY_PATH} +export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig:${PKG_CONFIG_PATH}" + +OpenBLASInstallPATH=/usr/local + +cd $SCRIPT_DIR +echo "--------------------openblas installed-------------------------------" + +# -------------------- SciPy -------------------- +python3.12 -m pip install beniget==0.4.2.post1 Cython==3.0.11 gast==0.6.0 meson==1.6.0 meson-python==0.17.1 numpy==2.0.2 packaging pybind11 pyproject-metadata +python3.12 -m pip install pythran==0.17.0 setuptools==75.3.0 pooch pytest build wheel hypothesis ninja patchelf>=0.11.0 + +git clone https://github.com/scipy/scipy +cd scipy/ +git checkout v1.13.0 +git submodule update --init +python3.12 -m pip install . +cd $SCRIPT_DIR + +# -------------------- Abseil -------------------- +git clone https://github.com/abseil/abseil-cpp -b 20240116.2 + +# -------------------- Protobuf -------------------- +export C_COMPILER=$(which gcc) +export CXX_COMPILER=$(which g++) + +git clone https://github.com/protocolbuffers/protobuf +cd protobuf +git checkout v4.25.8 + +LIBPROTO_DIR=$(pwd) +mkdir -p $LIBPROTO_DIR/local/libprotobuf +LIBPROTO_INSTALL=$LIBPROTO_DIR/local/libprotobuf + +git submodule update --init --recursive +rm -rf ./third_party/googletest || true +rm -rf ./third_party/abseil-cpp || true +cp -r $SCRIPT_DIR/abseil-cpp ./third_party/ + +mkdir build && cd build +echo "Building libprotobuf" +cmake -G "Ninja" \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_CXX_STANDARD=17 \ + -DCMAKE_C_COMPILER=$C_COMPILER \ + -DCMAKE_CXX_COMPILER=$CXX_COMPILER \ + -DCMAKE_INSTALL_PREFIX=$LIBPROTO_INSTALL \ + -Dprotobuf_BUILD_TESTS=OFF \ + -Dprotobuf_BUILD_LIBUPB=OFF \ + -Dprotobuf_BUILD_SHARED_LIBS=ON \ + -Dprotobuf_ABSL_PROVIDER="module" \ + -Dprotobuf_JSONCPP_PROVIDER="package" \ + -Dprotobuf_USE_EXTERNAL_GTEST=OFF \ + .. + +echo "building libprotobuf...." +cmake --build . --verbose +echo "Installing libprotobuf...." +cmake --install . + +cd .. +echo "Building protobuf" +export PROTOC=$LIBPROTO_DIR/build/protoc +export LD_LIBRARY_PATH=$SCRIPT_DIR/abseil-cpp/abseilcpp/lib:$(pwd)/build/libprotobuf.so:$LD_LIBRARY_PATH +export LIBRARY_PATH=$(pwd)/build/libprotobuf.so:$LD_LIBRARY_PATH +export PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=cpp +export PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION_VERSION=2 + +#Apply patch +wget https://raw.githubusercontent.com/ppc64le/build-scripts/refs/heads/master/p/protobuf/set_cpp_to_17_v4.25.3.patch +git apply set_cpp_to_17_v4.25.3.patch + +echo "Installing protobuf...." +cd python +python3.12 -m pip install --no-build-isolation . +cd $SCRIPT_DIR + +# -------------------- Rust -------------------- +curl https://sh.rustup.rs -sSf | sh -s -- -y +source "$HOME/.cargo/env" + +# -------------------- PyTorch -------------------- +git clone $PACKAGE_URL +cd $PACKAGE_NAME +git checkout $PACKAGE_VERSION +git submodule sync +git submodule update --init --recursive + +# Fix for PyTorch 2.10 +sed -i '/lintrunner ;/s/$/ and platform_machine != "ppc64le"/' requirements.txt + +#Apply patch +ver=${PACKAGE_VERSION#v} + +PATCH_URL="https://raw.githubusercontent.com/ppc64le/build-scripts/refs/heads/master/p/pytorch/pytorch_${PACKAGE_VERSION}.patch" +PATCH_FILE="pytorch_${PACKAGE_VERSION}.patch" + +# Using patch file v2.9.1 for PACKAGE_VERSION >= v2.9.1 (eg: v2.10.0, v2.11.0). +# If a new patch is added eg: v2.9.1 patch is not working with v2.15.1, +# please add a similar condition below for v2.15.1. +if [[ "$(printf '%s\n' "$ver" "2.9.1" | sort -V | tail -n1)" == "$ver" ]]; then + PATCH_URL="https://raw.githubusercontent.com/ppc64le/build-scripts/refs/heads/master/p/pytorch/pytorch_v2.9.1.patch" + PATCH_FILE="pytorch_v2.9.1.patch" +fi +wget -q --spider "$PATCH_URL" && wget -q "$PATCH_URL" && git apply "$PATCH_FILE" || echo "Patch missing, skipped" + + +# -------------------- ENV -------------------- +ARCH=`uname -p` +BUILD_NUM="1" +export OPENBLAS_INCLUDE=${OpenBLASInstallPATH}/include +export OpenBLAS_HOME=${OpenBLASInstallPATH} +export build_type="cpu" +export cpu_opt_arch="power9" +export cpu_opt_tune="power10" +export CPU_COUNT=$(nproc --all) +export _GLIBCXX_USE_CXX11_ABI=1 +export C_INCLUDE_DIR="${OpenBLASInstallPATH}/include" +export CPLUS_INCLUDE_DIR="${OpenBLASInstallPATH}/include" +export LIBRARY_PATH="${OpenBLASInstallPATH}/lib:${LD_LIBRARY_PATH}" + +export CPU_COUNT=$(nproc) +export CXXFLAGS="${CXXFLAGS} -mcpu=power9 -mtune=power10 -fplt" +export CFLAGS="${CFLAGS} -mcpu=power9 -mtune=power10 -fplt" + +export LDFLAGS="$(echo ${LDFLAGS} | sed -e 's/-Wl\,--as-needed//')" +export LDFLAGS="${LDFLAGS} -Wl,-rpath-link,${LIBPROTO_INSTALL}/lib64 -Wl,-rpath-link,${OpenBLASInstallPATH}/lib" +export CXXFLAGS="${CXXFLAGS} -fplt" +export CFLAGS="${CFLAGS} -fplt" +export BLAS=OpenBLAS +export USE_FBGEMM=0 +export USE_SYSTEM_NCCL=1 +export USE_MKLDNN=0 +export USE_NNPACK=0 +export USE_QNNPACK=0 +export USE_XNNPACK=0 +export USE_PYTORCH_QNNPACK=0 +export TH_BINARY_BUILD=1 +export USE_LMDB=1 +export USE_LEVELDB=1 +export USE_NINJA=0 +export USE_MPI=0 +export USE_OPENMP=1 +export USE_TBB=0 +export BUILD_CUSTOM_PROTOBUF=OFF +export BUILD_CAFFE2=1 +export PYTORCH_BUILD_VERSION=${PACKAGE_VERSION#v} +export PYTORCH_BUILD_NUMBER=${BUILD_NUM} +export USE_CUDA=0 +export USE_CUDNN=0 +export USE_TENSORRT=0 +export Protobuf_INCLUDE_DIR=${LIBPROTO_INSTALL}/include +export Protobuf_LIBRARIES=${LIBPROTO_INSTALL}/lib64 +export Protobuf_LIBRARY=${LIBPROTO_INSTALL}/lib64/libprotobuf.so +export Protobuf_LITE_LIBRARY=${LIBPROTO_INSTALL}/lib64/libprotobuf-lite.so +export Protobuf_PROTOC_EXECUTABLE=${LIBPROTO_INSTALL}/bin/protoc +export PATH="/protobuf/local/libprotobuf/bin/protoc:${PATH}" +export LD_LIBRARY_PATH="/protobuf/local/libprotobuf/lib64:${LD_LIBRARY_PATH}" +export LD_LIBRARY_PATH="/protobuf/third_party/abseil-cpp/local/abseilcpp/lib:${LD_LIBRARY_PATH}" +export CXXFLAGS="${CXXFLAGS} -mcpu=${cpu_opt_arch} -mtune=${cpu_opt_tune}" +export CFLAGS="${CFLAGS} -mcpu=${cpu_opt_arch} -mtune=${cpu_opt_tune}" +export LD_LIBRARY_PATH="${SCRIPT_DIR}/pytorch/torch/lib/:${LD_LIBRARY_PATH}" +export LD_LIBRARY_PATH="${SCRIPT_DIR}/pytorch/torch/lib64/:${LD_LIBRARY_PATH}" +export LD_LIBRARY_PATH="${SCRIPT_DIR}/protobuf/local/libprotobuf/lib64/:${LD_LIBRARY_PATH}" +echo "required env variables got set" + +sed -i "s/cmake/cmake==3.*/g" requirements.txt +python3.12 -m pip install -r requirements.txt + +# -------------------- Build -------------------- +if ! (MAX_JOBS=$(nproc) python3.12 setup.py install); then + echo "$PACKAGE_URL $PACKAGE_NAME" + echo "$PACKAGE_NAME | $PACKAGE_URL | $PACKAGE_VERSION | GitHub | Fail | Install_Fails" + exit 1 +fi + +# -------------------- Basic Import Test -------------------- +echo " Basic Import test for torch" + +cd $SCRIPT_DIR + +export LD_LIBRARY_PATH="${OpenBLASInstallPATH}/lib:${LD_LIBRARY_PATH}" + +if ! (python3.12 -c "import torch;"); then + echo "--------------------$PACKAGE_NAME:Install_success_but_test_fails---------------------" + echo "$PACKAGE_URL $PACKAGE_NAME" + echo "$PACKAGE_NAME | $PACKAGE_URL | $PACKAGE_VERSION | GitHub | Fail | Install_success_but__Import_Fails" + exit 2 +else + echo "------------------$PACKAGE_NAME:Install_&_test_both_success-------------------------" + echo "$PACKAGE_URL $PACKAGE_NAME" + echo "$PACKAGE_NAME | $PACKAGE_URL | $PACKAGE_VERSION | GitHub | Pass | Both_Install_and_Import_Success" + exit 0 +fi From f7e33c4c77e71a8e5e7f90354698b3116a37e21d Mon Sep 17 00:00:00 2001 From: Stuti Ravikiran Wali Date: Thu, 7 May 2026 17:14:56 +0530 Subject: [PATCH 7/7] Add build script for PyTorch version 2.7.1 --- p/pytorch/build_info.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/p/pytorch/build_info.json b/p/pytorch/build_info.json index 46f8a3d9b8..e1c9a382a5 100644 --- a/p/pytorch/build_info.json +++ b/p/pytorch/build_info.json @@ -26,6 +26,9 @@ }, "build_script":"pytorch_2.5.1_ubi_9.3.sh" }, + "v2.7.1":{ + "build_script":"pytorch_2.7.1_ubi_9.3.sh" + }, "v2.0.1":{ "patches": { "PATCH": "https://raw.githubusercontent.com/ppc64le/build-scripts/refs/heads/master/p/pytorch/pytorch_v2.0.1.patch"