Filter cargo:rerun-if-changed if file is inside OUT_DIR (#18) #121
This file contains 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: Build | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
workflow_dispatch: | |
env: | |
LLVM_VERSION: "16" | |
jobs: | |
install-vitasdk: | |
uses: ./.github/workflows/setup-vitasdk.yml | |
with: | |
path: /opt/vitasdk | |
build-example: | |
name: Build example | |
runs-on: ubuntu-latest | |
needs: install-vitasdk | |
timeout-minutes: 20 | |
steps: | |
- name: Set commit status as pending | |
uses: myrotvorets/set-commit-status-action@v1.1.7 | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
status: pending | |
context: Build example | |
sha: ${{ github.sha }} | |
- uses: actions/checkout@v3 | |
with: | |
submodules: true | |
- name: Restore vitasdk cache | |
uses: actions/cache/restore@v3 | |
with: | |
path: /opt/vitasdk | |
key: ${{ runner.os }}-vitasdk | |
fail-on-cache-miss: true | |
- name: Cache LLVM and Clang | |
id: cache-llvm | |
uses: actions/cache@v3 | |
with: | |
path: | | |
${{ runner.temp }}/llvm | |
key: llvm | |
- name: Install LLVM and Clang | |
uses: KyleMayes/install-llvm-action@v1 | |
with: | |
version: ${{ env.LLVM_VERSION }} | |
directory: ${{ runner.temp }}/llvm | |
cached: ${{ steps.cache-llvm.outputs.cache-hit }} | |
- name: Cache dependencies | |
uses: actions/cache@v3 | |
with: | |
path: | | |
~/.cargo/bin/ | |
~/.cargo/registry/index/ | |
~/.cargo/registry/cache/ | |
~/.cargo/git/db/ | |
key: ${{ runner.os }}-cargo-${{ hashFiles('Cargo.lock') }} | |
- name: Install cargo-vita | |
continue-on-error: true | |
run: | | |
cargo install cargo-vita | |
- name: Install rust nightly | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: nightly | |
profile: minimal | |
components: rust-src | |
- name: Add Vita SDK tools to path | |
run: | | |
echo "/opt/vitasdk/bin" >> $GITHUB_PATH | |
- name: Build example in debug mode | |
env: | |
VITASDK: /opt/vitasdk | |
run: | | |
cd examples/std-hello-world | |
cargo +nightly vita build vpk | |
- name: Build example in release mode | |
env: | |
VITASDK: /opt/vitasdk | |
run: | | |
cd examples/std-hello-world | |
cargo +nightly vita build vpk --release | |
- name: Upload debug build | |
uses: actions/upload-artifact@v3 | |
with: | |
name: std-hello-world-debug-build | |
path: target/armv7-sony-vita-newlibeabihf/debug/std-hello-world.* | |
if-no-files-found: error | |
- name: Upload release build | |
uses: actions/upload-artifact@v3 | |
with: | |
name: std-hello-world-release-build | |
path: target/armv7-sony-vita-newlibeabihf/release/std-hello-world.* | |
if-no-files-found: error | |
- name: Set final commit status | |
uses: myrotvorets/set-commit-status-action@v1.1.7 | |
if: always() | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
status: ${{ job.status }} | |
context: Build example | |
sha: ${{ github.sha }} | |
clippy: | |
name: Clippy | |
runs-on: ubuntu-latest | |
needs: install-vitasdk | |
timeout-minutes: 10 | |
steps: | |
- name: Set commit status as pending | |
uses: myrotvorets/set-commit-status-action@v1.1.7 | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
status: pending | |
context: Clippy | |
sha: ${{ github.sha }} | |
- uses: actions/checkout@v3 | |
with: | |
submodules: true | |
- name: Restore vitasdk cache | |
uses: actions/cache/restore@v3 | |
with: | |
path: /opt/vitasdk | |
key: ${{ runner.os }}-vitasdk | |
fail-on-cache-miss: true | |
- name: Cache LLVM and Clang | |
id: cache-llvm | |
uses: actions/cache@v3 | |
with: | |
path: | | |
${{ runner.temp }}/llvm | |
key: llvm | |
- name: Install LLVM and Clang | |
uses: KyleMayes/install-llvm-action@v1 | |
with: | |
version: ${{ env.LLVM_VERSION }} | |
directory: ${{ runner.temp }}/llvm | |
cached: ${{ steps.cache-llvm.outputs.cache-hit }} | |
- uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: stable | |
components: clippy | |
profile: minimal | |
override: true | |
- name: Run clippy | |
env: | |
VITASDK: /opt/vitasdk | |
run: | | |
cargo clippy --tests --workspace -- -Dclippy::all -Dwarnings | |
- name: Set final commit status | |
uses: myrotvorets/set-commit-status-action@v1.1.7 | |
if: always() | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
status: ${{ job.status }} | |
context: Clippy | |
sha: ${{ github.sha }} | |
rustfmt: | |
name: Rustfmt | |
runs-on: ubuntu-latest | |
timeout-minutes: 10 | |
steps: | |
- name: Set commit status as pending | |
uses: myrotvorets/set-commit-status-action@v1.1.7 | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
status: pending | |
context: Rustfmt | |
sha: ${{ github.sha }} | |
- uses: actions/checkout@v3 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: stable | |
components: rustfmt | |
profile: minimal | |
override: true | |
- name: Run rustfmt | |
run: | | |
cargo fmt --check --all | |
- name: Set final commit status | |
uses: myrotvorets/set-commit-status-action@v1.1.7 | |
if: always() | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
status: ${{ job.status }} | |
context: Rustfmt | |
sha: ${{ github.sha }} | |
missing-libs: | |
name: Check missing libs | |
runs-on: ubuntu-latest | |
needs: install-vitasdk | |
timeout-minutes: 10 | |
steps: | |
- name: Set commit status as pending | |
uses: myrotvorets/set-commit-status-action@v1.1.7 | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
status: pending | |
context: Check missing libs | |
sha: ${{ github.sha }} | |
- uses: actions/checkout@v3 | |
with: | |
submodules: true | |
- name: Restore vitasdk cache | |
uses: actions/cache/restore@v3 | |
with: | |
path: /opt/vitasdk | |
key: ${{ runner.os }}-vitasdk | |
fail-on-cache-miss: true | |
- name: Cache LLVM and Clang | |
id: cache-llvm | |
uses: actions/cache@v3 | |
with: | |
path: | | |
${{ runner.temp }}/llvm | |
key: llvm | |
- name: Install LLVM and Clang | |
uses: KyleMayes/install-llvm-action@v1 | |
with: | |
version: ${{ env.LLVM_VERSION }} | |
directory: ${{ runner.temp }}/llvm | |
cached: ${{ steps.cache-llvm.outputs.cache-hit }} | |
- uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: stable | |
profile: minimal | |
override: true | |
- name: Run build-util | |
env: | |
VITASDK: /opt/vitasdk | |
run: | | |
cargo run --profile build-util -p vitasdk-sys-build-util -- stub-libs --missing-libs --fail-if-any | |
- name: Set final commit status | |
uses: myrotvorets/set-commit-status-action@v1.1.7 | |
if: always() | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
status: ${{ job.status }} | |
context: Check missing libs | |
sha: ${{ github.sha }} | |
doc: | |
name: Doc | |
runs-on: ubuntu-latest | |
needs: install-vitasdk | |
timeout-minutes: 30 | |
env: | |
RUSTDOCFLAGS: -D warnings | |
steps: | |
- name: Set commit status as pending | |
uses: myrotvorets/set-commit-status-action@v1.1.7 | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
status: pending | |
context: Doc | |
sha: ${{ github.sha }} | |
- uses: actions/checkout@v3 | |
with: | |
submodules: true | |
- name: Restore vitasdk cache | |
uses: actions/cache/restore@v3 | |
with: | |
path: /opt/vitasdk | |
key: ${{ runner.os }}-vitasdk | |
fail-on-cache-miss: true | |
- name: Cache LLVM and Clang | |
id: cache-llvm | |
uses: actions/cache@v3 | |
with: | |
path: | | |
${{ runner.temp }}/llvm | |
key: llvm | |
- name: Install LLVM and Clang | |
uses: KyleMayes/install-llvm-action@v1 | |
with: | |
version: ${{ env.LLVM_VERSION }} | |
directory: ${{ runner.temp }}/llvm | |
cached: ${{ steps.cache-llvm.outputs.cache-hit }} | |
- uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: nightly | |
components: rust-docs, rust-src | |
profile: minimal | |
override: true | |
- name: Run cargo doc | |
run: DOCS_RS=1 RUSTDOCFLAGS="--cfg docsrs" cargo +nightly doc --all-features --target armv7-sony-vita-newlibeabihf -Z build-std | |
- name: Upload docs | |
uses: actions/upload-artifact@v3 | |
with: | |
name: docs | |
path: target/armv7-sony-vita-newlibeabihf/doc | |
if-no-files-found: error | |
- name: Set final commit status | |
uses: myrotvorets/set-commit-status-action@v1.1.7 | |
if: always() | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
status: ${{ job.status }} | |
context: Doc | |
sha: ${{ github.sha }} |