Skip to content

Extract volrover3 application to the volrover repository - #102

Merged
transfix merged 2 commits into
masterfrom
refactor/extract-volrover3-to-volrover
Jul 16, 2026
Merged

Extract volrover3 application to the volrover repository#102
transfix merged 2 commits into
masterfrom
refactor/extract-volrover3-to-volrover

Conversation

@transfix

@transfix transfix commented Jul 15, 2026

Copy link
Copy Markdown
Owner

What moved

Executes goal G4 (near-term-goals-2026-07-15): libcvc becomes a lean SDK (library + cvc CLI); the VolumeRover3 application now lives in transfix/volrover.

Removed from this repo:

  • src/volrover3/ (45 files: sources, tests, CMakeLists, README) and inc/volrover3/ (28 headers)
  • share/ (volrover3.desktop.in + volrover_logo icons), CMake/Info.plist.in (only used by the volrover3 macOS bundle), build_volrover3.sh
  • docs/GRAPHICS_SYSTEM.md, docs/GRAPHICS_DATA_DRIVEN_UPDATES.md, docs/APPSTATE_CALLBACKS.md — these document volrover3 app classes (SceneGraph/GraphicsNode/AppState) and move with the app. Docs describing libcvc core (APP_API, STATE_API, CLI_GUIDE, TESTING, etc.) stay.
  • CVC_BUILD_VOLROVER3 option + Qt/VTK detection in src/CMakeLists.txt
  • volrover3 CPack component, DEB/NSIS app packaging, and icon install rules in the top-level CMakeLists.txt. CMAKE_INSTALL_SYSTEM_RUNTIME_COMPONENT now targets libcvc so MSVC CRT/OpenMP runtimes still ship with the Windows SDK zip. Windows default CPACK_GENERATOR drops NSIS (that was the app installer).
  • CI: volrover3 matrix entries and all volrover3-gated steps in ci.yml and release.yml (AppImage/deb/dmg/NSIS packaging, VTK-from-source builds and caches, aqtinstall Qt6, DLL verification). .github/scripts/verify-windows-deps.ps1 moved to the volrover repo. nightly.yml comment updated.

One SDK fix that fell out of verification (second commit): cvc/utility/utility.h unconditionally includes <xmlrpc/XmlRpc.h>, but inc/xmlrpc/ headers were only installed when CVC_USING_XMLRPC=ON — external find_package(cvc) consumers that include cvc/utility/algorithm.h (as volrover3 does) could not compile against an XMLRPC-off SDK. The vendored XmlRpc++ headers now always install with the libcvc component.

History decision (flagged for review)

The app was imported into transfix/volrover as a plain copy with a provenance note (source commit 03b4f961f834c46fcd19b9b4b633dc4c1c8bdcfc recorded in the import commit message) — no git-filter-repo history rewrite. Full file history remains reachable here. Object if you want the history carried over instead.

Verification

  • cmake configure passes with volrover3 removed (Release, Ninja, local cvcpkg deps prefix for Boost 1.86/CGAL/ImageMagick/FFTW/GSL/libiimod, CUDA off)
  • libcvc.so (152 targets) and the cvc CLI build clean from the branch
  • The moved app was verified in the volrover PR: configure + full build of volrover3 against the packaged libcvc SDK (dist-cvcpkg 3.2.4+cvc.1 tarball + the xmlrpc-headers fix), and all 14 volrover3 unit tests pass (QT_QPA_PLATFORM=offscreen)
  • Not verified here: macOS/Windows CI paths of the trimmed workflows (YAML validated; the removed steps were all gated on matrix.kind == 'volrover3')

Notes for review

  • cvc-requirements.yaml still lists qt6 and vtk; they were only needed by volrover3 and can likely be dropped in a follow-up (left untouched to avoid colliding with the in-flight cvcpkg recipe branch).
  • This branch will conflict with feat/libcvc-cvcpkg-recipe-and-release-publish in .github/workflows/ (that branch also rewrites ci.yml/release.yml); whichever lands second needs a rebase.

Counterpart PR in volrover: transfix/volrover#13

transfix added 2 commits July 15, 2026 19:48
libcvc is now a lean SDK: the library, headers, CMake package config,
and the cvc CLI. The VolumeRover3 desktop application moves to
transfix/volrover (volrover3/ subdirectory), where it consumes libcvc
as an external SDK via find_package(cvc CONFIG) and links cvc::cvc.

Removed here:
- src/volrover3/ (app sources, tests, CMakeLists, README)
- inc/volrover3/ (app headers)
- share/ (volrover3.desktop.in + volrover_logo icons)
- CMake/Info.plist.in (only used by the volrover3 macOS bundle)
- build_volrover3.sh and test_threading_behavior.cpp (an unwired root-level
  scratch program exercising volrover3 SceneGraph threading; it moves
  to the volrover repository)
- docs/GRAPHICS_SYSTEM.md, docs/GRAPHICS_DATA_DRIVEN_UPDATES.md,
  docs/APPSTATE_CALLBACKS.md (describe volrover3 app classes:
  SceneGraph/GraphicsNode/AppState; they move with the app)
