fix!: arrow and panic fixes #3687
Workflow file for this run
This file contains hidden or 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
name: build | |
on: [push, pull_request] | |
env: | |
CARGO_TERM_COLOR: always | |
RUST_BACKTRACE: 1 | |
jobs: | |
format: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install minimal stable with rustfmt | |
uses: actions-rust-lang/setup-rust-toolchain@v1 | |
with: | |
components: rustfmt | |
- name: format | |
run: cargo fmt -- --check | |
msrv: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install minimal stable and cargo msrv | |
uses: actions-rust-lang/setup-rust-toolchain@v1 | |
- name: Install cargo-msrv | |
shell: bash | |
run: | | |
cargo install cargo-msrv --locked | |
- name: verify-msrv | |
run: | | |
cargo msrv --path kernel/ verify --all-features | |
cargo msrv --path derive-macros/ verify --all-features | |
cargo msrv --path ffi/ verify --all-features | |
cargo msrv --path ffi-proc-macros/ verify --all-features | |
msrv-run-tests: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install minimal stable and cargo msrv | |
uses: actions-rust-lang/setup-rust-toolchain@v1 | |
- uses: Swatinem/rust-cache@v2 | |
- name: Install cargo-msrv | |
shell: bash | |
run: | | |
cargo install cargo-msrv --locked | |
- name: Get rust-version from Cargo.toml | |
id: rust-version | |
run: echo "RUST_VERSION=$(cargo msrv show --path kernel/ --output-format minimal)" >> $GITHUB_ENV | |
- name: Install specified rust version | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: ${{ env.RUST_VERSION }} | |
profile: minimal | |
- name: run tests | |
run: | | |
pushd kernel | |
echo "Testing with $(cargo msrv show --output-format minimal)" | |
cargo +$(cargo msrv show --output-format minimal) test | |
docs: | |
runs-on: ubuntu-latest | |
env: | |
RUSTDOCFLAGS: -D warnings | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install minimal stable | |
uses: actions-rust-lang/setup-rust-toolchain@v1 | |
- name: build docs | |
run: cargo doc | |
# When we run cargo { build, clippy } --no-default-features, we want to build/lint the kernel to | |
# ensure that we can build the kernel without any features enabled. Unfortunately, due to how | |
# cargo resolves features, if we have a workspace member that depends on the kernel with features | |
# enabled, the kernel will be compiled with those features (even if we specify | |
# --no-default-features). | |
# | |
# To cope with this, we split build/clippy --no-default-features into two runs: | |
# 1. build/clippy all packages that depend on the kernel with some features enabled: | |
# - acceptance | |
# - test_utils | |
# - feature_tests | |
# (and examples) | |
# - inspect-table | |
# - read-table-changes | |
# - read-table-multi-threaded | |
# - read-table-single-threaded | |
# 2. build/clippy all packages that only have no-feature kernel dependency | |
# - delta_kernel | |
# - delta_kernel_derive | |
# - delta_kernel_ffi | |
# - delta_kernel_ffi_macros | |
build: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: | |
- macOS-latest | |
- ubuntu-latest | |
- windows-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install minimal stable with clippy | |
uses: actions-rust-lang/setup-rust-toolchain@v1 | |
with: | |
components: clippy | |
- name: build and lint with clippy | |
run: cargo clippy --benches --tests --all-features -- -D warnings | |
- name: lint without default features - packages which depend on kernel with features enabled | |
run: cargo clippy --workspace --no-default-features --exclude delta_kernel --exclude delta_kernel_ffi --exclude delta_kernel_derive --exclude delta_kernel_ffi_macros -- -D warnings | |
- name: lint without default features - packages which don't depend on kernel with features enabled | |
run: cargo clippy --no-default-features --package delta_kernel --package delta_kernel_ffi --package delta_kernel_derive --package delta_kernel_ffi_macros -- -D warnings | |
- name: check kernel builds with default-engine | |
run: cargo build -p feature_tests --features default-engine | |
- name: check kernel builds with default-engine-rustls | |
run: cargo build -p feature_tests --features default-engine-rustls | |
test: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: | |
- macOS-latest | |
- ubuntu-latest | |
- windows-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install minimal stable with clippy and rustfmt | |
uses: actions-rust-lang/setup-rust-toolchain@v1 | |
- name: test | |
run: cargo test --workspace --verbose --all-features -- --skip read_table_version_hdfs | |
ffi_test: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: | |
- macOS-latest | |
- ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup cmake | |
uses: jwlawson/actions-setup-cmake@v2 | |
with: | |
cmake-version: '3.30.x' | |
- name: Install arrow-glib | |
run: | | |
if [ "$RUNNER_OS" == "Linux" ]; then | |
sudo apt update | |
sudo apt install -y -V ca-certificates lsb-release wget | |
wget https://apache.jfrog.io/artifactory/arrow/$(lsb_release --id --short | tr 'A-Z' 'a-z')/apache-arrow-apt-source-latest-$(lsb_release --codename --short).deb | |
wget https://apache.jfrog.io/artifactory/arrow/$(lsb_release --id --short | tr 'A-Z' 'a-z')/apache-arrow-apt-source-latest-$(lsb_release --codename --short).deb.sha512 | |
sha512sum -c apache-arrow-apt-source-latest-$(lsb_release --codename --short).deb.sha512 || exit 1 | |
sudo apt install -y -V ./apache-arrow-apt-source-latest-$(lsb_release --codename --short).deb | |
sudo apt update | |
sudo apt install -y -V libarrow-dev # For C++ | |
sudo apt install -y -V libarrow-glib-dev # For GLib (C) | |
sudo apt install -y -V valgrind # For memory leak test | |
elif [ "$RUNNER_OS" == "macOS" ]; then | |
brew install apache-arrow | |
brew install apache-arrow-glib | |
else | |
echo "$RUNNER_OS not supported" | |
exit 1 | |
fi | |
- name: Install minimal stable with clippy and rustfmt | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: default | |
toolchain: stable | |
override: true | |
- uses: Swatinem/rust-cache@v2 | |
- name: Set output on fail | |
run: echo "CTEST_OUTPUT_ON_FAILURE=1" >> "$GITHUB_ENV" | |
- name: Build kernel | |
run: | | |
pushd acceptance | |
cargo build | |
popd | |
pushd ffi | |
cargo b --features default-engine,sync-engine,test-ffi,tracing | |
popd | |
- name: build and run read-table test | |
run: | | |
pushd ffi/examples/read-table | |
mkdir build | |
pushd build | |
cmake .. | |
make | |
make test | |
- name: build and run visit-expression test | |
run: | | |
pushd ffi/examples/visit-expression | |
mkdir build | |
pushd build | |
cmake .. | |
make | |
make test | |
miri: | |
name: "Miri" | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install Miri | |
run: | | |
rustup toolchain install nightly --component miri | |
rustup override set nightly | |
cargo miri setup | |
- name: Test with Miri | |
run: | | |
pushd ffi | |
MIRIFLAGS=-Zmiri-disable-isolation cargo miri test --features sync-engine,default-engine | |
coverage: | |
runs-on: ubuntu-latest | |
env: | |
CARGO_TERM_COLOR: always | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install rust | |
uses: actions-rust-lang/setup-rust-toolchain@v1 | |
- name: Install cargo-llvm-cov | |
uses: taiki-e/install-action@cargo-llvm-cov | |
- name: Generate code coverage | |
run: cargo llvm-cov --all-features --workspace --codecov --output-path codecov.json -- --skip read_table_version_hdfs | |
- name: Upload coverage to Codecov | |
uses: codecov/codecov-action@v5 | |
with: | |
files: codecov.json | |
fail_ci_if_error: true | |
env: | |
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} |