From 60a63850fca2eb2181d353d19414a2f112a7c866 Mon Sep 17 00:00:00 2001 From: "Szymichowski, Pawel" Date: Mon, 24 Oct 2022 19:34:17 +0200 Subject: [PATCH 1/3] Improved Github Actions for ocl-open-150 --- .github/actions/build-opencl-clang/action.yml | 68 ++++++++++++++++++ .github/workflows/check-in-tree-build.yml | 71 ------------------- .github/workflows/on-demand-verification.yml | 47 ++++++++++++ .github/workflows/on-push-verification.yml | 71 +++++++++++++++++++ .github/workflows/scheduled-verification.yml | 44 ++++++++++++ 5 files changed, 230 insertions(+), 71 deletions(-) create mode 100644 .github/actions/build-opencl-clang/action.yml delete mode 100644 .github/workflows/check-in-tree-build.yml create mode 100644 .github/workflows/on-demand-verification.yml create mode 100644 .github/workflows/on-push-verification.yml create mode 100644 .github/workflows/scheduled-verification.yml diff --git a/.github/actions/build-opencl-clang/action.yml b/.github/actions/build-opencl-clang/action.yml new file mode 100644 index 00000000..43bb970e --- /dev/null +++ b/.github/actions/build-opencl-clang/action.yml @@ -0,0 +1,68 @@ +# ===--- +# Main opencl-clang building script +# ===--- + +name: Build opencl-clang +inputs: + ref_llvm: + description: 'LLVM ref to build with' + required: true + ref_translator: + description: 'SPIRV-LLVM-Translator ref to build with' + required: true + ref_opencl-clang: + description: 'opencl-clang ref to build with' + required: true + build_type: + description: 'Build type to pass to CMake' + required: false + default: Release + +runs: + using: 'composite' + steps: + + # Setup git credentials to make applying patches possible + - run: | + git config --global user.email "action@intel.com" + git config --global user.name "Action Bot" + shell: bash + + - name: Checkout LLVM + uses: actions/checkout@v3 + with: + repository: llvm/llvm-project + path: llvm-project + ref: ${{ inputs.ref_llvm }} + + - name: Checkout SPIRV-LLVM-Translator + uses: actions/checkout@v3 + with: + repository: KhronosGroup/SPIRV-LLVM-Translator + path: llvm-project/SPIRV-LLVM-Translator + ref: ${{ inputs.ref_translator }} + + - name: Checkout opencl-clang + uses: actions/checkout@v3 + with: + path: llvm-project/opencl-clang + ref: ${{ inputs.ref_opencl-clang }} + + - name: Configure + shell: bash + run: | + mkdir build && cd build + cmake ${{ github.workspace }}/llvm-project/llvm \ + -DLLVM_ENABLE_PROJECTS="clang" \ + -DLLVM_EXTERNAL_PROJECTS="llvm-spirv;opencl-clang" \ + -DLLVM_EXTERNAL_LLVM_SPIRV_SOURCE_DIR=${{ github.workspace }}/llvm-project/SPIRV-LLVM-Translator \ + -DLLVM_EXTERNAL_OPENCL_CLANG_SOURCE_DIR=${{ github.workspace }}/llvm-project/opencl-clang \ + -DCMAKE_BUILD_TYPE=${{ inputs.build_type }} \ + -DLLVM_TARGETS_TO_BUILD="X86" \ + -G "Unix Makefiles" + + - name: Build + shell: bash + run: | + cd build + make opencl-clang -j8 diff --git a/.github/workflows/check-in-tree-build.yml b/.github/workflows/check-in-tree-build.yml deleted file mode 100644 index f26ba9bc..00000000 --- a/.github/workflows/check-in-tree-build.yml +++ /dev/null @@ -1,71 +0,0 @@ -name: In-tree build - -on: - push: - branches: - - 'ocl-open-*' - paths-ignore: # no need to check build for: - - 'docs/**' # documentation - - '**.md' # README - pull_request: - branches: - - 'ocl-open-*' - paths-ignore: # no need to check build for: - - 'docs/**' # documentation - - '**.md' # README - schedule: - # Weekly build on Mondays - # Ideally, we might want to simplify our regular nightly build as we - # probably don't need every configuration to be built every day: most of - # them are only necessary in pre-commits to avoid breakages - - cron: 0 0 * * 0 - -env: - LLVM_VERSION: 15 - -jobs: - build_and_test_linux: - name: Linux - strategy: - matrix: - build_type: [Release] - include: - - build_type: Release - fail-fast: false - runs-on: ubuntu-18.04 - steps: - - name: setup git config - run: | - git config --global user.email "<>" - git config --global user.name "GitHub Actions Bot" - - name: Checkout LLVM sources - uses: actions/checkout@v2 - with: - repository: llvm/llvm-project - ref: release/15.x - path: llvm-project - - name: Checkout the translator sources - uses: actions/checkout@v2 - with: - repository: KhronosGroup/SPIRV-LLVM-Translator - ref: llvm_release_150 - path: llvm-project/SPIRV-LLVM-Translator - - name: Checkout opencl-clang sources - uses: actions/checkout@v2 - with: - path: llvm-project/opencl-clang - - name: Configure - run: | - mkdir build && cd build - cmake ${{ github.workspace }}/llvm-project/llvm \ - -DLLVM_ENABLE_PROJECTS="clang" \ - -DLLVM_EXTERNAL_PROJECTS="llvm-spirv;opencl-clang" \ - -DLLVM_EXTERNAL_LLVM_SPIRV_SOURCE_DIR=${{ github.workspace }}/llvm-project/SPIRV-LLVM-Translator \ - -DLLVM_EXTERNAL_OPENCL_CLANG_SOURCE_DIR=${{ github.workspace }}/llvm-project/opencl-clang \ - -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ - -DLLVM_TARGETS_TO_BUILD="X86" \ - -G "Unix Makefiles" - - name: Build - run: | - cd build - make opencl-clang -j2 diff --git a/.github/workflows/on-demand-verification.yml b/.github/workflows/on-demand-verification.yml new file mode 100644 index 00000000..9d70e405 --- /dev/null +++ b/.github/workflows/on-demand-verification.yml @@ -0,0 +1,47 @@ +# ===--- +# To be run manually by maintainers +# ===--- + +name: On demand verification +run-name: 'On demand by ${{ github.actor }}' + +on: + workflow_dispatch: + inputs: + ref_llvm: + description: 'LLVM ref to build with' + required: true + default: main + ref_translator: + description: 'SPIRV-LLVM-Translator ref to build with' + required: true + default: main + ref_opencl-clang: + description: 'opencl-clang ref to build with' + required: true + default: master + build_type: + description: 'Build type to pass to CMake' + required: true + default: Release + type: choice + options: + - Release + - Debug + - RelWithDebInfo + +jobs: + + verify_on_demand: + runs-on: ubuntu-22.04 + steps: + + - name: Checkout opencl-clang sources for action files availabilty + uses: actions/checkout@v3 + + - name: Run build-opencl-clang action + uses: ./.github/actions/build-opencl-clang + with: + ref_llvm: ${{ inputs.ref_llvm }} + ref_translator: ${{ inputs.ref_translator }} + ref_opencl-clang: ${{ inputs.ref_opencl-clang }} diff --git a/.github/workflows/on-push-verification.yml b/.github/workflows/on-push-verification.yml new file mode 100644 index 00000000..ee0e04d8 --- /dev/null +++ b/.github/workflows/on-push-verification.yml @@ -0,0 +1,71 @@ +# ===--- +# Running on push & pull_request. +# This workflow parses the destination branch +# to choose correct dependencies revisions +# ===--- + +name: On push & pull-request verification +run-name: '${{ github.event_name }}: ${{ github.base_ref }} ${{ github.ref_name }}' # github.base_ref null for 'on: push' + +on: + push: + branches: + - master + - ocl-open-* + pull_request: + branches: + - master + - ocl-open-* + types: + - opened + - reopened + - synchronize # commit pushed to the PR + - ready_for_review # moved from draft state + +jobs: + + verify_default_branch: + name: Verify for `master` branch + # ref_name for 'on: push' + # base_ref for 'on: pull_request' + if: ${{ (github.event_name == 'push' && github.ref_name == 'master') || (github.event_name == 'pull_request' && github.base_ref == 'master') }} + runs-on: ubuntu-22.04 + steps: + + - name: Checkout opencl-clang sources for action files + uses: actions/checkout@v3 + + - name: Run build-opencl-clang action + uses: ./.github/actions/build-opencl-clang + with: + ref_llvm: main + ref_translator: main + ref_opencl-clang: ${{ github.ref }} + + verify_release_branch: + name: Verify for `ocl-open-*` release branch + # ref_name for 'on: push' + # base_ref for 'on: pull_request' + if: ${{ github.ref_name != 'master' && github.base_ref != 'master' }} + runs-on: ubuntu-22.04 + steps: + + - name: Checkout opencl-clang sources for action files + uses: actions/checkout@v3 + + # This step will fail when the branch naming scheme 'ocl-open-XXX' changes! + - name: Parse LLVM version from branch name + id: check-llvm-version + run: | + BRANCH="${{ github.base_ref }}" # on: pull_request, otherwise null + BRANCH=${BRANCH:-${{ github.ref_name }}} # on: push + LLVM_VERSION_LONG=$(echo $BRANCH | grep -oP '\d+') # Eg. 150 for LLVM 15 + LLVM_VERSION_SHORT=${LLVM_VERSION_LONG::-1} # Eg. 15 for LLVM 15 + echo "llvm_version=$LLVM_VERSION_SHORT" >> $GITHUB_OUTPUT + + - name: Run build-opencl-clang action + uses: ./.github/actions/build-opencl-clang + with: + ref_llvm: release/${{ steps.check-llvm-version.outputs.llvm_version }}.x + ref_translator: llvm_release_${{ steps.check-llvm-version.outputs.llvm_version }}0 + ref_opencl-clang: ${{ github.ref }} diff --git a/.github/workflows/scheduled-verification.yml b/.github/workflows/scheduled-verification.yml new file mode 100644 index 00000000..8491d18e --- /dev/null +++ b/.github/workflows/scheduled-verification.yml @@ -0,0 +1,44 @@ +# ===--- +# Workflow run for regular SPIRV-LLVM-Translator and LLVM compatibility check +# ===--- + +name: Scheduled verification +run-name: Scheduled verification + +on: + schedule: + # Run Sunday & Wednesday at 00:00 + - cron: 0 0 * * 0,3 + +jobs: + + verify-default-branches: + runs-on: ubuntu-22.04 + steps: + + - name: Checkout opencl-clang sources for action files availabilty + uses: actions/checkout@v3 + + - name: Run build-opencl-clang action + uses: ./.github/actions/build-opencl-clang + with: + ref_llvm: main + ref_translator: main + ref_opencl-clang: master + + verify-release-branches: + strategy: + matrix: + llvm_version: [ 10, 11, 12, 13, 14, 15 ] + runs-on: ubuntu-22.04 + steps: + + - name: Checkout opencl-clang sources for action files availabilty + uses: actions/checkout@v3 + + - name: Run build-opencl-clang action + uses: ./.github/actions/build-opencl-clang + with: + ref_llvm: release/${{ matrix.llvm_version }}.x + ref_translator: llvm_release_${{ matrix.llvm_version }}0 + ref_opencl-clang: ocl-open-${{ matrix.llvm_version }}0 From ead2ea37685181661df2998e66eac60c9fdc8971 Mon Sep 17 00:00:00 2001 From: "Szymichowski, Pawel" Date: Tue, 25 Oct 2022 09:13:42 +0200 Subject: [PATCH 2/3] Remove scheduled workflow from release branches, as only default branch can run on schedule --- .github/workflows/scheduled-verification.yml | 44 -------------------- 1 file changed, 44 deletions(-) delete mode 100644 .github/workflows/scheduled-verification.yml diff --git a/.github/workflows/scheduled-verification.yml b/.github/workflows/scheduled-verification.yml deleted file mode 100644 index 8491d18e..00000000 --- a/.github/workflows/scheduled-verification.yml +++ /dev/null @@ -1,44 +0,0 @@ -# ===--- -# Workflow run for regular SPIRV-LLVM-Translator and LLVM compatibility check -# ===--- - -name: Scheduled verification -run-name: Scheduled verification - -on: - schedule: - # Run Sunday & Wednesday at 00:00 - - cron: 0 0 * * 0,3 - -jobs: - - verify-default-branches: - runs-on: ubuntu-22.04 - steps: - - - name: Checkout opencl-clang sources for action files availabilty - uses: actions/checkout@v3 - - - name: Run build-opencl-clang action - uses: ./.github/actions/build-opencl-clang - with: - ref_llvm: main - ref_translator: main - ref_opencl-clang: master - - verify-release-branches: - strategy: - matrix: - llvm_version: [ 10, 11, 12, 13, 14, 15 ] - runs-on: ubuntu-22.04 - steps: - - - name: Checkout opencl-clang sources for action files availabilty - uses: actions/checkout@v3 - - - name: Run build-opencl-clang action - uses: ./.github/actions/build-opencl-clang - with: - ref_llvm: release/${{ matrix.llvm_version }}.x - ref_translator: llvm_release_${{ matrix.llvm_version }}0 - ref_opencl-clang: ocl-open-${{ matrix.llvm_version }}0 From ccb0d542c36505a2442260cb50a698a9dd751a11 Mon Sep 17 00:00:00 2001 From: "Szymichowski, Pawel" Date: Tue, 25 Oct 2022 09:29:18 +0200 Subject: [PATCH 3/3] Likewise, on-demand workflow is only valid if it's on the default branch --- .github/workflows/on-demand-verification.yml | 47 -------------------- 1 file changed, 47 deletions(-) delete mode 100644 .github/workflows/on-demand-verification.yml diff --git a/.github/workflows/on-demand-verification.yml b/.github/workflows/on-demand-verification.yml deleted file mode 100644 index 9d70e405..00000000 --- a/.github/workflows/on-demand-verification.yml +++ /dev/null @@ -1,47 +0,0 @@ -# ===--- -# To be run manually by maintainers -# ===--- - -name: On demand verification -run-name: 'On demand by ${{ github.actor }}' - -on: - workflow_dispatch: - inputs: - ref_llvm: - description: 'LLVM ref to build with' - required: true - default: main - ref_translator: - description: 'SPIRV-LLVM-Translator ref to build with' - required: true - default: main - ref_opencl-clang: - description: 'opencl-clang ref to build with' - required: true - default: master - build_type: - description: 'Build type to pass to CMake' - required: true - default: Release - type: choice - options: - - Release - - Debug - - RelWithDebInfo - -jobs: - - verify_on_demand: - runs-on: ubuntu-22.04 - steps: - - - name: Checkout opencl-clang sources for action files availabilty - uses: actions/checkout@v3 - - - name: Run build-opencl-clang action - uses: ./.github/actions/build-opencl-clang - with: - ref_llvm: ${{ inputs.ref_llvm }} - ref_translator: ${{ inputs.ref_translator }} - ref_opencl-clang: ${{ inputs.ref_opencl-clang }}