Skip to content

Add pre-built ppc64le and aarch64 linux binaries #68

Add pre-built ppc64le and aarch64 linux binaries

Add pre-built ppc64le and aarch64 linux binaries #68

Workflow file for this run

name: deploy
on:
push:
tags:
- 'v*.*.*'
jobs:
windows-binaries:
strategy:
matrix:
conf:
- msvc
- gnu
include:
- conf: msvc
toolchain: stable
- conf: gnu
toolchain: stable-x86_64-pc-windows-gnu
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- name: Install stable
uses: dtolnay/rust-toolchain@stable
with:
profile: minimal
toolchain: ${{ matrix.toolchain }}
override: true
- name: Build cargo-c
run: |
cargo build --release
- name: Strip gnu binaries
if: matrix.conf == 'gnu'
run: |
strip "target\release\cargo-capi.exe" `
"target\release\cargo-cbuild.exe" `
"target\release\cargo-cinstall.exe"
- name: Create zip
run: |
cd target/release
7z a ../../cargo-c-windows-${{ matrix.conf }}.zip `
"cargo-capi.exe" `
"cargo-cbuild.exe" `
"cargo-cinstall.exe"
- name: Upload binaries
uses: actions/upload-artifact@v2
with:
name: cargo-c-windows-${{ matrix.conf }}-binaries
path: cargo-c-windows-${{ matrix.conf }}.zip
linux-binaries:
strategy:
matrix:
target:
- x86_64-unknown-linux-musl
- powerpc64le-unknown-linux-gnu
- aarch64-unknown-linux-gnu
include:
- target: x86_64-unknown-linux-musl
sdk: musl-tools
cc: musl-gcc
- target: powerpc64le-unknown-linux-gnu
sdk: crossbuild-essential-ppc64el
cc: powerpc64le-linux-gnu-gcc
- target: aarch64-unknown-linux-gnu
sdk: crossbuild-essential-arm64
cc: aarch64-linux-gnu-gcc
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install $${{ matrix.sdk }}
run: |
sudo apt-get install ${{ matrix.sdk }}
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
profile: minimal
toolchain: stable
target: ${{ matrix.target }}
override: true
- name: Build cargo-c
run: |
mkdir .cargo
echo -e "[target.${{ matrix.target }}]\nlinker=\"${{ matrix.cc }}\"" > .cargo/config
cargo build --target ${{ matrix.target }} --release --features vendored-openssl
- name: Create zip
run: |
cd target/${{ matrix.target }}/release
strip cargo-capi cargo-cbuild cargo-cinstall
tar -czvf $GITHUB_WORKSPACE/cargo-c-${{ matrix.target }}.tar.gz \
cargo-capi \
cargo-cbuild \
cargo-cinstall
- name: Upload binaries
uses: actions/upload-artifact@v2
with:
name: cargo-c-${{ matrix.target }}-binaries
path: cargo-c-${{ matrix.target }}.tar.gz
macos-binaries:
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
- name: Install stable
uses: dtolnay/rust-toolchain@stable
with:
profile: minimal
toolchain: stable
override: true
- name: Build cargo-c
run: |
cargo build --features=vendored-openssl --release
- name: Create zip
run: |
cd target/release
strip cargo-capi cargo-cbuild cargo-cinstall
zip $GITHUB_WORKSPACE/cargo-c-macos.zip \
cargo-capi \
cargo-cbuild \
cargo-cinstall
- name: Upload binaries
uses: actions/upload-artifact@v2
with:
name: cargo-c-macos-binaries
path: cargo-c-macos.zip
deploy:
needs: [windows-binaries, linux-binaries, macos-binaries]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install stable
uses: dtolnay/rust-toolchain@stable
with:
profile: minimal
toolchain: stable
override: true
- name: Download zip files
uses: actions/download-artifact@v2
- name: Create Cargo.lock
run: |
cargo update
- name: Create a release
uses: softprops/action-gh-release@v1
with:
files: |
Cargo.lock
cargo-c-linux-binaries/cargo-c-linux.tar.gz
cargo-c-macos-binaries/cargo-c-macos.zip
cargo-c-windows-msvc-binaries/cargo-c-windows-msvc.zip
cargo-c-windows-gnu-binaries/cargo-c-windows-gnu.zip
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}