Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
888382c
Upgrade df version
parmesant Oct 30, 2025
328960d
update datafusion version in cargo toml
nikhilsinhaparseable Nov 25, 2025
797f304
step to install gcc11
nikhilsinhaparseable Nov 28, 2025
c036019
fix indentation
nikhilsinhaparseable Nov 28, 2025
d214f77
fix indentation
nikhilsinhaparseable Nov 28, 2025
de4ebfa
fix build actions:
nikhilsinhaparseable Nov 28, 2025
0333ccf
fix for aarch64 kafka build
nikhilsinhaparseable Nov 28, 2025
11a7f7f
update for kafka aarch64
nikhilsinhaparseable Dec 3, 2025
6e431ae
update Cargo.toml, remove creating cargo.toml in build
nikhilsinhaparseable Dec 3, 2025
e6d1975
update arrow version
nikhilsinhaparseable Dec 3, 2025
119e4b8
Fix aarch64 Linux Kafka build with QEMU and nightly Rust
nikhilsinhaparseable Dec 3, 2025
7edc5be
Fix aarch64 Linux builds with QEMU, nightly Rust, and cross configura…
nikhilsinhaparseable Dec 4, 2025
0a25740
fix zlib
nikhilsinhaparseable Dec 8, 2025
b6d8da9
explicitly pass Zlib locations into the aarch64 cross build
nikhilsinhaparseable Dec 8, 2025
deb0707
fix cross toml
nikhilsinhaparseable Dec 8, 2025
a32a587
update Cross.toml and debug in build.yaml
nikhilsinhaparseable Dec 8, 2025
bb2555a
fix cross toml
nikhilsinhaparseable Dec 8, 2025
5c51f6d
fix file
nikhilsinhaparseable Dec 8, 2025
311c130
fix cross toml
nikhilsinhaparseable Dec 8, 2025
e3ee37f
set LIBZ_SYS_STATIC in cross.toml
nikhilsinhaparseable Dec 9, 2025
0e46e77
symlinks
nikhilsinhaparseable Dec 9, 2025
437c3b1
fix for sasl2-sys
nikhilsinhaparseable Dec 9, 2025
7f56cae
fix for sasl2-sys
nikhilsinhaparseable Dec 9, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
147 changes: 106 additions & 41 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
name: Ensure parseable builds on all release targets

on:
pull_request:
paths-ignore:
- docs/**
- helm/**
- assets/**
- "**.md"

jobs:
# Default build without Kafka
build-default:
Expand All @@ -15,25 +17,45 @@ jobs:
fail-fast: false
matrix:
include:
# Linux builds
# Linux builds - x86_64 native, aarch64 cross-compile
- os: ubuntu-latest
target: x86_64-unknown-linux-gnu
use_cross: false
- os: ubuntu-latest
target: aarch64-unknown-linux-gnu
# macOS builds
use_cross: true

# macOS builds - both native on macos-latest (M1)
- os: macos-latest
target: x86_64-apple-darwin
use_cross: false
- os: macos-latest
target: aarch64-apple-darwin
use_cross: false

# Windows build
- os: windows-latest
target: x86_64-pc-windows-msvc
use_cross: false

steps:
- uses: actions/checkout@v4

- name: Setup Rust toolchain
uses: dtolnay/rust-toolchain@stable
uses: dtolnay/rust-toolchain@nightly
with:
targets: ${{ matrix.target }}

- name: Install GCC 11 on Linux
if: runner.os == 'Linux'
run: |
sudo apt-get update
sudo apt-get install -y gcc-11 g++-11

- name: Install cross
if: matrix.use_cross
run: cargo install cross --git https://github.com/cross-rs/cross

- name: Cache dependencies
uses: actions/cache@v4
with:
Expand All @@ -42,12 +64,20 @@ jobs:
~/.cargo/git
target
key: ${{ runner.os }}-cargo-${{ matrix.target }}-default-${{ hashFiles('**/Cargo.lock') }}
- name: Build
uses: actions-rs/cargo@v1
with:
use-cross: ${{ runner.os == 'Linux' }}
command: build
args: --target ${{ matrix.target }} --release

- name: Build with cross
if: matrix.use_cross
env:
CROSS_NO_WARNINGS: "0"
run: cross build --target ${{ matrix.target }} --release

- name: Build native
if: ${{ !matrix.use_cross }}
env:
CC: ${{ runner.os == 'Linux' && 'gcc-11' || '' }}
CXX: ${{ runner.os == 'Linux' && 'g++-11' || '' }}
run: cargo build --target ${{ matrix.target }} --release

# Kafka build for supported platforms
build-kafka:
name: Build Kafka ${{matrix.target}}
Expand All @@ -56,19 +86,40 @@ jobs:
fail-fast: false
matrix:
include:
# Linux builds
# Linux x86_64 - native build
- os: ubuntu-latest
target: x86_64-unknown-linux-gnu
use_cross: false

# Linux aarch64 - cross-compile
- os: ubuntu-latest
target: aarch64-unknown-linux-gnu
use_cross: true

# macOS aarch64 - native on M1
- os: macos-latest
target: aarch64-apple-darwin
use_cross: false

