Skip to content

build: follow fastfields-lib's consolidated header layout - #32

Merged
balbasty merged 1 commit into
mainfrom
fix/consolidated-layout
Aug 19, 2026
Merged

build: follow fastfields-lib's consolidated header layout#32
balbasty merged 1 commit into
mainfrom
fix/consolidated-layout

Conversation

@balbasty

Copy link
Copy Markdown
Contributor

The six fastfields C++/CUDA repos were consolidated into fastfields-lib and its main was rewritten. The hub's public headers, which used to sit at the root of that tree, now live under include/fastfields/api/.

Time-sensitive:fastfields-lib's main no longer contains the commit the old pin named, so this repo does not build against a fresh recursive checkout until this lands.

The three changes, which only work together

filechange
setup.pyinclude_dirs uses FASTFIELDS_INCLUDE (<tree>/include) instead of the tree root
src/ext.cppthe 8 hub includes become "fastfields/api/<name>.h"
_fastfields_libpin moves to the new main

Verified against a real build, not inspection

  • From-scratchpip install --no-build-isolation . against the new pin (build dir wiped, package uninstalled first) — succeeded.
  • Test suite: 55 passed, matching the pre-migration count exactly.
  • The two library paths setup.py hardcodes are unchanged by the consolidation and were re-confirmed against that build:
    • build/libfastfields.so — 56 KB
    • build/lib/libfastfields-cpu.so — 166 MB

Two things worth knowing

The consolidated tree has no nested submodules. The old lib → cpu-lib → cpu-impl → kernels chain is gone, so a recursive checkout is now a single clone.

A build regression was found and fixed upstream while validating this.setup.py shells out to make -C _fastfields_lib CXX=... with no explicit target. In the consolidated tree every Makefile includes make/common.mkbefore declaring its own targets, so make took common.mk's output-directory rule as .DEFAULT_GOAL — a bare make created build/ and exited 0 having compiled nothing, and this build then failed with the misleading fastfields-lib build did not produce the expected .so files. Fixed centrally in fastfields-lib#81 (.DEFAULT_GOAL := all), which the pin here includes. No change was needed in this repo.

On the old pin

The previous pin was aaf4ce0 (not the pre-consolidation main tip). It remains reachable via the pre-consolidation-main branch in fastfields-lib, so nothing dangled during the migration.


Generated by Claude Code

The six fastfields C++/CUDA repos were consolidated into fastfields-lib and its
`main` was rewritten. The hub's public headers, which used to sit at the root of
that tree, now live under `include/fastfields/api/`.
Three changes, which only work together:
* setup.py adds `include/` to the extension's include_dirs instead of the
tree root (FASTFIELDS_INCLUDE);
* src/ext.cpp reaches the eight hub headers as "fastfields/api/<name>.h";
* the _fastfields_lib submodule pin moves to the new main.
The two library paths setup.py hardcodes are unchanged by the consolidation and
were re-verified against a real build: `make` still produces
build/libfastfields.so and build/lib/libfastfields-cpu.so at exactly those
paths.
Verified end to end, not by inspection: a from-scratch
`pip install --no-build-isolation .` against the new pin, then the test suite --
55 passed, matching the pre-migration count.
Note the consolidated tree also has no nested submodules any more (the old
lib -> cpu-lib -> cpu-impl -> kernels chain is gone), so a recursive checkout
is now a single clone.
Landing this promptly matters: fastfields-lib's `main` no longer contains the
commit the old pin named. That commit is still reachable via the
`pre-consolidation-main` branch, so nothing dangles in the meantime.
@balbasty
balbasty merged commit 4c1aafd into mainAug 19, 2026
7 checks passed
Sign up for freeto 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.

2 participants

@balbasty@claude