Skip to content

Commit 90133ad

Browse files
refactor(sdk)!: rename package & namespace plotjuggler_core -> plotjuggler_sdk (#114)
The repository was renamed plotjuggler_core -> plotjuggler_sdk; make the Conan package and CMake identity match. Version stays 0.6.0 — this folds into the existing release (the v0.6.0 tag will be re-pointed). The code and ABI are byte-identical; only the package/target identifiers change. - Conan: name = "plotjuggler_sdk"; class PlotjugglerSdkConan; cmake_file_name and the component cmake_target_name -> plotjuggler_sdk::{base,plugin_sdk,plugin_host}; url + docstring updated. - CMake: project(plotjuggler_sdk); install(EXPORT plotjuggler_sdkTargets); NAMESPACE plotjuggler_sdk::; install dir cmake/plotjuggler_sdk; rename plotjuggler_coreConfig.cmake.in -> plotjuggler_sdkConfig.cmake.in; module ALIAS targets -> plotjuggler_sdk::*. - test_sdk_install.sh, examples/sdk_consumer, build.sh, CI workflows, README, CLAUDE.md, and docs updated. - pj_base/abi/baseline.abi left untouched: its two "plotjuggler_core" strings are CI-runner corpus paths in the abidw dump, not ABI, and abidiff ignores them. BREAKING CHANGE: consumers must switch find_package(plotjuggler_core ...) -> find_package(plotjuggler_sdk ...), the plotjuggler_core:: CMake namespace -> plotjuggler_sdk::, and conan `requires plotjuggler_core/...` -> `plotjuggler_sdk/...`. The ABI is unchanged, so already-built plugin .so files keep loading. Verified: ./build.sh + ./test_sdk_install.sh (find_package(plotjuggler_sdk) COMPONENTS base/plugin_sdk/plugin_host all OK). Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent 3f9003f commit 90133ad

21 files changed

Lines changed: 89 additions & 89 deletions

.github/workflows/linux-ci.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -168,14 +168,14 @@ jobs:
168168
run: >
169169
conan install . --output-folder=build --build=missing
170170
-s build_type=RelWithDebInfo -s compiler.cppstd=20
171-
-o "plotjuggler_core/*:with_tests=True"
171+
-o "plotjuggler_sdk/*:with_tests=True"
172172
173173
- name: Save Conan cache to ghcr.io
174174
# Only push from the canonical repo on real pushes (forks lack write
175175
# access to ghcr.io packages). Skip on exact cache HIT — the tag content
176176
# is already up to date, no point re-uploading the same bytes. Skip if
177177
# neither oras install path succeeded (graceful degradation).
178-
if: github.event_name == 'push' && github.repository == 'PlotJuggler/plotjuggler_core' && env.CONAN_CACHE_EXACT_HIT != '1' && (steps.setup_oras.outcome == 'success' || steps.setup_oras_fallback.outcome == 'success')
178+
if: github.event_name == 'push' && github.repository == 'PlotJuggler/plotjuggler_sdk' && env.CONAN_CACHE_EXACT_HIT != '1' && (steps.setup_oras.outcome == 'success' || steps.setup_oras_fallback.outcome == 'success')
179179
shell: bash
180180
run: |
181181
set -euo pipefail

.github/workflows/macos-ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ jobs:
2929
run: >
3030
conan install . --output-folder=build --build=missing
3131
-s build_type=RelWithDebInfo -s compiler.cppstd=20
32-
-o "plotjuggler_core/*:with_tests=True"
32+
-o "plotjuggler_sdk/*:with_tests=True"
3333
3434
- name: Configure
3535
run: >

.github/workflows/release.yml

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ name: Release
77
#
88
# Why a matrix: Cloudsmith stores one binary package per platform/compiler
99
# (package_id). A single ubuntu job only ever publishes a Linux/gcc binary, so
10-
# macOS and Windows consumers are forced to build plotjuggler_core from source
10+
# macOS and Windows consumers are forced to build plotjuggler_sdk from source
1111
# via `--build=missing`. That is slow and, on macOS specifically, fragile: a
1212
# from-source build depends on the recipe's exported sources being intact in
1313
# the cache, which breaks (e.g. after a version is re-published with a new
@@ -130,7 +130,7 @@ jobs:
130130
conan remote login plotjuggler-cloudsmith "$CLOUDSMITH_USER" -p "$CLOUDSMITH_API_KEY"
131131
fi
132132
133-
conan list "plotjuggler_core/${version}#*" -r plotjuggler-cloudsmith --format=json \
133+
conan list "plotjuggler_sdk/${version}#*" -r plotjuggler-cloudsmith --format=json \
134134
> /tmp/remote_revs.json 2>/dev/null || true
135135
136136
if grep -q "RECIPEUNKNOWN" /tmp/remote_revs.json; then
@@ -141,11 +141,11 @@ jobs:
141141
elif grep -q "${local_rrev}" /tmp/remote_revs.json; then
142142
echo "Recipe revision ${local_rrev} is already published for ${version} — idempotent re-run, proceeding."
143143
else
144-
echo "::error::plotjuggler_core/${version} is already published with a different recipe revision."
144+
echo "::error::plotjuggler_sdk/${version} is already published with a different recipe revision."
145145
echo "::error::This build would publish ${local_rrev}, which is not on the remote. Refusing to overwrite a released version."
146146
echo "::error::Cut a new version, or re-run via workflow_dispatch with allow_republish=true to repair a botched release."
147147
echo "Currently published for ${version}:"
148-
conan list "plotjuggler_core/${version}#*" -r plotjuggler-cloudsmith 2>/dev/null || true
148+
conan list "plotjuggler_sdk/${version}#*" -r plotjuggler-cloudsmith 2>/dev/null || true
149149
exit 1
150150
fi
151151
@@ -218,7 +218,7 @@ jobs:
218218
# concurrent recipe uploads are idempotent — only the per-platform
219219
# binary differs. `--check` verifies integrity before/after transfer.
220220
run: |
221-
conan upload "plotjuggler_core/${{ needs.prepare.outputs.version }}" \
221+
conan upload "plotjuggler_sdk/${{ needs.prepare.outputs.version }}" \
222222
-r plotjuggler-cloudsmith \
223223
--confirm \
224224
--check
@@ -238,7 +238,7 @@ jobs:
238238
uses: softprops/action-gh-release@v2
239239
with:
240240
tag_name: ${{ needs.prepare.outputs.tag }}
241-
name: plotjuggler_core ${{ needs.prepare.outputs.tag }}
241+
name: plotjuggler_sdk ${{ needs.prepare.outputs.tag }}
242242
generate_release_notes: true
243243
body: |
244244
## Install via Conan
@@ -250,16 +250,16 @@ jobs:
250250
Add to your `conanfile.py` / `conanfile.txt`:
251251
252252
```python
253-
requires = ("plotjuggler_core/${{ needs.prepare.outputs.version }}",)
253+
requires = ("plotjuggler_sdk/${{ needs.prepare.outputs.version }}",)
254254
```
255255
256256
Link in CMake:
257257
258258
```cmake
259-
find_package(plotjuggler_core REQUIRED COMPONENTS plugin_sdk)
260-
target_link_libraries(my_plugin PRIVATE plotjuggler_core::plugin_sdk)
259+
find_package(plotjuggler_sdk REQUIRED COMPONENTS plugin_sdk)
260+
target_link_libraries(my_plugin PRIVATE plotjuggler_sdk::plugin_sdk)
261261
```
262262
263-
See [README.md](https://github.com/PlotJuggler/plotjuggler_core/blob/main/README.md)
263+
See [README.md](https://github.com/PlotJuggler/plotjuggler_sdk/blob/main/README.md)
264264
for available components (`base`, `plugin_sdk`, `plugin_host`)
265265
and consumer examples.

.github/workflows/windows-ci.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -138,14 +138,14 @@ jobs:
138138
run: >
139139
conan install . --output-folder=build --build=missing
140140
-s build_type=Release -s compiler.cppstd=20
141-
-o "plotjuggler_core/*:with_tests=True"
141+
-o "plotjuggler_sdk/*:with_tests=True"
142142
143143
- name: Save Conan cache to ghcr.io
144144
# Only push from the canonical repo on real pushes (forks lack write
145145
# access to ghcr.io packages). Skip on exact cache HIT — the tag content
146146
# is already up to date, no point re-uploading the same bytes. Skip if
147147
# neither oras install path succeeded (graceful degradation).
148-
if: github.event_name == 'push' && github.repository == 'PlotJuggler/plotjuggler_core' && env.CONAN_CACHE_EXACT_HIT != '1' && (steps.setup_oras.outcome == 'success' || steps.setup_oras_fallback.outcome == 'success')
148+
if: github.event_name == 'push' && github.repository == 'PlotJuggler/plotjuggler_sdk' && env.CONAN_CACHE_EXACT_HIT != '1' && (steps.setup_oras.outcome == 'success' || steps.setup_oras_fallback.outcome == 'success')
149149
shell: pwsh
150150
run: |
151151
$tag = "${{ steps.conan_cache.outputs.tag }}"

CLAUDE.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
## Project Overview
44

5-
PlotJuggler Core — C++20 foundation libraries that make up the PlotJuggler plugin SDK and host-side
5+
PlotJuggler SDK — C++20 foundation libraries that make up the PlotJuggler plugin SDK and host-side
66
plugin loading. **Read-only submodule** inside PJ4: consumed as-is; changes happen in this repo,
77
not in the PJ4 superproject. This file is the single navigation node for the whole submodule — the
88
two modules below have no own CLAUDE.md.
@@ -92,7 +92,7 @@ The bump is decided by **plugin impact**, semver-style:
9292
installed header) take **no bump**.
9393

9494
**Plugin compatibility range.** A plugin built and tested on `X.Y.Z` works on every later
95-
MINOR/PATCH up to the next MAJOR, so it pins `plotjuggler_core/[>=X.Y.Z <(X+1).0.0]` — e.g. built on
95+
MINOR/PATCH up to the next MAJOR, so it pins `plotjuggler_sdk/[>=X.Y.Z <(X+1).0.0]` — e.g. built on
9696
`1.4.2``[>=1.4.2 <2.0.0]`. The lower bound is the version that introduced the newest feature the
9797
plugin actually uses (a plugin that does not adopt `0.6`'s additions stays at `>=0.5.2`); the upper
9898
bound is the next MAJOR. Write the range **explicitly** — do not rely on caret/tilde shorthand.

CMakeLists.txt

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
cmake_minimum_required(VERSION 3.22)
2-
project(plotjuggler_core LANGUAGES CXX)
2+
project(plotjuggler_sdk LANGUAGES CXX)
33
set(CMAKE_CXX_STANDARD 20)
44
set(CMAKE_CXX_STANDARD_REQUIRED ON)
55
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
@@ -16,7 +16,7 @@ include(PjPluginManifest)
1616
option(PJ_ASSERT_THROWS "Use exceptions instead of assert() for PJ_ASSERT" OFF)
1717
option(PJ_ENABLE_SANITIZERS "Enable ASAN for Debug builds" OFF)
1818
option(PJ_ENABLE_TSAN "Enable ThreadSanitizer for Debug builds" OFF)
19-
option(PJ_INSTALL_SDK "Install plotjuggler_core CMake package (base/plugin_sdk/plugin_host)" OFF)
19+
option(PJ_INSTALL_SDK "Install plotjuggler_sdk CMake package (base/plugin_sdk/plugin_host)" OFF)
2020
option(PJ_BUILD_PORTED_PLUGINS "Build pj_ported_plugins (ported plugins collection)" ON)
2121
option(PJ_BUILD_TESTS "Build tests, benchmarks, and examples" ON)
2222
option(PJ_ENABLE_ABI_CHECK "Enable abidiff-based ABI drift gate (requires libabigail)" OFF)
@@ -77,7 +77,7 @@ target_link_libraries(pj_internal_fmt INTERFACE ${PJ_FMT_TARGET})
7777

7878
# fast_float backs the floating-point branch of PJ::parseNumber. Header-only;
7979
# linked PRIVATE under a BUILD_INTERFACE scope by pj_base so it never appears
80-
# in the installed plotjuggler_coreTargets file. Conan ships the CMake
80+
# in the installed plotjuggler_sdkTargets file. Conan ships the CMake
8181
# package under the capitalised name `FastFloat`.
8282
find_package(FastFloat REQUIRED)
8383

@@ -98,9 +98,9 @@ if(PJ_BUILD_PORTED_PLUGINS AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/pj_ported_plu
9898
endif()
9999

100100
# ---------------------------------------------------------------------------
101-
# plotjuggler_core package install
101+
# plotjuggler_sdk package install
102102
#
103-
# Exported CMake namespace: plotjuggler_core::
103+
# Exported CMake namespace: plotjuggler_sdk::
104104
# Components:
105105
# base — vocabulary types (always available)
106106
# plugin_sdk — plugin-author surface: base + dialog SDK + parser SDK
@@ -112,28 +112,28 @@ if(PJ_INSTALL_SDK)
112112
include(CMakePackageConfigHelpers)
113113

114114
set(PJ_PACKAGE_VERSION "0.6.0")
115-
set(PJ_PACKAGE_CMAKE_DIR ${CMAKE_INSTALL_LIBDIR}/cmake/plotjuggler_core)
115+
set(PJ_PACKAGE_CMAKE_DIR ${CMAKE_INSTALL_LIBDIR}/cmake/plotjuggler_sdk)
116116

117-
install(EXPORT plotjuggler_coreTargets
118-
NAMESPACE plotjuggler_core::
117+
install(EXPORT plotjuggler_sdkTargets
118+
NAMESPACE plotjuggler_sdk::
119119
DESTINATION ${PJ_PACKAGE_CMAKE_DIR}
120120
)
121121

122122
configure_package_config_file(
123-
cmake/plotjuggler_coreConfig.cmake.in
124-
"${CMAKE_CURRENT_BINARY_DIR}/plotjuggler_coreConfig.cmake"
123+
cmake/plotjuggler_sdkConfig.cmake.in
124+
"${CMAKE_CURRENT_BINARY_DIR}/plotjuggler_sdkConfig.cmake"
125125
INSTALL_DESTINATION ${PJ_PACKAGE_CMAKE_DIR}
126126
)
127127

128128
write_basic_package_version_file(
129-
"${CMAKE_CURRENT_BINARY_DIR}/plotjuggler_coreConfigVersion.cmake"
129+
"${CMAKE_CURRENT_BINARY_DIR}/plotjuggler_sdkConfigVersion.cmake"
130130
VERSION ${PJ_PACKAGE_VERSION}
131131
COMPATIBILITY SameMajorVersion
132132
)
133133

134134
install(FILES
135-
"${CMAKE_CURRENT_BINARY_DIR}/plotjuggler_coreConfig.cmake"
136-
"${CMAKE_CURRENT_BINARY_DIR}/plotjuggler_coreConfigVersion.cmake"
135+
"${CMAKE_CURRENT_BINARY_DIR}/plotjuggler_sdkConfig.cmake"
136+
"${CMAKE_CURRENT_BINARY_DIR}/plotjuggler_sdkConfigVersion.cmake"
137137
cmake/PjPluginManifest.cmake
138138
DESTINATION ${PJ_PACKAGE_CMAKE_DIR}
139139
)

LICENSE

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
PlotJuggler Core is licensed per-module. Every source file carries an
1+
PlotJuggler SDK is licensed per-module. Every source file carries an
22
SPDX-License-Identifier header that is authoritative for that file.
33

44
Module License Full text

README.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
# PlotJuggler Core
1+
# PlotJuggler SDK
22

3-
[![Linux CI](https://github.com/PlotJuggler/plotjuggler_core/actions/workflows/linux-ci.yml/badge.svg)](https://github.com/PlotJuggler/plotjuggler_core/actions/workflows/linux-ci.yml)
4-
[![Windows CI](https://github.com/PlotJuggler/plotjuggler_core/actions/workflows/windows-ci.yml/badge.svg)](https://github.com/PlotJuggler/plotjuggler_core/actions/workflows/windows-ci.yml)
3+
[![Linux CI](https://github.com/PlotJuggler/plotjuggler_sdk/actions/workflows/linux-ci.yml/badge.svg)](https://github.com/PlotJuggler/plotjuggler_sdk/actions/workflows/linux-ci.yml)
4+
[![Windows CI](https://github.com/PlotJuggler/plotjuggler_sdk/actions/workflows/windows-ci.yml/badge.svg)](https://github.com/PlotJuggler/plotjuggler_sdk/actions/workflows/windows-ci.yml)
55

66
C++20 foundation libraries for [PlotJuggler](https://github.com/facontidavide/PlotJuggler).
77

@@ -29,7 +29,7 @@ sudo apt install clangd-22 clang-format-22 clang-tidy-22
2929

3030
```bash
3131
git clone <this repo>
32-
cd plotjuggler_core
32+
cd plotjuggler_sdk
3333

3434
./build.sh # RelWithDebInfo (build/)
3535
./build.sh --debug # Debug + ASAN (build/debug_asan)
@@ -47,7 +47,7 @@ docs/ Project-wide design guides
4747

4848
## License
4949

50-
PlotJuggler Core is **Apache-2.0** ([LICENSE-APACHE](LICENSE-APACHE)); each
50+
PlotJuggler SDK is **Apache-2.0** ([LICENSE-APACHE](LICENSE-APACHE)); each
5151
source file carries an authoritative `SPDX-License-Identifier` header. You may
5252
build **proprietary plugins and applications** on the SDK without restriction;
5353
Apache-2.0 also grants an explicit patent license.

build.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ build_config() {
6969

7070
conan install "$SCRIPT_DIR" --output-folder="$build_dir" --build=missing \
7171
-s build_type="$build_type" -s compiler.cppstd=20 \
72-
-o "plotjuggler_core/*:with_tests=True" \
72+
-o "plotjuggler_sdk/*:with_tests=True" \
7373
"${conan_extra[@]+"${conan_extra[@]}"}"
7474

7575
# Install dependencies from subdirectory conanfiles (e.g. pj_ported_plugins)
Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,35 +4,35 @@ include(CMakeFindDependencyMacro)
44

55
# Default to plugin_sdk if no components requested — the most common
66
# consumer (a plugin author) wants the plugin-author SDK surface.
7-
if(NOT plotjuggler_core_FIND_COMPONENTS)
8-
set(plotjuggler_core_FIND_COMPONENTS plugin_sdk)
7+
if(NOT plotjuggler_sdk_FIND_COMPONENTS)
8+
set(plotjuggler_sdk_FIND_COMPONENTS plugin_sdk)
99
endif()
1010

11-
# Include the exported targets (defines plotjuggler_core::base, etc.).
12-
include("${CMAKE_CURRENT_LIST_DIR}/plotjuggler_coreTargets.cmake")
11+
# Include the exported targets (defines plotjuggler_sdk::base, etc.).
12+
include("${CMAKE_CURRENT_LIST_DIR}/plotjuggler_sdkTargets.cmake")
1313

1414
# Per-component dependencies and validation.
15-
foreach(_comp ${plotjuggler_core_FIND_COMPONENTS})
15+
foreach(_comp ${plotjuggler_sdk_FIND_COMPONENTS})
1616
if(_comp STREQUAL "base")
17-
set(plotjuggler_core_base_FOUND TRUE)
17+
set(plotjuggler_sdk_base_FOUND TRUE)
1818

1919
elseif(_comp STREQUAL "plugin_sdk")
2020
find_dependency(nlohmann_json)
2121
# Ship the cmake/PjPluginManifest.cmake helper so plugin authors can call
2222
# pj_emit_plugin_manifest() without copying the helper into their tree.
2323
include("${CMAKE_CURRENT_LIST_DIR}/PjPluginManifest.cmake")
24-
set(plotjuggler_core_plugin_sdk_FOUND TRUE)
24+
set(plotjuggler_sdk_plugin_sdk_FOUND TRUE)
2525

2626
elseif(_comp STREQUAL "plugin_host")
2727
find_dependency(nlohmann_json)
28-
set(plotjuggler_core_plugin_host_FOUND TRUE)
28+
set(plotjuggler_sdk_plugin_host_FOUND TRUE)
2929

3030
else()
31-
set(plotjuggler_core_${_comp}_FOUND FALSE)
32-
if(plotjuggler_core_FIND_REQUIRED_${_comp})
33-
message(FATAL_ERROR "plotjuggler_core: unknown component \"${_comp}\"")
31+
set(plotjuggler_sdk_${_comp}_FOUND FALSE)
32+
if(plotjuggler_sdk_FIND_REQUIRED_${_comp})
33+
message(FATAL_ERROR "plotjuggler_sdk: unknown component \"${_comp}\"")
3434
endif()
3535
endif()
3636
endforeach()
3737

38-
check_required_components(plotjuggler_core)
38+
check_required_components(plotjuggler_sdk)

0 commit comments

Comments
 (0)