Skip to content

build: release the C API and columnar-dbc crates with GoReleaser - #549

Draft
zeroshade wants to merge 2 commits into
feat/rust-cratesfrom
build/release-capi-rust
Draft

zeroshade wants to merge 2 commits into
feat/rust-cratesfrom
build/release-capi-rust

Conversation

@zeroshade

@zeroshade zeroshade commented Oct 28, 2026 •

Copy link
Copy Markdown
Member
  • .goreleaser.yaml gains a capi c-archive build that cross-compiles all 5 targets with Zig 0.17.0 (glibc 2.28 / macOS 12 floors).
  • scripts/stage_capi.py checks size and stages each archive; scripts/publish_crates.py runs cargo package (snapshot) or cargo publish (release). ids: [dbc] filters keep the archives out of the CLI packaging.
  • New rust_test job runs on the snapshot's archives on six native runners (Linux x64/arm64, macOS arm64/x64, Windows MSVC and GNU), with a 30-minute timeout.
  • Needs a CARGO_REGISTRY_TOKEN secret in the production environment (see RELEASE.md).

Stacked on #548. Supersedes #543.

libdbc-dev / libdbc-devel

  • A new capi-shared build (linux amd64/arm64, SONAME libdbc.so).
  • Two nfpm entries: deb libdbc-dev (/usr/lib/<triplet>) and rpm libdbc-devel (/usr/lib64). Each ships libdbc.a, libdbc.so, /usr/include/libdbc.h and pkgconfig/dbc.pc.
  • scripts/stage_devel.py stages the .so and .pc files.
  • nfpm takes only the c-archive build's artifacts, because both builds emit libdbc.h and GoReleaser doesn't deduplicate.
  • The packages ship in release and blobs.

New CI job devel packages (amd64 + arm64):

  • installs the snapshot .deb;
  • runs the Rust tests via pkg-config (statically linked, checked with ldd), with DBC_DYNAMIC, and with DBC_SYS_LIB_DIR;
  • installs the .rpm in a Fedora container and compiles and runs a C smoke program, statically and dynamically.

…bc.pc

Build Linux shared libraries with an unversioned libdbc.so SONAME alongside the existing C archives. Stage format-specific pkg-config metadata and package Debian multiarch and RPM lib64 development layouts without duplicate generated headers.

Exercise installed Debian libraries from Rust in static, dynamic, and custom-directory modes, and test Fedora RPMs with static and dynamic C consumers. Publish the development packages with the existing release and blob artifacts.

This branch was successfully deployed

1 active deployment
snapshot — 992be1e8 Deployed Oct 30, 2026 by zeroshade via snapshot #1100
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant