Skip to content

Optimize buffer ops #744

Optimize buffer ops

Optimize buffer ops #744

Workflow file for this run

name: Linux musl
# Concurrency mirrors the main "Linters and Tests" workflow:
# - PRs: new commits cancel in-progress (outdated) runs.
# - Push to develop: runs queue sequentially, never cancelled.
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.ref != 'refs/heads/develop' }}
on:
push:
branches: [develop]
pull_request: { }
workflow_dispatch: { }
permissions:
actions: read
contents: read
env:
CARGO_TERM_COLOR: always
RUST_BACKTRACE: 1
jobs:
rust-test-musl:
name: "Rust tests (linux-musl)"
timeout-minutes: 90
runs-on: >-
${{ github.repository == 'vortex-data/vortex'
&& format('runs-on={0}/runner=amd64-large/image=ubuntu24-full-x64-pre-v2/tag=rust-build-musl', github.run_id)
|| 'ubuntu-latest' }}
container:
image: ghcr.io/rust-lang/rust:1-alpine3.21
credentials:
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
env:
# -crt-static makes build-script binaries dynamically linked so bindgen
# (custom-labels, a transitive dep of vortex-io) can dlopen libclang; a
# fully static musl build script panics with "Dynamic loading not supported".
RUSTFLAGS: "-A warnings -C target-feature=-crt-static"
steps:
# Exclusions:
# - CUDA crates have no CUDA toolkit / musl target (as in the wasm build).
# - vortex-duckdb and its dependents can't build standalone for musl: its
# build.rs has no prebuilt DuckDB for musl. The DuckDB extension builds it
# against a musl DuckDB it compiles itself, so it is exercised there instead.
- name: Install Alpine packages
# tzdata provides /usr/share/zoneinfo; without it Alpine has no timezone
# database and datetime tests fail with "failed to find time zone `UTC`".
run: |
apk add --no-cache build-base clang clang-dev llvm-dev cmake make perl \
pkgconf protobuf protobuf-dev openssl-dev zstd-dev git curl ca-certificates \
python3 python3-dev tar tzdata bash
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
- name: Install nextest
shell: bash
# Prebuilt static musl nextest binary; building it from source would
# roughly double the cold-cache compile time of this job.
run: |
curl -LsSf https://get.nexte.st/latest/linux-musl | tar zxf - -C ${CARGO_HOME:-~/.cargo}/bin
- name: Run workspace tests for x86_64-unknown-linux-musl
shell: bash
run: |
cargo nextest run --cargo-profile ci --locked --workspace --no-fail-fast \
--exclude vortex-cuda --exclude vortex-cub --exclude vortex-nvcomp \
--exclude gpu-scan-cli --exclude vortex-test-e2e-cuda \
--exclude vortex-duckdb --exclude duckdb-bench --exclude vortex-sqllogictest \
--exclude vortex-bench --exclude lance-bench --exclude datafusion-bench --exclude vortex-datafusion \
--exclude compress-bench --exclude random-access-bench --exclude vortex-bench-server
- name: Alert incident.io
if: failure() && github.event_name == 'push' && github.ref == 'refs/heads/develop'
uses: ./.github/actions/alert-incident-io
with:
api-key: ${{ secrets.INCIDENT_IO_ALERT_TOKEN }}
alert-title: "Rust tests (linux-musl) failed on develop"
deduplication-key: ci-rust-test-linux-musl-failure