Extract volrover3 application to the volrover repository - #102
Conversation
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.
fbd92df to
78a5c39
Compare
|
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):
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. |
|
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). |
What moved
Executes goal G4 (near-term-goals-2026-07-15): libcvc becomes a lean SDK (library +
cvcCLI); the VolumeRover3 application now lives in transfix/volrover.Removed from this repo:
src/volrover3/(45 files: sources, tests, CMakeLists, README) andinc/volrover3/(28 headers)share/(volrover3.desktop.in + volrover_logo icons),CMake/Info.plist.in(only used by the volrover3 macOS bundle),build_volrover3.shdocs/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_VOLROVER3option + Qt/VTK detection insrc/CMakeLists.txtCMakeLists.txt.CMAKE_INSTALL_SYSTEM_RUNTIME_COMPONENTnow targetslibcvcso MSVC CRT/OpenMP runtimes still ship with the Windows SDK zip. Windows default CPACK_GENERATOR drops NSIS (that was the app installer).ci.ymlandrelease.yml(AppImage/deb/dmg/NSIS packaging, VTK-from-source builds and caches, aqtinstall Qt6, DLL verification)..github/scripts/verify-windows-deps.ps1moved to the volrover repo.nightly.ymlcomment updated.One SDK fix that fell out of verification (second commit):
cvc/utility/utility.hunconditionally includes<xmlrpc/XmlRpc.h>, butinc/xmlrpc/headers were only installed whenCVC_USING_XMLRPC=ON— externalfind_package(cvc)consumers that includecvc/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
03b4f961f834c46fcd19b9b4b633dc4c1c8bdcfcrecorded 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
cmakeconfigure 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 thecvcCLI build clean from the branchvolrover3against the packaged libcvc SDK (dist-cvcpkg3.2.4+cvc.1 tarball + the xmlrpc-headers fix), and all 14 volrover3 unit tests pass (QT_QPA_PLATFORM=offscreen)matrix.kind == 'volrover3')Notes for review
cvc-requirements.yamlstill listsqt6andvtk; 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).feat/libcvc-cvcpkg-recipe-and-release-publishin.github/workflows/(that branch also rewrites ci.yml/release.yml); whichever lands second needs a rebase.Counterpart PR in volrover: transfix/volrover#13