Wheel Staging Area Internals#
Understanding the staging area helps when debugging import failures or building custom wheels.
When CMake configures the project with ENABLE_PYTHON_FDB_INTERFACE=ON, it
creates build/pyfdb-python-package-staging/ with the following layout:
pyfdb-python-package-staging/
├── pyfdb/ ← symlink → fdb/src/pyfdb/ (live source)
│ ├── bindings/
│ │ ├── __init__.py ← from src/pyfdb/bindings/ (via symlink)
│ │ └── _pyfdb_bindings.cpython-<tag>.so ← compiled extension
│ └── ...
├── setup.py ← generated from cmake/pyfdb_setup.py.in
├── setup.cfg ← generated from cmake/pyfdb_setup.cfg.in
├── README.md ← copied at build time
└── LICENSE ← copied at build time
Key points:
The
pyfdb/symlink means edits to the Python source in the repository take effect immediately after an editable install — no rebuild or reinstall needed.pyfdb/bindings/is a proper subpackage ofpyfdb(it has an__init__.py), importable aspyfdb.bindings. It is not re-exported bypyfdb/__init__.py— it is an internal extension for developers who need the raw C++ types directly.The
.sois regenerated by Ninja wheneverbindings.ccor its dependencies change. Re-runningninjais sufficient — nopip installis required after a C++ rebuild.