Add nlohmann/json as a top-level third_party submodule#1406
Closed
scotts wants to merge 1 commit into
Closed
Conversation
**Problem** — libkineto's tests depend on nlohmann/json, but the dependency is satisfied by reaching into a sub-submodule of dynolog (`libkineto/third_party/dynolog/third_party/json`). Kineto's json version is therefore whatever dynolog happens to pin, even though kineto and dynolog use json for unrelated purposes. The version dynolog pins (v3.10.5) also declares `cmake_minimum_required(3.1)`, which CMake 4.x rejects, forcing a `CMAKE_POLICY_VERSION_MINIMUM` workaround in libkineto's CMakeLists. **Why** — nothing about the dependency is "dynolog's". Kineto's tests use nlohmann/json directly (CuptiActivityProfilerTest, RocmActivityProfilerTest); none of libkineto's library code or the slice of dynolog libkineto consumes (IPC fabric only) touches json. Inheriting the version pin from a transitive submodule is fragile and the policy-minimum workaround is a symptom of being stuck on whatever upstream pins. **Fix** — register nlohmann/json at v3.12.0 as a top-level submodule at `libkineto/third_party/json`, mirroring the fmt and googletest pattern. Update `libkineto/CMakeLists.txt` to `add_subdirectory` the new path and set `JSON_BuildTests` / `JSON_Install` to OFF. v3.12.0 raises `cmake_minimum_required` to 3.8, so the `CMAKE_POLICY_VERSION_MINIMUM` save/restore dance is gone. The `if(NOT TARGET nlohmann_json)` guard is preserved as a safety net against the still-present dynolog-nested copy if anyone ever pulls dynolog's top-level CMakeLists.
|
@scotts has imported this pull request. If you are a Meta employee, you can view this in D105603416. |
pytorchmergebot
pushed a commit
to pytorch/pytorch
that referenced
this pull request
May 22, 2026
Includes the following commits: - ci: declare workflow-level `contents: read` on 5 workflows (pytorch/kineto#1404) 5902263 - Remove deprecated `REQUEST_TIMESTAMP` config key (pytorch/kineto#1409) 55883de - Fix intermittent Mac CI failure from conda channel reset (pytorch/kineto#1407) ee27b5c - Add nlohmann/json as a top-level third_party submodule (pytorch/kineto#1406) c044281 - Remove SIGUSR2 on-demand profiling path (pytorch/kineto#1408) 471ed38 - Fix ROCm HtoD memcpy stream attribution (pytorch/kineto#1398) 799b5f4 - Fix UST_LOGGER_MARK_COMPLETED build failure in manifold_trace_logger (pytorch/kineto#1389) 60967ce - Remove `DefaultTimeConverterIsIdentity` test (pytorch/kineto#1401) 81d31cd - Re-enable most PyTorch tests (pytorch/kineto#1403) 212f9a5 - Daily `arc lint --take CLANGFORMAT` (pytorch/kineto#1402) 6481fac - Resolve CUPTI cbid names via cuptiGetCallbackName (pytorch/kineto#1400) e07e121 - XPUPTI: Fix ts=0 trace events on Windows (pytorch/kineto#1381) 4c8d01c - Remove LIBKINETO_NO* compatibility shim (pytorch/kineto#1399) ea8bc18 - Upgrade Kineto to C++20 (pytorch/kineto#1397) 77e2b46 - Update the rocm api filtering (pytorch/kineto#1392) e0ac578 Pull Request resolved: #184784 Approved by: https://github.com/NicolasHug, https://github.com/malfet
pytorchmergebot
pushed a commit
to khushi-411/pytorch
that referenced
this pull request
May 24, 2026
Includes the following commits: - ci: declare workflow-level `contents: read` on 5 workflows (pytorch/kineto#1404) 5902263 - Remove deprecated `REQUEST_TIMESTAMP` config key (pytorch/kineto#1409) 55883de - Fix intermittent Mac CI failure from conda channel reset (pytorch/kineto#1407) ee27b5c - Add nlohmann/json as a top-level third_party submodule (pytorch/kineto#1406) c044281 - Remove SIGUSR2 on-demand profiling path (pytorch/kineto#1408) 471ed38 - Fix ROCm HtoD memcpy stream attribution (pytorch/kineto#1398) 799b5f4 - Fix UST_LOGGER_MARK_COMPLETED build failure in manifold_trace_logger (pytorch/kineto#1389) 60967ce - Remove `DefaultTimeConverterIsIdentity` test (pytorch/kineto#1401) 81d31cd - Re-enable most PyTorch tests (pytorch/kineto#1403) 212f9a5 - Daily `arc lint --take CLANGFORMAT` (pytorch/kineto#1402) 6481fac - Resolve CUPTI cbid names via cuptiGetCallbackName (pytorch/kineto#1400) e07e121 - XPUPTI: Fix ts=0 trace events on Windows (pytorch/kineto#1381) 4c8d01c - Remove LIBKINETO_NO* compatibility shim (pytorch/kineto#1399) ea8bc18 - Upgrade Kineto to C++20 (pytorch/kineto#1397) 77e2b46 - Update the rocm api filtering (pytorch/kineto#1392) e0ac578 Pull Request resolved: pytorch#184784 Approved by: https://github.com/NicolasHug, https://github.com/malfet
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.
Problem — libkineto's tests depend on nlohmann/json, but the dependency is satisfied by reaching into a sub-submodule of dynolog (
libkineto/third_party/dynolog/third_party/json). Kineto's json version is therefore whatever dynolog happens to pin, even though kineto and dynolog use json for unrelated purposes. The version dynolog pins (v3.10.5) also declarescmake_minimum_required(3.1), which CMake 4.x rejects, forcing aCMAKE_POLICY_VERSION_MINIMUMworkaround in libkineto's CMakeLists.Fix — register nlohmann/json at v3.12.0 as a top-level submodule at
libkineto/third_party/json, mirroring the fmt and googletest pattern. This avoids CMake hacks.Note that I rejected an alternative where we just vendor what we need from nlohmann/json directly as source code. That would reduce recursive clone time and use less disk space; we're adding about 150 MB by doing this. But I don't want to be in the business of manually copying source from a project. Making it a proper sub-module is easier. If space usage ever becomes an issue, we can revisit.