Skip to content

num_derive 0.3 -> 0.4.0 #227

num_derive 0.3 -> 0.4.0

num_derive 0.3 -> 0.4.0 #227

Workflow file for this run

name: Rust
on:
push:
branches:
- master
tags:
- '[0-9]+.[0-9]+.[0-9]+'
pull_request:
jobs:
format:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
submodules: true
- name: Setup Rust
uses: actions-rs/toolchain@v1
with:
toolchain: stable
profile: minimal
components: rustfmt
default: true
override: true
- uses: Swatinem/rust-cache@v2
- name: Format
uses: actions-rs/cargo@v1
with:
command: fmt
args: --all -- --check
docs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
submodules: true
- name: Setup Rust
uses: actions-rs/toolchain@v1
with:
toolchain: nightly
target: x86_64-linux-android
profile: minimal
components: rust-docs
default: true
override: true
- uses: Swatinem/rust-cache@v2
- name: Documentation
uses: actions-rs/cargo@v1
env:
DOCS_RS: 1
with:
command: doc
args: --target x86_64-linux-android --features java-interface,doc-cfg
check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
with:
submodules: true
- name: Setup JDK
uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Setup Android SDK
uses: android-actions/setup-android@v2
- name: Setup Android NDK
env:
NDK_VERSION: 21.4.7075529
TRIPLE: x86_64-linux-android
run: |
sdkmanager --sdk_root=$ANDROID_SDK_ROOT --install "ndk;$NDK_VERSION" --channel=3 | grep -v = || true
echo "$ANDROID_SDK_ROOT/ndk/$NDK_VERSION/toolchains/llvm/prebuilt/linux-x86_64/bin" >> $GITHUB_PATH
for var in ANDROID_NDK ANDROID_NDK_HOME ANDROID_NDK_LATEST_HOME ANDROID_NDK_ROOT; do
echo "$var=$ANDROID_SDK_ROOT/ndk/$NDK_VERSION" >> $GITHUB_ENV
done
TRIPLE_ENV=$(echo $TRIPLE | tr '-' '_')
echo "CC_${TRIPLE_ENV}=${TRIPLE}21-clang" >> $GITHUB_ENV
echo "CXX_${TRIPLE_ENV}=${TRIPLE}21-clang++" >> $GITHUB_ENV
echo "AR_${TRIPLE_ENV}=${TRIPLE}-ar" >> $GITHUB_ENV
- uses: actions-rs/toolchain@v1
with:
toolchain: nightly
target: x86_64-linux-android
profile: minimal
components: clippy
default: true
override: true
- uses: Swatinem/rust-cache@v2
- uses: actions-rs/clippy-check@v1
with:
token: ${{ secrets.GITHUB_TOKEN }}
args: --all --features java-interface --all-targets --target x86_64-linux-android
build:
needs:
- format
- docs
- check
- cargo-ndk
runs-on: ubuntu-latest
strategy:
fail-fast: ${{ github.event_name == 'pull_request' || startsWith(github.ref, 'refs/tags/') }}
matrix:
rust:
- stable
- nightly
profile:
- debug
- release
target:
- armv7-linux-androideabi
- aarch64-linux-android
- i686-linux-android
- x86_64-linux-android
steps:
- uses: actions/checkout@v3
with:
submodules: true
- name: Setup JDK
uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Setup Android SDK
uses: android-actions/setup-android@v2
- name: Setup Android NDK
env:
NDK_VERSION: 21.4.7075529
run: |
sdkmanager --sdk_root=$ANDROID_SDK_ROOT --install "ndk;$NDK_VERSION" --channel=3 | grep -v = || true
echo "$ANDROID_SDK_ROOT/ndk/$NDK_VERSION/toolchains/llvm/prebuilt/linux-x86_64/bin" >> $GITHUB_PATH
for var in ANDROID_NDK ANDROID_NDK_HOME ANDROID_NDK_LATEST_HOME ANDROID_NDK_ROOT; do
echo "$var=$ANDROID_SDK_ROOT/ndk/$NDK_VERSION" >> $GITHUB_ENV
done
- name: Setup Rust ${{ matrix.rust }} [${{ matrix.target }}]
uses: actions-rs/toolchain@v1
with:
toolchain: ${{ matrix.rust }}
target: ${{ matrix.target }}
profile: minimal
components: rustfmt
default: true
override: true
- name: Setup Cargo ndk
uses: actions/cache@v3
with:
path: ~/.cargo/bin/cargo-ndk
key: ${{ runner.os }}-cargo-ndk-v1
- uses: Swatinem/rust-cache@v2
- name: Prepare config
id: config
run: |
if [[ "${{ matrix.target }}" =~ "64" ]]; then
echo "android-api=21" >> $GITHUB_OUTPUT
else
echo "android-api=16" >> $GITHUB_OUTPUT
fi
if [[ "${{ matrix.profile }}" == "release" ]]; then
echo "cargo-args=--release" >> $GITHUB_OUTPUT
else
echo "cargo-args=" >> $GITHUB_OUTPUT
fi
- name: Build target ${{ matrix.target }}
uses: actions-rs/cargo@v1
env:
ANDROID_SDK_HOME: ${{ env.ANDROID_SDK_ROOT }}
with:
command: ndk
args: --android-platform ${{ steps.config.outputs.android-api }} --target ${{ matrix.target }} -- build ${{ steps.config.outputs.cargo-args }} --features generate-bindings
- name: Get latest build path
id: result
run: |
echo "build-path=$(ls -td target/${{ matrix.target }}/${{ matrix.profile }}/build/oboe-sys-*/ | head -1)" >> $GITHUB_OUTPUT
- name: Copy bindings
if: matrix.rust == 'stable' && matrix.profile == 'release'
run: |
mkdir -p bindings
cp ${{ steps.result.outputs.build-path }}out/bindings.rs bindings/bindings_$(echo ${{ matrix.target }} | sed -r 's/^([^-]+).*$/\1/').rs
- name: Upload bindings
if: matrix.rust == 'stable' && matrix.profile == 'release'
uses: actions/upload-artifact@v2
with:
name: bindings
path: bindings
- name: Archive library
if: matrix.rust == 'stable'
run: tar -czf liboboe-ext_${{ matrix.target }}_${{ matrix.profile }}.tar.gz -C ${{ steps.result.outputs.build-path }}/out/library liboboe-ext.a
- name: Upload library
if: matrix.rust == 'stable'
uses: actions/upload-artifact@v2
with:
name: library
path: liboboe-ext_${{ matrix.target }}_${{ matrix.profile }}.tar.gz
update-bindings:
if: ${{ !startsWith(github.ref, 'refs/tags/') }}
needs:
- build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
submodules: true
- name: Download bindings
uses: actions/download-artifact@v2
with:
name: bindings
path: sys/src
- name: Create Pull Request
uses: peter-evans/create-pull-request@v3
with:
base: ${{ github.head_ref }}
commit-message: Updated bindings
branch: update-bindings
delete-branch: true
title: Update bindings
body: |
Bindings should be updated to be consistent with latest changes
build-demo:
needs:
- build
- cargo-apk
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
submodules: true
- name: Setup JDK
uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Setup Android SDK
uses: android-actions/setup-android@v2
- name: Setup Android NDK
run: sdkmanager --sdk_root=${ANDROID_SDK_ROOT} ndk-bundle
- name: Setup Rust
uses: hecrj/setup-rust-action@v1
with:
targets: armv7-linux-androideabi, aarch64-linux-android, i686-linux-android, x86_64-linux-android
- name: Setup Cargo apk
uses: actions/cache@v3
with:
path: ~/.cargo/bin/cargo-apk
key: ${{ runner.os }}-cargo-apk
- uses: Swatinem/rust-cache@v2
- name: Create signing key
run: |
if [ -z "${{ secrets.APK_KEYSTORE_PASSWORD }}" ]; then
# create temporary keystore to sign apk
rm -f demo/release.keystore
keytool -genkey -dname "cn=Nobrand, ou=RnD, o=example.com, c=US" -v -keystore demo/release.keystore -alias demo -keyalg RSA -keysize 2048 -validity 20000 -storepass android
else
# use existing keystore to sign apk
sed -i 's/keystore_password = "android"/keystore_password = "${{ secrets.APK_KEYSTORE_PASSWORD }}"/' demo/Cargo.toml
fi
- name: Build demo apk
uses: actions-rs/cargo@v1
with:
command: apk
args: build --manifest-path demo/Cargo.toml --release
- name: Upload demo apk
uses: actions/upload-artifact@v2
with:
name: apk
path: target/release/apk/oboe-demo.apk
release:
if: github.repository == 'katyo/oboe-rs' && startsWith(github.ref, 'refs/tags/')
needs:
- build
- build-demo
runs-on: ubuntu-latest
steps:
- name: Download libraries
uses: actions/download-artifact@v2
with:
name: library
- name: Download demo
uses: actions/download-artifact@v2
with:
name: apk
- name: Create release
uses: softprops/action-gh-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
files: |
*.tar.gz
*.apk
#prerelease: true
#draft: true
fail_on_unmatched_files: true
publish:
if: github.repository == 'katyo/oboe-rs' && startsWith(github.ref, 'refs/tags/')
needs:
- release
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
submodules: true
- name: Setup Rust
uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
- name: Publish crates
uses: katyo/publish-crates@v1
with:
registry-token: ${{ secrets.CRATES_TOKEN }}
args: --no-verify
#dry-run: true
cargo-ndk:
runs-on: ubuntu-latest
steps:
- name: Prepare cache
uses: actions/cache@v3
id: cache
with:
path: ~/.cargo/bin/cargo-ndk
key: ${{ runner.os }}-cargo-ndk-v1
- name: Setup cargo ndk
if: steps.cache.outputs.cache-hit != 'true'
uses: actions-rs/cargo@v1
with:
command: install
args: cargo-ndk --version ^1
cargo-apk:
runs-on: ubuntu-latest
steps:
- name: Prepare cache
uses: actions/cache@v3
id: cache
with:
path: ~/.cargo/bin/cargo-apk
key: ${{ runner.os }}-cargo-apk
- name: Setup cargo apk
if: steps.cache.outputs.cache-hit != 'true'
uses: actions-rs/cargo@v1
with:
command: install
args: cargo-apk