name: CI (bors) on: push: branches: - auto-libc - try permissions: {} jobs: docker_linux_tier1: permissions: actions: write # to cancel workflows (rust-lang/simpleinfra/github-actions/cancel-outdated-builds) contents: read # to fetch code (actions/checkout) name: Docker Linux Tier1 runs-on: ubuntu-22.04 strategy: fail-fast: true matrix: target: [ i686-unknown-linux-gnu, x86_64-unknown-linux-gnu, ] steps: - uses: rust-lang/simpleinfra/github-actions/cancel-outdated-builds@HEAD with: github_token: "${{ secrets.GITHUB_TOKEN }}" - uses: actions/checkout@v3 - name: Setup Rust toolchain run: TARGET=${{ matrix.target }} sh ./ci/install-rust.sh - name: Execute run-docker.sh run: LIBC_CI=1 sh ./ci/run-docker.sh ${{ matrix.target }} macos: permissions: actions: write # to cancel workflows (rust-lang/simpleinfra/github-actions/cancel-outdated-builds) contents: read # to fetch code (actions/checkout) name: macOS runs-on: macos-12 strategy: fail-fast: true matrix: target: [ x86_64-apple-darwin, ] steps: - uses: rust-lang/simpleinfra/github-actions/cancel-outdated-builds@HEAD with: github_token: "${{ secrets.GITHUB_TOKEN }}" - uses: actions/checkout@v3 - name: Setup Rust toolchain run: TARGET=${{ matrix.target }} sh ./ci/install-rust.sh - name: Execute run.sh run: LIBC_CI=1 sh ./ci/run.sh ${{ matrix.target }} windows: permissions: actions: write # to cancel workflows (rust-lang/simpleinfra/github-actions/cancel-outdated-builds) contents: read # to fetch code (actions/checkout) name: Windows runs-on: windows-2022 env: OS: windows strategy: fail-fast: true matrix: include: - target: x86_64-pc-windows-gnu env: ARCH_BITS: 64 ARCH: x86_64 - target: x86_64-pc-windows-msvc # Disabled because broken: # https://github.com/rust-lang/libc/issues/1592 #- target: i686-pc-windows-gnu # env: # ARCH_BITS: 32 # ARCH: i686 - target: i686-pc-windows-msvc steps: - uses: rust-lang/simpleinfra/github-actions/cancel-outdated-builds@HEAD with: github_token: "${{ secrets.GITHUB_TOKEN }}" - uses: actions/checkout@v3 - name: Self-update rustup run: rustup self update shell: bash - name: Setup Rust toolchain run: TARGET=${{ matrix.target }} sh ./ci/install-rust.sh shell: bash - name: Execute run.sh run: LIBC_CI=1 sh ./ci/run.sh ${{ matrix.target }} shell: bash style_check: permissions: actions: write # to cancel workflows (rust-lang/simpleinfra/github-actions/cancel-outdated-builds) contents: read # to fetch code (actions/checkout) name: Style check runs-on: ubuntu-22.04 steps: - uses: rust-lang/simpleinfra/github-actions/cancel-outdated-builds@HEAD with: github_token: "${{ secrets.GITHUB_TOKEN }}" - uses: actions/checkout@v3 - name: Setup Rust toolchain run: sh ./ci/install-rust.sh - name: Check style run: sh ci/style.sh docker_linux_tier2: permissions: actions: write # to cancel workflows (rust-lang/simpleinfra/github-actions/cancel-outdated-builds) contents: read # to fetch code (actions/checkout) name: Docker Linux Tier2 needs: [docker_linux_tier1, style_check] runs-on: ubuntu-22.04 strategy: fail-fast: true max-parallel: 12 matrix: target: [ # FIXME: Mysterious failures in CI, see # https://github.com/rust-lang/libc/issues/2081 # aarch64-linux-android, aarch64-unknown-linux-gnu, aarch64-unknown-linux-musl, arm-linux-androideabi, arm-unknown-linux-gnueabihf, arm-unknown-linux-musleabihf, asmjs-unknown-emscripten, i686-linux-android, i686-unknown-linux-musl, mips-unknown-linux-gnu, mips-unknown-linux-musl, # FIXME: Somehow failed on CI # https://github.com/rust-lang/libc/runs/1659882216 # mips64-unknown-linux-gnuabi64, # mips64el-unknown-linux-gnuabi64, mipsel-unknown-linux-musl, powerpc-unknown-linux-gnu, powerpc64-unknown-linux-gnu, powerpc64le-unknown-linux-gnu, s390x-unknown-linux-gnu, riscv64gc-unknown-linux-gnu, # FIXME: A recent nightly causes a linker failure: # https://github.com/rust-lang/rust/issues/76679 # See this comment for more details: # https://github.com/rust-lang/libc/pull/2225#issuecomment-880696737 #wasm32-wasi, sparc64-unknown-linux-gnu, wasm32-unknown-emscripten, x86_64-linux-android, x86_64-unknown-linux-gnux32, x86_64-unknown-linux-musl, # FIXME: It seems some items in `src/unix/mod.rs` # aren't defined on redox actually. # x86_64-unknown-redox, ] steps: - uses: rust-lang/simpleinfra/github-actions/cancel-outdated-builds@HEAD with: github_token: "${{ secrets.GITHUB_TOKEN }}" - uses: actions/checkout@v3 - name: Setup Rust toolchain run: TARGET=${{ matrix.target }} sh ./ci/install-rust.sh - name: Execute run-docker.sh run: LIBC_CI=1 sh ./ci/run-docker.sh ${{ matrix.target }} # These targets are tier 3 or otherwise need to have CI build std via -Zbuild-std. # Because of this, only the nightly compiler can be used on these targets. docker_linux_build_std: permissions: actions: write # to cancel workflows (rust-lang/simpleinfra/github-actions/cancel-outdated-builds) contents: read # to fetch code (actions/checkout) if: ${{ false }} # This is currently broken name: Docker Linux Build-Std Targets needs: [docker_linux_tier1, style_check] runs-on: ubuntu-22.04 strategy: fail-fast: true max-parallel: 12 matrix: target: [ armv7-unknown-linux-uclibceabihf ] steps: - uses: rust-lang/simpleinfra/github-actions/cancel-outdated-builds@HEAD with: github_token: "${{ secrets.GITHUB_TOKEN }}" - uses: actions/checkout@v3 - name: Setup Rust toolchain run: TOOLCHAIN=nightly INSTALL_RUST_SRC=1 sh ./ci/install-rust.sh - name: Execute run-docker.sh run: LIBC_CI=1 TOOLCHAIN=nightly LIBC_CI_ZBUILD_STD=1 sh ./ci/run-docker.sh ${{ matrix.target }} # devkitpro's pacman needs to be connected from Docker. docker_switch: permissions: actions: write # to cancel workflows (rust-lang/simpleinfra/github-actions/cancel-outdated-builds) contents: read # to fetch code (actions/checkout) name: Docker Switch needs: [docker_linux_tier1, style_check] runs-on: ubuntu-22.04 steps: - uses: rust-lang/simpleinfra/github-actions/cancel-outdated-builds@HEAD with: github_token: "${{ secrets.GITHUB_TOKEN }}" - uses: actions/checkout@v3 - name: Setup Rust toolchain run: sh ./ci/install-rust.sh - name: Execute run-docker.sh run: LIBC_CI=1 sh ./ci/run-docker.sh switch build_channels_linux: permissions: actions: write # to cancel workflows (rust-lang/simpleinfra/github-actions/cancel-outdated-builds) contents: read # to fetch code (actions/checkout) name: Build Channels Linux needs: docker_linux_tier2 runs-on: ubuntu-22.04 env: OS: linux strategy: fail-fast: true max-parallel: 5 matrix: toolchain: [ stable, beta, nightly, 1.13.0, 1.19.0, 1.24.0, 1.25.0, 1.30.0, ] steps: - uses: rust-lang/simpleinfra/github-actions/cancel-outdated-builds@HEAD with: github_token: "${{ secrets.GITHUB_TOKEN }}" - uses: actions/checkout@v3 - name: Setup Rust toolchain run: TOOLCHAIN=${{ matrix.toolchain }} sh ./ci/install-rust.sh - name: Execute build.sh run: LIBC_CI=1 TOOLCHAIN=${{ matrix.toolchain }} sh ./ci/build.sh build_channels_macos: permissions: contents: read # to fetch code (actions/checkout) name: Build Channels macOS needs: macos env: OS: macos strategy: fail-fast: true max-parallel: 4 matrix: target: - { toolchain: stable, os: macos-12 } - { toolchain: beta, os: macos-12 } - { toolchain: nightly, os: macos-12 } # Use macOS 11 for older toolchains as newer Xcode donesn't work well. - { toolchain: 1.13.0, os: macos-11 } - { toolchain: 1.19.0, os: macos-11 } - { toolchain: 1.24.0, os: macos-11 } - { toolchain: 1.25.0, os: macos-11 } - { toolchain: 1.30.0, os: macos-11 } runs-on: ${{ matrix.target.os }} steps: - uses: rust-lang/simpleinfra/github-actions/cancel-outdated-builds@HEAD with: github_token: "${{ secrets.GITHUB_TOKEN }}" - uses: actions/checkout@v3 - name: Setup Rust toolchain run: TOOLCHAIN=${{ matrix.target.toolchain }} sh ./ci/install-rust.sh - name: Execute build.sh run: LIBC_CI=1 TOOLCHAIN=${{ matrix.target.toolchain }} sh ./ci/build.sh build_channels_windows: permissions: contents: read # to fetch code (actions/checkout) name: Build Channels Windows runs-on: windows-2022 env: OS: windows strategy: fail-fast: true matrix: toolchain: [ 1.19.0, 1.24.0, 1.25.0, 1.30.0, stable, ] steps: - uses: actions/checkout@v3 - name: Self-update rustup run: rustup self update shell: bash - name: Execute build.sh run: LIBC_CI=1 TOOLCHAIN=${{ matrix.toolchain }} sh ./ci/build.sh shell: bash check_cfg: permissions: actions: write # to cancel workflows (rust-lang/simpleinfra/github-actions/cancel-outdated-builds) contents: read # to fetch code (actions/checkout) name: "Check #[cfg]s" runs-on: ubuntu-22.04 steps: - uses: rust-lang/simpleinfra/github-actions/cancel-outdated-builds@HEAD with: github_token: "${{ secrets.GITHUB_TOKEN }}" - uses: actions/checkout@v3 - name: Setup Rust toolchain run: TOOLCHAIN=nightly sh ./ci/install-rust.sh - name: Build with check-cfg run: LIBC_CI=1 LIBC_CHECK_CFG=1 cargo build -Z unstable-options -Z check-cfg=features,names,values,output docs: permissions: actions: write # to cancel workflows (rust-lang/simpleinfra/github-actions/cancel-outdated-builds) contents: read # to fetch code (actions/checkout) name: Generate documentation runs-on: ubuntu-22.04 needs: docker_linux_tier2 steps: - uses: rust-lang/simpleinfra/github-actions/cancel-outdated-builds@HEAD with: github_token: "${{ secrets.GITHUB_TOKEN }}" - uses: actions/checkout@v3 - name: Setup Rust toolchain run: sh ./ci/install-rust.sh - name: Generate documentation run: LIBC_CI=1 sh ci/dox.sh # These jobs doesn't actually test anything, but they're only used to tell # bors the build completed, as there is no practical way to detect when a # workflow is successful listening to webhooks only. # # ALL THE PREVIOUS JOBS NEED TO BE ADDED TO THE `needs` SECTION OF THIS JOB! end_success: name: bors build finished if: github.event.pusher.name == 'bors' && success() runs-on: ubuntu-22.04 needs: [ docker_linux_tier1, docker_linux_tier2, #docker_linux_build_std, macos, windows, style_check, docker_switch, build_channels_linux, build_channels_macos, build_channels_windows, docs, ] steps: - name: Mark the job as successful run: exit 0 end_failure: name: bors build finished if: github.event.pusher.name == 'bors' && (failure() || cancelled()) runs-on: ubuntu-22.04 needs: [ docker_linux_tier1, docker_linux_tier2, #docker_linux_build_std, macos, windows, style_check, docker_switch, build_channels_linux, build_channels_macos, build_channels_windows, docs, ] steps: - name: Mark the job as a failure run: exit 1