Skip to content

volrover3: include the libcvc state API from <cvc/state/...> (libcvc 3.5.0) - #48

Merged
transfix merged 1 commit into
masterfrom
fix/libcvc-3.5-state-paths
Oct 9, 2026
Merged

transfix merged 1 commit into
masterfrom
fix/libcvc-3.5-state-paths

Conversation

@transfix

@transfix transfix commented Oct 8, 2026

Copy link
Copy Markdown
Owner

What

libcvc 3.5.0 moved its state subsystem from cvc/core/ to cvc/state/ as a hard cutover (transfix/libcvc#577, #578), so <cvc/core/state*.h> and <cvc/core/state_exec/*.h> no longer exist. volrover3 consumes libcvc as an unpinned external SDK (find_package(cvc CONFIG REQUIRED)), so it can't compile against 3.5.0 without this.

This rewrites the 41 includes in 25 files (cvc/core/state → cvc/state/state). It only changes paths. volrover has no .clang-format, so the includes stay where they are.

Verification

A full local configure wasn't possible: volrover3 needs Python Development.Embed, and there are no Python dev headers on the build box. Checked against a native libcvc 3.5.0+cvc.2 prefix instead:

  • Include resolution: g++ -MM -MG over all 25 changed files. Every cvc/state/... include resolves to an installed 3.5.0 header.
  • Syntax-only compiles, with libcvc's exported compile definitions: CameraController, CameraSettingsDialog, GridOptionsDialog, InputState, Settings, StateDashboardWidget and VolumeDialog compile cleanly. The tests and TransferFunctionWidget stop only on missing local tooling (gtest, the automoc-generated .moc).

Not fixed here: a separate libcvc bug

GeometryDialog, IsosurfaceDialog, ProceduralGeometryDialog and SDFDialog still fail to compile on Linux. libcvc's cvc/core/world_units.h names a parameter si_value, and glibc's <signal.h> defines si_value as a macro (_sifields._rt.si_sigval). That header didn't move, so this is unrelated to the state paths and has to be fixed in libcvc.

volrover's CI has been red since at least 2026-09-16, before the state move, so CI won't validate this PR either.

…3.5.0)

libcvc 3.5.0 moved the state subsystem out of cvc/core/ into cvc/state/ as a
hard cutover (transfix/libcvc#577, #578): <cvc/core/state*.h> and
<cvc/core/state_exec/*.h> no longer exist, and volrover3 consumes libcvc as an
unpinned external SDK, so it cannot compile against 3.5.0 without this.

Rewrites the 41 includes in 25 files (cvc/core/state -> cvc/state/state).
Path change only; volrover has no .clang-format, so includes stay in place.
@transfix
transfix force-pushed the fix/libcvc-3.5-state-paths branch from eb9e138 to 3a5c0d8 Compare October 9, 2026 16:49
@transfix
transfix merged commit 9d2e447 into master Oct 9, 2026
5 checks passed
@transfix
transfix deleted the fix/libcvc-3.5-state-paths branch October 9, 2026 17:17
transfix added a commit to transfix/libcvc that referenced this pull request Oct 9, 2026
…d_units' si_value, macro-proof MIN/MAX (#588)

glibc's <signal.h> defines `#define si_value _sifields._rt.si_sigval`, so
any TU that includes it before <cvc/core/world_units.h> fails:

  world_units.h:147:28: error: expected ',' or '...' before '.' token

Seen building volrover3's GeometryDialog/IsosurfaceDialog/
ProceduralGeometryDialog/SDFDialog against the installed 3.5.0 prefix
(transfix/volrover#48).

- world_units::to_display/format: rename the `si_value` parameter to
  `canonical_value` (pairs with from_display's `display_value`; no si_*
  prefix, which glibc/musl reserve for siginfo_t accessor macros).
  Parameter names only, so no ABI/API change; docs updated to match.
- utility.h: an audit of every identifier in inc/ against the macros
  defined by ~50 glibc/POSIX headers found one more clash: the cvc::MIN /
  cvc::MAX templates break after <sys/param.h> (also macOS, GLib), whose
  function-like MIN(a,b)/MAX(a,b) expand the declarations. Parenthesize
  the declarator names; existing callers are unchanged.
- New system_macro_headers_test: includes <signal.h>, <sys/param.h>,
  <sys/stat.h>, <sys/types.h> (POSIX) or <windows.h> (the repo's
  WIN32_LEAN_AND_MEAN + NOMINMAX pattern) before a representative
  public header from every cvc module, so a regression fails the build.
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