Skip to content

Bump PyMEOS-CFFI to MEOS 1.4#19

Open
estebanzimanyi wants to merge 2 commits into
refactor/codegen-meos-idlfrom
bump/meos-1.4
Open

Bump PyMEOS-CFFI to MEOS 1.4#19
estebanzimanyi wants to merge 2 commits into
refactor/codegen-meos-idlfrom
bump/meos-1.4

Conversation

@estebanzimanyi

Copy link
Copy Markdown
Member

Vendors the MEOS 1.4 IDL (3544 functions, +1149 over 1.3) and regenerates pymeos_cffi/functions.py plus builder/meos.h on top of #18. Adds meos_cbuffer.h, meos_pose.h, and meos_rgeo.h to the builder header lists. Restores the GEOSContextHandle_t entry in undefined_types so the cdef strips geos_get_context, whose handle type is forward-declared opaque. Version bumped to 1.4.0a1.

Regenerate the cdef and functions against the MEOS 1.4 surface.

Also exclude macro-aliased internal accessors (SET_VAL_N /
SET_OFFSETS_PTR / SPANSET_SP_N / TSEQUENCE(SET)_OFFSETS_PTR /
TSEQUENCE(SET)_INST_N|SEQ_N) from the cdef: meos_internal.h declares them
both as extern functions and as function-like macros, so although the nm
filter keeps the symbols, the macro definition wins in the cffi
set_source unit and the wrapper expands SET_VAL_N -> PointerGetDatum (not
part of the MEOS ABI), failing to import. They are internal memory-layout
accessors, not public binding surface.
estebanzimanyi added a commit to estebanzimanyi/PyMEOS-CFFI that referenced this pull request Jun 25, 2026
master predates the meos-idl.json-driven codegen, which lives in the open stack.
Add tools/pin/compose-order.txt (the canonical fold manifest; MobilityDB#19 is the verified
frontier containing MobilityDB#18) and GENERATION.md (the per-binding generator policy:
PyMEOS-CFFI owns its generator in-repo at builder/build_pymeos_functions.py
generating pymeos_cffi/functions.py from meos-idl.json; the low-level CFFI layer
under the PyMEOS OO layer).
Make PyMEOS-CFFI a pure consumer of the MEOS-API catalog (meos-idl.json),
removing the last place this repository parsed MEOS headers.

builder/build_header.py no longer opens any .h file: it projects the
ffibuilder.cdef header (builder/meos.h) from the catalog's structs, enums,
macros and functions. Every MEOS type is an opaque handle at the CFFI
boundary; ffibuilder.set_source #includes the real headers so CFFI resolves
each layout against the installed library. build_pymeos.py derives its
#include list from the catalog's own file field and compiles with every
optional family enabled, matching the all-families libmeos.

The catalog and the generated header are derived in CI and gitignored, never
committed: the PR build workflow provisions meos-idl.json + an all-families
libmeos once via the shared MobilityDB/MEOS-API provision-meos action (the
same derivation the JVM bindings consume) and reuses that OS-independent
catalog for the macOS builds.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant