more openssl fixes #36
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
# yaml-language-server: $schema=https://json.schemastore.org/github-workflow.json | |
on: [push, pull_request, workflow_dispatch] | |
name: CI Rust Workflow | |
env: | |
RUSTFLAGS: -D warnings -A static_mut_refs | |
RUSTDOCFLAGS: -D warnings -A static_mut_refs | |
jobs: | |
# check: | |
# name: Check | |
# runs-on: ubuntu-latest | |
# steps: | |
# - uses: actions/checkout@v4 | |
# - uses: actions-rs/toolchain@v1 | |
# with: | |
# profile: minimal | |
# toolchain: stable | |
# override: true | |
# - uses: actions-rs/cargo@v1 | |
# with: | |
# command: check | |
# args: --all-features | |
# | |
# check_wasm: | |
# name: Check wasm32 | |
# runs-on: ubuntu-latest | |
# steps: | |
# - uses: actions/checkout@v4 | |
# - uses: actions-rs/toolchain@v1 | |
# with: | |
# profile: minimal | |
# toolchain: stable | |
# target: wasm32-unknown-unknown | |
# override: true | |
# - uses: actions-rs/cargo@v1 | |
# with: | |
# command: check | |
# args: --all-features --lib --target wasm32-unknown-unknown | |
# | |
# test: | |
# name: Test Suite | |
# runs-on: ubuntu-latest | |
# steps: | |
# - uses: actions/checkout@v4 | |
# - uses: actions-rs/toolchain@v1 | |
# with: | |
# profile: minimal | |
# toolchain: stable | |
# override: true | |
# - run: sudo apt-get install libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev libxkbcommon-dev libssl-dev | |
# - uses: actions-rs/cargo@v1 | |
# with: | |
# command: test | |
# args: --lib | |
# | |
# fmt: | |
# name: Rustfmt | |
# runs-on: ubuntu-latest | |
# steps: | |
# - uses: actions/checkout@v4 | |
# - uses: actions-rs/toolchain@v1 | |
# with: | |
# profile: minimal | |
# toolchain: stable | |
# override: true | |
# components: rustfmt | |
# - uses: actions-rs/cargo@v1 | |
# with: | |
# command: fmt | |
# args: --all -- --check | |
# | |
# clippy: | |
# name: Clippy | |
# runs-on: ubuntu-latest | |
# steps: | |
# - uses: actions/checkout@v4 | |
# - uses: actions-rs/toolchain@v1 | |
# with: | |
# profile: minimal | |
# toolchain: stable | |
# override: true | |
# components: clippy | |
# - uses: actions-rs/cargo@v1 | |
# with: | |
# command: clippy | |
# args: -- -D warnings | |
# | |
# trunk: | |
# name: trunk | |
# runs-on: ubuntu-latest | |
# steps: | |
# - uses: actions/checkout@v4 | |
# - uses: actions-rs/toolchain@v1 | |
# with: | |
# profile: minimal | |
# toolchain: 1.76.0 | |
# target: wasm32-unknown-unknown | |
# override: true | |
# - name: Download and install Trunk binary | |
# run: wget -qO- https://github.com/thedodd/trunk/releases/latest/download/trunk-x86_64-unknown-linux-gnu.tar.gz | tar -xzf- | |
# - name: Build | |
# run: ./trunk build | |
build: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- os: macos-latest | |
TARGET: aarch64-apple-darwin | |
# apple x86_64 | |
- os: macos-latest | |
TARGET: x86_64-apple-darwin | |
- os: ubuntu-latest | |
TARGET: aarch64-unknown-linux-gnu | |
# wasmtime cannot be built on armv7 as it's 32-bit | |
# - os: ubuntu-latest | |
# TARGET: armv7-unknown-linux-gnueabihf | |
- os: ubuntu-latest | |
TARGET: x86_64-unknown-linux-gnu | |
# TEMP disabled, longest and most expensive run in CI. | |
# - os: windows-latest | |
# TARGET: x86_64-pc-windows-msvc | |
# EXTENSION: .exe | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Building ${{ matrix.TARGET }} | |
run: echo "${{ matrix.TARGET }}" | |
- name: install Rust | |
uses: dtolnay/rust-toolchain@stable | |
with: | |
# Those targets are only used on macos runners so it's in an `if` to slightly speed up windows and linux builds. | |
targets: ${{ matrix.os == 'macos-latest' && 'aarch64-apple-darwin,x86_64-apple-darwin' || contains(matrix.TARGET, 'linux') && 'aarch64-unknown-linux-gnu,x86_64-unknown-linux-gnu' || 'x86_64-pc-windows-msvc' }} | |
- name: Set default cargo build target | |
if: contains(matrix.TARGET, 'x86_64-apple-darwin') | |
run: | | |
echo "CARGO_BUILD_TARGET=${{ matrix.TARGET }}" >> $GITHUB_ENV | |
rustup target add ${{ matrix.TARGET }} | |
rustup default stable-${{ matrix.TARGET }} | |
- name: Check OpenSSL pkg-config file | |
run: | | |
find /usr -name openssl.pc | |
pkg-config --list-all | grep openssl | |
- name: Install SSL | |
if: contains(matrix.TARGET, 'linux') | |
run: | | |
sudo apt-get update | |
sudo apt-get install libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev libxkbcommon-dev libssl-dev pkg-config | |
- name: Check OpenSSL configuration | |
run: | | |
pkg-config --modversion openssl | |
pkg-config --cflags --libs openssl | |
- name: Check OpenSSL pkg-config file | |
run: | | |
ls -l /usr/lib/${{ matrix.TARGET }}/pkgconfig/openssl.pc || echo "No openssl.pc found" | |
pkg-config --libs --cflags openssl || echo "pkg-config failed to find OpenSSL" | |
- name: Set PKG_CONFIG_PATH | |
if: contains(matrix.TARGET, 'linux') | |
run: echo "PKG_CONFIG_PATH=/usr/lib/${{ matrix.TARGET }}/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig" >> $GITHUB_ENV | |
# For linux, it's necessary to use cross from the git repository to avoid glibc problems | |
# Ref: https://github.com/cross-rs/cross/issues/1510 | |
- name: Install cross for linux | |
if: contains(matrix.TARGET, 'linux') | |
run: | | |
cargo install cross --git https://github.com/cross-rs/cross --rev 1b8cf50d20180c1a394099e608141480f934b7f7 | |
- name: Install cross for mac and windows | |
if: ${{ !contains(matrix.TARGET, 'linux') }} | |
run: | | |
cargo install cross | |
- name: Build | |
run: | | |
export OPENSSL_DIR=/usr | |
export OPENSSL_LIB_DIR=/usr/lib/${{ matrix.TARGET }} | |
export OPENSSL_INCLUDE_DIR=/usr/include/openssl | |
cross build --verbose --release --target=${{ matrix.TARGET }} | |
- name: Rename | |
run: cp target/${{ matrix.TARGET }}/release/eframe-multinode${{ matrix.EXTENSION }} eframe-multinode-${{ matrix.TARGET }}${{ matrix.EXTENSION }} | |
- uses: actions/upload-artifact@master | |
with: | |
name: eframe-multinode-${{ matrix.TARGET }}${{ matrix.EXTENSION }} | |
path: eframe-multinode-${{ matrix.TARGET }}${{ matrix.EXTENSION }} | |
- uses: svenstaro/upload-release-action@v2 | |
name: Upload binaries to release | |
if: ${{ github.event_name == 'push' }} | |
with: | |
repo_token: ${{ secrets.GITHUB_TOKEN }} | |
file: eframe-multinode-${{ matrix.TARGET }}${{ matrix.EXTENSION }} | |
asset_name: eframe-multinode-${{ matrix.TARGET }}${{ matrix.EXTENSION }} | |
tag: ${{ github.ref }} | |
prerelease: ${{ !startsWith(github.ref, 'refs/tags/') }} | |
overwrite: true |