Skip to content

refactor(plugins): move the duplicate-resolution catalog to the host#144

Merged
facontidavide merged 1 commit into
mainfrom
refactor/sdk-drop-catalog-resolution
Jul 10, 2026
Merged

refactor(plugins): move the duplicate-resolution catalog to the host#144
facontidavide merged 1 commit into
mainfrom
refactor/sdk-drop-catalog-resolution

Conversation

@pabloinigoblasco

Copy link
Copy Markdown
Collaborator

Summary

Removes PluginRuntimeCatalog from the SDK. The catalog resolved duplicate plugin ids across folders by authoritative → compatibility → version → folder priority — that resolution is host policy, not a plugin-facing mechanism, so it moves to the app (pj_runtime). The SDK is left as a thin discovery + loader layer.

Removed:

  • plugin_runtime_catalog.{hpp,cpp} and its pj_plugin_runtime_catalog target (plus its slot in the pj_plugin_host umbrella and the install set).
  • The three mocks only its tests used (moved to the host with the class).
  • plugin_catalog_test keeps the scanPluginDsos / inspectPluginDso coverage; the duplicate-resolution + compareSemver tests move with the class.

Kept (the SDK's discovery primitives): scanPluginDsos, inspectPluginDso, the RAII loaders (DataSourceLibrary::load, …), and the C ABI. test_package and a data_source_plugin_base comment updated to the surviving surface.

Why

Client feedback: the SDK should stay thin and serve plugins; catalog / priority policy belongs in the app.

Impact

  • No plugin-ABI impact: no plugin links PluginRuntimeCatalog (host-side only); abi/baseline.abi unchanged. By the SDK's plugin-impact definition of MAJOR this is not a MAJOR — but it removes host-facing public API. Version bump not applied here; propose deciding it at release (candidate: MINOR).

Testing

  • cmake --build build + ctest → 49/49 pass.
  • CI runs the ASAN gate (./build.sh --debug && ./test.sh).

Pairs with

PlotJuggler/PJ4 companion PR (adds the catalog to pj_runtime). Must land together — the host branch builds against this SDK branch.

Removes PluginRuntimeCatalog from the SDK. The catalog resolved duplicate
plugin ids across folders by authoritative -> compatibility -> version ->
folder priority — that resolution is host policy, not a plugin-facing
mechanism, so it moves to the app (pj_runtime). The SDK is left as a thin
discovery + loader layer.

Removed:
- plugin_runtime_catalog.{hpp,cpp} and its pj_plugin_runtime_catalog target
  (plus its slot in the pj_plugin_host umbrella and the install set).
- The three mocks only its tests used (moved to the host with the class).
- plugin_catalog_test keeps the scanPluginDsos / inspectPluginDso coverage;
  the duplicate-resolution + compareSemver tests move with the class.

Kept (the SDK's discovery primitives): scanPluginDsos, inspectPluginDso,
the RAII loaders (DataSourceLibrary::load, ...), and the C ABI.
test_package and a data_source_plugin_base comment updated to the surviving
surface.

No plugin-ABI impact: no plugin links PluginRuntimeCatalog (host-side only);
abi/baseline.abi unchanged. By the SDK's plugin-impact definition of MAJOR
this is not a MAJOR — but it removes host-facing public API. Version bump
not applied here; propose deciding it at release (candidate: MINOR).

Pairs with the host-side change that adds the catalog to pj_runtime; both
must land together.
@pabloinigoblasco pabloinigoblasco marked this pull request as ready for review July 10, 2026 06:19
@facontidavide facontidavide merged commit 2b2e85d into main Jul 10, 2026
8 checks passed
@facontidavide facontidavide deleted the refactor/sdk-drop-catalog-resolution branch July 10, 2026 13:42
facontidavide added a commit that referenced this pull request Jul 10, 2026
Version bump 0.15.0 -> 0.16.0 (MINOR) covering #144, which removed the
host-side PluginRuntimeCatalog (moved to the app, pj_runtime). No plugin
links it and abi/baseline.abi is unchanged, so per the plugin-impact rule
this is not a MAJOR — but it does remove host-facing public API, hence the
CCI seed moves to 0.16.0 so the index never publishes API a later 0.x
removes.

- Bump the three version sources (conanfile.py, PJ_PACKAGE_VERSION in
  CMakeLists.txt, recipe.yaml) + the conanfile docstring example.
- CHANGELOG: relabel the shipped-but-still-[Unreleased] per-topic-pause
  section to [0.15.0] (missed by the 0.15.0 release) and add the [0.16.0]
  entry for #144.
- CCI recipe: re-seed config.yml/conandata.yml/README at 0.16.0. The
  sha256 is a placeholder until v0.16.0 is tagged (the digest of a tag
  tarball cannot exist before the tag); README documents the post-tag
  fill-in step.
- Drop pj_plugin_runtime_catalog from the plugin_host component libs in
  BOTH conanfiles (root + CCI recipe) — #144 removed the library from the
  build/install but left it declared, which breaks conan create/consume.

Build (debug+ASAN) + 49/49 tests pass.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
facontidavide added a commit that referenced this pull request Jul 10, 2026
….0 (#143)

Version bump 0.15.0 -> 0.16.0 (MINOR) covering #144, which removed the
host-side PluginRuntimeCatalog (moved to the app, pj_runtime). No plugin
links it and abi/baseline.abi is unchanged, so per the plugin-impact rule
this is not a MAJOR — but it does remove host-facing public API, hence the
CCI seed moves to 0.16.0 so the index never publishes API a later 0.x
removes.

- Bump the three version sources (conanfile.py, PJ_PACKAGE_VERSION in
  CMakeLists.txt, recipe.yaml) + the conanfile docstring example.
- CHANGELOG: relabel the shipped-but-still-[Unreleased] per-topic-pause
  section to [0.15.0] (missed by the 0.15.0 release) and add the [0.16.0]
  entry for #144.
- CCI recipe: re-seed config.yml/conandata.yml/README at 0.16.0. The
  sha256 is a placeholder until v0.16.0 is tagged (the digest of a tag
  tarball cannot exist before the tag); README documents the post-tag
  fill-in step.
- Drop pj_plugin_runtime_catalog from the plugin_host component libs in
  BOTH conanfiles (root + CCI recipe) — #144 removed the library from the
  build/install but left it declared, which breaks conan create/consume.

Build (debug+ASAN) + 49/49 tests pass.

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
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.

2 participants