Skip to content

Change to pre-generated bindings, add feature for generating at compile-time #135

Change to pre-generated bindings, add feature for generating at compile-time

Change to pre-generated bindings, add feature for generating at compile-time #135

Workflow file for this run

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
- name: Restore vitasdk cache
uses: actions/cache/restore@v3
with:
path: /opt/vitasdk
key: ${{ runner.os }}-vitasdk
fail-on-cache-miss: true
- 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
- name: Restore vitasdk cache
uses: actions/cache/restore@v3
with:
path: /opt/vitasdk
key: ${{ runner.os }}-vitasdk
fail-on-cache-miss: true
- 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 }}
# Checks if there's no diff when regenerating bindings
check-bindings:
name: Check bindings
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 bindings
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: Regenerate bindings
env:
VITASDK: /opt/vitasdk
# From clang-sys
LIBCLANG_PATH: ${{ runner.temp }}/llvm/lib
LLVM_CONFIG_PATH: ${{ runner.temp }}/llvm/bin/llvm-config
run: |
cargo run -p vitasdk-sys-build-util -- bindgen
- name: Check diff
run: |
git add . && git diff --quiet && git diff --cached --quiet
- 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 bindings
sha: ${{ github.sha }}
doc:
name: Doc
runs-on: ubuntu-latest
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
- 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: 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 }}