Skip to content

Rust Compiler Builder #58

Rust Compiler Builder

Rust Compiler Builder #58

name: Rust Compiler Builder
on:
push:
paths-ignore:
- '**/README.md'
schedule:
# https://crontab.guru/
# At 12:00 AM, only on Monday
- cron: 0 0 * * 1
jobs:
build:
name: ${{ matrix.rust-targets }}_${{ matrix.xcode-version }} [${{ matrix.os }}]
strategy:
fail-fast: false
matrix:
include:
# https://github.com/actions/runner-images/tree/main/images/macos
# https://developer.apple.com/support/xcode/
- rust-targets: arm64e-apple-ios,aarch64-apple-ios,arm64e-apple-darwin,aarch64-apple-darwin
os: macos-13
xcode-version: 15.0.1
rust-config: configure
rust-verbose-level: 0
rust-use-lld: true
macosx_deployment_target: 11.0
iphoneos_deployment_target: 14.0
runs-on: ${{ matrix.os }}
env:
MACOSX_DEPLOYMENT_TARGET: ${{ matrix.macosx_deployment_target }}
IPHONEOS_DEPLOYMENT_TARGET: ${{ matrix.iphoneos_deployment_target }}
RUST_TARGETS: ${{ matrix.rust-targets }}
steps:
- name: Xcode Select Version
uses: mobiledevops/xcode-select-version-action@v1
with:
xcode-select-version: ${{ matrix.xcode-version }}
- name: Install Ninja
run: brew install ninja
- name: Install sccache
run: brew install sccache
- name: Install llvm
run: |
HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1 brew install llvm
echo "PATH=$PATH:/usr/local/opt/llvm/bin" >> $GITHUB_ENV
- name: Show System Info
run: |
echo $PATH
uname -a
xcodebuild -version
xcrun --show-sdk-path
sccache --version
cmake --version
ninja --version
clang -v
ld -v
lld -flavor ld --version
- name: Checkout
uses: actions/checkout@v4
- name: Checkout Rust
uses: actions/checkout@v4
with:
repository: rust-lang/rust
ref: master
submodules: true
path: rust
- name: Configure Rust
run: make ${{ matrix.rust-config }}
env:
RUST_VERBOSE: ${{ matrix.rust-verbose-level }}
RUST_USE_LLD: ${{ matrix.rust-use-lld }}
- name: Build Rust
run: make all
working-directory: ./rust
- name: Show Target Spec
run: make show-target-info
- name: Build Rust dist
run: make dist
working-directory: ./rust
- name: Archive Rust dist
uses: actions/upload-artifact@v4
with:
name: rust-${{ matrix.rust-targets }}_${{ matrix.xcode-version }}-${{ matrix.os }}
path: ./rust/build/dist/*.xz
- name: Archive target spec
uses: actions/upload-artifact@v4
with:
name: rust-${{ matrix.rust-targets }}_${{ matrix.xcode-version }}-spec
path: ./*.json