Skip to content

Conversation

@EricWF
Copy link
Member

@EricWF EricWF commented Dec 22, 2023

No description provided.

@llvmbot
Copy link
Member

llvmbot commented Dec 22, 2023

@llvm/pr-subscribers-libcxx

@llvm/pr-subscribers-github-workflow

Author: Eric (EricWF)

Changes

Full diff: https://github.com/llvm/llvm-project/pull/76243.diff

2 Files Affected:

  • (added) .github/workflows/libcxx-build-action.yaml (+88)
  • (added) .github/workflows/libcxx-single-workflow.yaml (+100)
diff --git a/.github/workflows/libcxx-build-action.yaml b/.github/workflows/libcxx-build-action.yaml new file mode 100644 index 00000000000000..f127b6e99df2ef --- /dev/null +++ b/.github/workflows/libcxx-build-action.yaml @@ -0,0 +1,88 @@ +name: "Libc++ Build and Test Action" +description: "Reusable build and test action for libc++" +inputs: + ref: + description: 'LLVM reference to check out' + required: false + default: 'main' + skip_checkout: + description: 'Skip checking out llvm-project' + required: false + default: 'false' + type: choice + options: + - 'true' + - 'false' + config: + description: 'the run-buildbot target to use' + type: str + required: true + runners: + description: 'the runners to use' + type: str + required: false + default: libcxx-runners-8-set + cc: + description: 'the C compiler to use' + type: str + required: false + default: clang-18 + cxx: + description: 'the C++ compiler to use' + type: str + required: false + default: clang++-18 + enable_clang_tidy: + description: 'whether to enable clang-tidy' + type: choice + required: false + default: ON + options: + - ON + - OFF + enable_std_modules: + description: 'whether to enable std modules' + type: choice + required: false + default: ON + options: + - ON + - OFF + +runs: + using: "composite" + steps: + - name: Checkout llvm-project + if: github.event.inputs.skip_checkout == 'false' + uses: actions/checkout@v4 + with: + repository: llvm/llvm-project + ref: ${{ github.event.inputs.ref }} + - name: run buildbot + cmd: libcxx/utils/ci/run-buildbot ${{ github.event.inputs.config }} + env: + CC: ${{ github.event.inputs.cc }} + CXX: ${{ github.event.inputs.cxx }} + ENABLE_CLANG_TIDY: ${{ github.event.inputs.enable_clang_tidy }} + ENABLE_STD_MODULES: ${{ github.event.inputs.enable_std_modules }} + - uses: actions/upload-artifact@v3 + if: always() + with: + name: ${{ github.events.input.config }}-results + path: | + **/test-results.xml + **/*.abilist + **/CMakeError.log + **/CMakeOutput.log + **/crash_diagnostics/* + + + +permissions: + contents: read # Default everything to read-only + +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number }} + cancel-in-progress: true + + diff --git a/.github/workflows/libcxx-single-workflow.yaml b/.github/workflows/libcxx-single-workflow.yaml new file mode 100644 index 00000000000000..c2c23e105ff2c9 --- /dev/null +++ b/.github/workflows/libcxx-single-workflow.yaml @@ -0,0 +1,100 @@ +# This file defines pre-commit CI for libc++, libc++abi, and libunwind (on Github). +# +# We split the configurations in multiple stages with the intent of saving compute time +# when a job fails early in the pipeline. This is why the jobs are marked as `continue-on-error: false`. +# We try to run the CI configurations with the most signal in the first stage. +# +# Stages 1 & 2 are meant to be "smoke tests", and are meant to catch most build/test failures quickly and without using +# too many resources. +# Stage 3 is "everything else", and is meant to catch breakages on more niche or unique configurations. +# +# Therefore, we "fail-fast" for any failures during stages 1 & 2, meaning any job failing cancels all other running jobs, +# under the assumption that if the "smoke tests" fail, then the other configurations will likely fail in the same way. +# However, stage 3 does not fail fast, as it's more likely that any one job failing is a flake or a configuration-specific +# + +permissions: + contents: read # Default everything to read-only + +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number }} + cancel-in-progress: true + +on: + workflow_dispatch: + inputs: + llvm_ref: + description: 'LLVM reference to check out' + required: false + default: 'main' + config: + description: 'the run-buildbot target to use' + type: str + required: true + runners: + description: 'the runners to use' + type: str + required: false + default: libcxx-runners-8-set + cc: + description: 'the C compiler to use' + type: str + required: false + default: clang-18 + cxx: + description: 'the C++ compiler to use' + type: str + required: false + default: clang++-18 + enable_clang_tidy: + description: 'whether to enable clang-tidy' + type: choice + required: false + default: ON + options: + - ON + - OFF + enable_std_modules: + description: 'whether to enable std modules' + type: choice + required: false + default: ON + options: + - ON + - OFF + + +env: + CMAKE: "/opt/bin/cmake" + # LLVM POST-BRANCH bump version + # LLVM POST-BRANCH add compiler test for ToT - 1, e.g. "Clang 17" + # LLVM RELEASE bump remove compiler ToT - 3, e.g. "Clang 15" + LLVM_HEAD_VERSION: "18" # Used compiler, update POST-BRANCH. + LLVM_PREVIOUS_VERSION: "17" + LLVM_OLDEST_VERSION: "16" + GCC_STABLE_VERSION: "13" + LLVM_SYMBOLIZER_PATH: "/usr/bin/llvm-symbolizer-18" + CLANG_CRASH_DIAGNOSTICS_DIR: "crash_diagnostics" + + + +jobs: + build-and-test: + runs-on: {{ github.event.inputs.runners }} + + steps: + - uses: ./.github/workflows/libcxx-build-action + with: + repository: llvm/llvm-project + ref: ${{ github.event.inputs.llvm_ref }} + cc: ${{ github.event.inputs.cc }} + cxx: ${{ github.event.inputs.cxx }} + config: ${{ github.event.inputs.config }} + enable_clang_tidy: ${{ github.event.inputs.enable_clang_tidy }} + enable_std_modules: ${{ github.event.inputs.enable_std_modules }} + + + + + + 
@EricWF EricWF marked this pull request as draft December 23, 2023 01:03
@ldionne ldionne added the libc++ libc++ C++ Standard Library. Not GNU libstdc++. Not libc++abi. label Jan 26, 2024
@ldionne
Copy link
Member

ldionne commented Jan 29, 2024

@EricWF What's the state of this?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

github:workflow libc++ libc++ C++ Standard Library. Not GNU libstdc++. Not libc++abi.

3 participants