feat: package as Conan recipe with plotjuggler_core:: CMake components#89
Open
facontidavide wants to merge 4 commits into
Open
feat: package as Conan recipe with plotjuggler_core:: CMake components#89facontidavide wants to merge 4 commits into
facontidavide wants to merge 4 commits into
Conversation
Renames the installable CMake package from PlotJugglerSDK to plotjuggler_core,
restructures install targets into four audience-aligned components, and adds a
Conan 2 recipe so downstream projects (e.g. pj-official-plugins) can resolve
plotjuggler_core via `find_package` + `requires` instead of CPM source pulls.
Components:
base - vocabulary types (pj_base, always available)
datastore - columnar engine (option: with_datastore)
plugin_sdk - umbrella for plugin authors (pj_base + pj_dialog_sdk + parser
SDK); ships PjPluginManifest.cmake via cmake_build_modules
plugin_host - umbrella for host loaders (option: with_host)
Usage:
find_package(plotjuggler_core REQUIRED COMPONENTS plugin_sdk)
target_link_libraries(my_plugin PRIVATE plotjuggler_core::plugin_sdk)
Verified: ./build.sh + 48/48 tests, ./test_sdk_install.sh (all 4 components
resolve via find_package, sdk_consumer example emits manifest sidecar),
`conan create .` packages cleanly, and an out-of-tree Conan consumer can
link plotjuggler_core::{base,datastore,plugin_sdk,plugin_host}.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Bumps the placeholder 1.0.0 version (carried over from PJ_SDK_VERSION) to 0.1.0 as the first published release of the plotjuggler_core Conan package and installable CMake package. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…itHub Release Triggered by pushing a v* tag (or manually via workflow_dispatch). Verifies the conanfile.py version matches the tag, builds the package with `conan create`, uploads it to the project's Cloudsmith remote, and publishes a GitHub Release with install instructions. Requires repo secrets: CLOUDSMITH_USER — Cloudsmith username CLOUDSMITH_API_KEY — Cloudsmith API key with write access Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…moved) The Windows CI step `Compute Conan cache tag` was hashing conanfile.txt by name, which broke after the file was replaced by conanfile.py. Switch the Windows hash input to conanfile.py and broaden the Linux find to match either filename so subtree conanfile.txt files (e.g. pj_ported_plugins/) continue to influence the cache key. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
PlotJugglerSDKtoplotjuggler_core, with audience-aligned components:base,datastore,plugin_sdk(plugin authors),plugin_host(host loaders).conanfile.pyso downstream projects (e.g.pj-official-plugins) can resolve viafind_package(plotjuggler_core REQUIRED COMPONENTS plugin_sdk)+requires plotjuggler_core/1.0.0instead of pulling source through CPM.PjPluginManifest.cmakealongside the package viacmake_build_modules, sopj_emit_plugin_manifest()is available to consumers without copying the helper.Why
pj-official-pluginscurrently pullsplotjuggler_coresource viaCPMAddPackageand builds it in-tree on every consumer build. That works, but it forecloses on binary caching, version pinning via Conan, and consumption from non-CPM build systems. The existingPJ_INSTALL_SDK=ONpath only installedpj_base(mis-namedDataSource) +pj_dialog_sdk(Dialog) — too narrow to support a plugin author, and the names collide with the DataSource plugin family.This PR closes both gaps.
Components and audiences
plotjuggler_core::basepj_baseplotjuggler_core::datastorewith_datastore)pj_datastore+ fmt + tsl-robin-map + nanoarrowplotjuggler_core::plugin_sdkpj_base+pj_dialog_sdk+pj_plugin_sdkheaders +nlohmann_json+ auto-loadedpj_emit_plugin_manifest()plotjuggler_core::plugin_hostwith_host)pj_*_hostloader + catalogs +pj_dialog_librarypj_dialog_protocolis exported as an internal target but transitively reachable throughplugin_sdkandplugin_host— not advertised as a public component.Consumer example (post-merge usage)
Notable mechanical changes
BUILD_INTERFACE/INSTALL_INTERFACEinclude directories (required for the EXPORT to survive install).pj_plugin_hostINTERFACE umbrella that aggregates all host loaders.pj_plugin_sdkINTERFACE umbrella to also bundlepj_dialog_sdkso plugin authors link one target.pj_plugins/include/,pj_datastore/include/, andpj_plugins/dialog_protocol/include/trees; previously dialog headers were installed via explicitinstall(FILES ...).cmake/PjPluginManifest.cmakenowinclude(GNUInstallDirs)itself so consumers don't have to.conanfile.txtremoved (replaced byconanfile.pywhich handles both packaging and local dev viawith_tests/with_parquet_exampleoptions).Test plan
./build.sh— full in-tree RelWithDebInfo build passes./test.sh— 48/48 tests pass./test_sdk_install.sh— installs, all four components resolve viafind_package,examples/sdk_consumerbuilds + emits manifest sidecarconan create .— recipe builds and packages cleanlyconanfile.txt: requires plotjuggler_core/1.0.0) resolves and finds all componentspj-official-pluginsmigration from CPM tofind_package(plotjuggler_core)+requires plotjuggler_core/1.0.0(follow-up PR)🤖 Generated with Claude Code