- CVC_BUILD_VOLROVER3 option and Qt/VTK detection in src/CMakeLists.txt
- volrover3 CPack component, DEB/NSIS app packaging, and app icon
  install rules in the top-level CMakeLists.txt
  (CMAKE_INSTALL_SYSTEM_RUNTIME_COMPONENT now targets libcvc so the
  MSVC CRT/OpenMP runtimes still ship with the SDK on Windows)
- volrover3 matrix entries and packaging steps (AppImage, .deb, dmg,
  NSIS, windeployqt DLL verification) in ci.yml and release.yml;
  .github/scripts/verify-windows-deps.ps1 moves to the volrover
  repository with the app
- qt6 and vtk entries (volrover3-only) in cvc-requirements.yaml and in
  the cvcpkg libcvc recipe's runtime depends; the recipe build scripts
  no longer pass -DCVC_BUILD_VOLROVER3=OFF

Docs that describe libcvc core (APP_API.md, STATE_API.md, CLI_GUIDE.md,
etc.) stay.

Extracted from commit 03b4f96; the
files are imported verbatim (plus CMake adaptation) into
transfix/volrover rather than via git history rewrite.

Verified: cmake configure passes and libcvc.so + cvc CLI build clean
(Release, Ninja, CGAL/ImageMagick/FFTW/GSL/libiimod via local cvcpkg
prefix) with volrover3 removed.
cvc/utility/utility.h unconditionally does #include <xmlrpc/XmlRpc.h>,
but the inc/xmlrpc/ headers were only installed when CVC_USING_XMLRPC=ON
(by the xmlrpc subproject). Any external find_package(cvc) consumer that
includes cvc/utility/utility.h (directly or via cvc/utility/algorithm.h,
as volrover3 does) therefore failed to compile against an SDK built with
XMLRPC off.

Install inc/xmlrpc with the libcvc component unconditionally; when
CVC_USING_XMLRPC=ON the xmlrpc subproject's identical rule is idempotent.
Also list include/xmlrpc/ in the cvcpkg recipe's package.files so the
pack-from-prefix SDK artifacts pick the headers up.

Found while building volrover3 in transfix/volrover against the
packaged libcvc SDK.
@transfix

Copy link
Copy Markdown
Owner Author

Rebased onto master at 30e079d (post-#101 merge) and force-pushed; the branch is now the same two commits replayed on top of the cvcpkg recipe / release-publish machinery.

What was re-resolved (conflicts were confined to .github/workflows/ci.yml and release.yml):

  • Took master's Add libcvc cvcpkg recipe and enable release-time cvcpkg publish #101 versions of both workflows as the base — the cvcpkg-based dependency flow (fetch-libcvc-deps via cvcpkg-install, cvc-requirements.yaml) and publish-cvcpkg.yml are fully preserved — then re-applied the volrover3 strip to them: removed the volrover3 matrix entries, the volrover3 dependency-install steps, -DCVC_BUILD_VOLROVER3 configure flags, AppImage/.deb/dmg/NSIS packaging, the Windows DLL-verification steps, volrover3 artifact uploads, and the volrover3 release-asset globs in the release job.
  • New in this rebase (these files came from Add libcvc cvcpkg recipe and enable release-time cvcpkg publish #101 and did not exist on the old base): dropped the volrover3-only qt6 and vtk entries from cvc-requirements.yaml and from cvcpkg/recipes/libcvc/recipe.yaml's runtime depends, and removed -DCVC_BUILD_VOLROVER3=OFF from the recipe's build.sh / build.ps1. The recipe now packages the SDK + cvc CLI only; the xmlrpc-headers commit additionally lists include/xmlrpc/ in the recipe's package.files so packaged SDK artifacts ship the headers the installed cvc/utility/utility.h needs.
  • Also caught in this pass: removed test_threading_behavior.cpp (an unwired root-level scratch program with its own main() that includes <volrover3/...> headers and cannot compile here after the extraction). It is preserved in Carry over test_threading_behavior.cpp scratch program from libcvc volrover#14 under volrover3/tests/manual/.

Verification on the rebased branch (Linux, Release/Ninja, CUDA off, local cvcpkg deps prefix): fresh configure passes; full build of libcvc.so and the cvc CLI succeeds (154/154 targets); cmake --install --component libcvc confirmed to stage include/cvc and include/xmlrpc. All six workflow/recipe YAMLs parse cleanly. macOS/Windows workflow paths not executed locally — PR CI will exercise the trimmed matrices.

Not merging per instructions — ready for review.

@transfix

Copy link
Copy Markdown
Owner Author

CI status note: the rebased branch's run fails every package job at the "Fetch libcvc-deps" step. This is pre-existing breakage, not from this PR — master's own CI run on the #101 merge commit (run 29461865764 on 30e079d) fails at the exact same step in all package jobs. The failure is inside the upstream transfix/libcvc-deps cvcpkg-install action: pip metadata generation for the cvcpkg tool aborts with "Readme path .../_libcvc-deps/README.md does not exist", so it needs a fix in the libcvc-deps repo (the action's checkout is missing the README.md its pyproject references).

Signal that IS attributable to this PR: clang-format passes, and the volrover3 jobs are gone from the matrices as intended (this PR's run has only libcvc-* package jobs).

@transfix
transfix merged commit 39ba051 into master Jul 16, 2026
1 of 8 checks passed
@transfix
transfix deleted the refactor/extract-volrover3-to-volrover branch July 16, 2026 00:57
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