Vendored flatbuffers improvements new post#93
Merged
oberstet merged 5 commits intocrossbario:masterfrom Dec 12, 2025
Merged
Conversation
- Add test-smoke just recipe with 6 verification tests:
* Import zlmdb and check version
* Import zlmdb.lmdb (CFFI extension) and check version
* Basic LMDB operations (open/put/get/close)
* Import zlmdb.flatbuffers and check version
* Verify flatc binary is available and executable
* Verify reflection files (reflection.fbs, reflection.bfbs) are present
- Add test-wheel-install just recipe:
* Creates ephemeral venv, installs wheel, runs smoke tests, cleans up
- Add test-sdist-install just recipe:
* Creates ephemeral venv, installs sdist (with CFFI compilation),
runs smoke tests, cleans up
- Update wheels.yml (source distribution):
* Add "Verify source distribution installs and works" step
* Add "Generate build metadata" step for sdist
- Update wheels-docker.yml (manylinux wheels):
* Add "Verify manylinux wheels install and work" step
This ensures artifacts are verified to actually work before being
uploaded and published, catching issues like missing CFFI extensions
or broken flatc binaries early in CI.
Note: This work was completed with AI assistance (Claude Code).
- Create scripts/smoke_test.py: Standalone Python script for smoke tests (avoids justfile parsing issues with inline Python code) - Update test-wheel-install: Extract Python version from wheel filename to create matching ephemeral venv (fixes cp312 wheel + cp311 venv mismatch) - Update test-sdist-install: Add --no-cache-dir to force fresh builds, use --no-build-isolation for cmake access - Make flatc/reflection tests optional in smoke tests: * Returns skip (not fail) when flatc binary not found * Expected for sdist installs without grpc submodule * Core LMDB functionality tests always required The flatc binary cannot be built from sdist because the flatbuffers cmake build requires the grpc submodule which isn't included in the sdist tarball. This is by design - flatc is an optional feature. Wheel builds (via CI) include flatc since they use git checkout with --recursive which includes the grpc submodule. Note: This work was completed with AI assistance (Claude Code).
- Remove /deps/flatbuffers/grpc from sdist exclude list (pyproject.toml) grpc/ contains required source files (schema_interface.h) for building flatc - Add git submodule update --init --recursive to build-sourcedist recipe Ensures nested submodule files are visible to git ls-files for hatchling - Make flatc and reflection tests REQUIRED in smoke_test.py sdist installs MUST provide identical functionality to wheel installs - Add --no-binary zlmdb to test-sdist-install recipe Forces pip to build from source instead of using cached wheels - Update wheels.yml with deliberate 5-phase step ordering: 1. SETUP - Install toolchain (just, uv) 2. BUILD - Build wheels/sdist per platform 3. VALIDATION - Per-OS validation with FS sync points 4. METADATA - Generate build metadata (after all validations) 5. UPLOAD - List and upload artifacts - Add Windows FS sync points (post-build, post-checksum, post-metadata) - Add Linux FS sync points (post-build, post-checksum, post-metadata) - Update README.md with comprehensive workflow step outline Note: This work was completed with AI assistance (Claude Code).
Update check-release-fileset targets from manylinux_2_34 to manylinux_2_28 for Linux x86_64 wheels. The wheels-docker.yml workflow builds wheels with manylinux_2_28 tag, not manylinux_2_34. Affected targets (both development and production release sections): - cpy311-linux-x86_64-manylinux_2_28 (was _2_34) - cpy312-linux-x86_64-manylinux_2_28 (was _2_34) - cpy313-linux-x86_64-manylinux_2_28 (was _2_34) - cpy314-linux-x86_64-manylinux_2_28 (was _2_34) - pypy311-linux-x86_64-manylinux_2_28 (was _2_34) Note: This work was completed with AI assistance (Claude Code).
- Add explicit list of wheels produced by wheels-docker.yml artifact - Fix PyPy ARM64 manylinux tag from 2_36 to 2_34 (matches actual output) - Update artifact name for PyPy ARM64 to manylinux_2_34_aarch64 - Clarify wheels.yml artifact contents (cpy311-314, pypy311) Note: This work was completed with AI assistance (Claude Code).
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
"post PR" follow up to #92, relates to #90
this adds
.github/workflows/README.mdThe key fixes were:
/deps/flatbuffers/grpcwas explicitly excluded inpyproject.toml- removing that line fixed the sdistpackaging
git submodule update --init --recursive before sdist build--no-binary zlmdbensures pip actually builds from source (no wheel cache cheating)eg see here tested locally: