Skip to content

Make usage of openSSL optional #170

Make usage of openSSL optional

Make usage of openSSL optional #170

Workflow file for this run

on:
pull_request:
types: [opened, synchronize, reopened]
push:
branches:
- master
name: CI Tests
jobs:
check_and_test:
name: Check
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-13, macos-14, windows-2019]
features: [default, bundled, bundled_without_openssl, buildtime_bindgen]
runs-on: ${{ matrix.os }}
steps:
- name: Checkout sources
uses: actions/checkout@v4
with:
submodules: recursive
- name: Cache cargo registry
uses: Swatinem/rust-cache@v2
with:
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.toml') }}
- name: Set environment variables
shell: bash
run: |
echo "RUSTFLAGS=-D warnings" >> $GITHUB_ENV
echo "RUSTDOCFLAGS=-D warnings" >> $GITHUB_ENV
echo "BINDGEN_EXTRA_CLANG_ARGS=-I./pq-src/source/src/interfaces/libpq/ -I./pq-src/source/src/include/ -I ./pq-src/additional_include" >> $GITHUB_ENV
- name: Install postgres (Linux)
if: runner.os == 'Linux' && matrix.features == 'default'
run: |
sudo apt-get update
sudo apt-get install -y libpq-dev postgresql
echo "host all all 127.0.0.1/32 md5" > sudo tee -a /etc/postgresql/10/main/pg_hba.conf
sudo service postgresql restart && sleep 3
sudo -u postgres psql -c "ALTER USER postgres PASSWORD 'postgres';"
sudo service postgresql restart && sleep 3
- name: Install postgres (MacOS)
if: matrix.os == 'macos-13' && matrix.features != 'bundled' && matrix.features != 'bundled_without_openssl'
run: |
brew install postgresql
brew services start postgresql@14
sleep 3
createuser -s postgres
- name: Install postgres (MacOS M1)
if: matrix.os == 'macos-14' && matrix.features != 'bundled' && matrix.features != 'bundled_without_openssl'
run: |
brew install postgresql
brew services start postgresql@14
sleep 3
createuser -s postgres
- name: Install postgres (Windows)
if: runner.os == 'Windows' && matrix.features != 'bundled' && matrix.features != 'bundled_without_openssl'
shell: bash
run: |
choco install postgresql12 --force --params '/Password:root'
echo "C:\Program Files\PostgreSQL\12\bin" >> $GITHUB_PATH
echo "C:\Program Files\PostgreSQL\12\lib" >> $GITHUB_PATH
echo "PQ_LIB_DIR=C:\Program Files\PostgreSQL\12\lib" >> $GITHUB_ENV
- name: Windows setup (bundled)
if: runner.os == 'Windows' && matrix.features == 'bundled'
run: |
echo "VCPKG_ROOT=$env:VCPKG_INSTALLATION_ROOT" | Out-File -FilePath $env:GITHUB_ENV
vcpkg install openssl:x64-windows-static-md
- name: Remove openssl (Linux, bundled_without_openssl)
if: runner.os == 'Linux' && matrix.features == 'bundled_without_openssl'
run: sudo apt-get remove -y libssl-dev
- name: Remove openssl (MacOS, bundled_without_openssl)
if: matrix.os == 'macos-13' && matrix.features == 'bundled_without_openssl'
run: brew uninstall [email protected]
- name: Remove openssl (MacOS M1, bundled_without_openssl)
if: matrix.os == 'macos-14' && matrix.features == 'bundled_without_openssl'
run: brew uninstall [email protected]
- name: Install rust toolchain
uses: dtolnay/rust-toolchain@stable
- name: Check
shell: bash
run: |
cargo check --no-default-features --features "${{ matrix.features }}"
- name: Tests
shell: bash
run: |
cargo test --no-default-features --features "${{ matrix.features }}"
- name: Test compile diesel
shell: bash
# allow to fail as diesel might not pull in the right feature yet
continue-on-error: true
run: |
cargo new test_diesel
cd test_diesel
echo "[workspace]" >> Cargo.toml
cargo add diesel --no-default-features --features "postgres" --git "https://github.com/diesel-rs/diesel" --branch master
cargo add pq-sys
echo "[patch.crates-io]" >> Cargo.toml
echo "pq-sys = { path = \"..\" }" >> Cargo.toml
cat Cargo.toml
echo "use diesel::prelude::*;" > src/main.rs
echo "fn main() { PgConnection::establish(\"foo\").unwrap(); }" >> src/main.rs
cargo build --features "pq-sys/${{ matrix.features }}"
- name: Test all files included
shell: bash
if: matrix.features == 'bundled'
run: |
rm -rf test_diesel
git reset --hard HEAD
cd pq-src
cargo publish --dry-run