name: Rust
on:
push:
pull_request:
env:
CARGO_TERM_COLOR: always
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Update apt
run: sudo apt update
- name: Install apr
run: |
sudo apt update -y
sudo apt install -y libapr1-dev libaprutil1-dev libsvn-dev pkg-config libutf8proc-dev libsqlite3-dev subversion
- name: "Fix up Version: field in Subversion .pc files"
run: |
svnversion=$(svn --version | grep -oP 'svn, version \K\d+\.\d+\.\d+')
sudo sed -i "s/^Version: \$/Version: $svnversion/" /usr/lib/*/pkgconfig/libsvn_*.pc
- name: Install cargo-all-features
run: cargo install cargo-all-features
- name: Build
run: cargo build-all-features
env:
RUSTFLAGS: -Dwarnings
- name: Run tests
run: cargo test-all-features
env:
RUSTFLAGS: -Dwarnings
- name: Check formatting
run: cargo fmt -- --check
build-macos:
runs-on: macos-latest
steps:
- uses: actions/checkout@v5
- name: Install dependencies
run: brew install subversion pkg-config apr apr-util
- name: Set build environment
run: |
echo "PKG_CONFIG_PATH=$(brew --prefix apr)/lib/pkgconfig:$(brew --prefix apr-util)/lib/pkgconfig" >> "$GITHUB_ENV"
echo "LIBRARY_PATH=$(brew --prefix gettext)/lib:$(brew --prefix utf8proc)/lib" >> "$GITHUB_ENV"
- name: Install cargo-all-features
run: cargo install cargo-all-features
- name: Build
run: cargo build-all-features
env:
RUSTFLAGS: -Dwarnings
- name: Run tests
run: cargo test-all-features
env:
RUSTFLAGS: -Dwarnings
build-windows:
runs-on: windows-latest
steps:
- uses: actions/checkout@v5
- name: Install dependencies (vcpkg)
run: |
vcpkg install subversion:x64-windows apr:x64-windows apr-util:x64-windows
$prefix = "$env:VCPKG_INSTALLATION_ROOT\installed\x64-windows"
echo "SYSTEM_DEPS_APR_1_NO_PKG_CONFIG=1" >> $env:GITHUB_ENV
echo "SYSTEM_DEPS_APR_1_INCLUDE=$prefix\include" >> $env:GITHUB_ENV
echo "SYSTEM_DEPS_APR_1_SEARCH_NATIVE=$prefix\lib" >> $env:GITHUB_ENV
echo "SYSTEM_DEPS_APR_1_LIB=libapr-1" >> $env:GITHUB_ENV
echo "SYSTEM_DEPS_APR_UTIL_1_NO_PKG_CONFIG=1" >> $env:GITHUB_ENV
echo "SYSTEM_DEPS_APR_UTIL_1_INCLUDE=$prefix\include" >> $env:GITHUB_ENV
echo "SYSTEM_DEPS_APR_UTIL_1_SEARCH_NATIVE=$prefix\lib" >> $env:GITHUB_ENV
echo "SYSTEM_DEPS_APR_UTIL_1_LIB=libaprutil-1" >> $env:GITHUB_ENV
echo "SYSTEM_DEPS_LIBSVN_CLIENT_NO_PKG_CONFIG=1" >> $env:GITHUB_ENV
echo "SYSTEM_DEPS_LIBSVN_CLIENT_INCLUDE=$prefix\include\subversion-1;$prefix\include" >> $env:GITHUB_ENV
echo "SYSTEM_DEPS_LIBSVN_CLIENT_SEARCH_NATIVE=$prefix\lib" >> $env:GITHUB_ENV
echo "SYSTEM_DEPS_LIBSVN_CLIENT_LIB=libsvn_client-1" >> $env:GITHUB_ENV
echo "SYSTEM_DEPS_LIBSVN_DELTA_NO_PKG_CONFIG=1" >> $env:GITHUB_ENV
echo "SYSTEM_DEPS_LIBSVN_DELTA_INCLUDE=$prefix\include\subversion-1;$prefix\include" >> $env:GITHUB_ENV
echo "SYSTEM_DEPS_LIBSVN_DELTA_SEARCH_NATIVE=$prefix\lib" >> $env:GITHUB_ENV
echo "SYSTEM_DEPS_LIBSVN_DELTA_LIB=libsvn_delta-1" >> $env:GITHUB_ENV
echo "SYSTEM_DEPS_LIBSVN_DIFF_NO_PKG_CONFIG=1" >> $env:GITHUB_ENV
echo "SYSTEM_DEPS_LIBSVN_DIFF_INCLUDE=$prefix\include\subversion-1;$prefix\include" >> $env:GITHUB_ENV
echo "SYSTEM_DEPS_LIBSVN_DIFF_SEARCH_NATIVE=$prefix\lib" >> $env:GITHUB_ENV
echo "SYSTEM_DEPS_LIBSVN_DIFF_LIB=libsvn_diff-1" >> $env:GITHUB_ENV
echo "SYSTEM_DEPS_LIBSVN_SUBR_NO_PKG_CONFIG=1" >> $env:GITHUB_ENV
echo "SYSTEM_DEPS_LIBSVN_SUBR_INCLUDE=$prefix\include\subversion-1;$prefix\include" >> $env:GITHUB_ENV
echo "SYSTEM_DEPS_LIBSVN_SUBR_SEARCH_NATIVE=$prefix\lib" >> $env:GITHUB_ENV
echo "SYSTEM_DEPS_LIBSVN_SUBR_LIB=libsvn_subr-1" >> $env:GITHUB_ENV
echo "SYSTEM_DEPS_LIBSVN_REPOS_NO_PKG_CONFIG=1" >> $env:GITHUB_ENV
echo "SYSTEM_DEPS_LIBSVN_REPOS_INCLUDE=$prefix\include\subversion-1;$prefix\include" >> $env:GITHUB_ENV
echo "SYSTEM_DEPS_LIBSVN_REPOS_SEARCH_NATIVE=$prefix\lib" >> $env:GITHUB_ENV
echo "SYSTEM_DEPS_LIBSVN_REPOS_LIB=libsvn_repos-1" >> $env:GITHUB_ENV
echo "SYSTEM_DEPS_LIBSVN_FS_NO_PKG_CONFIG=1" >> $env:GITHUB_ENV
echo "SYSTEM_DEPS_LIBSVN_FS_INCLUDE=$prefix\include\subversion-1;$prefix\include" >> $env:GITHUB_ENV
echo "SYSTEM_DEPS_LIBSVN_FS_SEARCH_NATIVE=$prefix\lib" >> $env:GITHUB_ENV
echo "SYSTEM_DEPS_LIBSVN_FS_LIB=libsvn_fs-1" >> $env:GITHUB_ENV
echo "SYSTEM_DEPS_LIBSVN_WC_NO_PKG_CONFIG=1" >> $env:GITHUB_ENV
echo "SYSTEM_DEPS_LIBSVN_WC_INCLUDE=$prefix\include\subversion-1;$prefix\include" >> $env:GITHUB_ENV
echo "SYSTEM_DEPS_LIBSVN_WC_SEARCH_NATIVE=$prefix\lib" >> $env:GITHUB_ENV
echo "SYSTEM_DEPS_LIBSVN_WC_LIB=libsvn_wc-1" >> $env:GITHUB_ENV
echo "SYSTEM_DEPS_LIBSVN_RA_NO_PKG_CONFIG=1" >> $env:GITHUB_ENV
echo "SYSTEM_DEPS_LIBSVN_RA_INCLUDE=$prefix\include\subversion-1;$prefix\include" >> $env:GITHUB_ENV
echo "SYSTEM_DEPS_LIBSVN_RA_SEARCH_NATIVE=$prefix\lib" >> $env:GITHUB_ENV
echo "SYSTEM_DEPS_LIBSVN_RA_LIB=libsvn_ra-1" >> $env:GITHUB_ENV
echo "$prefix\bin" >> $env:GITHUB_PATH
- name: Build
run: cargo build
env:
RUSTFLAGS: -Dwarnings
- name: Run tests
run: cargo test
env:
RUSTFLAGS: -Dwarnings