steps:
- uses: actions/checkout@v4
# Linux-specific dependencies
- name: Install Linux dependencies
if: runner.os == 'Linux'

- name: Set up Docker Buildx
if: matrix.use_cross
uses: docker/setup-buildx-action@v3

- name: Set up QEMU for cross-arch builds
if: matrix.use_cross
uses: docker/setup-qemu-action@v3

# Linux-specific dependencies for native x86_64 build
- name: Install Linux dependencies (x86_64)
if: runner.os == 'Linux' && matrix.target == 'x86_64-unknown-linux-gnu'
run: |
sudo apt-get update
sudo apt-get install -y \
gcc-11 \
g++-11 \
build-essential \
pkg-config \
cmake \
Expand All @@ -78,19 +129,8 @@ jobs:
liblz4-dev \
libssl-dev \
libsasl2-dev \
python3 \
gcc-aarch64-linux-gnu \
g++-aarch64-linux-gnu
# Install cross-compilation specific packages
if [ "${{ matrix.target }}" = "aarch64-unknown-linux-gnu" ]; then
sudo apt-get install -y \
gcc-aarch64-linux-gnu \
g++-aarch64-linux-gnu \
libc6-dev-arm64-cross \
libsasl2-dev:arm64 \
libssl-dev:arm64 \
pkg-config-aarch64-linux-gnu
fi
python3

# macOS-specific dependencies
- name: Install macOS dependencies
if: runner.os == 'macOS'
Expand All @@ -103,10 +143,16 @@ jobs:
openssl@3.0 \
cyrus-sasl \
python3

- name: Setup Rust toolchain
uses: dtolnay/rust-toolchain@stable
uses: dtolnay/rust-toolchain@nightly
with:
targets: ${{ matrix.target }}

- name: Install cross for aarch64
if: matrix.use_cross
run: cargo install cross --git https://github.com/cross-rs/cross

- name: Cache dependencies
uses: actions/cache@v4
with:
Expand All @@ -115,8 +161,9 @@ jobs:
~/.cargo/git
target
key: ${{ runner.os }}-cargo-${{ matrix.target }}-kafka-${{ hashFiles('**/Cargo.lock') }}

- name: Find and fix librdkafka CMakeLists.txt for Linux
if: runner.os == 'Linux'
if: runner.os == 'Linux' && !matrix.use_cross
run: |
cargo fetch
# Find the rdkafka-sys package directory
Expand All @@ -136,6 +183,7 @@ jobs:
echo "Could not find librdkafka CMakeLists.txt file!"
exit 1
fi

- name: Find and fix librdkafka CMakeLists.txt for macOS
if: runner.os == 'macOS'
run: |
Expand All @@ -157,18 +205,35 @@ jobs:
echo "Could not find librdkafka CMakeLists.txt file!"
exit 1
fi
- name: Build with Kafka
uses: actions-rs/cargo@v1
with:
use-cross: ${{ runner.os == 'Linux' }}
command: build
args: --target ${{ matrix.target }} --features kafka --release

- name: Build with Kafka (cross) - FIXED
if: matrix.use_cross
env:
LIBRDKAFKA_SSL_VENDORED: 1
LIBRDKAFKA_SSL_VENDORED: "1"
PKG_CONFIG_ALLOW_CROSS: "1"
PKG_CONFIG_PATH: /usr/lib/aarch64-linux-gnu/pkgconfig
SASL2_DIR: /usr/lib/aarch64-linux-gnu
OPENSSL_DIR: /usr/lib/aarch64-linux-gnu
OPENSSL_ROOT_DIR: /usr/lib/aarch64-linux-gnu
OPENSSL_STATIC: "1"
SASL2_STATIC: "0"
CROSS_NO_WARNINGS: "0"
RUST_BACKTRACE: "1"

# Standard Debian multiarch paths for aarch64
ZLIB_INCLUDE_DIR: "/usr/include"
ZLIB_LIBRARY: "/usr/lib/aarch64-linux-gnu/libz.so"

OPENSSL_ROOT_DIR: "/usr"
OPENSSL_INCLUDE_DIR: "/usr/include"
OPENSSL_CRYPTO_LIBRARY: "/usr/lib/aarch64-linux-gnu/libcrypto.so"
OPENSSL_SSL_LIBRARY: "/usr/lib/aarch64-linux-gnu/libssl.so"

PKG_CONFIG_PATH: "/usr/lib/aarch64-linux-gnu/pkgconfig:/usr/share/pkgconfig"
run: |
echo "=== HOST ENV DEBUG ==="
env | grep -E 'ZLIB_|OPENSSL_|PKG_CONFIG|LIBRDKAFKA'
echo "=== NOW RUNNING CROSS BUILD (pre-build will show zlib paths) ==="
cross build --target ${{ matrix.target }} --features kafka --release --verbose

- name: Build with Kafka (native)
if: ${{ !matrix.use_cross }}
env:
CC: ${{ runner.os == 'Linux' && 'gcc-11' || '' }}
CXX: ${{ runner.os == 'Linux' && 'g++-11' || '' }}
LIBRDKAFKA_SSL_VENDORED: "1"
run: cargo build --target ${{ matrix.target }} --features kafka --release
Loading
Loading