fix clang runtimes #16874
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Archlinux | |
| on: | |
| pull_request: | |
| push: | |
| release: | |
| types: [published] | |
| jobs: | |
| check: | |
| runs-on: ubuntu-latest | |
| outputs: | |
| should-run: ${{ steps.check.outputs.should-run }} | |
| steps: | |
| - name: Random execution check | |
| id: check | |
| uses: actions/github-script@v7 | |
| with: | |
| script: | | |
| const fs = require('fs'); | |
| const outputFile = process.env.GITHUB_OUTPUT; | |
| // Always run for release events | |
| if (context.eventName === 'release') { | |
| fs.appendFileSync(outputFile, `should-run=true\n`); | |
| core.info('Release event detected. Will run tests.'); | |
| return; | |
| } | |
| // Execution probability (default 20%, can be overridden via env) | |
| const probability = parseFloat(process.env.RUN_PROBABILITY || '0.2'); | |
| // Generate deterministic "random" number based on commit SHA, run ID, and current time | |
| // Adding time ensures better randomness while keeping same commit/run consistent | |
| const timeSeed = Math.floor(Date.now() / (1000 * 60 * 60)); // Round to hour for consistency | |
| const seed = context.sha + context.runId + timeSeed; | |
| let hash = 0; | |
| for (let i = 0; i < seed.length; i++) { | |
| const char = seed.charCodeAt(i); | |
| hash = ((hash << 5) - hash) + char; | |
| hash = hash | 0; // Convert to 32-bit integer | |
| } | |
| // Normalize to 0-1 range | |
| const random = Math.abs(hash) / 2147483647; | |
| const shouldRun = random < probability; | |
| // Use environment file instead of deprecated set-output | |
| fs.appendFileSync(outputFile, `should-run=${shouldRun}\n`); | |
| if (shouldRun) { | |
| core.info(`Random check passed (${(random * 100).toFixed(2)}% < ${(probability * 100).toFixed(0)}%). Will run tests.`); | |
| } else { | |
| core.info(`Random check failed (${(random * 100).toFixed(2)}% >= ${(probability * 100).toFixed(0)}%). Skipping.`); | |
| } | |
| env: | |
| RUN_PROBABILITY: ${{ vars.ARCHLINUX_RUN_PROBABILITY || '0.2' }} | |
| build: | |
| needs: check | |
| if: needs.check.outputs.should-run == 'true' | |
| container: archlinux:base-devel | |
| runs-on: ubuntu-latest | |
| concurrency: | |
| # Prevent concurrent runs of the same workflow | |
| group: ${{ github.ref }}-${{ github.base_ref }}-${{ github.head_ref }}-Archlinux | |
| cancel-in-progress: true | |
| steps: | |
| - name: Prepare build tools | |
| run: | | |
| pacman -Syu --noconfirm --needed openssl | |
| pacman -Sy --noconfirm --needed glibc git base-devel perl make unzip | |
| pacman -Sy --noconfirm --needed mesa gcc-fortran glu | |
| git config --global --add safe.directory /__w/xmake/xmake | |
| - uses: actions/checkout@v2 | |
| with: | |
| submodules: true | |
| - name: prepare local xmake | |
| run: | | |
| cp -rf . ../xmake-source | |
| - uses: xmake-io/github-action-setup-xmake@v1 | |
| with: | |
| xmake-version: local#../xmake-source | |
| - name: Tests | |
| env: | |
| XMAKE_ROOT: y | |
| run: | | |
| xmake lua -v -D tests/run.lua | |
| xrepo --version |