From 878515430d7408e3faaa22d69df2add22aeb4ed5 Mon Sep 17 00:00:00 2001 From: Davide Faconti Date: Thu, 18 Jun 2026 18:58:35 +0200 Subject: [PATCH 01/23] build(cmake): add pj_target_link_* dependency-normalization module Introduces cmake/PjDependencyTargets.cmake with pj_target_link_{arrow, parquet,zstd,lz4,asio,paho_mqtt} and pj_arrow_available helpers that resolve the correct CMake target regardless of whether the provider is Conan (static targets) or conda-forge (shared / pkg-config targets). Included at the root so all plugin subdirectories inherit the functions with no behavior change under the existing Conan build. Co-Authored-By: Claude Sonnet 4.6 --- CMakeLists.txt | 5 ++ cmake/PjDependencyTargets.cmake | 99 +++++++++++++++++++++++++++++++++ 2 files changed, 104 insertions(+) create mode 100644 cmake/PjDependencyTargets.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index cb6eebb8..42f72fda 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,10 @@ cmake_minimum_required(VERSION 3.22) +# Provider-agnostic dependency target helpers (pj_target_link_*). Defined at the +# root so they are visible in every add_subdirectory() plugin. Defines functions +# only — no find_package at include time — so it is safe before the mode branch. +include(${CMAKE_CURRENT_LIST_DIR}/cmake/PjDependencyTargets.cmake) + # --------------------------------------------------------------------------- # Dual-mode: standalone project OR subdirectory of plotjuggler_sdk. # diff --git a/cmake/PjDependencyTargets.cmake b/cmake/PjDependencyTargets.cmake new file mode 100644 index 00000000..30a79091 --- /dev/null +++ b/cmake/PjDependencyTargets.cmake @@ -0,0 +1,99 @@ +# Provider-agnostic dependency linking for the Conan->pixi transition. +# +# Several third-party deps expose DIFFERENT CMake target names under Conan +# (static archives, e.g. Arrow::arrow_static) versus conda-forge (shared libs, +# e.g. Arrow::arrow_shared) — and a few ship no CMake target at all on +# conda-forge (lz4-c, asio: pkg-config only). These helpers locate the dep under +# whichever provider is active and link the correct target, so the SAME plugin +# CMakeLists builds under both. Under Conan they link the identical *_static +# targets used before this layer existed (no behavior change). +# +# Usage: pj_target_link_arrow(my_target PRIVATE) # or PUBLIC / INTERFACE +include_guard(GLOBAL) + +function(pj_target_link_arrow tgt vis) + if(NOT TARGET Arrow::arrow_static AND NOT TARGET Arrow::arrow_shared) + find_package(Arrow CONFIG REQUIRED) + endif() + if(TARGET Arrow::arrow_static) + target_link_libraries(${tgt} ${vis} Arrow::arrow_static) + else() + target_link_libraries(${tgt} ${vis} Arrow::arrow_shared) + endif() +endfunction() + +function(pj_target_link_parquet tgt vis) + if(NOT TARGET Parquet::parquet_static AND NOT TARGET Parquet::parquet_shared) + find_package(Parquet CONFIG REQUIRED) + endif() + if(TARGET Parquet::parquet_static) + target_link_libraries(${tgt} ${vis} Parquet::parquet_static) + else() + target_link_libraries(${tgt} ${vis} Parquet::parquet_shared) + endif() +endfunction() + +function(pj_target_link_zstd tgt vis) + if(NOT TARGET zstd::libzstd_static AND NOT TARGET zstd::libzstd AND NOT TARGET zstd::libzstd_shared) + find_package(zstd CONFIG REQUIRED) + endif() + if(TARGET zstd::libzstd_static) + target_link_libraries(${tgt} ${vis} zstd::libzstd_static) # Conan + elseif(TARGET zstd::libzstd) + target_link_libraries(${tgt} ${vis} zstd::libzstd) # conda-forge (alias -> shared) + else() + target_link_libraries(${tgt} ${vis} zstd::libzstd_shared) + endif() +endfunction() + +function(pj_target_link_lz4 tgt vis) + if(TARGET LZ4::lz4_static) + target_link_libraries(${tgt} ${vis} LZ4::lz4_static) # Conan + return() + endif() + if(TARGET lz4::lz4) + target_link_libraries(${tgt} ${vis} lz4::lz4) + return() + endif() + # conda-forge lz4-c ships no CMake config — consume via pkg-config. + find_package(PkgConfig REQUIRED) + pkg_check_modules(PJ_LZ4 REQUIRED IMPORTED_TARGET liblz4) + target_link_libraries(${tgt} ${vis} PkgConfig::PJ_LZ4) +endfunction() + +function(pj_target_link_asio tgt vis) + if(TARGET asio::asio) + target_link_libraries(${tgt} ${vis} asio::asio) # Conan + return() + endif() + # conda-forge asio is header-only with no CMake target — pkg-config supplies the include dir. + find_package(PkgConfig REQUIRED) + pkg_check_modules(PJ_ASIO REQUIRED IMPORTED_TARGET asio) + target_link_libraries(${tgt} ${vis} PkgConfig::PJ_ASIO) +endfunction() + +function(pj_target_link_paho_mqtt tgt vis) + if(NOT TARGET PahoMqttCpp::paho-mqttpp3-static AND NOT TARGET PahoMqttCpp::paho-mqttpp3) + find_package(PahoMqttCpp CONFIG REQUIRED) + endif() + if(TARGET PahoMqttCpp::paho-mqttpp3-static) + target_link_libraries(${tgt} ${vis} PahoMqttCpp::paho-mqttpp3-static) # Conan + else() + target_link_libraries(${tgt} ${vis} PahoMqttCpp::paho-mqttpp3) # conda-forge + endif() +endfunction() + +# Availability probe for the graceful-skip in common/arrow_helpers (some build +# configs, e.g. the ROS2 proxy leg, have no Arrow dep at all). +function(pj_arrow_available out) + if(TARGET Arrow::arrow_static OR TARGET Arrow::arrow_shared) + set(${out} TRUE PARENT_SCOPE) + return() + endif() + find_package(Arrow QUIET CONFIG) + if(TARGET Arrow::arrow_static OR TARGET Arrow::arrow_shared) + set(${out} TRUE PARENT_SCOPE) + else() + set(${out} FALSE PARENT_SCOPE) + endif() +endfunction() From 1db2ce959c04591485b1486a247fd0b88e9b6dd1 Mon Sep 17 00:00:00 2001 From: Davide Faconti Date: Thu, 18 Jun 2026 19:03:31 +0200 Subject: [PATCH 02/23] build(cmake): guard pkg-config imported targets against re-creation (review) pkg_check_modules(... IMPORTED_TARGET) re-creates PkgConfig::PJ_LZ4/PJ_ASIO on each call; mcap links lz4 three times in one CMakeLists. Guard with if(NOT TARGET ...) so repeated/cross-subdir calls are idempotent. Validated under conda with a second lz4/asio consumer. --- cmake/PjDependencyTargets.cmake | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/cmake/PjDependencyTargets.cmake b/cmake/PjDependencyTargets.cmake index 30a79091..1663898c 100644 --- a/cmake/PjDependencyTargets.cmake +++ b/cmake/PjDependencyTargets.cmake @@ -42,7 +42,7 @@ function(pj_target_link_zstd tgt vis) elseif(TARGET zstd::libzstd) target_link_libraries(${tgt} ${vis} zstd::libzstd) # conda-forge (alias -> shared) else() - target_link_libraries(${tgt} ${vis} zstd::libzstd_shared) + target_link_libraries(${tgt} ${vis} zstd::libzstd_shared) # custom/distro zstd (shared only) endif() endfunction() @@ -55,9 +55,13 @@ function(pj_target_link_lz4 tgt vis) target_link_libraries(${tgt} ${vis} lz4::lz4) return() endif() - # conda-forge lz4-c ships no CMake config — consume via pkg-config. - find_package(PkgConfig REQUIRED) - pkg_check_modules(PJ_LZ4 REQUIRED IMPORTED_TARGET liblz4) + # conda-forge lz4-c ships no CMake config — consume via pkg-config. Guard the + # imported-target creation so repeated calls (e.g. mcap links lz4 thrice) and + # calls from multiple subdirectories don't re-create PkgConfig::PJ_LZ4. + if(NOT TARGET PkgConfig::PJ_LZ4) + find_package(PkgConfig REQUIRED) + pkg_check_modules(PJ_LZ4 REQUIRED IMPORTED_TARGET liblz4) + endif() target_link_libraries(${tgt} ${vis} PkgConfig::PJ_LZ4) endfunction() @@ -66,9 +70,12 @@ function(pj_target_link_asio tgt vis) target_link_libraries(${tgt} ${vis} asio::asio) # Conan return() endif() - # conda-forge asio is header-only with no CMake target — pkg-config supplies the include dir. - find_package(PkgConfig REQUIRED) - pkg_check_modules(PJ_ASIO REQUIRED IMPORTED_TARGET asio) + # conda-forge asio is header-only with no CMake target — pkg-config supplies the + # include dir. Guard the imported-target creation against repeated/cross-subdir calls. + if(NOT TARGET PkgConfig::PJ_ASIO) + find_package(PkgConfig REQUIRED) + pkg_check_modules(PJ_ASIO REQUIRED IMPORTED_TARGET asio) + endif() target_link_libraries(${tgt} ${vis} PkgConfig::PJ_ASIO) endfunction() From 9907041a46e88a32eff16ab9e39f037a25fc7a66 Mon Sep 17 00:00:00 2001 From: Davide Faconti Date: Thu, 18 Jun 2026 19:06:21 +0200 Subject: [PATCH 03/23] build(arrow_helpers): link Arrow via pj_target_link_arrow Co-Authored-By: Claude Sonnet 4.6 --- common/arrow_helpers/CMakeLists.txt | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/common/arrow_helpers/CMakeLists.txt b/common/arrow_helpers/CMakeLists.txt index f123d8e2..43a4bd13 100644 --- a/common/arrow_helpers/CMakeLists.txt +++ b/common/arrow_helpers/CMakeLists.txt @@ -9,12 +9,10 @@ # find_package(Arrow REQUIRED), so a real consumer never silently runs # without the target — it errors at the consumer's own find_package. -if(NOT TARGET Arrow::arrow_static) - find_package(Arrow QUIET CONFIG) - if(NOT TARGET Arrow::arrow_static) - message(STATUS "pj_arrow_helpers: Arrow not found, skipping shared helper library") - return() - endif() +pj_arrow_available(_pj_have_arrow) +if(NOT _pj_have_arrow) + message(STATUS "pj_arrow_helpers: Arrow not found, skipping shared helper library") + return() endif() add_library(pj_arrow_helpers STATIC arrow_helpers.cpp) @@ -31,7 +29,5 @@ target_include_directories(pj_arrow_helpers PUBLIC ) # Arrow types appear in the public API; plugin_sdk supplies PJ::sdk::ValueRef. -target_link_libraries(pj_arrow_helpers PUBLIC - plotjuggler_sdk::plugin_sdk - Arrow::arrow_static -) +target_link_libraries(pj_arrow_helpers PUBLIC plotjuggler_sdk::plugin_sdk) +pj_target_link_arrow(pj_arrow_helpers PUBLIC) From 3a91533b1a0686df9ef80cb31c654442a2a95a39 Mon Sep 17 00:00:00 2001 From: Davide Faconti Date: Thu, 18 Jun 2026 19:06:24 +0200 Subject: [PATCH 04/23] build(parquet): link Arrow/Parquet via pj_target_link_* Co-Authored-By: Claude Sonnet 4.6 --- data_load_parquet/CMakeLists.txt | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/data_load_parquet/CMakeLists.txt b/data_load_parquet/CMakeLists.txt index 5b7aaf81..c9ae9ed0 100644 --- a/data_load_parquet/CMakeLists.txt +++ b/data_load_parquet/CMakeLists.txt @@ -1,11 +1,5 @@ find_package(nlohmann_json REQUIRED) find_package(date REQUIRED) -if(NOT TARGET Arrow::arrow_static) - find_package(Arrow REQUIRED) -endif() -if(NOT TARGET Parquet::parquet_static) - find_package(Parquet REQUIRED) -endif() include(${CMAKE_CURRENT_LIST_DIR}/../cmake/EmbedUi.cmake) include(${CMAKE_CURRENT_LIST_DIR}/../cmake/EmbedManifest.cmake) @@ -15,9 +9,11 @@ add_library(parquet_source_plugin SHARED parquet_source.cpp) target_compile_features(parquet_source_plugin PRIVATE cxx_std_20) target_compile_options(parquet_source_plugin PRIVATE ${PJ_WARNING_FLAGS}) target_link_libraries(parquet_source_plugin PRIVATE - plotjuggler_sdk::plugin_sdk nlohmann_json::nlohmann_json date::date-tz Arrow::arrow_static Parquet::parquet_static + plotjuggler_sdk::plugin_sdk nlohmann_json::nlohmann_json date::date-tz pj_arrow_helpers ) +pj_target_link_arrow(parquet_source_plugin PRIVATE) +pj_target_link_parquet(parquet_source_plugin PRIVATE) pj_embed_ui(parquet_source_plugin UI_FILE ${CMAKE_CURRENT_SOURCE_DIR}/dataload_parquet.ui @@ -43,7 +39,8 @@ target_compile_features(parquet_helpers_test PRIVATE cxx_std_20) target_compile_options(parquet_helpers_test PRIVATE ${PJ_WARNING_FLAGS}) target_include_directories(parquet_helpers_test PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) target_link_libraries(parquet_helpers_test PRIVATE - plotjuggler_sdk::plugin_sdk Arrow::arrow_static GTest::gtest_main + plotjuggler_sdk::plugin_sdk GTest::gtest_main pj_arrow_helpers ) +pj_target_link_arrow(parquet_helpers_test PRIVATE) add_test(NAME parquet_helpers_test COMMAND parquet_helpers_test) From bcb422424bfad61d38ddd9f405e95ff327932c32 Mon Sep 17 00:00:00 2001 From: Davide Faconti Date: Thu, 18 Jun 2026 19:06:28 +0200 Subject: [PATCH 05/23] build(lerobot): link Arrow/Parquet via pj_target_link_* Co-Authored-By: Claude Sonnet 4.6 --- data_load_lerobot/CMakeLists.txt | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/data_load_lerobot/CMakeLists.txt b/data_load_lerobot/CMakeLists.txt index 985ef424..8037a7df 100644 --- a/data_load_lerobot/CMakeLists.txt +++ b/data_load_lerobot/CMakeLists.txt @@ -1,10 +1,4 @@ find_package(nlohmann_json REQUIRED) -if(NOT TARGET Arrow::arrow_static) - find_package(Arrow REQUIRED) -endif() -if(NOT TARGET Parquet::parquet_static) - find_package(Parquet REQUIRED) -endif() include(${CMAKE_CURRENT_LIST_DIR}/../cmake/EmbedUi.cmake) include(${CMAKE_CURRENT_LIST_DIR}/../cmake/EmbedManifest.cmake) @@ -21,10 +15,11 @@ target_compile_features(lerobot_source_plugin PRIVATE cxx_std_20) target_compile_options(lerobot_source_plugin PRIVATE ${PJ_WARNING_FLAGS}) target_link_libraries(lerobot_source_plugin PRIVATE plotjuggler_sdk::plugin_sdk nlohmann_json::nlohmann_json - Arrow::arrow_static Parquet::parquet_static pj_arrow_helpers pj_video_demux # lazy per-frame VideoFrame emission (pulls ffmpeg transitively) ) +pj_target_link_arrow(lerobot_source_plugin PRIVATE) +pj_target_link_parquet(lerobot_source_plugin PRIVATE) pj_embed_ui(lerobot_source_plugin UI_FILE ${CMAKE_CURRENT_SOURCE_DIR}/dialog_lerobot.ui HEADER ${CMAKE_CURRENT_BINARY_DIR}/generated/dialog_lerobot_ui.hpp @@ -53,8 +48,10 @@ target_compile_options(lerobot_dataset_model_test PRIVATE ${PJ_WARNING_FLAGS}) target_include_directories(lerobot_dataset_model_test PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) target_link_libraries(lerobot_dataset_model_test PRIVATE plotjuggler_sdk::plugin_sdk plotjuggler_sdk::plugin_host nlohmann_json::nlohmann_json - Arrow::arrow_static Parquet::parquet_static GTest::gtest_main + GTest::gtest_main ) +pj_target_link_arrow(lerobot_dataset_model_test PRIVATE) +pj_target_link_parquet(lerobot_dataset_model_test PRIVATE) add_test(NAME lerobot_dataset_model_test COMMAND lerobot_dataset_model_test) # v3.0 fixture test — exercises the Arrow-backed meta/episodes reader against @@ -65,8 +62,10 @@ target_compile_options(lerobot_dataset_model_v3_test PRIVATE ${PJ_WARNING_FLAGS} target_include_directories(lerobot_dataset_model_v3_test PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) target_link_libraries(lerobot_dataset_model_v3_test PRIVATE plotjuggler_sdk::plugin_sdk plotjuggler_sdk::plugin_host nlohmann_json::nlohmann_json - Arrow::arrow_static Parquet::parquet_static GTest::gtest_main + GTest::gtest_main ) +pj_target_link_arrow(lerobot_dataset_model_v3_test PRIVATE) +pj_target_link_parquet(lerobot_dataset_model_v3_test PRIVATE) add_test(NAME lerobot_dataset_model_v3_test COMMAND lerobot_dataset_model_v3_test) add_executable(lerobot_flatten_plan_test tests/flatten_plan_test.cpp flatten_plan.cpp) @@ -102,8 +101,10 @@ target_compile_options(lerobot_dialog_fanout_test PRIVATE ${PJ_WARNING_FLAGS}) target_include_directories(lerobot_dialog_fanout_test PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) target_link_libraries(lerobot_dialog_fanout_test PRIVATE plotjuggler_sdk::plugin_sdk plotjuggler_sdk::plugin_host nlohmann_json::nlohmann_json - Arrow::arrow_static Parquet::parquet_static GTest::gtest_main + GTest::gtest_main ) +pj_target_link_arrow(lerobot_dialog_fanout_test PRIVATE) +pj_target_link_parquet(lerobot_dialog_fanout_test PRIVATE) # Pull in the generated headers (dialog_lerobot_ui.hpp, lerobot_manifest.hpp) # that lerobot_dialog.hpp transitively includes. target_include_directories(lerobot_dialog_fanout_test PRIVATE From 276a4fddb20ebc21df9affd8a9151072c4532742 Mon Sep 17 00:00:00 2001 From: Davide Faconti Date: Thu, 18 Jun 2026 19:22:25 +0200 Subject: [PATCH 06/23] fix(cmake): pj_target_link_lz4/asio must find their own Conan target MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Unlike the arrow/zstd/paho helpers, lz4/asio only checked for the target. After plugins drop their find_package(lz4/asio), nothing created the Conan target, so the helper fell to pkg-config — failing (asio) or silently linking system liblz4 instead of Conan's static (mcap). Add find_package(... QUIET CONFIG) first. Verified: mcap now links .conan2/.../liblz4.a; conda pkg-config path intact. --- cmake/PjDependencyTargets.cmake | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/cmake/PjDependencyTargets.cmake b/cmake/PjDependencyTargets.cmake index 1663898c..432e84f3 100644 --- a/cmake/PjDependencyTargets.cmake +++ b/cmake/PjDependencyTargets.cmake @@ -47,6 +47,11 @@ function(pj_target_link_zstd tgt vis) endfunction() function(pj_target_link_lz4 tgt vis) + # Conan ships an lz4 CMake config (LZ4::lz4_static); conda-forge lz4-c ships none. + # Find it here (QUIET, not REQUIRED) so plugins don't need their own find_package. + if(NOT TARGET LZ4::lz4_static AND NOT TARGET lz4::lz4) + find_package(lz4 QUIET CONFIG) + endif() if(TARGET LZ4::lz4_static) target_link_libraries(${tgt} ${vis} LZ4::lz4_static) # Conan return() @@ -66,6 +71,11 @@ function(pj_target_link_lz4 tgt vis) endfunction() function(pj_target_link_asio tgt vis) + # Conan ships an asio CMake config (asio::asio); conda-forge asio is header-only + # with none. Find it here (QUIET) so plugins don't need their own find_package. + if(NOT TARGET asio::asio) + find_package(asio QUIET CONFIG) + endif() if(TARGET asio::asio) target_link_libraries(${tgt} ${vis} asio::asio) # Conan return() From e8907f42a102c749ef0a7b506632a7808a58248e Mon Sep 17 00:00:00 2001 From: Davide Faconti Date: Thu, 18 Jun 2026 19:22:26 +0200 Subject: [PATCH 07/23] build(mcap): link lz4/zstd via pj_target_link_* --- data_load_mcap/CMakeLists.txt | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/data_load_mcap/CMakeLists.txt b/data_load_mcap/CMakeLists.txt index 98753a0d..f356e8db 100644 --- a/data_load_mcap/CMakeLists.txt +++ b/data_load_mcap/CMakeLists.txt @@ -1,6 +1,4 @@ find_package(nlohmann_json REQUIRED) -find_package(lz4 REQUIRED) -find_package(zstd REQUIRED) include(${CMAKE_CURRENT_LIST_DIR}/../cmake/EmbedUi.cmake) include(${CMAKE_CURRENT_LIST_DIR}/../cmake/EmbedManifest.cmake) @@ -13,8 +11,10 @@ target_compile_features(mcap_source_plugin PRIVATE cxx_std_20) target_compile_options(mcap_source_plugin PRIVATE ${PJ_WARNING_FLAGS}) target_include_directories(mcap_source_plugin SYSTEM PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/contrib) target_link_libraries(mcap_source_plugin PRIVATE - plotjuggler_sdk::plugin_sdk nlohmann_json::nlohmann_json LZ4::lz4_static zstd::libzstd_static + plotjuggler_sdk::plugin_sdk nlohmann_json::nlohmann_json ) +pj_target_link_lz4(mcap_source_plugin PRIVATE) +pj_target_link_zstd(mcap_source_plugin PRIVATE) pj_embed_ui(mcap_source_plugin UI_FILE ${CMAKE_CURRENT_SOURCE_DIR}/dialog_mcap.ui @@ -40,7 +40,9 @@ target_compile_features(mcap_helpers_test PRIVATE cxx_std_20) target_compile_options(mcap_helpers_test PRIVATE ${PJ_WARNING_FLAGS}) target_include_directories(mcap_helpers_test PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) target_include_directories(mcap_helpers_test SYSTEM PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/contrib) -target_link_libraries(mcap_helpers_test PRIVATE LZ4::lz4_static zstd::libzstd_static GTest::gtest_main) +target_link_libraries(mcap_helpers_test PRIVATE GTest::gtest_main) +pj_target_link_lz4(mcap_helpers_test PRIVATE) +pj_target_link_zstd(mcap_helpers_test PRIVATE) add_test(NAME mcap_helpers_test COMMAND mcap_helpers_test) # --- Unit test for the MessageByteStore (hot/cold lazy byte layer) --- @@ -51,6 +53,8 @@ target_compile_options(message_byte_store_test PRIVATE ${PJ_WARNING_FLAGS}) target_include_directories(message_byte_store_test PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) target_include_directories(message_byte_store_test SYSTEM PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/contrib) target_link_libraries(message_byte_store_test PRIVATE - LZ4::lz4_static zstd::libzstd_static GTest::gtest_main Threads::Threads + GTest::gtest_main Threads::Threads ) +pj_target_link_lz4(message_byte_store_test PRIVATE) +pj_target_link_zstd(message_byte_store_test PRIVATE) add_test(NAME message_byte_store_test COMMAND message_byte_store_test) From 599d82871a322f48f7f02a6d36f8ac43252802de Mon Sep 17 00:00:00 2001 From: Davide Faconti Date: Thu, 18 Jun 2026 19:22:26 +0200 Subject: [PATCH 08/23] build(pj_bridge): link zstd via pj_target_link_zstd + unify pin to 1.5.7 --- data_stream_pj_bridge/CMakeLists.txt | 3 +-- data_stream_pj_bridge/conanfile.py | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/data_stream_pj_bridge/CMakeLists.txt b/data_stream_pj_bridge/CMakeLists.txt index 2d8dbb32..c556aa29 100644 --- a/data_stream_pj_bridge/CMakeLists.txt +++ b/data_stream_pj_bridge/CMakeLists.txt @@ -1,5 +1,4 @@ find_package(nlohmann_json REQUIRED) -find_package(zstd REQUIRED) find_package(ixwebsocket REQUIRED) # Fix ixwebsocket include dirs when built inside the PJ4 tree without conan toolchain. @@ -16,7 +15,7 @@ set_target_properties(pj_bridge_protocol_lib PROPERTIES POSITION_INDEPENDENT_COD target_compile_features(pj_bridge_protocol_lib PUBLIC cxx_std_20) target_compile_options(pj_bridge_protocol_lib PRIVATE ${PJ_WARNING_FLAGS}) target_include_directories(pj_bridge_protocol_lib PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) -target_link_libraries(pj_bridge_protocol_lib PUBLIC zstd::libzstd_static) +pj_target_link_zstd(pj_bridge_protocol_lib PUBLIC) add_library(pj_bridge_source_plugin SHARED pj_bridge_source.cpp) target_compile_features(pj_bridge_source_plugin PRIVATE cxx_std_20) diff --git a/data_stream_pj_bridge/conanfile.py b/data_stream_pj_bridge/conanfile.py index be283854..faf33d6f 100644 --- a/data_stream_pj_bridge/conanfile.py +++ b/data_stream_pj_bridge/conanfile.py @@ -18,7 +18,7 @@ class DataStreamPjBridgeConan(ConanFile): f"plotjuggler_sdk/{_SDK_VERSION}", "gtest/1.17.0", "nlohmann_json/3.12.0", - "zstd/1.5.5", + "zstd/1.5.7", "ixwebsocket/11.4.6", ) default_options = {"*:shared": False} From e076a495028e8bc9ac67989febd5c4dd2b39f900 Mon Sep 17 00:00:00 2001 From: Davide Faconti Date: Thu, 18 Jun 2026 19:22:27 +0200 Subject: [PATCH 09/23] build(udp): link asio via pj_target_link_asio --- data_stream_udp/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data_stream_udp/CMakeLists.txt b/data_stream_udp/CMakeLists.txt index afa88fe8..ebc8d51c 100644 --- a/data_stream_udp/CMakeLists.txt +++ b/data_stream_udp/CMakeLists.txt @@ -1,4 +1,3 @@ -find_package(asio REQUIRED) find_package(nlohmann_json REQUIRED) include(${CMAKE_CURRENT_LIST_DIR}/../cmake/EmbedUi.cmake) @@ -7,7 +6,8 @@ include(${CMAKE_CURRENT_LIST_DIR}/../cmake/EmbedManifest.cmake) add_library(udp_source_plugin SHARED udp_source.cpp) target_compile_features(udp_source_plugin PRIVATE cxx_std_20) target_compile_options(udp_source_plugin PRIVATE ${PJ_WARNING_FLAGS}) -target_link_libraries(udp_source_plugin PRIVATE plotjuggler_sdk::plugin_sdk nlohmann_json::nlohmann_json asio::asio) +target_link_libraries(udp_source_plugin PRIVATE plotjuggler_sdk::plugin_sdk nlohmann_json::nlohmann_json) +pj_target_link_asio(udp_source_plugin PRIVATE) pj_embed_ui(udp_source_plugin UI_FILE ${CMAKE_CURRENT_SOURCE_DIR}/datastream_udp.ui From c7a1c964cc406fa948ddf58c220cfb98fdd91303 Mon Sep 17 00:00:00 2001 From: Davide Faconti Date: Thu, 18 Jun 2026 19:22:27 +0200 Subject: [PATCH 10/23] build(mqtt): link paho-mqtt-cpp via pj_target_link_paho_mqtt --- data_stream_mqtt/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data_stream_mqtt/CMakeLists.txt b/data_stream_mqtt/CMakeLists.txt index 55c522f8..2549db18 100644 --- a/data_stream_mqtt/CMakeLists.txt +++ b/data_stream_mqtt/CMakeLists.txt @@ -1,5 +1,4 @@ find_package(nlohmann_json REQUIRED) -find_package(PahoMqttCpp REQUIRED) include(${CMAKE_CURRENT_LIST_DIR}/../cmake/EmbedUi.cmake) include(${CMAKE_CURRENT_LIST_DIR}/../cmake/EmbedManifest.cmake) @@ -8,8 +7,9 @@ add_library(mqtt_source_plugin SHARED mqtt_source.cpp) target_compile_features(mqtt_source_plugin PRIVATE cxx_std_20) target_compile_options(mqtt_source_plugin PRIVATE ${PJ_WARNING_FLAGS}) target_link_libraries(mqtt_source_plugin PRIVATE - plotjuggler_sdk::plugin_sdk nlohmann_json::nlohmann_json PahoMqttCpp::paho-mqttpp3-static + plotjuggler_sdk::plugin_sdk nlohmann_json::nlohmann_json ) +pj_target_link_paho_mqtt(mqtt_source_plugin PRIVATE) pj_embed_ui(mqtt_source_plugin UI_FILE ${CMAKE_CURRENT_SOURCE_DIR}/datastream_mqtt.ui From 8d6c097d00fac4826108df13406d793c33c0cb02 Mon Sep 17 00:00:00 2001 From: Davide Faconti Date: Thu, 18 Jun 2026 19:22:28 +0200 Subject: [PATCH 11/23] build(mosaico): probe conda ArrowFlight::arrow_flight_shared --- toolbox_mosaico/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/toolbox_mosaico/CMakeLists.txt b/toolbox_mosaico/CMakeLists.txt index 39570b21..3de7018f 100644 --- a/toolbox_mosaico/CMakeLists.txt +++ b/toolbox_mosaico/CMakeLists.txt @@ -14,6 +14,7 @@ find_package(sol2 REQUIRED) # same as PJ3 — instead of failing the whole build. set(MOSAICO_ARROW_FLIGHT_TARGET "") foreach(_candidate + ArrowFlight::arrow_flight_shared ArrowFlight::arrow_flight_static arrow::arrow_flight ArrowFlight::arrow_flight From 1d2a75fc7403889b8bc67d1eecc0f9cc75c6552c Mon Sep 17 00:00:00 2001 From: Davide Faconti Date: Thu, 18 Jun 2026 19:22:28 +0200 Subject: [PATCH 12/23] docs(zmq): note cppzmq needs no dependency normalization --- data_stream_zmq/CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/data_stream_zmq/CMakeLists.txt b/data_stream_zmq/CMakeLists.txt index 8af7b813..28fea706 100644 --- a/data_stream_zmq/CMakeLists.txt +++ b/data_stream_zmq/CMakeLists.txt @@ -1,3 +1,5 @@ +# cppzmq exports the bare `cppzmq` target under both Conan and conda-forge, and +# libsodium is transitive via zeromq — no pj_target_link_* normalization needed. find_package(nlohmann_json REQUIRED) find_package(cppzmq REQUIRED) From 1d7c3281c240d12ba2771d74b2f9362e12099997 Mon Sep 17 00:00:00 2001 From: Davide Faconti Date: Thu, 18 Jun 2026 21:55:43 +0200 Subject: [PATCH 13/23] build(pixi): plugins pixi.toml backbone (sysroot>=2.34, SDK channel, features) --- .gitignore | 2 + pixi.lock | 1800 ++++++++++++++++++++++++++++++++++++++++++++++++++++ pixi.toml | 49 ++ 3 files changed, 1851 insertions(+) create mode 100644 pixi.lock create mode 100644 pixi.toml diff --git a/.gitignore b/.gitignore index 56fa4867..58de393f 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,5 @@ __pycache__/ /conanrunenv-*.sh /deactivate_conanbuild.sh /deactivate_conanrun.sh +/.pixi/ +/build/ diff --git a/pixi.lock b/pixi.lock new file mode 100644 index 00000000..df366b0a --- /dev/null +++ b/pixi.lock @@ -0,0 +1,1800 @@ +version: 7 +platforms: +- name: linux-64 +environments: + default: + channels: + - url: https://conda.anaconda.org/conda-forge/ + - url: file:///home/davide/ws_plotjuggler/plotjuggler_sdk/.worktrees/conda-output/ + packages: + linux-64: + - conda: /home/davide/ws_plotjuggler/plotjuggler_sdk/.worktrees/conda-output/linux-64/plotjuggler_sdk-0.8.0-hd570aad_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/asio-1.36.0-hecca717_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.10.3-hea842a7_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.9.14-h78948cc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.14.0-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.2-haa0cbde_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.7.1-h9cf6be0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.11.0-h6488f85_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.26.3-h3bf836e_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.15.2-h0d2f46f_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.12.5-hb916526_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.4-haa0cbde_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.10-haa0cbde_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.40.0-h41299d8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.747-h6154047_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.16.3-h206d751_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.13.3-h71f81a8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.18.0-h74b55db_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.14.0-hf596fc9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.16.0-h1f05bef_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils-2.45.1-default_h4852527_102.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.45.1-default_hfdba357_102.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_linux-64-2.45.1-default_h4852527_102.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_9.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.6-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-compiler-1.11.0-h4d9bdce_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cmake-4.3.4-hc85cc9f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cppzmq-4.11.0-hbe92c44_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cxx-compiler-1.11.0-hfcd1e18_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc-14.3.0-h6f77f03_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-14.3.0-h235f0fe_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_linux-64-14.3.0-h50e9bb6_27.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gtest-1.17.0-h84d6215_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx-14.3.0-h76987e4_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-14.3.0-h2185e75_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_linux-64-14.3.0-hd240bd5_27.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/howardhinnant_date-3.0.4-h84d6215_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.3-h33c6efd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.3-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.22.2-ha1258a1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45.1-default_hbd61a6d_102.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20260107.1-cxx17_h7b12aa8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-23.0.1-h157cd41_13_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.2.0-hb03c661_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.2.0-hb03c661_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.2.0-hb03c661_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.20.0-hcf29cc6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.8.1-hecca717_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h3435931_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-3.5.0-h8d2ee43_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-3.5.0-hdbdcf42_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.78.1-h1d1128b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h3b78370_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.3-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb03c661_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.68.1-h877daf1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.27.0-h9692893_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.27.0-ha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-23.0.1-h7376487_13_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-6.33.5-h6eeba95_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2025.11.05-h0dc7533_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-14.3.0-h8f1669f_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.22-h280c20c_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.53.2-h0c1763c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hcf80075_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.2.0-hdf11a46_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.22.0-h7d032f7_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.42.2-h5347b49_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.52.1-h280c20c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-16-2.15.3-hca6bf5a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.15.3-h49c6c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.2-h25fd6f3_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lua-5.4.8-h03e1676_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.6-hdb14827_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ninja-1.13.2-h171cf75_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.12.0-h54a6638_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.3-h35e630c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.3.0-h21090e2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/paho-mqtt-c-1.3.16-h519b1b1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/paho-mqtt-cpp-1.6.0-h3b75817_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-6.33.5-py314h61e7c5f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.14.6-habeac84_100_cp314.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2025.11.05-h5301d42_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.3-h853b02a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rhash-1.4.6-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.7.4-h92489ea_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.2-h03e3b7b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sol2-3.5.0-lua54hb700be7_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h366c992_103.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h09e67af_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.2-h25fd6f3_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.6.17-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-6.12.0-he073ed8_6.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-14.3.0-hf649bbc_119.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-14.3.0-h9f08a49_119.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.14-8_cp314.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.39-he3f20f0_6.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda +packages: +- conda: /home/davide/ws_plotjuggler/plotjuggler_sdk/.worktrees/conda-output/linux-64/plotjuggler_sdk-0.8.0-hd570aad_0.conda + subdir: linux-64 + sha256: 552389bb761b267afe2a759760b2fa1558a3e2f8be7687404d6b6bee57251672 + md5: 11272f4cec46e791c61923dcaea26855 + depends: + - nlohmann_json >=3.12,<4 + - libstdcxx >=14 + - libgcc >=14 + channel: file:///home/davide/ws_plotjuggler/plotjuggler_sdk/.worktrees/conda-output + license: Apache-2.0 + size: 795536 + timestamp: 1781804271304 +- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda + build_number: 20 + sha256: 1dd3fffd892081df9726d7eb7e0dea6198962ba775bd88842135a4ddb4deb3c9 + md5: a9f577daf3de00bca7c3c76c0ecbd1de + depends: + - __glibc >=2.17,<3.0.a0 + - libgomp >=7.5.0 + constrains: + - openmp_impl <0.0a0 + license: BSD-3-Clause + license_family: BSD + run_exports: + strong: + - _openmp_mutex >=4.5 + size: 28948 + timestamp: 1770939786096 +- conda: https://conda.anaconda.org/conda-forge/linux-64/asio-1.36.0-hecca717_0.conda + sha256: b7a0bfa9b721a489c7d5aac4511063a12a07a17712738024f48b6c349bcce214 + md5: 990cf124029c93562f88bbbac4fb77fd + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + license: BSL-1.0 + run_exports: {} + size: 446612 + timestamp: 1772744252080 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.10.3-hea842a7_2.conda + sha256: 5b9c20a38fe084b4ffd1f2c64b3797ec6ef9a99e83cc0c1f84e016c9801e3a5c + md5: c463d2dbfb12a208c943165d2a568db4 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - aws-c-io >=0.26.3,<0.26.4.0a0 + - aws-c-cal >=0.9.14,<0.9.15.0a0 + - aws-c-http >=0.11.0,<0.11.1.0a0 + - aws-c-sdkutils >=0.2.4,<0.2.5.0a0 + - aws-c-common >=0.14.0,<0.14.1.0a0 + license: Apache-2.0 + license_family: APACHE + run_exports: + weak: + - aws-c-auth >=0.10.3,<0.10.4.0a0 + size: 134385 + timestamp: 1780598328124 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.9.14-h78948cc_2.conda + sha256: 06a0e2af439b21c94adff8fac5dd66dbda5f182fc80ac635c4903959ea306cbb + md5: fe81235aae00f32df8584267b4f2daf8 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.14.0,<0.14.1.0a0 + - libgcc >=14 + - openssl >=3.5.6,<4.0a0 + license: Apache-2.0 + license_family: Apache + run_exports: + weak: + - aws-c-cal >=0.9.14,<0.9.15.0a0 + size: 57011 + timestamp: 1780566647051 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.14.0-hb03c661_0.conda + sha256: 6d2b33965bf6daeffd3ad336f41410053ff06ed6f2b2ce62c1ec27c0a39b4e7e + md5: f1c005b2e3b618706112ddd7f3af4521 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: Apache-2.0 + license_family: Apache + run_exports: + weak: + - aws-c-common >=0.14.0,<0.14.1.0a0 + size: 242497 + timestamp: 1780160843944 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.2-haa0cbde_2.conda + sha256: 0e4952f9be8de7f281ca7d734a3a8f05ad0db856c6ef1e0897798c4afbcd9a54 + md5: 595911421e25551e36fde7027bf33f38 + depends: + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.14.0,<0.14.1.0a0 + license: Apache-2.0 + license_family: APACHE + run_exports: + weak: + - aws-c-compression >=0.3.2,<0.3.3.0a0 + size: 22007 + timestamp: 1780566239465 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.7.1-h9cf6be0_2.conda + sha256: 6b893ba3173206e17fef1b9c8b683c6f6ecbca7127770c8d0f3ba13d123f8d4c + md5: 2c304605f9074f072c92c0d8de175a1a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - aws-c-common >=0.14.0,<0.14.1.0a0 + - aws-checksums >=0.2.10,<0.2.11.0a0 + - aws-c-io >=0.26.3,<0.26.4.0a0 + license: Apache-2.0 + license_family: APACHE + run_exports: + weak: + - aws-c-event-stream >=0.7.1,<0.7.2.0a0 + size: 59271 + timestamp: 1780586883495 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.11.0-h6488f85_2.conda + sha256: d2b844db1a4dfbc20b5129b7df4a656c1459c5fb16745101bbd802813ba8d411 + md5: da0be1e8cb4a43c876f26d9d812dea06 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - aws-c-compression >=0.3.2,<0.3.3.0a0 + - aws-c-io >=0.26.3,<0.26.4.0a0 + - aws-c-cal >=0.9.14,<0.9.15.0a0 + - aws-c-common >=0.14.0,<0.14.1.0a0 + license: Apache-2.0 + license_family: APACHE + run_exports: + weak: + - aws-c-http >=0.11.0,<0.11.1.0a0 + size: 230293 + timestamp: 1780586764553 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.26.3-h3bf836e_5.conda + sha256: c798005b65bc74d02aba1db01d4d344c4e72662f0beef35fbdd35b4695c197de + md5: 12697e83c2a0e5b93fd03855a70eb360 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - aws-c-cal >=0.9.14,<0.9.15.0a0 + - s2n >=1.7.4,<1.7.5.0a0 + - aws-c-common >=0.14.0,<0.14.1.0a0 + license: Apache-2.0 + license_family: APACHE + run_exports: + weak: + - aws-c-io >=0.26.3,<0.26.4.0a0 + size: 181839 + timestamp: 1781649803811 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.15.2-h0d2f46f_4.conda + sha256: c81aa872f74baf6bd2bb82cc87815895b3a654ef7831177a5c3d851ee27c05ea + md5: c66a882d62800e451a651b9b002f5066 + depends: + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - aws-c-http >=0.11.0,<0.11.1.0a0 + - aws-c-common >=0.14.0,<0.14.1.0a0 + - aws-c-io >=0.26.3,<0.26.4.0a0 + license: Apache-2.0 + license_family: APACHE + run_exports: + weak: + - aws-c-mqtt >=0.15.2,<0.15.3.0a0 + size: 221640 + timestamp: 1780598982374 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.12.5-hb916526_1.conda + sha256: 8f193173f1dccb25ff86a95543db27f0c762cccfe93157b02cf20bd5b4c11a92 + md5: 70bc8e5e8cefd19407423733e7ebf540 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - aws-checksums >=0.2.10,<0.2.11.0a0 + - aws-c-cal >=0.9.14,<0.9.15.0a0 + - openssl >=3.5.6,<4.0a0 + - aws-c-auth >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.14.0,<0.14.1.0a0 + - aws-c-http >=0.11.0,<0.11.1.0a0 + - aws-c-io >=0.26.3,<0.26.4.0a0 + license: Apache-2.0 + license_family: APACHE + run_exports: + weak: + - aws-c-s3 >=0.12.5,<0.12.6.0a0 + size: 153453 + timestamp: 1780609553521 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.4-haa0cbde_6.conda + sha256: 123c4325b16f1f6db95846d51e5e4201399ee29c0325f8b5a8db2e7d732b9151 + md5: 4b66ac29a7e917a629b790c3d239d110 + depends: + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.14.0,<0.14.1.0a0 + license: Apache-2.0 + license_family: APACHE + run_exports: + weak: + - aws-c-sdkutils >=0.2.4,<0.2.5.0a0 + size: 59085 + timestamp: 1780568538653 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.10-haa0cbde_2.conda + sha256: ad49333d96a5f9bcce02752a6515cbb077d7513e358a8fb1a832f4e772d54bac + md5: 5c05a63452bf73c50aa272a6f961c4fc + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - aws-c-common >=0.14.0,<0.14.1.0a0 + license: Apache-2.0 + license_family: APACHE + run_exports: + weak: + - aws-checksums >=0.2.10,<0.2.11.0a0 + size: 101627 + timestamp: 1780568539000 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.40.0-h41299d8_1.conda + sha256: cc8eade570327e97ea458dd47dad9845fce5be070024a3fdaffe5aa4f68d2126 + md5: b4fbfcaea33878c12f0e035f5814280b + depends: + - libstdcxx >=14 + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - aws-c-io >=0.26.3,<0.26.4.0a0 + - aws-c-auth >=0.10.3,<0.10.4.0a0 + - aws-c-http >=0.11.0,<0.11.1.0a0 + - aws-c-event-stream >=0.7.1,<0.7.2.0a0 + - aws-c-mqtt >=0.15.2,<0.15.3.0a0 + - aws-c-s3 >=0.12.5,<0.12.6.0a0 + - aws-c-cal >=0.9.14,<0.9.15.0a0 + - aws-c-sdkutils >=0.2.4,<0.2.5.0a0 + - aws-c-common >=0.14.0,<0.14.1.0a0 + license: Apache-2.0 + license_family: APACHE + run_exports: + weak: + - aws-crt-cpp >=0.40.0,<0.40.1.0a0 + size: 415624 + timestamp: 1780917918279 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.747-h6154047_6.conda + sha256: 224c461787555e92a1111b8a5c7f65db0559da631f05b0e29d06e79a267cc130 + md5: 9096d36ad4522d330bd6a5bdbd458275 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - aws-c-common >=0.14.0,<0.14.1.0a0 + - aws-crt-cpp >=0.40.0,<0.40.1.0a0 + - libzlib >=1.3.2,<2.0a0 + - libcurl >=8.20.0,<9.0a0 + - aws-c-event-stream >=0.7.1,<0.7.2.0a0 + license: Apache-2.0 + license_family: APACHE + run_exports: + weak: + - aws-sdk-cpp >=1.11.747,<1.11.748.0a0 + size: 3624840 + timestamp: 1781003610286 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.16.3-h206d751_0.conda + sha256: fffc66e9be8806a92b314e27129c42b1298ea7065028c9e5d175dacb07829261 + md5: 0cabc152dc8896c3a4c4aebf2b308627 + depends: + - __glibc >=2.17,<3.0.a0 + - libcurl >=8.19.0,<9.0a0 + - libgcc >=14 + - libstdcxx >=14 + - openssl >=3.5.5,<4.0a0 + license: MIT + license_family: MIT + run_exports: + weak: + - azure-core-cpp >=1.16.3,<1.16.4.0a0 + size: 349147 + timestamp: 1775238757304 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.13.3-h71f81a8_2.conda + sha256: ebca774f1ebaa24c150730603b418b33fc7862811a16d097716b1a29f34798c5 + md5: f4fc754ec17176046988c46a54962a8c + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.16.3,<1.16.4.0a0 + - libgcc >=14 + - libstdcxx >=14 + - openssl >=3.5.7,<4.0a0 + license: MIT + license_family: MIT + run_exports: + weak: + - azure-identity-cpp >=1.13.3,<1.13.4.0a0 + size: 250737 + timestamp: 1781268163278 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.18.0-h74b55db_1.conda + sha256: 04bb27dbf1d426b4447b28c3dc92ec01c807fa784eea86ffa1f8c2bd9b9e8076 + md5: 43151a3b0a8e037747d79a82dff9f967 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.16.3,<1.16.4.0a0 + - azure-storage-common-cpp >=12.14.0,<12.14.1.0a0 + - libgcc >=14 + - libstdcxx >=14 + license: MIT + license_family: MIT + run_exports: + weak: + - azure-storage-blobs-cpp >=12.18.0,<12.18.1.0a0 + size: 589716 + timestamp: 1781283775801 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.14.0-hf596fc9_1.conda + sha256: 8a806f9852d280926d7613df548889b49e2a1c5d836385bcb2cedb24e7b08c64 + md5: 7896f4a6ee78538e2d0261e3b36dfa69 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.16.3,<1.16.4.0a0 + - libgcc >=14 + - libstdcxx >=14 + - libxml2 + - libxml2-16 >=2.14.6 + - openssl >=3.5.7,<4.0a0 + license: MIT + license_family: MIT + run_exports: + weak: + - azure-storage-common-cpp >=12.14.0,<12.14.1.0a0 + size: 159394 + timestamp: 1781268171097 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.16.0-h1f05bef_1.conda + sha256: 13e2e6eb942f65bf81e9089bf6b5926534d9245c781288c5270beb3a25c9156b + md5: 70972c9cb0893d6499dd4118415a966b + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.16.3,<1.16.4.0a0 + - azure-storage-blobs-cpp >=12.18.0,<12.18.1.0a0 + - azure-storage-common-cpp >=12.14.0,<12.14.1.0a0 + - libgcc >=14 + - libstdcxx >=14 + license: MIT + license_family: MIT + run_exports: + weak: + - azure-storage-files-datalake-cpp >=12.16.0,<12.16.1.0a0 + size: 308699 + timestamp: 1781538835962 +- conda: https://conda.anaconda.org/conda-forge/linux-64/binutils-2.45.1-default_h4852527_102.conda + sha256: 3c7c5580c1720206f28b7fa3d60d17986b3f32465e63009c14c9ae1ea64f926c + md5: 212fe5f1067445544c99dc1c847d032c + depends: + - binutils_impl_linux-64 >=2.45.1,<2.45.2.0a0 + license: GPL-3.0-only + license_family: GPL + run_exports: {} + size: 35436 + timestamp: 1774197482571 +- conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.45.1-default_hfdba357_102.conda + sha256: 0a7d405064f53b9d91d92515f1460f7906ee5e8523f3cd8973430e81219f4917 + md5: 8165352fdce2d2025bf884dc0ee85700 + depends: + - ld_impl_linux-64 2.45.1 default_hbd61a6d_102 + - sysroot_linux-64 + - zstd >=1.5.7,<1.6.0a0 + license: GPL-3.0-only + license_family: GPL + run_exports: {} + size: 3661455 + timestamp: 1774197460085 +- conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_linux-64-2.45.1-default_h4852527_102.conda + sha256: 78a58d523d072b7f8e591b8f8572822e044b31764ed7e8d170392e7bc6d58339 + md5: 2a307a17309d358c9b42afdd3199ddcc + depends: + - binutils_impl_linux-64 2.45.1 default_hfdba357_102 + license: GPL-3.0-only + license_family: GPL + run_exports: {} + size: 36304 + timestamp: 1774197485247 +- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_9.conda + sha256: 0b75d45f0bba3e95dc693336fa51f40ea28c980131fec438afb7ce6118ed05f6 + md5: d2ffd7602c02f2b316fd921d39876885 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: bzip2-1.0.6 + license_family: BSD + run_exports: + weak: + - bzip2 >=1.0.8,<2.0a0 + size: 260182 + timestamp: 1771350215188 +- conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.6-hb03c661_0.conda + sha256: cc9accf72fa028d31c2a038460787751127317dcfa991f8d1f1babf216bb454e + md5: 920bb03579f15389b9e512095ad995b7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: MIT + license_family: MIT + run_exports: + weak: + - c-ares >=1.34.6,<2.0a0 + size: 207882 + timestamp: 1765214722852 +- conda: https://conda.anaconda.org/conda-forge/linux-64/c-compiler-1.11.0-h4d9bdce_0.conda + sha256: 8e7a40f16400d7839c82581410aa05c1f8324a693c9d50079f8c50dc9fb241f0 + md5: abd85120de1187b0d1ec305c2173c71b + depends: + - binutils + - gcc + - gcc_linux-64 14.* + license: BSD-3-Clause + license_family: BSD + run_exports: {} + size: 6693 + timestamp: 1753098721814 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cmake-4.3.4-hc85cc9f_0.conda + sha256: a3369cbf4c8d77a3398c3c2bb1e7d72af26ac9c655e4753964bdb744bf1e5e8c + md5: aa9174a98942599973baf4c5639e13b5 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - libcurl >=8.20.0,<9.0a0 + - libexpat >=2.8.1,<3.0a0 + - libgcc >=14 + - liblzma >=5.8.3,<6.0a0 + - libstdcxx >=14 + - libuv >=1.52.1,<2.0a0 + - libzlib >=1.3.2,<2.0a0 + - ncurses >=6.6,<7.0a0 + - rhash >=1.4.6,<2.0a0 + - zstd >=1.5.7,<1.6.0a0 + license: BSD-3-Clause + license_family: BSD + run_exports: {} + size: 23168153 + timestamp: 1781778936323 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cppzmq-4.11.0-hbe92c44_0.conda + sha256: 1b64ea828c840a261fd9a066c38059c6e251ddc026e45e70382c75178a207bb9 + md5: 4804e92eea34ea83985a345eaf45ab46 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - zeromq >=4.3.5,<4.4.0a0 + license: MIT + license_family: MIT + run_exports: {} + size: 30502 + timestamp: 1763728886940 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cxx-compiler-1.11.0-hfcd1e18_0.conda + sha256: 3fcc97ae3e89c150401a50a4de58794ffc67b1ed0e1851468fcc376980201e25 + md5: 5da8c935dca9186673987f79cef0b2a5 + depends: + - c-compiler 1.11.0 h4d9bdce_0 + - gxx + - gxx_linux-64 14.* + license: BSD-3-Clause + license_family: BSD + run_exports: {} + size: 6635 + timestamp: 1753098722177 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gcc-14.3.0-h6f77f03_19.conda + sha256: 5c86862941a44b2554e23e623ddb8f18c95474cacf536635e38ee431385b7d4a + md5: 444fafd4d1acdfe80c49b559a2569ba1 + depends: + - gcc_impl_linux-64 14.3.0 h235f0fe_19 + track_features: + - gcc_no_conda_specs + license: BSD-3-Clause + license_family: BSD + run_exports: {} + size: 29453 + timestamp: 1778268811434 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-14.3.0-h235f0fe_19.conda + sha256: 1e2500ca976d4831c953d1c6db7b238d2e6806910b930e3eb631b79ba5c3ba41 + md5: 99936dc616b7ce97b0468759b8a7c64e + depends: + - binutils_impl_linux-64 >=2.45 + - libgcc >=14.3.0 + - libgcc-devel_linux-64 14.3.0 hf649bbc_119 + - libgomp >=14.3.0 + - libsanitizer 14.3.0 h8f1669f_19 + - libstdcxx >=14.3.0 + - libstdcxx-devel_linux-64 14.3.0 h9f08a49_119 + - sysroot_linux-64 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + run_exports: {} + size: 77667192 + timestamp: 1778268558509 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_linux-64-14.3.0-h50e9bb6_27.conda + sha256: d7f427d6db94a5eed2a43b186f8dc17cc1fbeb03517442390a36f1cde02548b0 + md5: 90369fa27fae2f7bf7eaaccc34c793e2 + depends: + - gcc_impl_linux-64 14.3.0.* + - binutils_linux-64 + - sysroot_linux-64 + license: BSD-3-Clause + license_family: BSD + run_exports: + strong: + - libgcc >=14 + size: 29324 + timestamp: 1781279939286 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda + sha256: 6c33bf0c4d8f418546ba9c250db4e4221040936aef8956353bc764d4877bc39a + md5: d411fc29e338efb48c5fd4576d71d881 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + license: BSD-3-Clause + license_family: BSD + run_exports: + weak: + - gflags >=2.2.2,<2.3.0a0 + size: 119654 + timestamp: 1726600001928 +- conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda + sha256: dc824dc1d0aa358e28da2ecbbb9f03d932d976c8dca11214aa1dcdfcbd054ba2 + md5: ff862eebdfeb2fd048ae9dc92510baca + depends: + - gflags >=2.2.2,<2.3.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: BSD-3-Clause + license_family: BSD + run_exports: + weak: + - glog >=0.7.1,<0.8.0a0 + size: 143452 + timestamp: 1718284177264 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gtest-1.17.0-h84d6215_1.conda + sha256: 1f738280f245863c5ac78bcc04bb57266357acda45661c4aa25823030c6fb5db + md5: 55e29b72a71339bc651f9975492db71f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - gmock 1.17.0 + license: BSD-3-Clause + license_family: BSD + run_exports: + weak: + - gtest >=1.17.0,<1.17.1.0a0 + size: 416610 + timestamp: 1748320117187 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gxx-14.3.0-h76987e4_19.conda + sha256: 32ff46517d91ee041287687d65140f7b0e8d08bb3fca141e5f97cc4a7ad7e255 + md5: 1167f6b6bfaf9ba5a450c5c8f3a21795 + depends: + - gcc 14.3.0 h6f77f03_19 + - gxx_impl_linux-64 14.3.0 h2185e75_19 + license: BSD-3-Clause + license_family: BSD + run_exports: {} + size: 28877 + timestamp: 1778268830629 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-14.3.0-h2185e75_19.conda + sha256: a31694c26d6a525d44f81130ebf7b9abe18771b7eaecb2cf93630c0b8b8fb936 + md5: 8b867d053ed89743eeac52c3a50f112d + depends: + - gcc_impl_linux-64 14.3.0 h235f0fe_19 + - libstdcxx-devel_linux-64 14.3.0 h9f08a49_119 + - sysroot_linux-64 + - tzdata + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + run_exports: {} + size: 15235650 + timestamp: 1778268773535 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_linux-64-14.3.0-hd240bd5_27.conda + sha256: cf5a44d14732b79e3c2bc6ebe1dba4f6b9077939f3093c75e36ad340737b5c15 + md5: 41fae38a424bbc78438cfec6a4fde187 + depends: + - gxx_impl_linux-64 14.3.0.* + - gcc_linux-64 ==14.3.0 h50e9bb6_27 + - binutils_linux-64 + - sysroot_linux-64 + license: BSD-3-Clause + license_family: BSD + run_exports: + strong: + - libstdcxx >=14 + - libgcc >=14 + size: 27854 + timestamp: 1781279939286 +- conda: https://conda.anaconda.org/conda-forge/linux-64/howardhinnant_date-3.0.4-h84d6215_0.conda + sha256: a3f9e2998cd1425836a3789497d04bde69a34bf925e99666507606ab402ff83f + md5: 3e9a3d1fc256a46c88ae8bf12fae9e5d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - tzdata + license: MIT + license_family: MIT + run_exports: + weak: + - howardhinnant_date >=3.0.4,<3.1.0a0 + size: 103649 + timestamp: 1748535758929 +- conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.3-h33c6efd_0.conda + sha256: fbf86c4a59c2ed05bbffb2ba25c7ed94f6185ec30ecb691615d42342baa1a16a + md5: c80d8a3b84358cb967fa81e7075fbc8a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + license: MIT + license_family: MIT + run_exports: + weak: + - icu >=78.3,<79.0a0 + size: 12723451 + timestamp: 1773822285671 +- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.3-hb9d3cd8_0.conda + sha256: 0960d06048a7185d3542d850986d807c6e37ca2e644342dd0c72feefcf26c2a4 + md5: b38117a3c920364aff79f870c984b4a3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: LGPL-2.1-or-later + run_exports: + weak: + - keyutils >=1.6.3,<2.0a0 + size: 134088 + timestamp: 1754905959823 +- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.22.2-ha1258a1_0.conda + sha256: 3e307628ca3527448dd1cb14ad7bb9d04d1d28c7d4c5f97ba196ae984571dd25 + md5: fb53fb07ce46a575c5d004bbc96032c2 + depends: + - __glibc >=2.17,<3.0.a0 + - keyutils >=1.6.3,<2.0a0 + - libedit >=3.1.20250104,<3.2.0a0 + - libedit >=3.1.20250104,<4.0a0 + - libgcc >=14 + - libstdcxx >=14 + - openssl >=3.5.5,<4.0a0 + license: MIT + license_family: MIT + run_exports: + weak: + - krb5 >=1.22.2,<1.23.0a0 + size: 1386730 + timestamp: 1769769569681 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45.1-default_hbd61a6d_102.conda + sha256: 3d584956604909ff5df353767f3a2a2f60e07d070b328d109f30ac40cd62df6c + md5: 18335a698559cdbcd86150a48bf54ba6 + depends: + - __glibc >=2.17,<3.0.a0 + - zstd >=1.5.7,<1.6.0a0 + constrains: + - binutils_impl_linux-64 2.45.1 + license: GPL-3.0-only + license_family: GPL + run_exports: {} + size: 728002 + timestamp: 1774197446916 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20260107.1-cxx17_h7b12aa8_0.conda + sha256: a7a4481a4d217a3eadea0ec489826a69070fcc3153f00443aa491ed21527d239 + md5: 6f7b4302263347698fd24565fbf11310 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + constrains: + - libabseil-static =20260107.1=cxx17* + - abseil-cpp =20260107.1 + license: Apache-2.0 + license_family: Apache + run_exports: + weak: + - libabseil >=20260107.1,<20260108.0a0 + - libabseil =*=cxx17* + size: 1384817 + timestamp: 1770863194876 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-23.0.1-h157cd41_13_cpu.conda + build_number: 13 + sha256: 8aca11b209b56414224cb8c3232d7b37adeb7423c430ea0b4a8bfc8c052d669c + md5: 6c57f3e06829e9372e961e026775edf3 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-crt-cpp >=0.40.0,<0.40.1.0a0 + - aws-sdk-cpp >=1.11.747,<1.11.748.0a0 + - azure-core-cpp >=1.16.3,<1.16.4.0a0 + - azure-identity-cpp >=1.13.3,<1.13.4.0a0 + - azure-storage-blobs-cpp >=12.18.0,<12.18.1.0a0 + - azure-storage-files-datalake-cpp >=12.16.0,<12.16.1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - glog >=0.7.1,<0.8.0a0 + - libabseil * cxx17* + - libabseil >=20260107.1,<20260108.0a0 + - libbrotlidec >=1.2.0,<1.3.0a0 + - libbrotlienc >=1.2.0,<1.3.0a0 + - libgcc >=14 + - libgoogle-cloud >=3.5.0,<3.6.0a0 + - libgoogle-cloud-storage >=3.5.0,<3.6.0a0 + - libopentelemetry-cpp >=1.27.0,<1.28.0a0 + - libprotobuf >=6.33.5,<6.33.6.0a0 + - libstdcxx >=14 + - libzlib >=1.3.2,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - orc >=2.3.0,<2.3.1.0a0 + - snappy >=1.2.2,<1.3.0a0 + - zstd >=1.5.7,<1.6.0a0 + constrains: + - parquet-cpp <0.0a0 + - arrow-cpp <0.0a0 + - apache-arrow-proc =*=cpu + license: Apache-2.0 + license_family: APACHE + run_exports: + weak: + - libarrow >=23.0.1,<23.1.0a0 + size: 6495991 + timestamp: 1781582220016 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.2.0-hb03c661_1.conda + sha256: 318f36bd49ca8ad85e6478bd8506c88d82454cc008c1ac1c6bf00a3c42fa610e + md5: 72c8fd1af66bd67bf580645b426513ed + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: MIT + license_family: MIT + run_exports: + weak: + - libbrotlicommon >=1.2.0,<1.3.0a0 + size: 79965 + timestamp: 1764017188531 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.2.0-hb03c661_1.conda + sha256: 12fff21d38f98bc446d82baa890e01fd82e3b750378fedc720ff93522ffb752b + md5: 366b40a69f0ad6072561c1d09301c886 + depends: + - __glibc >=2.17,<3.0.a0 + - libbrotlicommon 1.2.0 hb03c661_1 + - libgcc >=14 + license: MIT + license_family: MIT + run_exports: + weak: + - libbrotlidec >=1.2.0,<1.3.0a0 + size: 34632 + timestamp: 1764017199083 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.2.0-hb03c661_1.conda + sha256: a0c15c79997820bbd3fbc8ecf146f4fe0eca36cc60b62b63ac6cf78857f1dd0d + md5: 4ffbb341c8b616aa2494b6afb26a0c5f + depends: + - __glibc >=2.17,<3.0.a0 + - libbrotlicommon 1.2.0 hb03c661_1 + - libgcc >=14 + license: MIT + license_family: MIT + run_exports: + weak: + - libbrotlienc >=1.2.0,<1.3.0a0 + size: 298378 + timestamp: 1764017210931 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 + sha256: fd1d153962764433fe6233f34a72cdeed5dcf8a883a85769e8295ce940b5b0c5 + md5: c965a5aa0d5c1c37ffc62dff36e28400 + depends: + - libgcc-ng >=9.4.0 + - libstdcxx-ng >=9.4.0 + license: BSD-3-Clause + license_family: BSD + run_exports: + weak: + - libcrc32c >=1.1.2,<1.2.0a0 + size: 20440 + timestamp: 1633683576494 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.20.0-hcf29cc6_0.conda + sha256: 75963a5dd913311f59a35dbd307592f4fa754c4808aff9c33edb430c415e38eb + md5: c3cc2864f82a944bc90a7beb4d3b0e88 + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.22.2,<1.23.0a0 + - libgcc >=14 + - libnghttp2 >=1.68.1,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.2,<2.0a0 + - openssl >=3.5.6,<4.0a0 + - zstd >=1.5.7,<1.6.0a0 + license: curl + license_family: MIT + run_exports: + weak: + - libcurl >=8.20.0,<9.0a0 + size: 468706 + timestamp: 1777461492876 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 + md5: c277e0a4d549b03ac1e9d6cbbe3d017b + depends: + - ncurses + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + license: BSD-2-Clause + license_family: BSD + run_exports: + weak: + - libedit >=3.1.20250104,<3.2.0a0 + size: 134676 + timestamp: 1738479519902 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + sha256: 1cd6048169fa0395af74ed5d8f1716e22c19a81a8a36f934c110ca3ad4dd27b4 + md5: 172bf1cd1ff8629f2b1179945ed45055 + depends: + - libgcc-ng >=12 + license: BSD-2-Clause + license_family: BSD + run_exports: + weak: + - libev >=4.33,<4.34.0a0 + size: 112766 + timestamp: 1702146165126 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda + sha256: 2e14399d81fb348e9d231a82ca4d816bf855206923759b69ad006ba482764131 + md5: a1cfcc585f0c42bf8d5546bb1dfb668d + depends: + - libgcc-ng >=12 + - openssl >=3.1.1,<4.0a0 + license: BSD-3-Clause + license_family: BSD + run_exports: + weak: + - libevent >=2.1.12,<2.1.13.0a0 + size: 427426 + timestamp: 1685725977222 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.8.1-hecca717_1.conda + sha256: 16feffd9ddbbe5b718515d38ee376c685ba95491cd901244e24671d20b952a77 + md5: b24d3c612f71e7aa74158d92106318b2 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + constrains: + - expat 2.8.1.* + license: MIT + license_family: MIT + run_exports: {} + size: 77856 + timestamp: 1781203599810 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h3435931_0.conda + sha256: 31f19b6a88ce40ebc0d5a992c131f57d919f73c0b92cd1617a5bec83f6e961e6 + md5: a360c33a5abe61c07959e449fa1453eb + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: MIT + license_family: MIT + run_exports: + weak: + - libffi >=3.5.2,<3.6.0a0 + size: 58592 + timestamp: 1769456073053 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_19.conda + sha256: 8e0a3b5e41272e5678499b5dfc4cddb673f9e935de01eb0767ce857001229f46 + md5: 57736f29cc2b0ec0b6c2952d3f101b6a + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + constrains: + - libgcc-ng ==15.2.0=*_19 + - libgomp 15.2.0 he0feb66_19 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + run_exports: {} + size: 1041084 + timestamp: 1778269013026 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_19.conda + sha256: 9dcf54adfaa5e861123c2da4f2f0451a685464ea7e5a41ad91cf67b31d658d98 + md5: 331ee9b72b9dff570d56b1302c5ab37d + depends: + - libgcc 15.2.0 he0feb66_19 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + run_exports: + strong: + - libgcc + size: 27694 + timestamp: 1778269016987 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_19.conda + sha256: 5abe4ab9d93f6c9757d654f1969ae2267d4505315c1f2f8fe705fd60af084f1b + md5: faac990cb7aedc7f3a2224f2c9b0c26c + depends: + - __glibc >=2.17,<3.0.a0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + run_exports: + strong: + - _openmp_mutex >=4.5 + size: 603817 + timestamp: 1778268942614 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-3.5.0-h8d2ee43_1.conda + sha256: 42c8ca362013d0378ba58afb61940d23c94e0f7127004190dcd12fe4a3072953 + md5: 8ae0593085ca8148fdbf0bc8f62e79c1 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20260107.1,<20260108.0a0 + - libcurl >=8.20.0,<9.0a0 + - libgcc >=14 + - libgrpc >=1.78.1,<1.79.0a0 + - libopentelemetry-cpp >=1.27.0,<1.28.0a0 + - libprotobuf >=6.33.5,<6.33.6.0a0 + - libstdcxx >=14 + - openssl >=3.5.6,<4.0a0 + constrains: + - libgoogle-cloud 3.5.0 *_1 + license: Apache-2.0 + license_family: Apache + run_exports: + weak: + - libgoogle-cloud >=3.5.0,<3.6.0a0 + size: 2647694 + timestamp: 1780029060448 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-3.5.0-hdbdcf42_1.conda + sha256: 6914f9b0f2d5bb0c5687b880c6c352a2333449d03ce80e6826230675062b57f1 + md5: 6f79d5f72cfcdd3509112233a8aedc2e + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libgcc >=14 + - libgoogle-cloud 3.5.0 h8d2ee43_1 + - libstdcxx >=14 + - libzlib >=1.3.2,<2.0a0 + - openssl + license: Apache-2.0 + license_family: Apache + run_exports: + weak: + - libgoogle-cloud-storage >=3.5.0,<3.6.0a0 + size: 779116 + timestamp: 1780029183339 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.78.1-h1d1128b_0.conda + sha256: 5bb935188999fd70f67996746fd2dca85ec6204289e11695c316772e19451eb8 + md5: b5fb6d6c83f63d83ef2721dca6ff7091 + depends: + - __glibc >=2.17,<3.0.a0 + - c-ares >=1.34.6,<2.0a0 + - libabseil * cxx17* + - libabseil >=20260107.1,<20260108.0a0 + - libgcc >=14 + - libprotobuf >=6.33.5,<6.33.6.0a0 + - libre2-11 >=2025.11.5 + - libstdcxx >=14 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.5.5,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.78.1 + license: Apache-2.0 + license_family: APACHE + run_exports: + weak: + - libgrpc >=1.78.1,<1.79.0a0 + size: 7021360 + timestamp: 1774020290672 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h3b78370_2.conda + sha256: c467851a7312765447155e071752d7bf9bf44d610a5687e32706f480aad2833f + md5: 915f5995e94f60e9a4826e0b0920ee88 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: LGPL-2.1-only + run_exports: + weak: + - libiconv >=1.18,<2.0a0 + size: 790176 + timestamp: 1754908768807 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.3-hb03c661_0.conda + sha256: ec30e52a3c1bf7d0425380a189d209a52baa03f22fb66dd3eb587acaa765bd6d + md5: b88d90cad08e6bc8ad540cb310a761fb + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + constrains: + - xz 5.8.3.* + license: 0BSD + run_exports: + weak: + - liblzma >=5.8.3,<6.0a0 + size: 113478 + timestamp: 1775825492909 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb03c661_1.conda + sha256: fe171ed5cf5959993d43ff72de7596e8ac2853e9021dec0344e583734f1e0843 + md5: 2c21e66f50753a083cbe6b80f38268fa + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: BSD-2-Clause + license_family: BSD + run_exports: {} + size: 92400 + timestamp: 1769482286018 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.68.1-h877daf1_0.conda + sha256: 663444d77a42f2265f54fb8b48c5450bfff4388d9c0f8253dd7855f0d993153f + md5: 2a45e7f8af083626f009645a6481f12d + depends: + - __glibc >=2.17,<3.0.a0 + - c-ares >=1.34.6,<2.0a0 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libgcc >=14 + - libstdcxx >=14 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.5.5,<4.0a0 + license: MIT + license_family: MIT + run_exports: + weak: + - libnghttp2 >=1.68.1,<2.0a0 + size: 663344 + timestamp: 1773854035739 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.27.0-h9692893_0.conda + sha256: 247b99f5dd32363d7231c9c5a6ad113e0b58ad3e85d68227999b5933d5005a6d + md5: 2a44700a9857b49a3fe72aca643d0921 + depends: + - libabseil * cxx17* + - libabseil >=20260107.1,<20260108.0a0 + - libcurl >=8.20.0,<9.0a0 + - libgrpc >=1.78.1,<1.79.0a0 + - libopentelemetry-cpp-headers 1.27.0 ha770c72_0 + - libprotobuf >=6.33.5,<6.33.6.0a0 + - libzlib >=1.3.2,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.27.0 + license: Apache-2.0 + license_family: APACHE + run_exports: + weak: + - libopentelemetry-cpp >=1.27.0,<1.28.0a0 + size: 943253 + timestamp: 1778721388532 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.27.0-ha770c72_0.conda + sha256: 4a55bd84d166395a117592bb6139cf645eb402416987b856b41f96ba7b9d15d6 + md5: f8dcb0cff8f84f428bf76f1169bf50a7 + license: Apache-2.0 + license_family: APACHE + run_exports: {} + size: 392177 + timestamp: 1778721367721 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-23.0.1-h7376487_13_cpu.conda + build_number: 13 + sha256: aa2a9989e79da6f85245696fbcaefd907618b23ab1d8d434f8a32ba60081300c + md5: a26f42d619bdcbb3b6ec5666a062c2fa + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 23.0.1 h157cd41_13_cpu + - libgcc >=14 + - libstdcxx >=14 + - libthrift >=0.22.0,<0.22.1.0a0 + - openssl >=3.5.7,<4.0a0 + license: Apache-2.0 + license_family: APACHE + run_exports: + weak: + - libparquet >=23.0.1,<23.1.0a0 + size: 1389013 + timestamp: 1781582493268 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-6.33.5-h6eeba95_1.conda + sha256: a59aa3f076d5710c618ca8fd12d9cd8211d8b738f6b0e0c98517c0162f23a5de + md5: 7a4b11f3dd7374f1991a4088390d07c1 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20260107.1,<20260108.0a0 + - libgcc >=14 + - libstdcxx >=14 + - libzlib >=1.3.2,<2.0a0 + license: BSD-3-Clause + license_family: BSD + run_exports: + weak: + - libprotobuf >=6.33.5,<6.33.6.0a0 + size: 3675765 + timestamp: 1780003831209 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2025.11.05-h0dc7533_1.conda + sha256: 138fc85321a8c0731c1715688b38e2be4fb71db349c9ab25f685315095ae70ff + md5: ced7f10b6cfb4389385556f47c0ad949 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20260107.0,<20260108.0a0 + - libgcc >=14 + - libstdcxx >=14 + constrains: + - re2 2025.11.05.* + license: BSD-3-Clause + license_family: BSD + run_exports: + weak: + - libre2-11 >=2025.11.5 + size: 213122 + timestamp: 1768190028309 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-14.3.0-h8f1669f_19.conda + sha256: 8766de5423b0a510e2b1bdd1963d0554bdad2119f3e31d8fbd4189af434235ca + md5: 007796e5a595bbc7df4a5e1580d72e1a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14.3.0 + - libstdcxx >=14.3.0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + run_exports: + weak: + - libsanitizer 14.3.0 + size: 7947790 + timestamp: 1778268494844 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.22-h280c20c_1.conda + sha256: b677bbf1c339d894757c3dcfbb2f88649e499e4991d70ae09a1466da9a6c92d6 + md5: 965e4d531b588b2e42f66fd8e48b056c + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: ISC + run_exports: + weak: + - libsodium >=1.0.22,<1.0.23.0a0 + size: 269272 + timestamp: 1779163468406 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.53.2-h0c1763c_0.conda + sha256: 1ab603b6ec93933e76027e1f23b21b22b858ba1b56f1e1695ef6fe5e80cb7358 + md5: 062b0ac602fb0adf250e3dfa86f221c4 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libzlib >=1.3.2,<2.0a0 + license: blessing + run_exports: + weak: + - libsqlite >=3.53.2,<4.0a0 + size: 957849 + timestamp: 1780574429573 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hcf80075_0.conda + sha256: fa39bfd69228a13e553bd24601332b7cfeb30ca11a3ca50bb028108fe90a7661 + md5: eecce068c7e4eddeb169591baac20ac4 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.5.0,<4.0a0 + license: BSD-3-Clause + license_family: BSD + run_exports: + weak: + - libssh2 >=1.11.1,<2.0a0 + size: 304790 + timestamp: 1745608545575 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_19.conda + sha256: dff1058c76ec6b8759e41cefa2508162d00e4a5e6721aa68ec3fd10094e702dc + md5: 5794b3bdc38177caf969dabd3af08549 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc 15.2.0 he0feb66_19 + constrains: + - libstdcxx-ng ==15.2.0=*_19 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + run_exports: {} + size: 5852044 + timestamp: 1778269036376 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.2.0-hdf11a46_19.conda + sha256: 0672b6b6e1791c92e8eccad58081a99d614fcf82bca5841f9dfa3c3e658f83b9 + md5: e5ce228e579726c07255dbf90dc62101 + depends: + - libstdcxx 15.2.0 h934c35e_19 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + run_exports: + strong: + - libstdcxx + size: 27776 + timestamp: 1778269074600 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.22.0-h7d032f7_2.conda + sha256: af6025aa4a4fc3f4e71334000d2739d927e2f678607b109ec630cc17d716918a + md5: b6e326fbe1e3948da50ec29cee0380db + depends: + - __glibc >=2.17,<3.0.a0 + - libevent >=2.1.12,<2.1.13.0a0 + - libgcc >=14 + - libstdcxx >=14 + - libzlib >=1.3.2,<2.0a0 + - openssl >=3.5.6,<4.0a0 + license: Apache-2.0 + license_family: APACHE + run_exports: + weak: + - libthrift >=0.22.0,<0.22.1.0a0 + size: 423861 + timestamp: 1777018957474 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.42.2-h5347b49_0.conda + sha256: 9b1bdce27a7e31f7d241aeecff67a1f3101d52a2b1e33ccc2cdf2613072bf81f + md5: 01bb81d12c957de066ea7362007df642 + depends: + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + license: BSD-3-Clause + license_family: BSD + run_exports: + weak: + - libuuid >=2.42.2,<3.0a0 + size: 40017 + timestamp: 1781625522462 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.52.1-h280c20c_0.conda + sha256: e28e4519223f78b3163599ca89c3f2d80bfb53e907e7fc74e806e60d1efa578b + md5: 4e33d49bf4fc853855a3b00643aa5484 + depends: + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + license: MIT + license_family: MIT + run_exports: + weak: + - libuv >=1.52.1,<2.0a0 + size: 419935 + timestamp: 1779396012261 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-16-2.15.3-hca6bf5a_0.conda + sha256: 3d44f737c5ae52d5af32682cc1530df433f401f8e58a7533926536244127572a + md5: e79d2c2f24b027aa8d5ab1b1ba3061e7 + depends: + - __glibc >=2.17,<3.0.a0 + - icu >=78.3,<79.0a0 + - libgcc >=14 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.8.3,<6.0a0 + - libzlib >=1.3.2,<2.0a0 + constrains: + - libxml2 2.15.3 + license: MIT + license_family: MIT + run_exports: {} + size: 559775 + timestamp: 1776376739004 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.15.3-h49c6c72_0.conda + sha256: 3bc5551720c58591f6ea1146f7d1539c734ed1c40e7b9f5cb8cb7e900c509aba + md5: 995d8c8bad2a3cc8db14675a153dec2b + depends: + - __glibc >=2.17,<3.0.a0 + - icu >=78.3,<79.0a0 + - libgcc >=14 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.8.3,<6.0a0 + - libxml2-16 2.15.3 hca6bf5a_0 + - libzlib >=1.3.2,<2.0a0 + license: MIT + license_family: MIT + run_exports: + weak: + - libxml2 + - libxml2-16 >=2.15.3 + size: 46810 + timestamp: 1776376751152 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.2-h25fd6f3_2.conda + sha256: 55044c403570f0dc26e6364de4dc5368e5f3fc7ff103e867c487e2b5ab2bcda9 + md5: d87ff7921124eccd67248aa483c23fec + depends: + - __glibc >=2.17,<3.0.a0 + constrains: + - zlib 1.3.2 *_2 + license: Zlib + license_family: Other + run_exports: + weak: + - libzlib >=1.3.2,<2.0a0 + size: 63629 + timestamp: 1774072609062 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lua-5.4.8-h03e1676_1.conda + sha256: 17b4a4ade5dd20f98d2403e70c88454f9d8dae49c1af8895d13556d3602a03bf + md5: 4d91571b5f1a5eee5fc4d373c47e0247 + depends: + - readline + - ncurses + - libgcc >=13 + - __glibc >=2.17,<3.0.a0 + - ncurses >=6.5,<7.0a0 + - readline >=8.2,<9.0a0 + license: MIT + license_family: MIT + run_exports: + weak: + - lua >=5.4.8,<5.5.0a0 + size: 230061 + timestamp: 1750173784978 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda + sha256: 47326f811392a5fd3055f0f773036c392d26fdb32e4d8e7a8197eed951489346 + md5: 9de5350a85c4a20c685259b889aa6393 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + license: BSD-2-Clause + license_family: BSD + run_exports: + weak: + - lz4-c >=1.10.0,<1.11.0a0 + size: 167055 + timestamp: 1733741040117 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.6-hdb14827_0.conda + sha256: fc89f74bbe362fb29fa3c037697a89bec140b346a2469a90f7936d1d7ea4d8a3 + md5: fc21868a1a5aacc937e7a18747acb8a5 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: X11 AND BSD-3-Clause + run_exports: + weak: + - ncurses >=6.6,<7.0a0 + size: 918956 + timestamp: 1777422145199 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ninja-1.13.2-h171cf75_0.conda + sha256: 6f7d59dbec0a7b00bf5d103a4306e8886678b796ff2151b62452d4582b2a53fb + md5: b518e9e92493721281a60fa975bddc65 + depends: + - libstdcxx >=14 + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + license: Apache-2.0 + license_family: APACHE + run_exports: {} + size: 186323 + timestamp: 1763688260928 +- conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.12.0-h54a6638_1.conda + sha256: fd2cbd8dfc006c72f45843672664a8e4b99b2f8137654eaae8c3d46dca776f63 + md5: 16c2a0e9c4a166e53632cfca4f68d020 + constrains: + - nlohmann_json-abi ==3.12.0 + license: MIT + license_family: MIT + run_exports: {} + size: 136216 + timestamp: 1758194284857 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.3-h35e630c_0.conda + sha256: d48f5c22b9897c01e4dff3680f1f57ceb02711ab9c62f74339b080419dfad34b + md5: 79dd2074b5cd5c5c6b2930514a11e22d + depends: + - __glibc >=2.17,<3.0.a0 + - ca-certificates + - libgcc >=14 + license: Apache-2.0 + license_family: Apache + run_exports: + weak: + - openssl >=3.6.3,<4.0a0 + size: 3159683 + timestamp: 1781069855778 +- conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.3.0-h21090e2_0.conda + sha256: a60c2578c8422e0c67206d269767feb4d3e627511558b6866e5daf2231d5214d + md5: 8027fce94fdfdf2e54f9d18cbae496df + depends: + - tzdata + - libstdcxx >=14 + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - lz4-c >=1.10.0,<1.11.0a0 + - snappy >=1.2.2,<1.3.0a0 + - libabseil >=20260107.1,<20260108.0a0 + - libabseil * cxx17* + - libprotobuf >=6.33.5,<6.33.6.0a0 + - zstd >=1.5.7,<1.6.0a0 + - libzlib >=1.3.1,<2.0a0 + license: Apache-2.0 + license_family: APACHE + run_exports: + weak: + - orc >=2.3.0,<2.3.1.0a0 + size: 1468651 + timestamp: 1773230208923 +- conda: https://conda.anaconda.org/conda-forge/linux-64/paho-mqtt-c-1.3.16-h519b1b1_0.conda + sha256: 6614ad409c881769d4368f55b298f5ee7e40e76ba4efc497da28cc6f5bb26d66 + md5: 5020a4af036e873a7e10832d689adccd + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - openssl >=3.5.6,<4.0a0 + license: EPL-2.0 AND BSD-3-Clause + run_exports: + weak: + - paho-mqtt-c >=1.3.16,<1.4.0a0 + size: 245318 + timestamp: 1776719361553 +- conda: https://conda.anaconda.org/conda-forge/linux-64/paho-mqtt-cpp-1.6.0-h3b75817_0.conda + sha256: 1cf7b7ad41970681763a5cd0b9b7a594e2e297e8fb78aa69839acec87112f5d7 + md5: 870ec7824ee40cf565c8bac7a18d1ab0 + depends: + - __glibc >=2.17,<3.0.a0 + - libstdcxx >=14 + - libgcc >=14 + - openssl >=3.5.6,<4.0a0 + - paho-mqtt-c >=1.3.16,<1.4.0a0 + license: EPL-2.0 AND BSD-3-Clause + run_exports: + weak: + - paho-mqtt-cpp >=1.6.0,<1.7.0a0 + size: 200776 + timestamp: 1778053287807 +- conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda + sha256: 013669433eb447548f21c3c6b16b2ed64356f726b5f77c1b39d5ba17a8a4b8bc + md5: a83f6a2fdc079e643237887a37460668 + depends: + - __glibc >=2.17,<3.0.a0 + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - zlib + license: MIT + license_family: MIT + run_exports: + weak: + - prometheus-cpp >=1.3.0,<1.4.0a0 + size: 199544 + timestamp: 1730769112346 +- conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-6.33.5-py314h61e7c5f_2.conda + sha256: ceed4e3b1d13b0f200afbf01f7e314111cce85e116b8db512ff940571ba64104 + md5: 418826d23f3fa6354700b4f31c5b87ba + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20260107.1,<20260108.0a0 + - libgcc >=14 + - libstdcxx >=14 + - libzlib >=1.3.1,<2.0a0 + - python >=3.14,<3.15.0a0 + - python_abi 3.14.* *_cp314 + constrains: + - libprotobuf 6.33.5 + license: BSD-3-Clause + license_family: BSD + run_exports: {} + size: 491842 + timestamp: 1773265994654 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.14.6-habeac84_100_cp314.conda + build_number: 100 + sha256: 6d28ac2b061179deb434d3d57afa98ffd20ec3c5d44ab8048a1ca33424b22d38 + md5: 0b9b2f83b5b600e1ac38becde8d0dd44 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.8.1,<3.0a0 + - libffi >=3.5.2,<3.6.0a0 + - libgcc >=14 + - liblzma >=5.8.3,<6.0a0 + - libmpdec >=4.0.0,<5.0a0 + - libsqlite >=3.53.2,<4.0a0 + - libuuid >=2.42.1,<3.0a0 + - libzlib >=1.3.2,<2.0a0 + - ncurses >=6.6,<7.0a0 + - openssl >=3.5.7,<4.0a0 + - python_abi 3.14.* *_cp314 + - readline >=8.3,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + - zstd >=1.5.7,<1.6.0a0 + license: Python-2.0 + run_exports: + weak: + - python_abi 3.14.* *_cp314 + noarch: + - python + size: 36717183 + timestamp: 1781255094700 + python_site_packages_path: lib/python3.14/site-packages +- conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2025.11.05-h5301d42_1.conda + sha256: 3fc684b81631348540e9a42f6768b871dfeab532d3f47d5c341f1f83e2a2b2b2 + md5: 66a715bc01c77d43aca1f9fcb13dde3c + depends: + - libre2-11 2025.11.05 h0dc7533_1 + license: BSD-3-Clause + license_family: BSD + run_exports: + weak: + - libre2-11 >=2025.11.5 + - re2 + size: 27469 + timestamp: 1768190052132 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.3-h853b02a_0.conda + sha256: 12ffde5a6f958e285aa22c191ca01bbd3d6e710aa852e00618fa6ddc59149002 + md5: d7d95fc8287ea7bf33e0e7116d2b95ec + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - ncurses >=6.5,<7.0a0 + license: GPL-3.0-only + license_family: GPL + run_exports: + weak: + - readline >=8.3,<9.0a0 + size: 345073 + timestamp: 1765813471974 +- conda: https://conda.anaconda.org/conda-forge/linux-64/rhash-1.4.6-hb9d3cd8_1.conda + sha256: d5c73079c1dd2c2a313c3bfd81c73dbd066b7eb08d213778c8bff520091ae894 + md5: c1c9b02933fdb2cfb791d936c20e887e + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + run_exports: + weak: + - rhash >=1.4.6,<2.0a0 + size: 193775 + timestamp: 1748644872902 +- conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.7.4-h92489ea_1.conda + sha256: de0bb8c7526684c9927cc687d4d07abe09d023a3ec950cfcd61089b495e2e616 + md5: a20feedf58ce5441b115cebf284a9a75 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - openssl >=3.5.7,<4.0a0 + license: Apache-2.0 + license_family: Apache + run_exports: + weak: + - s2n >=1.7.4,<1.7.5.0a0 + size: 392550 + timestamp: 1781634128636 +- conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.2-h03e3b7b_1.conda + sha256: 48f3f6a76c34b2cfe80de9ce7f2283ecb55d5ed47367ba91e8bb8104e12b8f11 + md5: 98b6c9dc80eb87b2519b97bcf7e578dd + depends: + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - libstdcxx >=14 + - libgcc >=14 + license: BSD-3-Clause + license_family: BSD + run_exports: + weak: + - snappy >=1.2.2,<1.3.0a0 + size: 45829 + timestamp: 1762948049098 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sol2-3.5.0-lua54hb700be7_0.conda + sha256: b7c7dc3bbb83f918f2f82ec1a536b1e78f50a825ff45e8058928046573879c35 + md5: a406d0d177a8459a017d8e8481d87424 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - lua >=5.4.8,<5.5.0a0 + license: MIT + license_family: MIT + run_exports: {} + size: 150813 + timestamp: 1762617014065 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h366c992_103.conda + sha256: cafeec44494f842ffeca27e9c8b0c27ed714f93ac77ddadc6aaf726b5554ebac + md5: cffd3bdd58090148f4cfcd831f4b26ab + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libzlib >=1.3.1,<2.0a0 + constrains: + - xorg-libx11 >=1.8.12,<2.0a0 + license: TCL + license_family: BSD + run_exports: + weak: + - tk >=8.6.13,<8.7.0a0 + size: 3301196 + timestamp: 1769460227866 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h09e67af_11.conda + sha256: dc9f28dedcb5f35a127fad2d847674d2833369dd616d294e423b8997df31d8a8 + md5: 96b08867e21d4694fa5c2c226e6581b0 + depends: + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - libstdcxx >=14 + - krb5 >=1.22.2,<1.23.0a0 + - libsodium >=1.0.22,<1.0.23.0a0 + license: MPL-2.0 + license_family: MOZILLA + run_exports: + weak: + - zeromq >=4.3.5,<4.4.0a0 + size: 311184 + timestamp: 1779123989774 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.2-h25fd6f3_2.conda + sha256: 245c9ee8d688e23661b95e3c6dd7272ca936fabc03d423cdb3cdee1bbcf9f2f2 + md5: c2a01a08fc991620a74b32420e97868a + depends: + - __glibc >=2.17,<3.0.a0 + - libzlib 1.3.2 h25fd6f3_2 + license: Zlib + license_family: Other + run_exports: + weak: + - libzlib >=1.3.2,<2.0a0 + size: 95931 + timestamp: 1774072620848 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda + sha256: 68f0206ca6e98fea941e5717cec780ed2873ffabc0e1ed34428c061e2c6268c7 + md5: 4a13eeac0b5c8e5b8ab496e6c4ddd829 + depends: + - __glibc >=2.17,<3.0.a0 + - libzlib >=1.3.1,<2.0a0 + license: BSD-3-Clause + license_family: BSD + run_exports: + weak: + - zstd >=1.5.7,<1.6.0a0 + size: 601375 + timestamp: 1764777111296 +- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.6.17-hbd8a1cb_0.conda + sha256: f8e3c730fa14ee3f170493779f06522c4acf89169f43db4f039727709b6419cf + md5: a9965dd99f683c5f444428f896635716 + depends: + - __unix + license: ISC + run_exports: {} + size: 128866 + timestamp: 1781708962055 +- conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-6.12.0-he073ed8_6.conda + sha256: 73b11f31db6c9ebe63d900334fa4f46859aa1ddd8f37cfa5f25a043e0a59253c + md5: ad5a27ffc9350af2624927dd79edf2be + constrains: + - sysroot_linux-64 ==2.39 + license: LGPL-2.0-or-later AND LGPL-2.0-or-later WITH exceptions AND GPL-2.0-or-later + license_family: GPL + run_exports: {} + size: 1539218 + timestamp: 1772553639444 +- conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-14.3.0-hf649bbc_119.conda + sha256: e1815bb11d5abe886979e95889d84310d83d078d36a3567ca67cbf57a3876d88 + md5: 7d517e32d656a8880d98c0e4fc8ddc2c + depends: + - __unix + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + run_exports: {} + size: 3091520 + timestamp: 1778268364856 +- conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-14.3.0-h9f08a49_119.conda + sha256: 1b4263aa5d8c8c659e8e38b66868f42867347e0c8941513ee77269afc00a5186 + md5: d1a866495b9654ccfef5392b8541dc58 + depends: + - __unix + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + run_exports: {} + size: 20199810 + timestamp: 1778268389428 +- conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.14-8_cp314.conda + build_number: 8 + sha256: ad6d2e9ac39751cc0529dd1566a26751a0bf2542adb0c232533d32e176e21db5 + md5: 0539938c55b6b1a59b560e843ad864a4 + constrains: + - python 3.14.* *_cp314 + license: BSD-3-Clause + license_family: BSD + run_exports: {} + size: 6989 + timestamp: 1752805904792 +- conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.39-he3f20f0_6.conda + sha256: bcbe694a9660abbe76ba25fa1fca3127b8752fc29b733de72a904c21d144ace1 + md5: f466e0c4e02d2faf778aaa2f24085934 + depends: + - kernel-headers_linux-64 6.12.0 he073ed8_6 + - tzdata + track_features: + - sysroot_linux-64_2.39 + - sysroot_linux-64_2.39_feature_2 + - sysroot_linux-64_2.39_feature_3 + license: LGPL-2.0-or-later AND LGPL-2.0-or-later WITH exceptions AND GPL-2.0-or-later + license_family: GPL + run_exports: + strong: + - __glibc >=2.39,<3.0.a0 + size: 42048039 + timestamp: 1772553663017 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda + sha256: 1d30098909076af33a35017eed6f2953af1c769e273a0626a04722ac4acaba3c + md5: ad659d0a2b3e47e38d829aa8cad2d610 + license: LicenseRef-Public-Domain + run_exports: {} + size: 119135 + timestamp: 1767016325805 diff --git a/pixi.toml b/pixi.toml new file mode 100644 index 00000000..b07ffb02 --- /dev/null +++ b/pixi.toml @@ -0,0 +1,49 @@ +[workspace] +name = "pj-official-plugins" +# NOTE: switch the SDK channel to "https://prefix.dev/plotjuggler" once the SDK +# conda package is published (Phase 1 Task 5). Local channel for pre-publish dev: +channels = [ + "conda-forge", + "file:///home/davide/ws_plotjuggler/plotjuggler_sdk/.worktrees/conda-output", +] +platforms = ["linux-64"] + +[dependencies] +cmake = ">=3.22" +ninja = "*" +cxx-compiler = "*" +# CRITICAL: conda libstdcxx 15 references __libc_single_threaded (glibc 2.32+); +# the default sysroot 2.28 lacks it -> message-parser plugins fail to link. +sysroot_linux-64 = ">=2.34" +plotjuggler_sdk = "0.8.*" +gtest = "1.17.*" +nlohmann_json = "3.12.*" + +[feature.datetime.dependencies] +howardhinnant_date = "3.0.*" +[feature.serialization.dependencies] +libarrow = ">=23,<24" +libparquet = ">=23,<24" +[feature.compression.dependencies] +zstd = "1.5.*" +lz4-c = "1.10.*" +[feature.protobuf.dependencies] +libprotobuf = "6.33.*" +protobuf = "6.33.*" +[feature.mqtt.dependencies] +paho-mqtt-cpp = ">=1.6,<1.7" +[feature.zmq.dependencies] +cppzmq = "4.11.*" +zeromq = "4.3.*" +libsodium = ">=1.0.20" +[feature.udp.dependencies] +asio = ">=1.28" +[feature.scripting.dependencies] +lua = ">=5.4,<5.5" +sol2 = "3.5.*" + +[environments] +default = { features = ["datetime", "serialization", "compression", "protobuf", "mqtt", "zmq", "udp", "scripting"], solve-group = "main" } + +[tasks] +plugin = "cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=$CONDA_PREFIX -DPJ_BUILD_PLUGIN=$PJ_PLUGIN && cmake --build build && ctest --test-dir build --output-on-failure" From eecc661e9700823f615c2987dd0f97afe9f05f21 Mon Sep 17 00:00:00 2001 From: Davide Faconti Date: Thu, 18 Jun 2026 22:00:54 +0200 Subject: [PATCH 14/23] build(cmake): add pj_target_link_lua (conda lua ships only builtin FindLua) --- cmake/PjDependencyTargets.cmake | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/cmake/PjDependencyTargets.cmake b/cmake/PjDependencyTargets.cmake index 432e84f3..687edd66 100644 --- a/cmake/PjDependencyTargets.cmake +++ b/cmake/PjDependencyTargets.cmake @@ -100,6 +100,26 @@ function(pj_target_link_paho_mqtt tgt vis) endif() endfunction() +function(pj_target_link_lua tgt vis) + if(NOT TARGET lua::lua) + find_package(lua QUIET CONFIG) # Conan provides lua::lua + endif() + if(TARGET lua::lua) + target_link_libraries(${tgt} ${vis} lua::lua) # Conan + return() + endif() + # conda-forge lua ships only the builtin FindLua module (LUA_LIBRARIES / + # LUA_INCLUDE_DIR) with no namespaced target — wrap it in an imported target. + if(NOT TARGET pj_lua) + find_package(Lua REQUIRED) + add_library(pj_lua INTERFACE IMPORTED GLOBAL) + set_target_properties(pj_lua PROPERTIES + INTERFACE_LINK_LIBRARIES "${LUA_LIBRARIES}" + INTERFACE_INCLUDE_DIRECTORIES "${LUA_INCLUDE_DIR}") + endif() + target_link_libraries(${tgt} ${vis} pj_lua) +endfunction() + # Availability probe for the graceful-skip in common/arrow_helpers (some build # configs, e.g. the ROS2 proxy leg, have no Arrow dep at all). function(pj_arrow_available out) From 58e82fc29d23a311ccf7d2efdc16f05c1810da40 Mon Sep 17 00:00:00 2001 From: Davide Faconti Date: Thu, 18 Jun 2026 22:00:55 +0200 Subject: [PATCH 15/23] build(protobuf): test links libprotobuf/libprotoc (conda has no protobuf::protobuf umbrella) --- parser_protobuf/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/parser_protobuf/CMakeLists.txt b/parser_protobuf/CMakeLists.txt index 8ab8130f..3720998d 100644 --- a/parser_protobuf/CMakeLists.txt +++ b/parser_protobuf/CMakeLists.txt @@ -52,7 +52,7 @@ target_compile_definitions(protobuf_parser_test PRIVATE target_link_libraries(protobuf_parser_test PRIVATE plotjuggler_sdk::plugin_sdk plotjuggler_sdk::plugin_host - protobuf::protobuf + protobuf::libprotobuf protobuf::libprotoc pj_laser_scan GTest::gtest_main ) From 0ebabd0263f2d55af226695fa63143a94203e056 Mon Sep 17 00:00:00 2001 From: Davide Faconti Date: Thu, 18 Jun 2026 22:00:55 +0200 Subject: [PATCH 16/23] build(colormap): link lua via pj_target_link_lua --- toolbox_colormap/CMakeLists.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/toolbox_colormap/CMakeLists.txt b/toolbox_colormap/CMakeLists.txt index 94dcd8f6..f3149f0b 100644 --- a/toolbox_colormap/CMakeLists.txt +++ b/toolbox_colormap/CMakeLists.txt @@ -1,5 +1,4 @@ find_package(nlohmann_json REQUIRED) -find_package(lua REQUIRED) find_package(sol2 REQUIRED) include(${CMAKE_CURRENT_LIST_DIR}/../cmake/EmbedUi.cmake) @@ -12,9 +11,9 @@ target_compile_options(toolbox_colormap_plugin PRIVATE ${PJ_WARNING_FLAGS}) target_link_libraries(toolbox_colormap_plugin PRIVATE plotjuggler_sdk::plugin_sdk nlohmann_json::nlohmann_json - lua::lua sol2::sol2 ) +pj_target_link_lua(toolbox_colormap_plugin PRIVATE) pj_embed_ui(toolbox_colormap_plugin UI_FILE ${CMAKE_CURRENT_SOURCE_DIR}/colormap_dialog.ui From 8704d432136c8e5b9071c84a1856bcbdb0b2af2c Mon Sep 17 00:00:00 2001 From: Davide Faconti Date: Thu, 18 Jun 2026 22:17:46 +0200 Subject: [PATCH 17/23] build(fft): vendor kissfft 131.1.0 (absent on conda-forge) Compile its C sources as C++ (root project is CXX-only; kissfft headers have extern "C" guards so linkage stays correct). kissfft::kissfft ALIAS keeps the plugin link unchanged; Conan kissfft dep dropped. Builds+tests pass under both Conan and conda. --- toolbox_fft/CMakeLists.txt | 19 +- toolbox_fft/conanfile.py | 1 - toolbox_fft/contrib/kissfft/COPYING | 11 + toolbox_fft/contrib/kissfft/_kiss_fft_guts.h | 167 ++++++++ toolbox_fft/contrib/kissfft/kiss_fft.c | 420 +++++++++++++++++++ toolbox_fft/contrib/kissfft/kiss_fft.h | 160 +++++++ toolbox_fft/contrib/kissfft/kiss_fft_log.h | 36 ++ toolbox_fft/contrib/kissfft/kiss_fftr.c | 155 +++++++ toolbox_fft/contrib/kissfft/kiss_fftr.h | 54 +++ 9 files changed, 1021 insertions(+), 2 deletions(-) create mode 100644 toolbox_fft/contrib/kissfft/COPYING create mode 100644 toolbox_fft/contrib/kissfft/_kiss_fft_guts.h create mode 100644 toolbox_fft/contrib/kissfft/kiss_fft.c create mode 100644 toolbox_fft/contrib/kissfft/kiss_fft.h create mode 100644 toolbox_fft/contrib/kissfft/kiss_fft_log.h create mode 100644 toolbox_fft/contrib/kissfft/kiss_fftr.c create mode 100644 toolbox_fft/contrib/kissfft/kiss_fftr.h diff --git a/toolbox_fft/CMakeLists.txt b/toolbox_fft/CMakeLists.txt index 544149d4..7e37bad5 100644 --- a/toolbox_fft/CMakeLists.txt +++ b/toolbox_fft/CMakeLists.txt @@ -1,9 +1,26 @@ find_package(nlohmann_json REQUIRED) -find_package(kissfft REQUIRED) include(${CMAKE_CURRENT_LIST_DIR}/../cmake/EmbedUi.cmake) include(${CMAKE_CURRENT_LIST_DIR}/../cmake/EmbedManifest.cmake) +# kissfft is not on conda-forge — vendored under contrib/kissfft (131.1.0). +# Used by both the Conan and pixi builds (the Conan kissfft dep is dropped). +# SYSTEM include exposes contrib/ so consumers resolve . +add_library(pj_kissfft STATIC + contrib/kissfft/kiss_fft.c + contrib/kissfft/kiss_fftr.c +) +# The plugin collection's root project enables only CXX. kissfft's C sources have +# extern "C" header guards, so compiling them as C++ keeps the symbol linkage +# correct and avoids needing enable_language(C) at the root. +set_source_files_properties( + contrib/kissfft/kiss_fft.c contrib/kissfft/kiss_fftr.c + PROPERTIES LANGUAGE CXX +) +set_target_properties(pj_kissfft PROPERTIES POSITION_INDEPENDENT_CODE ON) +target_include_directories(pj_kissfft SYSTEM PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/contrib) +add_library(kissfft::kissfft ALIAS pj_kissfft) + add_library(toolbox_fft_plugin SHARED fft_plugin.cpp) target_compile_features(toolbox_fft_plugin PRIVATE cxx_std_20) diff --git a/toolbox_fft/conanfile.py b/toolbox_fft/conanfile.py index eedcbc10..1b808347 100644 --- a/toolbox_fft/conanfile.py +++ b/toolbox_fft/conanfile.py @@ -18,6 +18,5 @@ class ToolboxFftConan(ConanFile): f"plotjuggler_sdk/{_SDK_VERSION}", "gtest/1.17.0", "nlohmann_json/3.12.0", - "kissfft/131.1.0", ) default_options = {"*:shared": False} diff --git a/toolbox_fft/contrib/kissfft/COPYING b/toolbox_fft/contrib/kissfft/COPYING new file mode 100644 index 00000000..6b4b622e --- /dev/null +++ b/toolbox_fft/contrib/kissfft/COPYING @@ -0,0 +1,11 @@ +Copyright (c) 2003-2010 Mark Borgerding . All rights reserved. + +KISS FFT is provided under: + + SPDX-License-Identifier: BSD-3-Clause + +Being under the terms of the BSD 3-clause "New" or "Revised" License, +according with: + + LICENSES/BSD-3-Clause + diff --git a/toolbox_fft/contrib/kissfft/_kiss_fft_guts.h b/toolbox_fft/contrib/kissfft/_kiss_fft_guts.h new file mode 100644 index 00000000..4bd8d1c1 --- /dev/null +++ b/toolbox_fft/contrib/kissfft/_kiss_fft_guts.h @@ -0,0 +1,167 @@ +/* + * Copyright (c) 2003-2010, Mark Borgerding. All rights reserved. + * This file is part of KISS FFT - https://github.com/mborgerding/kissfft + * + * SPDX-License-Identifier: BSD-3-Clause + * See COPYING file for more information. + */ + +/* kiss_fft.h + defines kiss_fft_scalar as either short or a float type + and defines + typedef struct { kiss_fft_scalar r; kiss_fft_scalar i; }kiss_fft_cpx; */ + +#ifndef _kiss_fft_guts_h +#define _kiss_fft_guts_h + +#include "kiss_fft.h" +#include "kiss_fft_log.h" +#include + +#define MAXFACTORS 32 +/* e.g. an fft of length 128 has 4 factors + as far as kissfft is concerned + 4*4*4*2 + */ + +struct kiss_fft_state{ + int nfft; + int inverse; + int factors[2*MAXFACTORS]; + kiss_fft_cpx twiddles[1]; +}; + +/* + Explanation of macros dealing with complex math: + + C_MUL(m,a,b) : m = a*b + C_FIXDIV( c , div ) : if a fixed point impl., c /= div. noop otherwise + C_SUB( res, a,b) : res = a - b + C_SUBFROM( res , a) : res -= a + C_ADDTO( res , a) : res += a + * */ +#ifdef FIXED_POINT +#include +#if (FIXED_POINT==32) +# define FRACBITS 31 +# define SAMPPROD int64_t +#define SAMP_MAX INT32_MAX +#define SAMP_MIN INT32_MIN +#else +# define FRACBITS 15 +# define SAMPPROD int32_t +#define SAMP_MAX INT16_MAX +#define SAMP_MIN INT16_MIN +#endif + +#if defined(CHECK_OVERFLOW) +# define CHECK_OVERFLOW_OP(a,op,b) \ + if ( (SAMPPROD)(a) op (SAMPPROD)(b) > SAMP_MAX || (SAMPPROD)(a) op (SAMPPROD)(b) < SAMP_MIN ) { \ + KISS_FFT_WARNING("overflow (%d " #op" %d) = %ld", (a),(b),(SAMPPROD)(a) op (SAMPPROD)(b)); } +#endif + + +# define smul(a,b) ( (SAMPPROD)(a)*(b) ) +# define sround( x ) (kiss_fft_scalar)( ( (x) + (1<<(FRACBITS-1)) ) >> FRACBITS ) + +# define S_MUL(a,b) sround( smul(a,b) ) + +# define C_MUL(m,a,b) \ + do{ (m).r = sround( smul((a).r,(b).r) - smul((a).i,(b).i) ); \ + (m).i = sround( smul((a).r,(b).i) + smul((a).i,(b).r) ); }while(0) + +# define DIVSCALAR(x,k) \ + (x) = sround( smul( x, SAMP_MAX/k ) ) + +# define C_FIXDIV(c,div) \ + do { DIVSCALAR( (c).r , div); \ + DIVSCALAR( (c).i , div); }while (0) + +# define C_MULBYSCALAR( c, s ) \ + do{ (c).r = sround( smul( (c).r , s ) ) ;\ + (c).i = sround( smul( (c).i , s ) ) ; }while(0) + +#else /* not FIXED_POINT*/ + +# define S_MUL(a,b) ( (a)*(b) ) +#define C_MUL(m,a,b) \ + do{ (m).r = (a).r*(b).r - (a).i*(b).i;\ + (m).i = (a).r*(b).i + (a).i*(b).r; }while(0) +# define C_FIXDIV(c,div) /* NOOP */ +# define C_MULBYSCALAR( c, s ) \ + do{ (c).r *= (s);\ + (c).i *= (s); }while(0) +#endif + +#ifndef CHECK_OVERFLOW_OP +# define CHECK_OVERFLOW_OP(a,op,b) /* noop */ +#endif + +#define C_ADD( res, a,b)\ + do { \ + CHECK_OVERFLOW_OP((a).r,+,(b).r)\ + CHECK_OVERFLOW_OP((a).i,+,(b).i)\ + (res).r=(a).r+(b).r; (res).i=(a).i+(b).i; \ + }while(0) +#define C_SUB( res, a,b)\ + do { \ + CHECK_OVERFLOW_OP((a).r,-,(b).r)\ + CHECK_OVERFLOW_OP((a).i,-,(b).i)\ + (res).r=(a).r-(b).r; (res).i=(a).i-(b).i; \ + }while(0) +#define C_ADDTO( res , a)\ + do { \ + CHECK_OVERFLOW_OP((res).r,+,(a).r)\ + CHECK_OVERFLOW_OP((res).i,+,(a).i)\ + (res).r += (a).r; (res).i += (a).i;\ + }while(0) + +#define C_SUBFROM( res , a)\ + do {\ + CHECK_OVERFLOW_OP((res).r,-,(a).r)\ + CHECK_OVERFLOW_OP((res).i,-,(a).i)\ + (res).r -= (a).r; (res).i -= (a).i; \ + }while(0) + + +#ifdef FIXED_POINT +# define KISS_FFT_COS(phase) floor(.5+SAMP_MAX * cos (phase)) +# define KISS_FFT_SIN(phase) floor(.5+SAMP_MAX * sin (phase)) +# define HALF_OF(x) ((x)>>1) +#elif defined(USE_SIMD) +# define KISS_FFT_COS(phase) _mm_set1_ps( cos(phase) ) +# define KISS_FFT_SIN(phase) _mm_set1_ps( sin(phase) ) +# define HALF_OF(x) ((x)*_mm_set1_ps(.5)) +#else +# define KISS_FFT_COS(phase) (kiss_fft_scalar) cos(phase) +# define KISS_FFT_SIN(phase) (kiss_fft_scalar) sin(phase) +# define HALF_OF(x) ((x)*((kiss_fft_scalar).5)) +#endif + +#define kf_cexp(x,phase) \ + do{ \ + (x)->r = KISS_FFT_COS(phase);\ + (x)->i = KISS_FFT_SIN(phase);\ + }while(0) + + +/* a debugging function */ +#define pcpx(c)\ + KISS_FFT_DEBUG("%g + %gi\n",(double)((c)->r),(double)((c)->i)) + + +#ifdef KISS_FFT_USE_ALLOCA +// define this to allow use of alloca instead of malloc for temporary buffers +// Temporary buffers are used in two case: +// 1. FFT sizes that have "bad" factors. i.e. not 2,3 and 5 +// 2. "in-place" FFTs. Notice the quotes, since kissfft does not really do an in-place transform. +#include +#define KISS_FFT_TMP_ALLOC(nbytes) alloca(nbytes) +#define KISS_FFT_TMP_FREE(ptr) +#else +#define KISS_FFT_TMP_ALLOC(nbytes) KISS_FFT_MALLOC(nbytes) +#define KISS_FFT_TMP_FREE(ptr) KISS_FFT_FREE(ptr) +#endif + +#endif /* _kiss_fft_guts_h */ + diff --git a/toolbox_fft/contrib/kissfft/kiss_fft.c b/toolbox_fft/contrib/kissfft/kiss_fft.c new file mode 100644 index 00000000..58c24a06 --- /dev/null +++ b/toolbox_fft/contrib/kissfft/kiss_fft.c @@ -0,0 +1,420 @@ +/* + * Copyright (c) 2003-2010, Mark Borgerding. All rights reserved. + * This file is part of KISS FFT - https://github.com/mborgerding/kissfft + * + * SPDX-License-Identifier: BSD-3-Clause + * See COPYING file for more information. + */ + + +#include "_kiss_fft_guts.h" +/* The guts header contains all the multiplication and addition macros that are defined for + fixed or floating point complex numbers. It also delares the kf_ internal functions. + */ + +static void kf_bfly2( + kiss_fft_cpx * Fout, + const size_t fstride, + const kiss_fft_cfg st, + int m + ) +{ + kiss_fft_cpx * Fout2; + kiss_fft_cpx * tw1 = st->twiddles; + kiss_fft_cpx t; + Fout2 = Fout + m; + do{ + C_FIXDIV(*Fout,2); C_FIXDIV(*Fout2,2); + + C_MUL (t, *Fout2 , *tw1); + tw1 += fstride; + C_SUB( *Fout2 , *Fout , t ); + C_ADDTO( *Fout , t ); + ++Fout2; + ++Fout; + }while (--m); +} + +static void kf_bfly4( + kiss_fft_cpx * Fout, + const size_t fstride, + const kiss_fft_cfg st, + const size_t m + ) +{ + kiss_fft_cpx *tw1,*tw2,*tw3; + kiss_fft_cpx scratch[6]; + size_t k=m; + const size_t m2=2*m; + const size_t m3=3*m; + + + tw3 = tw2 = tw1 = st->twiddles; + + do { + C_FIXDIV(*Fout,4); C_FIXDIV(Fout[m],4); C_FIXDIV(Fout[m2],4); C_FIXDIV(Fout[m3],4); + + C_MUL(scratch[0],Fout[m] , *tw1 ); + C_MUL(scratch[1],Fout[m2] , *tw2 ); + C_MUL(scratch[2],Fout[m3] , *tw3 ); + + C_SUB( scratch[5] , *Fout, scratch[1] ); + C_ADDTO(*Fout, scratch[1]); + C_ADD( scratch[3] , scratch[0] , scratch[2] ); + C_SUB( scratch[4] , scratch[0] , scratch[2] ); + C_SUB( Fout[m2], *Fout, scratch[3] ); + tw1 += fstride; + tw2 += fstride*2; + tw3 += fstride*3; + C_ADDTO( *Fout , scratch[3] ); + + if(st->inverse) { + Fout[m].r = scratch[5].r - scratch[4].i; + Fout[m].i = scratch[5].i + scratch[4].r; + Fout[m3].r = scratch[5].r + scratch[4].i; + Fout[m3].i = scratch[5].i - scratch[4].r; + }else{ + Fout[m].r = scratch[5].r + scratch[4].i; + Fout[m].i = scratch[5].i - scratch[4].r; + Fout[m3].r = scratch[5].r - scratch[4].i; + Fout[m3].i = scratch[5].i + scratch[4].r; + } + ++Fout; + }while(--k); +} + +static void kf_bfly3( + kiss_fft_cpx * Fout, + const size_t fstride, + const kiss_fft_cfg st, + size_t m + ) +{ + size_t k=m; + const size_t m2 = 2*m; + kiss_fft_cpx *tw1,*tw2; + kiss_fft_cpx scratch[5]; + kiss_fft_cpx epi3; + epi3 = st->twiddles[fstride*m]; + + tw1=tw2=st->twiddles; + + do{ + C_FIXDIV(*Fout,3); C_FIXDIV(Fout[m],3); C_FIXDIV(Fout[m2],3); + + C_MUL(scratch[1],Fout[m] , *tw1); + C_MUL(scratch[2],Fout[m2] , *tw2); + + C_ADD(scratch[3],scratch[1],scratch[2]); + C_SUB(scratch[0],scratch[1],scratch[2]); + tw1 += fstride; + tw2 += fstride*2; + + Fout[m].r = Fout->r - HALF_OF(scratch[3].r); + Fout[m].i = Fout->i - HALF_OF(scratch[3].i); + + C_MULBYSCALAR( scratch[0] , epi3.i ); + + C_ADDTO(*Fout,scratch[3]); + + Fout[m2].r = Fout[m].r + scratch[0].i; + Fout[m2].i = Fout[m].i - scratch[0].r; + + Fout[m].r -= scratch[0].i; + Fout[m].i += scratch[0].r; + + ++Fout; + }while(--k); +} + +static void kf_bfly5( + kiss_fft_cpx * Fout, + const size_t fstride, + const kiss_fft_cfg st, + int m + ) +{ + kiss_fft_cpx *Fout0,*Fout1,*Fout2,*Fout3,*Fout4; + int u; + kiss_fft_cpx scratch[13]; + kiss_fft_cpx * twiddles = st->twiddles; + kiss_fft_cpx *tw; + kiss_fft_cpx ya,yb; + ya = twiddles[fstride*m]; + yb = twiddles[fstride*2*m]; + + Fout0=Fout; + Fout1=Fout0+m; + Fout2=Fout0+2*m; + Fout3=Fout0+3*m; + Fout4=Fout0+4*m; + + tw=st->twiddles; + for ( u=0; ur += scratch[7].r + scratch[8].r; + Fout0->i += scratch[7].i + scratch[8].i; + + scratch[5].r = scratch[0].r + S_MUL(scratch[7].r,ya.r) + S_MUL(scratch[8].r,yb.r); + scratch[5].i = scratch[0].i + S_MUL(scratch[7].i,ya.r) + S_MUL(scratch[8].i,yb.r); + + scratch[6].r = S_MUL(scratch[10].i,ya.i) + S_MUL(scratch[9].i,yb.i); + scratch[6].i = -S_MUL(scratch[10].r,ya.i) - S_MUL(scratch[9].r,yb.i); + + C_SUB(*Fout1,scratch[5],scratch[6]); + C_ADD(*Fout4,scratch[5],scratch[6]); + + scratch[11].r = scratch[0].r + S_MUL(scratch[7].r,yb.r) + S_MUL(scratch[8].r,ya.r); + scratch[11].i = scratch[0].i + S_MUL(scratch[7].i,yb.r) + S_MUL(scratch[8].i,ya.r); + scratch[12].r = - S_MUL(scratch[10].i,yb.i) + S_MUL(scratch[9].i,ya.i); + scratch[12].i = S_MUL(scratch[10].r,yb.i) - S_MUL(scratch[9].r,ya.i); + + C_ADD(*Fout2,scratch[11],scratch[12]); + C_SUB(*Fout3,scratch[11],scratch[12]); + + ++Fout0;++Fout1;++Fout2;++Fout3;++Fout4; + } +} + +/* perform the butterfly for one stage of a mixed radix FFT */ +static void kf_bfly_generic( + kiss_fft_cpx * Fout, + const size_t fstride, + const kiss_fft_cfg st, + int m, + int p + ) +{ + int u,k,q1,q; + kiss_fft_cpx * twiddles = st->twiddles; + kiss_fft_cpx t; + int Norig = st->nfft; + + kiss_fft_cpx * scratch = (kiss_fft_cpx*)KISS_FFT_TMP_ALLOC(sizeof(kiss_fft_cpx)*p); + if (scratch == NULL){ + KISS_FFT_ERROR("Memory allocation failed."); + return; + } + + for ( u=0; u=Norig) twidx-=Norig; + C_MUL(t,scratch[q] , twiddles[twidx] ); + C_ADDTO( Fout[ k ] ,t); + } + k += m; + } + } + KISS_FFT_TMP_FREE(scratch); +} + +static +void kf_work( + kiss_fft_cpx * Fout, + const kiss_fft_cpx * f, + const size_t fstride, + int in_stride, + int * factors, + const kiss_fft_cfg st + ) +{ + kiss_fft_cpx * Fout_beg=Fout; + const int p=*factors++; /* the radix */ + const int m=*factors++; /* stage's fft length/p */ + const kiss_fft_cpx * Fout_end = Fout + p*m; + +#ifdef _OPENMP + // use openmp extensions at the + // top-level (not recursive) + if (fstride==1 && p<=5 && m!=1) + { + int k; + + // execute the p different work units in different threads +# pragma omp parallel for + for (k=0;k floor_sqrt) + p = n; /* no more factors, skip to end */ + } + n /= p; + *facbuf++ = p; + *facbuf++ = n; + } while (n > 1); +} + +/* + * + * User-callable function to allocate all necessary storage space for the fft. + * + * The return value is a contiguous block of memory, allocated with malloc. As such, + * It can be freed with free(), rather than a kiss_fft-specific function. + * */ +kiss_fft_cfg kiss_fft_alloc(int nfft,int inverse_fft,void * mem,size_t * lenmem ) +{ + KISS_FFT_ALIGN_CHECK(mem) + + kiss_fft_cfg st=NULL; + size_t memneeded = KISS_FFT_ALIGN_SIZE_UP(sizeof(struct kiss_fft_state) + + sizeof(kiss_fft_cpx)*(nfft-1)); /* twiddle factors*/ + + if ( lenmem==NULL ) { + st = ( kiss_fft_cfg)KISS_FFT_MALLOC( memneeded ); + }else{ + if (mem != NULL && *lenmem >= memneeded) + st = (kiss_fft_cfg)mem; + *lenmem = memneeded; + } + if (st) { + int i; + st->nfft=nfft; + st->inverse = inverse_fft; + + for (i=0;iinverse) + phase *= -1; + kf_cexp(st->twiddles+i, phase ); + } + + kf_factor(nfft,st->factors); + } + return st; +} + + +void kiss_fft_stride(kiss_fft_cfg st,const kiss_fft_cpx *fin,kiss_fft_cpx *fout,int in_stride) +{ + if (fin == fout) { + //NOTE: this is not really an in-place FFT algorithm. + //It just performs an out-of-place FFT into a temp buffer + if (fout == NULL){ + KISS_FFT_ERROR("fout buffer NULL."); + return; + } + + kiss_fft_cpx * tmpbuf = (kiss_fft_cpx*)KISS_FFT_TMP_ALLOC( sizeof(kiss_fft_cpx)*st->nfft); + if (tmpbuf == NULL){ + KISS_FFT_ERROR("Memory allocation error."); + return; + } + + + + kf_work(tmpbuf,fin,1,in_stride, st->factors,st); + memcpy(fout,tmpbuf,sizeof(kiss_fft_cpx)*st->nfft); + KISS_FFT_TMP_FREE(tmpbuf); + }else{ + kf_work( fout, fin, 1,in_stride, st->factors,st ); + } +} + +void kiss_fft(kiss_fft_cfg cfg,const kiss_fft_cpx *fin,kiss_fft_cpx *fout) +{ + kiss_fft_stride(cfg,fin,fout,1); +} + + +void kiss_fft_cleanup(void) +{ + // nothing needed any more +} + +int kiss_fft_next_fast_size(int n) +{ + while(1) { + int m=n; + while ( (m%2) == 0 ) m/=2; + while ( (m%3) == 0 ) m/=3; + while ( (m%5) == 0 ) m/=5; + if (m<=1) + break; /* n is completely factorable by twos, threes, and fives */ + n++; + } + return n; +} diff --git a/toolbox_fft/contrib/kissfft/kiss_fft.h b/toolbox_fft/contrib/kissfft/kiss_fft.h new file mode 100644 index 00000000..dce1034a --- /dev/null +++ b/toolbox_fft/contrib/kissfft/kiss_fft.h @@ -0,0 +1,160 @@ +/* + * Copyright (c) 2003-2010, Mark Borgerding. All rights reserved. + * This file is part of KISS FFT - https://github.com/mborgerding/kissfft + * + * SPDX-License-Identifier: BSD-3-Clause + * See COPYING file for more information. + */ + +#ifndef KISS_FFT_H +#define KISS_FFT_H + +#include +#include +#include +#include + +// Define KISS_FFT_SHARED macro to properly export symbols +#ifdef KISS_FFT_SHARED +# ifdef _WIN32 +# ifdef KISS_FFT_BUILD +# define KISS_FFT_API __declspec(dllexport) +# else +# define KISS_FFT_API __declspec(dllimport) +# endif +# else +# define KISS_FFT_API __attribute__ ((visibility ("default"))) +# endif +#else +# define KISS_FFT_API +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* + ATTENTION! + If you would like a : + -- a utility that will handle the caching of fft objects + -- real-only (no imaginary time component ) FFT + -- a multi-dimensional FFT + -- a command-line utility to perform ffts + -- a command-line utility to perform fast-convolution filtering + + Then see kfc.h kiss_fftr.h kiss_fftnd.h fftutil.c kiss_fastfir.c + in the tools/ directory. +*/ + +/* User may override KISS_FFT_MALLOC and/or KISS_FFT_FREE. */ +#ifdef USE_SIMD +# include +# define kiss_fft_scalar __m128 +# ifndef KISS_FFT_MALLOC +# define KISS_FFT_MALLOC(nbytes) _mm_malloc(nbytes,16) +# define KISS_FFT_ALIGN_CHECK(ptr) +# define KISS_FFT_ALIGN_SIZE_UP(size) ((size + 15UL) & ~0xFUL) +# endif +# ifndef KISS_FFT_FREE +# define KISS_FFT_FREE _mm_free +# endif +#else +# define KISS_FFT_ALIGN_CHECK(ptr) +# define KISS_FFT_ALIGN_SIZE_UP(size) (size) +# ifndef KISS_FFT_MALLOC +# define KISS_FFT_MALLOC malloc +# endif +# ifndef KISS_FFT_FREE +# define KISS_FFT_FREE free +# endif +#endif + + +#ifdef FIXED_POINT +#include +# if (FIXED_POINT == 32) +# define kiss_fft_scalar int32_t +# else +# define kiss_fft_scalar int16_t +# endif +#else +# ifndef kiss_fft_scalar +/* default is float */ +# define kiss_fft_scalar float +# endif +#endif + +typedef struct { + kiss_fft_scalar r; + kiss_fft_scalar i; +}kiss_fft_cpx; + +typedef struct kiss_fft_state* kiss_fft_cfg; + +/* + * kiss_fft_alloc + * + * Initialize a FFT (or IFFT) algorithm's cfg/state buffer. + * + * typical usage: kiss_fft_cfg mycfg=kiss_fft_alloc(1024,0,NULL,NULL); + * + * The return value from fft_alloc is a cfg buffer used internally + * by the fft routine or NULL. + * + * If lenmem is NULL, then kiss_fft_alloc will allocate a cfg buffer using malloc. + * The returned value should be free()d when done to avoid memory leaks. + * + * The state can be placed in a user supplied buffer 'mem': + * If lenmem is not NULL and mem is not NULL and *lenmem is large enough, + * then the function places the cfg in mem and the size used in *lenmem + * and returns mem. + * + * If lenmem is not NULL and ( mem is NULL or *lenmem is not large enough), + * then the function returns NULL and places the minimum cfg + * buffer size in *lenmem. + * */ + +kiss_fft_cfg KISS_FFT_API kiss_fft_alloc(int nfft,int inverse_fft,void * mem,size_t * lenmem); + +/* + * kiss_fft(cfg,in_out_buf) + * + * Perform an FFT on a complex input buffer. + * for a forward FFT, + * fin should be f[0] , f[1] , ... ,f[nfft-1] + * fout will be F[0] , F[1] , ... ,F[nfft-1] + * Note that each element is complex and can be accessed like + f[k].r and f[k].i + * */ +void KISS_FFT_API kiss_fft(kiss_fft_cfg cfg,const kiss_fft_cpx *fin,kiss_fft_cpx *fout); + +/* + A more generic version of the above function. It reads its input from every Nth sample. + * */ +void KISS_FFT_API kiss_fft_stride(kiss_fft_cfg cfg,const kiss_fft_cpx *fin,kiss_fft_cpx *fout,int fin_stride); + +/* If kiss_fft_alloc allocated a buffer, it is one contiguous + buffer and can be simply free()d when no longer needed*/ +#define kiss_fft_free KISS_FFT_FREE + +/* + Cleans up some memory that gets managed internally. Not necessary to call, but it might clean up + your compiler output to call this before you exit. +*/ +void KISS_FFT_API kiss_fft_cleanup(void); + + +/* + * Returns the smallest integer k, such that k>=n and k has only "fast" factors (2,3,5) + */ +int KISS_FFT_API kiss_fft_next_fast_size(int n); + +/* for real ffts, we need an even size */ +#define kiss_fftr_next_fast_size_real(n) \ + (kiss_fft_next_fast_size( ((n)+1)>>1)<<1) + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/toolbox_fft/contrib/kissfft/kiss_fft_log.h b/toolbox_fft/contrib/kissfft/kiss_fft_log.h new file mode 100644 index 00000000..b5b631a0 --- /dev/null +++ b/toolbox_fft/contrib/kissfft/kiss_fft_log.h @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2003-2010, Mark Borgerding. All rights reserved. + * This file is part of KISS FFT - https://github.com/mborgerding/kissfft + * + * SPDX-License-Identifier: BSD-3-Clause + * See COPYING file for more information. + */ + +#ifndef kiss_fft_log_h +#define kiss_fft_log_h + +#define ERROR 1 +#define WARNING 2 +#define INFO 3 +#define DEBUG 4 + +#define STRINGIFY(x) #x +#define TOSTRING(x) STRINGIFY(x) + +#if defined(NDEBUG) +# define KISS_FFT_LOG_MSG(severity, ...) ((void)0) +#else +# define KISS_FFT_LOG_MSG(severity, ...) \ + fprintf(stderr, "[" #severity "] " __FILE__ ":" TOSTRING(__LINE__) " "); \ + fprintf(stderr, __VA_ARGS__); \ + fprintf(stderr, "\n") +#endif + +#define KISS_FFT_ERROR(...) KISS_FFT_LOG_MSG(ERROR, __VA_ARGS__) +#define KISS_FFT_WARNING(...) KISS_FFT_LOG_MSG(WARNING, __VA_ARGS__) +#define KISS_FFT_INFO(...) KISS_FFT_LOG_MSG(INFO, __VA_ARGS__) +#define KISS_FFT_DEBUG(...) KISS_FFT_LOG_MSG(DEBUG, __VA_ARGS__) + + + +#endif /* kiss_fft_log_h */ \ No newline at end of file diff --git a/toolbox_fft/contrib/kissfft/kiss_fftr.c b/toolbox_fft/contrib/kissfft/kiss_fftr.c new file mode 100644 index 00000000..778a9a62 --- /dev/null +++ b/toolbox_fft/contrib/kissfft/kiss_fftr.c @@ -0,0 +1,155 @@ +/* + * Copyright (c) 2003-2004, Mark Borgerding. All rights reserved. + * This file is part of KISS FFT - https://github.com/mborgerding/kissfft + * + * SPDX-License-Identifier: BSD-3-Clause + * See COPYING file for more information. + */ + +#include "kiss_fftr.h" +#include "_kiss_fft_guts.h" + +struct kiss_fftr_state{ + kiss_fft_cfg substate; + kiss_fft_cpx * tmpbuf; + kiss_fft_cpx * super_twiddles; +#ifdef USE_SIMD + void * pad; +#endif +}; + +kiss_fftr_cfg kiss_fftr_alloc(int nfft,int inverse_fft,void * mem,size_t * lenmem) +{ + KISS_FFT_ALIGN_CHECK(mem) + + int i; + kiss_fftr_cfg st = NULL; + size_t subsize = 0, memneeded; + + if (nfft & 1) { + KISS_FFT_ERROR("Real FFT optimization must be even."); + return NULL; + } + nfft >>= 1; + + kiss_fft_alloc (nfft, inverse_fft, NULL, &subsize); + memneeded = sizeof(struct kiss_fftr_state) + subsize + sizeof(kiss_fft_cpx) * ( nfft * 3 / 2); + + if (lenmem == NULL) { + st = (kiss_fftr_cfg) KISS_FFT_MALLOC (memneeded); + } else { + if (*lenmem >= memneeded) + st = (kiss_fftr_cfg) mem; + *lenmem = memneeded; + } + if (!st) + return NULL; + + st->substate = (kiss_fft_cfg) (st + 1); /*just beyond kiss_fftr_state struct */ + st->tmpbuf = (kiss_fft_cpx *) (((char *) st->substate) + subsize); + st->super_twiddles = st->tmpbuf + nfft; + kiss_fft_alloc(nfft, inverse_fft, st->substate, &subsize); + + for (i = 0; i < nfft/2; ++i) { + double phase = + -3.14159265358979323846264338327 * ((double) (i+1) / nfft + .5); + if (inverse_fft) + phase *= -1; + kf_cexp (st->super_twiddles+i,phase); + } + return st; +} + +void kiss_fftr(kiss_fftr_cfg st,const kiss_fft_scalar *timedata,kiss_fft_cpx *freqdata) +{ + /* input buffer timedata is stored row-wise */ + int k,ncfft; + kiss_fft_cpx fpnk,fpk,f1k,f2k,tw,tdc; + + if ( st->substate->inverse) { + KISS_FFT_ERROR("kiss fft usage error: improper alloc"); + return;/* The caller did not call the correct function */ + } + + ncfft = st->substate->nfft; + + /*perform the parallel fft of two real signals packed in real,imag*/ + kiss_fft( st->substate , (const kiss_fft_cpx*)timedata, st->tmpbuf ); + /* The real part of the DC element of the frequency spectrum in st->tmpbuf + * contains the sum of the even-numbered elements of the input time sequence + * The imag part is the sum of the odd-numbered elements + * + * The sum of tdc.r and tdc.i is the sum of the input time sequence. + * yielding DC of input time sequence + * The difference of tdc.r - tdc.i is the sum of the input (dot product) [1,-1,1,-1... + * yielding Nyquist bin of input time sequence + */ + + tdc.r = st->tmpbuf[0].r; + tdc.i = st->tmpbuf[0].i; + C_FIXDIV(tdc,2); + CHECK_OVERFLOW_OP(tdc.r ,+, tdc.i); + CHECK_OVERFLOW_OP(tdc.r ,-, tdc.i); + freqdata[0].r = tdc.r + tdc.i; + freqdata[ncfft].r = tdc.r - tdc.i; +#ifdef USE_SIMD + freqdata[ncfft].i = freqdata[0].i = _mm_set1_ps(0); +#else + freqdata[ncfft].i = freqdata[0].i = 0; +#endif + + for ( k=1;k <= ncfft/2 ; ++k ) { + fpk = st->tmpbuf[k]; + fpnk.r = st->tmpbuf[ncfft-k].r; + fpnk.i = - st->tmpbuf[ncfft-k].i; + C_FIXDIV(fpk,2); + C_FIXDIV(fpnk,2); + + C_ADD( f1k, fpk , fpnk ); + C_SUB( f2k, fpk , fpnk ); + C_MUL( tw , f2k , st->super_twiddles[k-1]); + + freqdata[k].r = HALF_OF(f1k.r + tw.r); + freqdata[k].i = HALF_OF(f1k.i + tw.i); + freqdata[ncfft-k].r = HALF_OF(f1k.r - tw.r); + freqdata[ncfft-k].i = HALF_OF(tw.i - f1k.i); + } +} + +void kiss_fftri(kiss_fftr_cfg st,const kiss_fft_cpx *freqdata,kiss_fft_scalar *timedata) +{ + /* input buffer timedata is stored row-wise */ + int k, ncfft; + + if (st->substate->inverse == 0) { + KISS_FFT_ERROR("kiss fft usage error: improper alloc"); + return;/* The caller did not call the correct function */ + } + + ncfft = st->substate->nfft; + + st->tmpbuf[0].r = freqdata[0].r + freqdata[ncfft].r; + st->tmpbuf[0].i = freqdata[0].r - freqdata[ncfft].r; + C_FIXDIV(st->tmpbuf[0],2); + + for (k = 1; k <= ncfft / 2; ++k) { + kiss_fft_cpx fk, fnkc, fek, fok, tmp; + fk = freqdata[k]; + fnkc.r = freqdata[ncfft - k].r; + fnkc.i = -freqdata[ncfft - k].i; + C_FIXDIV( fk , 2 ); + C_FIXDIV( fnkc , 2 ); + + C_ADD (fek, fk, fnkc); + C_SUB (tmp, fk, fnkc); + C_MUL (fok, tmp, st->super_twiddles[k-1]); + C_ADD (st->tmpbuf[k], fek, fok); + C_SUB (st->tmpbuf[ncfft - k], fek, fok); +#ifdef USE_SIMD + st->tmpbuf[ncfft - k].i *= _mm_set1_ps(-1.0); +#else + st->tmpbuf[ncfft - k].i *= -1; +#endif + } + kiss_fft (st->substate, st->tmpbuf, (kiss_fft_cpx *) timedata); +} diff --git a/toolbox_fft/contrib/kissfft/kiss_fftr.h b/toolbox_fft/contrib/kissfft/kiss_fftr.h new file mode 100644 index 00000000..7fd73d2d --- /dev/null +++ b/toolbox_fft/contrib/kissfft/kiss_fftr.h @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2003-2004, Mark Borgerding. All rights reserved. + * This file is part of KISS FFT - https://github.com/mborgerding/kissfft + * + * SPDX-License-Identifier: BSD-3-Clause + * See COPYING file for more information. + */ + +#ifndef KISS_FTR_H +#define KISS_FTR_H + +#include "kiss_fft.h" +#ifdef __cplusplus +extern "C" { +#endif + + +/* + + Real optimized version can save about 45% cpu time vs. complex fft of a real seq. + + + + */ + +typedef struct kiss_fftr_state *kiss_fftr_cfg; + + +kiss_fftr_cfg KISS_FFT_API kiss_fftr_alloc(int nfft,int inverse_fft,void * mem, size_t * lenmem); +/* + nfft must be even + + If you don't care to allocate space, use mem = lenmem = NULL +*/ + + +void KISS_FFT_API kiss_fftr(kiss_fftr_cfg cfg,const kiss_fft_scalar *timedata,kiss_fft_cpx *freqdata); +/* + input timedata has nfft scalar points + output freqdata has nfft/2+1 complex points +*/ + +void KISS_FFT_API kiss_fftri(kiss_fftr_cfg cfg,const kiss_fft_cpx *freqdata,kiss_fft_scalar *timedata); +/* + input freqdata has nfft/2+1 complex points + output timedata has nfft scalar points +*/ + +#define kiss_fftr_free KISS_FFT_FREE + +#ifdef __cplusplus +} +#endif +#endif From 763ed16f7a35f9db9db1900952f2f23b9c2d7905 Mon Sep 17 00:00:00 2001 From: Davide Faconti Date: Thu, 18 Jun 2026 22:33:27 +0200 Subject: [PATCH 18/23] build(pixi): point SDK channel at prefix.dev (0.8.1 published) --- pixi.lock | 27 +++++++++++++-------------- pixi.toml | 7 +------ 2 files changed, 14 insertions(+), 20 deletions(-) diff --git a/pixi.lock b/pixi.lock index df366b0a..d04b7a58 100644 --- a/pixi.lock +++ b/pixi.lock @@ -5,10 +5,9 @@ environments: default: channels: - url: https://conda.anaconda.org/conda-forge/ - - url: file:///home/davide/ws_plotjuggler/plotjuggler_sdk/.worktrees/conda-output/ + - url: https://prefix.dev/plotjuggler/ packages: linux-64: - - conda: /home/davide/ws_plotjuggler/plotjuggler_sdk/.worktrees/conda-output/linux-64/plotjuggler_sdk-0.8.0-hd570aad_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/asio-1.36.0-hecca717_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.10.3-hea842a7_2.conda @@ -120,19 +119,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.14-8_cp314.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.39-he3f20f0_6.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda + - conda: https://prefix.dev/plotjuggler/linux-64/plotjuggler_sdk-0.8.1-hb0f4dca_0.conda packages: -- conda: /home/davide/ws_plotjuggler/plotjuggler_sdk/.worktrees/conda-output/linux-64/plotjuggler_sdk-0.8.0-hd570aad_0.conda - subdir: linux-64 - sha256: 552389bb761b267afe2a759760b2fa1558a3e2f8be7687404d6b6bee57251672 - md5: 11272f4cec46e791c61923dcaea26855 - depends: - - nlohmann_json >=3.12,<4 - - libstdcxx >=14 - - libgcc >=14 - channel: file:///home/davide/ws_plotjuggler/plotjuggler_sdk/.worktrees/conda-output - license: Apache-2.0 - size: 795536 - timestamp: 1781804271304 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda build_number: 20 sha256: 1dd3fffd892081df9726d7eb7e0dea6198962ba775bd88842135a4ddb4deb3c9 @@ -1798,3 +1786,14 @@ packages: run_exports: {} size: 119135 timestamp: 1767016325805 +- conda: https://prefix.dev/plotjuggler/linux-64/plotjuggler_sdk-0.8.1-hb0f4dca_0.conda + sha256: ef7f036f7b0043c359b4a9dd74050fa3cb5df3ba9100809bee8f49f58ee4cc56 + md5: 5e44370c1837156def3935b6d3d9be83 + depends: + - nlohmann_json >=3.12,<4 + - libstdcxx >=15 + - libgcc >=15 + license: Apache-2.0 + run_exports: {} + size: 798312 + timestamp: 1781814045727 diff --git a/pixi.toml b/pixi.toml index b07ffb02..0a6ea102 100644 --- a/pixi.toml +++ b/pixi.toml @@ -1,11 +1,6 @@ [workspace] name = "pj-official-plugins" -# NOTE: switch the SDK channel to "https://prefix.dev/plotjuggler" once the SDK -# conda package is published (Phase 1 Task 5). Local channel for pre-publish dev: -channels = [ - "conda-forge", - "file:///home/davide/ws_plotjuggler/plotjuggler_sdk/.worktrees/conda-output", -] +channels = ["conda-forge", "https://prefix.dev/plotjuggler"] platforms = ["linux-64"] [dependencies] From 8d38d7ba288818514caae9ea8af616a03d17f901 Mon Sep 17 00:00:00 2001 From: Davide Faconti Date: Thu, 18 Jun 2026 23:09:46 +0200 Subject: [PATCH 19/23] build(conda): libdatachannel recipe (WebRTC dep absent from conda-forge) Builds libdatachannel 0.24.0 shared (OpenSSL, bundled libjuice ICE, websocket + media) -> LibDataChannel::LibDataChannel, for data_stream_webrtc under conda. Validated: package builds + the webrtc plugin builds+tests against it + the published SDK 0.8.1. Pre-clone+path source (rattler git source doesn't recurse submodules); openssl pinned <4 (cmake 4.x needs openssl 3.x). --- recipes/libdatachannel/.gitignore | 2 + recipes/libdatachannel/build-and-publish.sh | 11 ++++++ recipes/libdatachannel/recipe.yaml | 42 +++++++++++++++++++++ 3 files changed, 55 insertions(+) create mode 100644 recipes/libdatachannel/.gitignore create mode 100755 recipes/libdatachannel/build-and-publish.sh create mode 100644 recipes/libdatachannel/recipe.yaml diff --git a/recipes/libdatachannel/.gitignore b/recipes/libdatachannel/.gitignore new file mode 100644 index 00000000..f9dbb704 --- /dev/null +++ b/recipes/libdatachannel/.gitignore @@ -0,0 +1,2 @@ +/output/ +/src/ diff --git a/recipes/libdatachannel/build-and-publish.sh b/recipes/libdatachannel/build-and-publish.sh new file mode 100755 index 00000000..8f1134c2 --- /dev/null +++ b/recipes/libdatachannel/build-and-publish.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env bash +# Build the libdatachannel conda package and (optionally) publish it to the +# prefix.dev "plotjuggler" channel. libdatachannel is absent from conda-forge. +set -euo pipefail +cd "$(dirname "$0")" +rm -rf src output +git clone --depth 1 --branch v0.24.0 --recurse-submodules --shallow-submodules \ + https://github.com/paullouisageneau/libdatachannel.git src +rattler-build build --recipe recipe.yaml -c conda-forge --output-dir ./output +# Publish (needs PREFIX_API_KEY with write access to the plotjuggler channel): +# rattler-build upload prefix --channel plotjuggler --skip-existing ./output/**/*.conda diff --git a/recipes/libdatachannel/recipe.yaml b/recipes/libdatachannel/recipe.yaml new file mode 100644 index 00000000..a2801349 --- /dev/null +++ b/recipes/libdatachannel/recipe.yaml @@ -0,0 +1,42 @@ +schema_version: 1 + +context: + version: "0.24.0" + +package: + name: libdatachannel + version: ${{ version }} + +# build-and-publish.sh clones libdatachannel v0.24.0 with --recurse-submodules +# into ./src (libjuice/libsrtp/usrsctp/plog/json). rattler-build's git source +# does not reliably check out a tag + submodules in one pass, so a pre-clone + +# path source is used (the tag pins all submodule commits, so it is reproducible). +source: + path: ./src + +build: + number: 0 + script: + - cmake -G Ninja -B build -S . -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -DUSE_GNUTLS=OFF -DUSE_NICE=OFF -DNO_WEBSOCKET=OFF -DNO_MEDIA=OFF -DCMAKE_INSTALL_PREFIX=$PREFIX -DCMAKE_INSTALL_LIBDIR=lib -DOPENSSL_ROOT_DIR=$PREFIX + - cmake --build build + - cmake --install build + +requirements: + build: + - ${{ compiler('c') }} + - ${{ compiler('cxx') }} + - cmake + - ninja + host: + - openssl <4 + +tests: + - script: + - test -f $PREFIX/lib/cmake/LibDataChannel/LibDataChannelConfig.cmake + - test -f $PREFIX/lib/libdatachannel.so + +about: + homepage: https://github.com/paullouisageneau/libdatachannel + license: MPL-2.0 + license_file: LICENSE + summary: C/C++ WebRTC Data Channels and Media Transport library (shared, OpenSSL, bundled libjuice) From 4f06c6a75b60968576e0adfdfe939a29d375d6d8 Mon Sep 17 00:00:00 2001 From: Davide Faconti Date: Fri, 19 Jun 2026 00:57:49 +0200 Subject: [PATCH 20/23] build(pixi): build foxglove_bridge + pj_bridge under conda (Phase 3b) Both 'Qt' stream plugins need no Qt at build: the port replaced the original's Qt WebSockets with ixwebsocket, and pj_embed_ui bakes the .ui into a constexpr char[]. conda-forge ships ixwebsocket 11.4.6 with the same ixwebsocket::ixwebsocket target Conan uses -> no normalization helper needed; a 'bridge' pixi feature wires it into the default env. Both plugins build + 3/3 tests pass under conda gcc-14. Also reserve() the frame buffer in pj_bridge_protocol_test to the exact final size: silences a GCC-14 -O3 -Wstringop-overflow false positive on the incrementally grown vector (test-only; the shipped plugin .o already compiled clean). --- .../tests/pj_bridge_protocol_test.cpp | 4 +++ pixi.lock | 33 +++++++++++++++++++ pixi.toml | 8 ++++- 3 files changed, 44 insertions(+), 1 deletion(-) diff --git a/data_stream_pj_bridge/tests/pj_bridge_protocol_test.cpp b/data_stream_pj_bridge/tests/pj_bridge_protocol_test.cpp index 27ebbc0a..652ad6c5 100644 --- a/data_stream_pj_bridge/tests/pj_bridge_protocol_test.cpp +++ b/data_stream_pj_bridge/tests/pj_bridge_protocol_test.cpp @@ -60,6 +60,10 @@ std::vector buildTestFrame(const std::vector& messages) { // Build header: magic(4) + msg_count(4) + uncompressed_size(4) + flags(4) std::vector frame; + // Reserve the exact final size (16-byte header + payload) up front. Besides + // avoiding reallocations, this silences a GCC-14 -Wstringop-overflow false + // positive at -O3, where the analyzer mis-sizes the incrementally grown vector. + frame.reserve(16 + compressed.size()); uint32_t magic = kMagic; frame.insert(frame.end(), reinterpret_cast(&magic), reinterpret_cast(&magic) + 4); diff --git a/pixi.lock b/pixi.lock index d04b7a58..c41b2486 100644 --- a/pixi.lock +++ b/pixi.lock @@ -48,6 +48,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_linux-64-14.3.0-hd240bd5_27.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/howardhinnant_date-3.0.4-h84d6215_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.3-h33c6efd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ixwebsocket-11.4.6-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.3-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.22.2-ha1258a1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45.1-default_hbd61a6d_102.conda @@ -70,6 +71,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-3.5.0-hdbdcf42_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.78.1-h1d1128b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h3b78370_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libixwebsocket-11.4.6-h766bdaa_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.3-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb03c661_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.68.1-h877daf1_0.conda @@ -719,6 +721,21 @@ packages: - icu >=78.3,<79.0a0 size: 12723451 timestamp: 1773822285671 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ixwebsocket-11.4.6-h5888daf_0.conda + sha256: e89ed788bfe9b19a654173949f973ee76b6cac675d43b9ae73e9d36d664d6d43 + md5: 5d4d1c8ed138c16fef220bfb84c1fdd5 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libixwebsocket 11.4.6 h766bdaa_0 + - libstdcxx >=13 + license: BSD-3-Clause + license_family: BSD + run_exports: + weak: + - libixwebsocket >=11.4.6,<11.4.7.0a0 + size: 355877 + timestamp: 1747402173650 - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.3-hb9d3cd8_0.conda sha256: 0960d06048a7185d3542d850986d807c6e37ca2e644342dd0c72feefcf26c2a4 md5: b38117a3c920364aff79f870c984b4a3 @@ -1076,6 +1093,22 @@ packages: - libiconv >=1.18,<2.0a0 size: 790176 timestamp: 1754908768807 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libixwebsocket-11.4.6-h766bdaa_0.conda + sha256: 4dfb1028a2bd5ab0208eb895213fd351a54879724eda4f4f02a4e5907c9e3cb1 + md5: 224f903092b8ee16c190744a423961c2 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.5.0,<4.0a0 + license: BSD-3-Clause + license_family: BSD + run_exports: + weak: + - libixwebsocket >=11.4.6,<11.4.7.0a0 + size: 203594 + timestamp: 1747402162553 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.3-hb03c661_0.conda sha256: ec30e52a3c1bf7d0425380a189d209a52baa03f22fb66dd3eb587acaa765bd6d md5: b88d90cad08e6bc8ad540cb310a761fb diff --git a/pixi.toml b/pixi.toml index 0a6ea102..cbd3b2d9 100644 --- a/pixi.toml +++ b/pixi.toml @@ -36,9 +36,15 @@ asio = ">=1.28" [feature.scripting.dependencies] lua = ">=5.4,<5.5" sol2 = "3.5.*" +# foxglove_bridge + pj_bridge: this SDK port replaced the original's Qt WebSockets +# with ixwebsocket (no Qt at build — the .ui is embedded as a constexpr char[] by +# pj_embed_ui). conda-forge ships ixwebsocket 11.4.6 with the same +# ixwebsocket::ixwebsocket target Conan uses, so no normalization helper is needed. +[feature.bridge.dependencies] +ixwebsocket = "11.4.*" [environments] -default = { features = ["datetime", "serialization", "compression", "protobuf", "mqtt", "zmq", "udp", "scripting"], solve-group = "main" } +default = { features = ["datetime", "serialization", "compression", "protobuf", "mqtt", "zmq", "udp", "scripting", "bridge"], solve-group = "main" } [tasks] plugin = "cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=$CONDA_PREFIX -DPJ_BUILD_PLUGIN=$PJ_PLUGIN && cmake --build build && ctest --test-dir build --output-on-failure" From a053c1b588889b9f02cc38f07ab186a49584f0ed Mon Sep 17 00:00:00 2001 From: Davide Faconti Date: Fri, 19 Jun 2026 01:09:01 +0200 Subject: [PATCH 21/23] build(pixi): build toolbox_mosaico (Arrow Flight) under conda (Phase 3g) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Mosaico was EXILED from the Conan build: arrow:with_flight_rpc dragged in protobuf 3.21, colliding with the repo's 6.33. conda-forge resolves the whole Flight/gRPC/Arrow graph against a SINGLE libprotobuf 6.33.5, so mosaico rejoins the unified build. Validated: plugin .so builds + all 20 tests pass under conda. - pixi 'mosaico' feature: libarrow-flight 23 (pulls libgrpc + the same protobuf already in the protobuf feature) + fmt; wired into the default env. - find_package(ArrowFlight): conda ships Flight as a separate config package, so the target must be found explicitly before the existing probe (no-op on Conan). - lua via pj_target_link_lua (plugin + 2 query tests): conda lua has no lua::lua config target, only the builtin FindLua — same gap Phase 3a fixed for colormap. - Alias conda's ArrowFlight::arrow_flight_shared -> arrow::arrow_flight so the CPM-fetched mosaico-cpp-sdk's (shared-unaware) internal probe configures. Guarded; no-op under Conan and once that SDK's probe learns the shared name. - plugin task: -DBUILD_TESTING=ON (only mosaico gates its tests on it). --- pixi.lock | 36 ++++++++++++++++++++++++++++++++++ pixi.toml | 15 ++++++++++++-- toolbox_mosaico/CMakeLists.txt | 32 ++++++++++++++++++++++++++---- 3 files changed, 77 insertions(+), 6 deletions(-) diff --git a/pixi.lock b/pixi.lock index c41b2486..b3ddc5a3 100644 --- a/pixi.lock +++ b/pixi.lock @@ -37,6 +37,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/cmake-4.3.4-hc85cc9f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cppzmq-4.11.0-hbe92c44_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cxx-compiler-1.11.0-hfcd1e18_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fmt-12.2.0-h76c4fd7_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc-14.3.0-h6f77f03_19.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-14.3.0-h235f0fe_19.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_linux-64-14.3.0-h50e9bb6_27.conda @@ -54,6 +55,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45.1-default_hbd61a6d_102.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20260107.1-cxx17_h7b12aa8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-23.0.1-h157cd41_13_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-flight-23.0.1-h73e85aa_13_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.2.0-hb03c661_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.2.0-hb03c661_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.2.0-hb03c661_1.conda @@ -565,6 +567,20 @@ packages: run_exports: {} size: 6635 timestamp: 1753098722177 +- conda: https://conda.anaconda.org/conda-forge/linux-64/fmt-12.2.0-h76c4fd7_0.conda + sha256: 6fe84e5455fbef2fdd4e6e6658db07d9158433dda2f20012400f3a39793d3b18 + md5: 47fb38d00d88c49bbb2f9580b71868c7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + license: MIT + license_family: MIT + run_exports: + weak: + - fmt >=12.2.0,<12.3.0a0 + size: 211976 + timestamp: 1781603621041 - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc-14.3.0-h6f77f03_19.conda sha256: 5c86862941a44b2554e23e623ddb8f18c95474cacf536635e38ee431385b7d4a md5: 444fafd4d1acdfe80c49b559a2569ba1 @@ -837,6 +853,26 @@ packages: - libarrow >=23.0.1,<23.1.0a0 size: 6495991 timestamp: 1781582220016 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-flight-23.0.1-h73e85aa_13_cpu.conda + build_number: 13 + sha256: ebbfb6c9d361ad0a7290079e795fd1abf68308bf2ba2f732c9d1ba49a8ff39ed + md5: 479901ea5be00a0273b3d4a47c9fc433 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20260107.1,<20260108.0a0 + - libarrow 23.0.1 h157cd41_13_cpu + - libgcc >=14 + - libgrpc >=1.78.1,<1.79.0a0 + - libprotobuf >=6.33.5,<6.33.6.0a0 + - libstdcxx >=14 + license: Apache-2.0 + license_family: APACHE + run_exports: + weak: + - libarrow-flight >=23.0.1,<23.1.0a0 + size: 466325 + timestamp: 1781582437966 - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.2.0-hb03c661_1.conda sha256: 318f36bd49ca8ad85e6478bd8506c88d82454cc008c1ac1c6bf00a3c42fa610e md5: 72c8fd1af66bd67bf580645b426513ed diff --git a/pixi.toml b/pixi.toml index cbd3b2d9..71d87657 100644 --- a/pixi.toml +++ b/pixi.toml @@ -42,9 +42,20 @@ sol2 = "3.5.*" # ixwebsocket::ixwebsocket target Conan uses, so no normalization helper is needed. [feature.bridge.dependencies] ixwebsocket = "11.4.*" +# toolbox_mosaico: Arrow Flight client (mosaico-cpp-sdk fetched via CPM). Under +# Conan, arrow:with_flight_rpc dragged in protobuf 3.21 which collided with the +# repo's 6.33 -> mosaico was exiled from CI. conda-forge's libarrow-flight 23 +# pulls libgrpc + libprotobuf 6.33 (the SAME protobuf already in the protobuf +# feature), so the whole graph solves to ONE libprotobuf and mosaico rejoins the +# unified build. fmt is mosaico's only extra direct dep (find_package(fmt)). +[feature.mosaico.dependencies] +libarrow-flight = ">=23,<24" +fmt = "*" [environments] -default = { features = ["datetime", "serialization", "compression", "protobuf", "mqtt", "zmq", "udp", "scripting", "bridge"], solve-group = "main" } +default = { features = ["datetime", "serialization", "compression", "protobuf", "mqtt", "zmq", "udp", "scripting", "bridge", "mosaico"], solve-group = "main" } [tasks] -plugin = "cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=$CONDA_PREFIX -DPJ_BUILD_PLUGIN=$PJ_PLUGIN && cmake --build build && ctest --test-dir build --output-on-failure" +# BUILD_TESTING=ON so plugins that gate their tests on it (toolbox_mosaico) still +# run them under ctest; all other plugins register tests unconditionally. +plugin = "cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=$CONDA_PREFIX -DBUILD_TESTING=ON -DPJ_BUILD_PLUGIN=$PJ_PLUGIN && cmake --build build && ctest --test-dir build --output-on-failure" diff --git a/toolbox_mosaico/CMakeLists.txt b/toolbox_mosaico/CMakeLists.txt index 3de7018f..5e3addeb 100644 --- a/toolbox_mosaico/CMakeLists.txt +++ b/toolbox_mosaico/CMakeLists.txt @@ -1,8 +1,10 @@ find_package(nlohmann_json REQUIRED) find_package(Arrow CONFIG REQUIRED) find_package(fmt REQUIRED) -find_package(lua REQUIRED) find_package(sol2 REQUIRED) +# lua is linked via pj_target_link_lua, not find_package(lua): conda-forge's lua +# ships only the builtin FindLua module (no lua::lua config target), whereas Conan +# provides lua::lua. The helper bridges both — see cmake/PjDependencyTargets.cmake. # Probe for a real Arrow Flight target (the candidate set must match the SDK's # in mosaico-cpp-sdk). Crucially this does NOT fall back to plain arrow::arrow: @@ -12,6 +14,26 @@ find_package(sol2 REQUIRED) # FATAL_ERROR'd on the missing Flight target. With a strict probe, Flight-less # platforms fall through to the skip below — Mosaico is Linux-only for Flight, # same as PJ3 — instead of failing the whole build. +# +# conda-forge ships Arrow Flight as a SEPARATE config package (libarrow-flight -> +# ArrowFlight::arrow_flight_shared); the target only exists once find_package is +# called for it. QUIET + no REQUIRED keeps Flight-less platforms on the skip path +# below. Under Conan the Flight target is created transitively by find_package(Arrow), +# so this is a harmless no-op (the config-file include guards against re-definition). +find_package(ArrowFlight CONFIG QUIET) + +# Bridge for the vendored mosaico-cpp-sdk: its internal Flight probe predates +# shared-Arrow distros and only checks ArrowFlight::arrow_flight_static / +# arrow::arrow_flight, NOT ArrowFlight::arrow_flight_shared (conda-forge's name). +# Expose the shared target under arrow::arrow_flight (a name the SDK DOES probe) +# so the CPM-fetched SDK configures. Guarded by NOT TARGET, so it is a no-op under +# Conan and the day mosaico-cpp-sdk's probe learns the shared name. (Proper fix: +# add ArrowFlight::arrow_flight_shared to that SDK's probe upstream.) +if(TARGET ArrowFlight::arrow_flight_shared AND NOT TARGET arrow::arrow_flight) + set_target_properties(ArrowFlight::arrow_flight_shared PROPERTIES IMPORTED_GLOBAL TRUE) + add_library(arrow::arrow_flight ALIAS ArrowFlight::arrow_flight_shared) +endif() + set(MOSAICO_ARROW_FLIGHT_TARGET "") foreach(_candidate ArrowFlight::arrow_flight_shared @@ -95,9 +117,9 @@ target_link_libraries(toolbox_mosaico_plugin PRIVATE fmt::fmt nlohmann_json::nlohmann_json mosaico_sdk - lua::lua sol2::sol2 ) +pj_target_link_lua(toolbox_mosaico_plugin PRIVATE) # gRPC++ is optional at find-package time; link only if probed. if(MOSAICO_GRPCPP_TARGET) @@ -276,8 +298,9 @@ if(BUILD_TESTING) tests/query_engine_test.cpp ) target_link_libraries(toolbox_mosaico_query_engine_test PRIVATE - lua::lua sol2::sol2 GTest::gtest_main + sol2::sol2 GTest::gtest_main ) + pj_target_link_lua(toolbox_mosaico_query_engine_test PRIVATE) target_compile_features(toolbox_mosaico_query_engine_test PRIVATE cxx_std_20) # Match the plugin's relaxed flags: the vendored PJ3 query/* headers and sol2 # trip -Wconversion / -Wunused-parameter under -Werror. @@ -297,8 +320,9 @@ if(BUILD_TESTING) tests/query_filter_test.cpp ) target_link_libraries(toolbox_mosaico_query_filter_test PRIVATE - lua::lua sol2::sol2 GTest::gtest_main + sol2::sol2 GTest::gtest_main ) + pj_target_link_lua(toolbox_mosaico_query_filter_test PRIVATE) target_compile_features(toolbox_mosaico_query_filter_test PRIVATE cxx_std_20) target_compile_options(toolbox_mosaico_query_filter_test PRIVATE -Wall -Wextra -Werror From f8c4453cbc31eec4d7feae7d3a863008708a7ea1 Mon Sep 17 00:00:00 2001 From: Davide Faconti Date: Fri, 19 Jun 2026 07:33:30 +0200 Subject: [PATCH 22/23] build(pixi): build toolbox_reactive_scripts_editor under conda (Phase 3d) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Default build (PJ_REACTIVE_ENABLE_PYTHON=OFF, the shipping Linux artifact) needed only the lua fix: drop find_package(lua) + link via pj_target_link_lua (conda lua has no lua::lua config target, only builtin FindLua — same gap as colormap/mosaico). Builds + 2/2 tests under conda, links liblua, NO libpython (as intended). The opt-in Python path (pybind11 + cpython, shared libpython) ties into D11 bundling and is validated separately. --- toolbox_reactive_scripts_editor/CMakeLists.txt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/toolbox_reactive_scripts_editor/CMakeLists.txt b/toolbox_reactive_scripts_editor/CMakeLists.txt index b48aded7..ae430bd8 100644 --- a/toolbox_reactive_scripts_editor/CMakeLists.txt +++ b/toolbox_reactive_scripts_editor/CMakeLists.txt @@ -1,6 +1,7 @@ -find_package(lua REQUIRED) find_package(sol2 REQUIRED) find_package(nlohmann_json REQUIRED) +# lua via pj_target_link_lua below — conda lua ships only the builtin FindLua +# (no lua::lua config target); the helper bridges Conan and conda. # Python embedding is gated behind an opt-in flag. Default OFF so Linux # marketplace artifacts ship without a NEEDED dependency on a libpython that @@ -25,11 +26,11 @@ target_compile_options(toolbox_reactive_scripts_editor_plugin PRIVATE ${PJ_WARNI target_link_libraries(toolbox_reactive_scripts_editor_plugin PRIVATE plotjuggler_sdk::plugin_sdk - lua::lua sol2::sol2 nlohmann_json::nlohmann_json ${CMAKE_DL_LIBS} ) +pj_target_link_lua(toolbox_reactive_scripts_editor_plugin PRIVATE) if(PJ_REACTIVE_ENABLE_PYTHON) target_link_libraries(toolbox_reactive_scripts_editor_plugin PRIVATE pybind11::embed) From cc7ef5ca6a7f76be90e8f8c31872a9249652a82a Mon Sep 17 00:00:00 2001 From: Davide Faconti Date: Fri, 19 Jun 2026 07:37:28 +0200 Subject: [PATCH 23/23] build(pixi): build data_load_mp4 + data_load_lerobot under conda (Phase 3e) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit FFmpeg is the last normalization gap: Conan ships an ffmpeg CMake config (ffmpeg::avformat/avcodec/avutil) but conda-forge ffmpeg ships pkg-config (.pc) ONLY. Add pj_target_link_ffmpeg(tgt vis ) — Conan targets when present, else IMPORTED targets from the libav* pkg-config modules (GLOBAL + per-component guard so mp4 and pj_video_demux can both link avformat in one build) — plus a pj_ffmpeg_available probe so pj_video_demux's graceful-skip detects ffmpeg under BOTH providers (not just the CMake config). The probe's pkg-config fallback is gated on DEFINED ENV{CONDA_PREFIX} so the Conan aggregate build (no ffmpeg dep) keeps SKIPPING pj_video_demux and never silently links a SYSTEM ffmpeg from the host pkg-config. Verified: video_demux.cpp compiles under conda (CONDA_PREFIX set) and is skipped without it. - common/pj_video_demux + data_load_mp4 migrated to the helper. - data_load_lerobot reaches ffmpeg transitively via pj_video_demux (no change). - 'media' pixi feature (ffmpeg + pkg-config) wired into the default env. - Both plugins build + tests pass under conda ffmpeg 8.1.2 (mp4 4/4, lerobot 8/8). This completes linux-64: all ~21 plugins now build under conda. --- cmake/PjDependencyTargets.cmake | 58 + common/pj_video_demux/CMakeLists.txt | 18 +- data_load_mp4/CMakeLists.txt | 5 +- pixi.lock | 1797 +++++++++++++++++++++++++- pixi.toml | 8 +- 5 files changed, 1868 insertions(+), 18 deletions(-) diff --git a/cmake/PjDependencyTargets.cmake b/cmake/PjDependencyTargets.cmake index 687edd66..25b9005e 100644 --- a/cmake/PjDependencyTargets.cmake +++ b/cmake/PjDependencyTargets.cmake @@ -120,6 +120,64 @@ function(pj_target_link_lua tgt vis) target_link_libraries(${tgt} ${vis} pj_lua) endfunction() +# Link FFmpeg libav* components by name, e.g. +# pj_target_link_ffmpeg(my_target PRIVATE avformat avutil) +# Conan ships an ffmpeg CMake config (ffmpeg::avformat, ffmpeg::avcodec, ...); +# conda-forge ffmpeg ships pkg-config (.pc) ONLY, no CMake config. The helper +# links the Conan targets when present, else builds IMPORTED targets from the +# libav pkg-config modules. GLOBAL + a per-component TARGET guard make +# this safe when several subdirectories link the same component (e.g. data_load_mp4 +# and common/pj_video_demux both link avformat/avutil in one build). +function(pj_target_link_ffmpeg tgt vis) + if(NOT TARGET ffmpeg::avutil) + find_package(ffmpeg QUIET CONFIG) + endif() + if(TARGET ffmpeg::avutil) + foreach(_c ${ARGN}) + target_link_libraries(${tgt} ${vis} ffmpeg::${_c}) # Conan + endforeach() + return() + endif() + find_package(PkgConfig REQUIRED) + foreach(_c ${ARGN}) + if(NOT TARGET PkgConfig::PJ_FF_${_c}) + pkg_check_modules(PJ_FF_${_c} REQUIRED IMPORTED_TARGET GLOBAL lib${_c}) + endif() + target_link_libraries(${tgt} ${vis} PkgConfig::PJ_FF_${_c}) # conda-forge + endforeach() +endfunction() + +# Availability probe for the graceful-skip in common/pj_video_demux (builds that +# exercise only non-ffmpeg plugins have no ffmpeg dep at all). Detects ffmpeg under +# BOTH providers — Conan's CMake config OR conda-forge's pkg-config — so the skip +# fires only when ffmpeg is genuinely absent, not merely missing a CMake config. +function(pj_ffmpeg_available out) + if(TARGET ffmpeg::avutil) + set(${out} TRUE PARENT_SCOPE) + return() + endif() + find_package(ffmpeg QUIET CONFIG) + if(TARGET ffmpeg::avutil) + set(${out} TRUE PARENT_SCOPE) + return() + endif() + # pkg-config fallback (conda-forge ffmpeg has no CMake config). Gated on an active + # conda environment so the Conan aggregate build — which has NO ffmpeg dep and must + # SKIP pj_video_demux — never silently picks up a SYSTEM ffmpeg from the host's + # pkg-config. Under Conan, ffmpeg arrives only as a CMake config (handled above). + if(DEFINED ENV{CONDA_PREFIX}) + find_package(PkgConfig QUIET) + if(PkgConfig_FOUND) + pkg_check_modules(PJ_FF_PROBE QUIET libavutil) + if(PJ_FF_PROBE_FOUND) + set(${out} TRUE PARENT_SCOPE) + return() + endif() + endif() + endif() + set(${out} FALSE PARENT_SCOPE) +endfunction() + # Availability probe for the graceful-skip in common/arrow_helpers (some build # configs, e.g. the ROS2 proxy leg, have no Arrow dep at all). function(pj_arrow_available out) diff --git a/common/pj_video_demux/CMakeLists.txt b/common/pj_video_demux/CMakeLists.txt index bc1a8a6b..eef8b0cb 100644 --- a/common/pj_video_demux/CMakeLists.txt +++ b/common/pj_video_demux/CMakeLists.txt @@ -9,12 +9,10 @@ # does its own find_package(ffmpeg REQUIRED), so it never silently runs without # the target. -if(NOT TARGET ffmpeg::avformat) - find_package(ffmpeg QUIET CONFIG) - if(NOT TARGET ffmpeg::avformat) - message(STATUS "pj_video_demux: ffmpeg not found, skipping shared helper library") - return() - endif() +pj_ffmpeg_available(_pj_have_ffmpeg) +if(NOT _pj_have_ffmpeg) + message(STATUS "pj_video_demux: ffmpeg not found, skipping shared helper library") + return() endif() add_library(pj_video_demux STATIC video_demux.cpp) @@ -31,12 +29,8 @@ target_include_directories(pj_video_demux PUBLIC ) # PJ::Span / PJ::Expected come from plugin_sdk; libav* used only for indexing. -target_link_libraries(pj_video_demux PUBLIC - plotjuggler_sdk::plugin_sdk - ffmpeg::avformat - ffmpeg::avcodec - ffmpeg::avutil -) +target_link_libraries(pj_video_demux PUBLIC plotjuggler_sdk::plugin_sdk) +pj_target_link_ffmpeg(pj_video_demux PUBLIC avformat avcodec avutil) # --- Unit tests: pure byte-rewrite cases + committed h264/hevc/av1 fixtures # (+ an env-gated external e2e via PJ_TEST_VIDEO) --- diff --git a/data_load_mp4/CMakeLists.txt b/data_load_mp4/CMakeLists.txt index 501b9e1f..ba060146 100644 --- a/data_load_mp4/CMakeLists.txt +++ b/data_load_mp4/CMakeLists.txt @@ -1,6 +1,7 @@ find_package(nlohmann_json REQUIRED) -find_package(ffmpeg REQUIRED) find_package(date REQUIRED) +# ffmpeg linked via pj_target_link_ffmpeg below (conda-forge ffmpeg is pkg-config +# only, no CMake config); see cmake/PjDependencyTargets.cmake. include(${CMAKE_CURRENT_LIST_DIR}/../cmake/EmbedManifest.cmake) @@ -10,9 +11,9 @@ target_compile_features(mp4_source_plugin PRIVATE cxx_std_20) target_compile_options(mp4_source_plugin PRIVATE ${PJ_WARNING_FLAGS}) target_link_libraries(mp4_source_plugin PRIVATE plotjuggler_sdk::plugin_sdk nlohmann_json::nlohmann_json date::date - ffmpeg::avformat ffmpeg::avutil pj_video_demux ) +pj_target_link_ffmpeg(mp4_source_plugin PRIVATE avformat avutil) pj_embed_manifest(mp4_source_plugin HEADER ${CMAKE_CURRENT_BINARY_DIR}/generated/mp4_manifest.hpp diff --git a/pixi.lock b/pixi.lock index b3ddc5a3..0e2b29be 100644 --- a/pixi.lock +++ b/pixi.lock @@ -9,6 +9,8 @@ environments: packages: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.16.1-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aom-3.14.1-pl5321h039972f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/asio-1.36.0-hecca717_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.10.3-hea842a7_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.9.14-h78948cc_2.conda @@ -34,95 +36,204 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_9.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.6-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/c-compiler-1.11.0-h4d9bdce_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-he90730b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cmake-4.3.4-hc85cc9f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cppzmq-4.11.0-hbe92c44_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cxx-compiler-1.11.0-hfcd1e18_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/dav1d-1.2.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h24cb091_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ffmpeg-8.1.2-gpl_h6d6c1bd_900.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fmt-12.2.0-h76c4fd7_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.18.1-h27c8c51_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.16-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc-14.3.0-h6f77f03_19.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-14.3.0-h235f0fe_19.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_linux-64-14.3.0-h50e9bb6_27.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.44.6-h2b0a6b4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/glslang-16.3.0-h96af755_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.15-hecca717_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gtest-1.17.0-h84d6215_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx-14.3.0-h76987e4_19.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-14.3.0-h2185e75_19.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_linux-64-14.3.0-hd240bd5_27.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-14.2.1-h6083320_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/howardhinnant_date-3.0.4-h84d6215_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.3-h33c6efd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/intel-gmmlib-22.10.0-hb700be7_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/intel-media-driver-26.1.6-hecca717_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ixwebsocket-11.4.6-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.3-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.22.2-ha1258a1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lame-3.100-h166bdaf_1003.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.19.1-h0c24ade_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45.1-default_hbd61a6d_102.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.1.0-hdb68285_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/level-zero-1.29.0-hb700be7_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20260107.1-cxx17_h7b12aa8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-23.0.1-h157cd41_13_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-flight-23.0.1-h73e85aa_13_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libass-0.17.4-h96ad9f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.2.0-hb03c661_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.2.0-hb03c661_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.2.0-hb03c661_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcap-2.78-hd0affe5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.20.0-hcf29cc6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.25-h17f619e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdovi-3.3.2-ha23c83e_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdrm-2.4.127-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libegl-1.7.0-ha4b6fd6_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.8.1-hecca717_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h3435931_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libflac-1.5.0-he200343_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.14.3-ha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.14.3-h73754d4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_19.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgl-1.7.0-ha4b6fd6_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.88.1-h0d30a3d_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglvnd-1.7.0-ha4b6fd6_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglx-1.7.0-ha4b6fd6_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_19.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-3.5.0-h8d2ee43_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-3.5.0-hdbdcf42_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.78.1-h1d1128b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.13.0-default_he001693_1000.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwy-1.4.0-h10be129_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h3b78370_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libixwebsocket-11.4.6-h766bdaa_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.4.1-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libjxl-0.11.2-h174a0a3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.3-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb03c661_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.68.1-h877daf1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.5-hd0c01bc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.27.0-h9692893_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.27.0-ha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-2026.2.0-h1f0fae8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-auto-batch-plugin-2026.2.0-h7e124b3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-auto-plugin-2026.2.0-h7e124b3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-hetero-plugin-2026.2.0-hd41364c_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-intel-cpu-plugin-2026.2.0-h1f0fae8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-intel-gpu-plugin-2026.2.0-h1f0fae8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-intel-npu-plugin-2026.2.0-h1f0fae8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-ir-frontend-2026.2.0-hd41364c_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-onnx-frontend-2026.2.0-h7a07914_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-paddle-frontend-2026.2.0-h7a07914_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-pytorch-frontend-2026.2.0-hecca717_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-tensorflow-frontend-2026.2.0-h78e8023_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-tensorflow-lite-frontend-2026.2.0-hecca717_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopus-1.6.1-h280c20c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-23.0.1-h7376487_13_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpciaccess-0.19-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libplacebo-7.360.1-h9eeb4b2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.58-h421ea60_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-6.33.5-h6eeba95_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2025.11.05-h0dc7533_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.62.3-h4c96295_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-14.3.0-h8f1669f_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsndfile-1.2.2-hc7d488a_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.22-h280c20c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.53.2-h0c1763c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hcf80075_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_19.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.2.0-hdf11a46_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-257.13-h084b8d7_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.22.0-h7d032f7_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.1-h9d88235_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libudev1-257.13-h084b8d7_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libunwind-1.8.3-h65a8314_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liburing-2.14-hb700be7_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libusb-1.0.29-h73b1eb8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.42.2-h5347b49_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.52.1-h280c20c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libva-2.23.0-he1eb515_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h54a6638_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libvpl-2.16.0-h54a6638_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libvpx-1.15.2-hecca717_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libvulkan-loader-1.4.341.0-h5279c79_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.6.0-hd42ef1d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.13.2-hca5e8e5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-16-2.15.3-hca6bf5a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.15.3-h49c6c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.2-h25fd6f3_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lua-5.4.8-h03e1676_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.6-hdb14827_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ninja-1.13.2-h171cf75_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.12.0-h54a6638_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ocl-icd-2.3.4-hb03c661_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/opencl-headers-2025.06.13-hecca717_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openh264-2.6.0-hc22cd8d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.3-h35e630c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.3.0-h21090e2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/paho-mqtt-c-1.3.16-h519b1b1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/paho-mqtt-cpp-1.6.0-h3b75817_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.4-hda50119_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.47-haa7fec5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.4-h54a6638_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pkg-config-0.29.2-h4bc722e_1009.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-6.33.5-py314h61e7c5f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pugixml-1.15-h3f63f65_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pulseaudio-client-17.0-h9a6aba3_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.14.6-habeac84_100_cp314.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2025.11.05-h5301d42_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.3-h853b02a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rhash-1.4.6-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.7.4-h92489ea_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2-2.32.56-h54a6638_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl3-3.4.10-hdeec2a5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/shaderc-2026.2-h718be3e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.2-h03e3b7b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sol2-3.5.0-lua54hb700be7_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/spirv-tools-2026.2-hb700be7_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/svt-av1-4.0.1-hecca717_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2023.0.0-hab88423_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h366c992_103.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.25.0-hd6090a7_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/x264-1!164.3095-h166bdaf_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/x265-3.5-h924138e_3.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.47-h280c20c_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-he73a12e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.13-he1eb515_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb03c661_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcursor-1.2.3-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb03c661_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.7-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.2-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxi-1.8.3-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrandr-1.5.5-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.12-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxscrnsaver-1.2.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxtst-1.2.5-hb9d3cd8_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h09e67af_11.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.2-h25fd6f3_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.6.17-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-6.12.0-he073ed8_6.conda - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-14.3.0-hf649bbc_119.conda - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-14.3.0-h9f08a49_119.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.14-8_cp314.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.39-he3f20f0_6.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wayland-protocols-1.49-hd8ed1ab_0.conda - conda: https://prefix.dev/plotjuggler/linux-64/plotjuggler_sdk-0.8.1-hb0f4dca_0.conda packages: - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda @@ -141,6 +252,33 @@ packages: - _openmp_mutex >=4.5 size: 28948 timestamp: 1770939786096 +- conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.16.1-hb03c661_0.conda + sha256: cf93ca0f1f107e95a35969a4622684e08fcb8cf37f8cf4a1e9e424828386c921 + md5: 8904e09bda369377b3dd07e2ac828c5d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: LGPL-2.1-or-later + license_family: LGPL + run_exports: + weak: + - alsa-lib >=1.2.16.1,<1.3.0a0 + size: 592377 + timestamp: 1781521980743 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aom-3.14.1-pl5321h039972f_1.conda + sha256: b1d972a9b949a88babee681437535550b3ca5dbca6a23a40dffeb7900fec19fd + md5: 5a78a69eb3b50f24b379e9d2a93163ae + depends: + - __glibc >=2.17,<3.0.a0 + - libstdcxx >=14 + - libgcc >=14 + license: BSD-2-Clause + license_family: BSD + run_exports: + weak: + - aom >=3.14.1,<3.15.0a0 + size: 3103347 + timestamp: 1780752473089 - conda: https://conda.anaconda.org/conda-forge/linux-64/asio-1.36.0-hecca717_0.conda sha256: b7a0bfa9b721a489c7d5aac4511063a12a07a17712738024f48b6c349bcce214 md5: 990cf124029c93562f88bbbac4fb77fd @@ -521,6 +659,35 @@ packages: run_exports: {} size: 6693 timestamp: 1753098721814 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-he90730b_1.conda + sha256: 06525fa0c4e4f56e771a3b986d0fdf0f0fc5a3270830ee47e127a5105bde1b9a + md5: bb6c4808bfa69d6f7f6b07e5846ced37 + depends: + - __glibc >=2.17,<3.0.a0 + - fontconfig >=2.15.0,<3.0a0 + - fonts-conda-ecosystem + - icu >=78.1,<79.0a0 + - libexpat >=2.7.3,<3.0a0 + - libfreetype >=2.14.1 + - libfreetype6 >=2.14.1 + - libgcc >=14 + - libglib >=2.86.3,<3.0a0 + - libpng >=1.6.53,<1.7.0a0 + - libstdcxx >=14 + - libxcb >=1.17.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - pixman >=0.46.4,<1.0a0 + - xorg-libice >=1.1.2,<2.0a0 + - xorg-libsm >=1.2.6,<2.0a0 + - xorg-libx11 >=1.8.12,<2.0a0 + - xorg-libxext >=1.3.6,<2.0a0 + - xorg-libxrender >=0.9.12,<0.10.0a0 + license: LGPL-2.1-only or MPL-1.1 + run_exports: + weak: + - cairo >=1.18.4,<2.0a0 + size: 989514 + timestamp: 1766415934926 - conda: https://conda.anaconda.org/conda-forge/linux-64/cmake-4.3.4-hc85cc9f_0.conda sha256: a3369cbf4c8d77a3398c3c2bb1e7d72af26ac9c655e4753964bdb744bf1e5e8c md5: aa9174a98942599973baf4c5639e13b5 @@ -567,6 +734,101 @@ packages: run_exports: {} size: 6635 timestamp: 1753098722177 +- conda: https://conda.anaconda.org/conda-forge/linux-64/dav1d-1.2.1-hd590300_0.conda + sha256: 22053a5842ca8ee1cf8e1a817138cdb5e647eb2c46979f84153f6ad7bde73020 + md5: 418c6ca5929a611cbd69204907a83995 + depends: + - libgcc-ng >=12 + license: BSD-2-Clause + license_family: BSD + run_exports: + weak: + - dav1d >=1.2.1,<1.2.2.0a0 + size: 760229 + timestamp: 1685695754230 +- conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h24cb091_1.conda + sha256: 8bb557af1b2b7983cf56292336a1a1853f26555d9c6cecf1e5b2b96838c9da87 + md5: ce96f2f470d39bd96ce03945af92e280 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - libzlib >=1.3.1,<2.0a0 + - libglib >=2.86.2,<3.0a0 + - libexpat >=2.7.3,<3.0a0 + license: AFL-2.1 OR GPL-2.0-or-later + run_exports: + weak: + - dbus >=1.16.2,<2.0a0 + size: 447649 + timestamp: 1764536047944 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ffmpeg-8.1.2-gpl_h6d6c1bd_900.conda + sha256: 733a4d28449d2011924c60038205d1cf8fbb6ab17bbc14d0292ff3f1ad5e2000 + md5: f67dd5264815883b92396d0dddbfce78 + depends: + - __glibc >=2.17,<3.0.a0 + - alsa-lib >=1.2.16.1,<1.3.0a0 + - aom >=3.14.1,<3.15.0a0 + - bzip2 >=1.0.8,<2.0a0 + - dav1d >=1.2.1,<1.2.2.0a0 + - fontconfig >=2.18.1,<3.0a0 + - fonts-conda-ecosystem + - gmp >=6.3.0,<7.0a0 + - harfbuzz >=14.2.1 + - lame >=3.100,<3.101.0a0 + - libass >=0.17.4,<0.17.5.0a0 + - libexpat >=2.8.1,<3.0a0 + - libfreetype >=2.14.3 + - libfreetype6 >=2.14.3 + - libgcc >=14 + - libiconv >=1.18,<2.0a0 + - libjxl >=0.11,<1.0a0 + - liblzma >=5.8.3,<6.0a0 + - libopenvino >=2026.2.0,<2026.2.1.0a0 + - libopenvino-auto-batch-plugin >=2026.2.0,<2026.2.1.0a0 + - libopenvino-auto-plugin >=2026.2.0,<2026.2.1.0a0 + - libopenvino-hetero-plugin >=2026.2.0,<2026.2.1.0a0 + - libopenvino-intel-cpu-plugin >=2026.2.0,<2026.2.1.0a0 + - libopenvino-intel-gpu-plugin >=2026.2.0,<2026.2.1.0a0 + - libopenvino-intel-npu-plugin >=2026.2.0,<2026.2.1.0a0 + - libopenvino-ir-frontend >=2026.2.0,<2026.2.1.0a0 + - libopenvino-onnx-frontend >=2026.2.0,<2026.2.1.0a0 + - libopenvino-paddle-frontend >=2026.2.0,<2026.2.1.0a0 + - libopenvino-pytorch-frontend >=2026.2.0,<2026.2.1.0a0 + - libopenvino-tensorflow-frontend >=2026.2.0,<2026.2.1.0a0 + - libopenvino-tensorflow-lite-frontend >=2026.2.0,<2026.2.1.0a0 + - libopus >=1.6.1,<2.0a0 + - libplacebo >=7.360.1,<7.361.0a0 + - librsvg >=2.62.3,<3.0a0 + - libstdcxx >=14 + - libva >=2.23.0,<3.0a0 + - libvorbis >=1.3.7,<1.4.0a0 + - libvpl >=2.16.0,<2.17.0a0 + - libvpx >=1.15.2,<1.16.0a0 + - libvulkan-loader >=1.4.341.0,<2.0a0 + - libwebp-base >=1.6.0,<2.0a0 + - libxcb >=1.17.0,<2.0a0 + - libxml2 + - libxml2-16 >=2.14.6 + - libzlib >=1.3.2,<2.0a0 + - openh264 >=2.6.0,<2.6.1.0a0 + - openssl >=3.5.7,<4.0a0 + - pulseaudio-client >=17.0,<17.1.0a0 + - sdl2 >=2.32.56,<3.0a0 + - shaderc >=2026.2,<2026.3.0a0 + - svt-av1 >=4.0.1,<4.0.2.0a0 + - x264 >=1!164.3095,<1!165 + - x265 >=3.5,<3.6.0a0 + - xorg-libx11 >=1.8.13,<2.0a0 + constrains: + - __cuda >=12.8 + license: GPL-2.0-or-later + license_family: GPL + run_exports: + weak: + - ffmpeg >=8.1.2,<9.0a0 + size: 13047853 + timestamp: 1781693629355 - conda: https://conda.anaconda.org/conda-forge/linux-64/fmt-12.2.0-h76c4fd7_0.conda sha256: 6fe84e5455fbef2fdd4e6e6658db07d9158433dda2f20012400f3a39793d3b18 md5: 47fb38d00d88c49bbb2f9580b71868c7 @@ -581,6 +843,37 @@ packages: - fmt >=12.2.0,<12.3.0a0 size: 211976 timestamp: 1781603621041 +- conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.18.1-h27c8c51_0.conda + sha256: 2e50bdcebdf70a865b81f2456bbc586386451ec601c60f2b6cd22b8c40a2d384 + md5: e0e050cfa9fa85fe39632ab11cb7f3e0 + depends: + - __glibc >=2.17,<3.0.a0 + - libexpat >=2.8.1,<3.0a0 + - libfreetype >=2.14.3 + - libfreetype6 >=2.14.3 + - libgcc >=14 + - libuuid >=2.42.1,<3.0a0 + - libzlib >=1.3.2,<2.0a0 + license: MIT + license_family: MIT + run_exports: + weak: + - fontconfig >=2.18.1,<3.0a0 + - fonts-conda-ecosystem + size: 281880 + timestamp: 1780450077431 +- conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.16-hb03c661_0.conda + sha256: 858283ff33d4c033f4971bf440cebff217d5552a5222ba994c49be990dacd40d + md5: f9f81ea472684d75b9dd8d0b328cf655 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: LGPL-2.1-or-later + run_exports: + weak: + - fribidi >=1.0.16,<2.0a0 + size: 61244 + timestamp: 1757438574066 - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc-14.3.0-h6f77f03_19.conda sha256: 5c86862941a44b2554e23e623ddb8f18c95474cacf536635e38ee431385b7d4a md5: 444fafd4d1acdfe80c49b559a2569ba1 @@ -624,6 +917,24 @@ packages: - libgcc >=14 size: 29324 timestamp: 1781279939286 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.44.6-h2b0a6b4_0.conda + sha256: c5594497f0646e9079705b3199dbb2d5b13c48173cf110000fa1c8818e2b3e0c + md5: 7892f39a39ed39591a89a28eba03e987 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libglib >=2.86.4,<3.0a0 + - libjpeg-turbo >=3.1.2,<4.0a0 + - liblzma >=5.8.2,<6.0a0 + - libpng >=1.6.56,<1.7.0a0 + - libtiff >=4.7.1,<4.8.0a0 + license: LGPL-2.1-or-later + license_family: LGPL + run_exports: + weak: + - gdk-pixbuf >=2.44.6,<3.0a0 + size: 577414 + timestamp: 1774985848058 - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda sha256: 6c33bf0c4d8f418546ba9c250db4e4221040936aef8956353bc764d4877bc39a md5: d411fc29e338efb48c5fd4576d71d881 @@ -652,6 +963,47 @@ packages: - glog >=0.7.1,<0.8.0a0 size: 143452 timestamp: 1718284177264 +- conda: https://conda.anaconda.org/conda-forge/linux-64/glslang-16.3.0-h96af755_0.conda + sha256: 3c9b6a90937a96ad27d160304cdbe5e9961db613aba2b84ff673429f0c61d48e + md5: d175cb2c14104728ada04883786a309d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - spirv-tools >=2026,<2027.0a0 + license: BSD-3-Clause + license_family: BSD + run_exports: + weak: + - glslang >=16,<17.0a0 + size: 1366082 + timestamp: 1777747028121 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda + sha256: 309cf4f04fec0c31b6771a5809a1909b4b3154a2208f52351e1ada006f4c750c + md5: c94a5994ef49749880a8139cf9afcbe1 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: GPL-2.0-or-later OR LGPL-3.0-or-later + run_exports: + weak: + - gmp >=6.3.0,<7.0a0 + size: 460055 + timestamp: 1718980856608 +- conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.15-hecca717_0.conda + sha256: 885fa7d1d7e2ad9ed0a700ee0d81ceb49de278253082d517959b22d6336eecce + md5: cf09e9fc938518e91d0706572cadf17a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + license: LGPL-2.0-or-later + license_family: LGPL + run_exports: + weak: + - graphite2 >=1.3.15,<2.0a0 + size: 100054 + timestamp: 1780454302233 - conda: https://conda.anaconda.org/conda-forge/linux-64/gtest-1.17.0-h84d6215_1.conda sha256: 1f738280f245863c5ac78bcc04bb57266357acda45661c4aa25823030c6fb5db md5: 55e29b72a71339bc651f9975492db71f @@ -708,6 +1060,28 @@ packages: - libgcc >=14 size: 27854 timestamp: 1781279939286 +- conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-14.2.1-h6083320_0.conda + sha256: da9901aa1e20cbc2369fda212039b294dd02bce95f005539bab840b7310bf7d0 + md5: 21ee4640b7c2d94e584349fa12b29b9a + depends: + - __glibc >=2.17,<3.0.a0 + - cairo >=1.18.4,<2.0a0 + - graphite2 >=1.3.14,<2.0a0 + - icu >=78.3,<79.0a0 + - libexpat >=2.8.1,<3.0a0 + - libfreetype >=2.14.3 + - libfreetype6 >=2.14.3 + - libgcc >=14 + - libglib >=2.88.1,<3.0a0 + - libstdcxx >=14 + - libzlib >=1.3.2,<2.0a0 + license: MIT + license_family: MIT + run_exports: + weak: + - harfbuzz >=14.2.1 + size: 2362258 + timestamp: 1780450503234 - conda: https://conda.anaconda.org/conda-forge/linux-64/howardhinnant_date-3.0.4-h84d6215_0.conda sha256: a3f9e2998cd1425836a3789497d04bde69a34bf925e99666507606ab402ff83f md5: 3e9a3d1fc256a46c88ae8bf12fae9e5d @@ -737,6 +1111,36 @@ packages: - icu >=78.3,<79.0a0 size: 12723451 timestamp: 1773822285671 +- conda: https://conda.anaconda.org/conda-forge/linux-64/intel-gmmlib-22.10.0-hb700be7_0.conda + sha256: bc231d69eb6663db0e09738fb916c5e5507147cf1ac60f364f964004e0b29bab + md5: 10909406c1b0e4b57f9f4f0eb0999af8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + license: MIT + license_family: MIT + run_exports: + weak: + - intel-gmmlib >=22.10.0,<23.0a0 + size: 1013714 + timestamp: 1774422680665 +- conda: https://conda.anaconda.org/conda-forge/linux-64/intel-media-driver-26.1.6-hecca717_0.conda + sha256: 7cbd7fda22db70c64af64c9173434a4ede58e4f220bda52a044e469aa94c65cb + md5: aaf7c3db8c7c4533deb5449d3ba1c51f + depends: + - __glibc >=2.17,<3.0.a0 + - intel-gmmlib >=22.10.0,<23.0a0 + - libgcc >=14 + - libstdcxx >=14 + - libva >=2.23.0,<3.0a0 + license: MIT + license_family: MIT + run_exports: + weak: + - intel-media-driver >=26.1.6,<26.2.0a0 + size: 8782375 + timestamp: 1776080148587 - conda: https://conda.anaconda.org/conda-forge/linux-64/ixwebsocket-11.4.6-h5888daf_0.conda sha256: e89ed788bfe9b19a654173949f973ee76b6cac675d43b9ae73e9d36d664d6d43 md5: 5d4d1c8ed138c16fef220bfb84c1fdd5 @@ -782,6 +1186,33 @@ packages: - krb5 >=1.22.2,<1.23.0a0 size: 1386730 timestamp: 1769769569681 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lame-3.100-h166bdaf_1003.tar.bz2 + sha256: aad2a703b9d7b038c0f745b853c6bb5f122988fe1a7a096e0e606d9cbec4eaab + md5: a8832b479f93521a9e7b5b743803be51 + depends: + - libgcc-ng >=12 + license: LGPL-2.0-only + license_family: LGPL + run_exports: + weak: + - lame >=3.100,<3.101.0a0 + size: 508258 + timestamp: 1664996250081 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.19.1-h0c24ade_1.conda + sha256: 112b5b9462572d970f4abd2912f76a25ee7db158b1e7260163d91dd8a630db84 + md5: 8b3ce45e929cd8e8e5f4d18586b56d8b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libjpeg-turbo >=3.1.4.1,<4.0a0 + - libtiff >=4.7.1,<4.8.0a0 + license: MIT + license_family: MIT + run_exports: + weak: + - lcms2 >=2.19.1,<3.0a0 + size: 251971 + timestamp: 1780211695895 - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45.1-default_hbd61a6d_102.conda sha256: 3d584956604909ff5df353767f3a2a2f60e07d070b328d109f30ac40cd62df6c md5: 18335a698559cdbcd86150a48bf54ba6 @@ -795,6 +1226,32 @@ packages: run_exports: {} size: 728002 timestamp: 1774197446916 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.1.0-hdb68285_0.conda + sha256: f84cb54782f7e9cea95e810ea8fef186e0652d0fa73d3009914fa2c1262594e1 + md5: a752488c68f2e7c456bcbd8f16eec275 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + license: Apache-2.0 + license_family: Apache + run_exports: + weak: + - lerc >=4.1.0,<5.0a0 + size: 261513 + timestamp: 1773113328888 +- conda: https://conda.anaconda.org/conda-forge/linux-64/level-zero-1.29.0-hb700be7_0.conda + sha256: d87cfc5eaa08eefff97d891ecb49faa958fcfc32a425767796269c4100d4e516 + md5: f3c3bc77c96af553f761af0e78bc8d9d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + license: MIT + license_family: MIT + run_exports: {} + size: 875773 + timestamp: 1780142086148 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20260107.1-cxx17_h7b12aa8_0.conda sha256: a7a4481a4d217a3eadea0ec489826a69070fcc3153f00443aa491ed21527d239 md5: 6f7b4302263347698fd24565fbf11310 @@ -873,6 +1330,26 @@ packages: - libarrow-flight >=23.0.1,<23.1.0a0 size: 466325 timestamp: 1781582437966 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libass-0.17.4-h96ad9f0_0.conda + sha256: 035eb8b54e03e72e42ef707420f9979c7427776ea99e0f1e3c969f92eb573f19 + md5: d3be7b2870bf7aff45b12ea53165babd + depends: + - libgcc >=13 + - __glibc >=2.17,<3.0.a0 + - libzlib >=1.3.1,<2.0a0 + - libfreetype >=2.13.3 + - libfreetype6 >=2.13.3 + - fribidi >=1.0.10,<2.0a0 + - libiconv >=1.18,<2.0a0 + - fontconfig >=2.15.0,<3.0a0 + - fonts-conda-ecosystem + - harfbuzz >=11.0.1 + license: ISC + run_exports: + weak: + - libass >=0.17.4,<0.17.5.0a0 + size: 152179 + timestamp: 1749328931930 - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.2.0-hb03c661_1.conda sha256: 318f36bd49ca8ad85e6478bd8506c88d82454cc008c1ac1c6bf00a3c42fa610e md5: 72c8fd1af66bd67bf580645b426513ed @@ -914,6 +1391,19 @@ packages: - libbrotlienc >=1.2.0,<1.3.0a0 size: 298378 timestamp: 1764017210931 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcap-2.78-hd0affe5_0.conda + sha256: cc8c9fc6ddf0fbd3d1275b558ae9abad6cda23bced268732e2da21a87bb358cd + md5: f9f17eab7f3df1c6fd4b1a548a2f683a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: BSD-3-Clause + license_family: BSD + run_exports: + weak: + - libcap >=2.78,<2.79.0a0 + size: 124335 + timestamp: 1775488792584 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 sha256: fd1d153962764433fe6233f34a72cdeed5dcf8a883a85769e8295ce940b5b0c5 md5: c965a5aa0d5c1c37ffc62dff36e28400 @@ -946,6 +1436,48 @@ packages: - libcurl >=8.20.0,<9.0a0 size: 468706 timestamp: 1777461492876 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.25-h17f619e_0.conda + sha256: aa8e8c4be9a2e81610ddf574e05b64ee131fab5e0e3693210c9d6d2fba32c680 + md5: 6c77a605a7a689d17d4819c0f8ac9a00 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: MIT + license_family: MIT + run_exports: + weak: + - libdeflate >=1.25,<1.26.0a0 + size: 73490 + timestamp: 1761979956660 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libdovi-3.3.2-ha23c83e_4.conda + sha256: d15432f07f654583978712e034d308b103a8b4650f0fdec172b5031a8af2b6c9 + md5: b26a64dfb24fef32d3330e37ce5e4f44 + depends: + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + constrains: + - __glibc >=2.17 + license: MIT + license_family: MIT + run_exports: + weak: + - libdovi >=3.3.2,<4.0a0 + size: 311420 + timestamp: 1777838991858 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libdrm-2.4.127-hb03c661_0.conda + sha256: 7d3187c11b7ae66c5595a8afd5a7ce352a490527fdf6614cab129bc7f2c16ba3 + md5: d8d16b9b32a3c5df7e5b3350e2cbe058 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libpciaccess >=0.19,<0.20.0a0 + license: MIT + license_family: MIT + run_exports: + weak: + - libdrm >=2.4.127,<2.5.0a0 + size: 311505 + timestamp: 1778975798004 - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 md5: c277e0a4d549b03ac1e9d6cbbe3d017b @@ -961,6 +1493,16 @@ packages: - libedit >=3.1.20250104,<3.2.0a0 size: 134676 timestamp: 1738479519902 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libegl-1.7.0-ha4b6fd6_3.conda + sha256: 9a25ea93e8272785405a21d30f84e620befb1d545f6dfaae18f06103b5df0443 + md5: 75e9f795be506c96dd43cb09c7c8d557 + depends: + - __glibc >=2.17,<3.0.a0 + - libglvnd 1.7.0 ha4b6fd6_3 + license: LicenseRef-libglvnd + run_exports: {} + size: 46500 + timestamp: 1779728188901 - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda sha256: 1cd6048169fa0395af74ed5d8f1716e22c19a81a8a36f934c110ca3ad4dd27b4 md5: 172bf1cd1ff8629f2b1179945ed45055 @@ -1012,6 +1554,45 @@ packages: - libffi >=3.5.2,<3.6.0a0 size: 58592 timestamp: 1769456073053 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libflac-1.5.0-he200343_1.conda + sha256: e755e234236bdda3d265ae82e5b0581d259a9279e3e5b31d745dc43251ad64fb + md5: 47595b9d53054907a00d95e4d47af1d6 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libiconv >=1.18,<2.0a0 + - libogg >=1.3.5,<1.4.0a0 + - libstdcxx >=14 + license: BSD-3-Clause + license_family: BSD + run_exports: + weak: + - libflac >=1.5.0,<1.6.0a0 + size: 424563 + timestamp: 1764526740626 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.14.3-ha770c72_0.conda + sha256: 38f014a7129e644636e46064ecd6b1945e729c2140e21d75bb476af39e692db2 + md5: e289f3d17880e44b633ba911d57a321b + depends: + - libfreetype6 >=2.14.3 + license: GPL-2.0-only OR FTL + run_exports: {} + size: 8049 + timestamp: 1774298163029 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.14.3-h73754d4_0.conda + sha256: 16f020f96da79db1863fcdd8f2b8f4f7d52f177dd4c58601e38e9182e91adf1d + md5: fb16b4b69e3f1dcfe79d80db8fd0c55d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libpng >=1.6.55,<1.7.0a0 + - libzlib >=1.3.2,<2.0a0 + constrains: + - freetype >=2.14.3 + license: GPL-2.0-only OR FTL + run_exports: {} + size: 384575 + timestamp: 1774298162622 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_19.conda sha256: 8e0a3b5e41272e5678499b5dfc4cddb673f9e935de01eb0767ce857001229f46 md5: 57736f29cc2b0ec0b6c2952d3f101b6a @@ -1038,6 +1619,55 @@ packages: - libgcc size: 27694 timestamp: 1778269016987 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgl-1.7.0-ha4b6fd6_3.conda + sha256: ec353b3076ed8e357ed961d0e9ff6997491cade0e603de5bd18a2e301ac78ebd + md5: f25206d7322c0e9648e8b83694d143ab + depends: + - __glibc >=2.17,<3.0.a0 + - libglvnd 1.7.0 ha4b6fd6_3 + - libglx 1.7.0 ha4b6fd6_3 + license: LicenseRef-libglvnd + run_exports: {} + size: 133469 + timestamp: 1779728207669 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.88.1-h0d30a3d_2.conda + sha256: 33eb5d5310a5c2c0a4707a0afa644801c2e08c8f70c45e1f62f354116dfe0970 + md5: 17d484ab9c8179c6a6e5b7dbb5065afc + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libffi >=3.5.2,<3.6.0a0 + - pcre2 >=10.47,<10.48.0a0 + - libzlib >=1.3.2,<2.0a0 + - libiconv >=1.18,<2.0a0 + constrains: + - glib >2.66 + license: LGPL-2.1-or-later + run_exports: + weak: + - libglib >=2.88.1,<3.0a0 + size: 4754097 + timestamp: 1778508800134 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libglvnd-1.7.0-ha4b6fd6_3.conda + sha256: e019ebe4e3f5cdf23e2f5e58ddf7ade27988c53820115b17b98f218ebcc87748 + md5: eb83f3f8cecc3e9bff9e250817fc69b6 + depends: + - __glibc >=2.17,<3.0.a0 + license: LicenseRef-libglvnd + run_exports: {} + size: 133586 + timestamp: 1779728183422 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libglx-1.7.0-ha4b6fd6_3.conda + sha256: 2f74713c9ca408ea84e88a30a9028153e7b553e8bb42e06139eac9a753c27da9 + md5: ec3c4350aa0261bf7f87b8ca15c8e80e + depends: + - __glibc >=2.17,<3.0.a0 + - libglvnd 1.7.0 ha4b6fd6_3 + - xorg-libx11 >=1.8.13,<2.0a0 + license: LicenseRef-libglvnd + run_exports: {} + size: 76586 + timestamp: 1779728199059 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_19.conda sha256: 5abe4ab9d93f6c9757d654f1969ae2267d4505315c1f2f8fe705fd60af084f1b md5: faac990cb7aedc7f3a2224f2c9b0c26c @@ -1117,6 +1747,35 @@ packages: - libgrpc >=1.78.1,<1.79.0a0 size: 7021360 timestamp: 1774020290672 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.13.0-default_he001693_1000.conda + sha256: 5041d295813dfb84652557839825880aae296222ab725972285c5abe3b6e4288 + md5: c197985b58bc813d26b42881f0021c82 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - libxml2 + - libxml2-16 >=2.14.6 + license: BSD-3-Clause + license_family: BSD + run_exports: + weak: + - libhwloc >=2.13.0,<2.13.1.0a0 + size: 2436378 + timestamp: 1770953868164 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libhwy-1.4.0-h10be129_0.conda + sha256: 8b70955d5e9a49d08945d4f8e2eab855b2efa5fce9cb9bc5e75d86764e6f2f38 + md5: 3a9428b74c403c71048104d38437b48c + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + license: Apache-2.0 OR BSD-3-Clause + run_exports: + weak: + - libhwy >=1.4.0,<1.5.0a0 + size: 1435782 + timestamp: 1776989559668 - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h3b78370_2.conda sha256: c467851a7312765447155e071752d7bf9bf44d610a5687e32706f480aad2833f md5: 915f5995e94f60e9a4826e0b0920ee88 @@ -1145,6 +1804,37 @@ packages: - libixwebsocket >=11.4.6,<11.4.7.0a0 size: 203594 timestamp: 1747402162553 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.4.1-hb03c661_0.conda + sha256: 10056646c28115b174de81a44e23e3a0a3b95b5347d2e6c45cc6d49d35294256 + md5: 6178c6f2fb254558238ef4e6c56fb782 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + constrains: + - jpeg <0.0.0a + license: IJG AND BSD-3-Clause AND Zlib + run_exports: + weak: + - libjpeg-turbo >=3.1.4.1,<4.0a0 + size: 633831 + timestamp: 1775962768273 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libjxl-0.11.2-h174a0a3_1.conda + sha256: 0c8a78c6a42a6e4c6de3a5e82d692f60400d43f4cc80591745f28b37daad9c70 + md5: 850f48943d6b4589800a303f0de6a816 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - libhwy >=1.4.0,<1.5.0a0 + - libbrotlienc >=1.2.0,<1.3.0a0 + - libbrotlidec >=1.2.0,<1.3.0a0 + license: BSD-3-Clause + license_family: BSD + run_exports: + weak: + - libjxl >=0.11,<1.0a0 + size: 1846962 + timestamp: 1777065125966 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.3-hb03c661_0.conda sha256: ec30e52a3c1bf7d0425380a189d209a52baa03f22fb66dd3eb587acaa765bd6d md5: b88d90cad08e6bc8ad540cb310a761fb @@ -1189,9 +1879,22 @@ packages: - libnghttp2 >=1.68.1,<2.0a0 size: 663344 timestamp: 1773854035739 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.27.0-h9692893_0.conda - sha256: 247b99f5dd32363d7231c9c5a6ad113e0b58ad3e85d68227999b5933d5005a6d - md5: 2a44700a9857b49a3fe72aca643d0921 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.5-hd0c01bc_1.conda + sha256: ffb066ddf2e76953f92e06677021c73c85536098f1c21fcd15360dbc859e22e4 + md5: 68e52064ed3897463c0e958ab5c8f91b + depends: + - libgcc >=13 + - __glibc >=2.17,<3.0.a0 + license: BSD-3-Clause + license_family: BSD + run_exports: + weak: + - libogg >=1.3.5,<1.4.0a0 + size: 218500 + timestamp: 1745825989535 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.27.0-h9692893_0.conda + sha256: 247b99f5dd32363d7231c9c5a6ad113e0b58ad3e85d68227999b5933d5005a6d + md5: 2a44700a9857b49a3fe72aca643d0921 depends: - libabseil * cxx17* - libabseil >=20260107.1,<20260108.0a0 @@ -1219,6 +1922,212 @@ packages: run_exports: {} size: 392177 timestamp: 1778721367721 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-2026.2.0-h1f0fae8_1.conda + sha256: 7f489b58a4729026440ccb07d8caea2ea30cee9df7e8690378b5f29a6cb89dbe + md5: 5130986ef756de97796f10594d29e1af + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - pugixml >=1.15,<1.16.0a0 + - tbb >=2023.0.0 + license: Apache-2.0 + run_exports: + weak: + - libopenvino >=2026.2.0,<2026.2.1.0a0 + size: 6826433 + timestamp: 1781798761467 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-auto-batch-plugin-2026.2.0-h7e124b3_1.conda + sha256: 86c6157aa1718f24b1fcc07f7241cbc8df8c30e881dfd554c1999bd888855262 + md5: 12019449d82d7d3d54b369a99be714ba + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libopenvino 2026.2.0 h1f0fae8_1 + - libstdcxx >=14 + - tbb >=2023.0.0 + license: Apache-2.0 + run_exports: {} + size: 114553 + timestamp: 1781798782628 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-auto-plugin-2026.2.0-h7e124b3_1.conda + sha256: 46d53912d41a08f26e2cd856cda93ae6e54e5b9a230385075d0c7ad2f4a3ee80 + md5: 422d5938f038515a7d084ab4446edbbb + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libopenvino 2026.2.0 h1f0fae8_1 + - libstdcxx >=14 + - tbb >=2023.0.0 + license: Apache-2.0 + run_exports: {} + size: 250964 + timestamp: 1781798795949 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-hetero-plugin-2026.2.0-hd41364c_1.conda + sha256: 4e5b545b05cb2d95c98e760d66243f68cde8029877ed8ac8f62e14e121593353 + md5: aa76687726f31ab951afb9968fb352b7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libopenvino 2026.2.0 h1f0fae8_1 + - libstdcxx >=14 + - pugixml >=1.15,<1.16.0a0 + license: Apache-2.0 + run_exports: {} + size: 215501 + timestamp: 1781798807667 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-intel-cpu-plugin-2026.2.0-h1f0fae8_1.conda + sha256: 7e485478d665279a6f278132e8cec3c501183be7d56186c7c60b3875483c1fb7 + md5: 1b11e6141c37c0aa7077d8afed643288 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libopenvino 2026.2.0 h1f0fae8_1 + - libstdcxx >=14 + - pugixml >=1.15,<1.16.0a0 + - tbb >=2023.0.0 + license: Apache-2.0 + run_exports: {} + size: 13647258 + timestamp: 1781798819601 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-intel-gpu-plugin-2026.2.0-h1f0fae8_1.conda + sha256: 57b50e34355e5aba5fb1d768c631238fcf3f7070ad725a68c10d1cbec56ea21c + md5: 327b32c09092b8f28b4dbd6ebb71fa91 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libopenvino 2026.2.0 h1f0fae8_1 + - libstdcxx >=14 + - ocl-icd >=2.3.4,<3.0a0 + - pugixml >=1.15,<1.16.0a0 + - tbb >=2023.0.0 + license: Apache-2.0 + run_exports: {} + size: 12381073 + timestamp: 1781798859383 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-intel-npu-plugin-2026.2.0-h1f0fae8_1.conda + sha256: 9faaef86d0a0dbba58a6b7dc3677f0de155e6741b11534c591df4dd245989c2b + md5: 16e1f1517166b8cb31055233b1224ab9 + depends: + - __glibc >=2.17,<3.0.a0 + - level-zero >=1.29.0,<2.0a0 + - libgcc >=14 + - libopenvino 2026.2.0 h1f0fae8_1 + - libstdcxx >=14 + - pugixml >=1.15,<1.16.0a0 + - tbb >=2023.0.0 + license: Apache-2.0 + run_exports: {} + size: 2624019 + timestamp: 1781798892881 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-ir-frontend-2026.2.0-hd41364c_1.conda + sha256: e0165152cc633ae8e041ac732c51169959e27e48a981f11950bb21fd0274fecb + md5: 7c21104f61dc46a6b8f3ce2b105e9881 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libopenvino 2026.2.0 h1f0fae8_1 + - libstdcxx >=14 + - pugixml >=1.15,<1.16.0a0 + license: Apache-2.0 + run_exports: + weak: + - libopenvino-ir-frontend >=2026.2.0,<2026.2.1.0a0 + size: 202097 + timestamp: 1781798907064 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-onnx-frontend-2026.2.0-h7a07914_1.conda + sha256: 081ee84091459766b2bd817430af901ff6efeddfd34ceaf0e9c04a07b32fb8a0 + md5: bbf2c614a45b6115e7c1b04a1ff9ef07 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20260107.1,<20260108.0a0 + - libgcc >=14 + - libopenvino 2026.2.0 h1f0fae8_1 + - libprotobuf >=6.33.5,<6.33.6.0a0 + - libstdcxx >=14 + license: Apache-2.0 + run_exports: + weak: + - libopenvino-onnx-frontend >=2026.2.0,<2026.2.1.0a0 + size: 1944892 + timestamp: 1781798920651 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-paddle-frontend-2026.2.0-h7a07914_1.conda + sha256: cb3c1cefe5b07162fa5f42cac64a3b56d61378954ad3adc347b4044a493e2087 + md5: 2cd295974c11e0e2f2947b3dd96cbe4b + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20260107.1,<20260108.0a0 + - libgcc >=14 + - libopenvino 2026.2.0 h1f0fae8_1 + - libprotobuf >=6.33.5,<6.33.6.0a0 + - libstdcxx >=14 + license: Apache-2.0 + run_exports: + weak: + - libopenvino-paddle-frontend >=2026.2.0,<2026.2.1.0a0 + size: 691109 + timestamp: 1781798934483 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-pytorch-frontend-2026.2.0-hecca717_1.conda + sha256: 9944c66eb0cbffcb8cd737e1db2ca72ed34326f006bdedb204910895e0cf3539 + md5: f7193f7d2ffb3645540675945fc05f2c + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libopenvino 2026.2.0 h1f0fae8_1 + - libstdcxx >=14 + license: Apache-2.0 + run_exports: + weak: + - libopenvino-pytorch-frontend >=2026.2.0,<2026.2.1.0a0 + size: 1226248 + timestamp: 1781798946751 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-tensorflow-frontend-2026.2.0-h78e8023_1.conda + sha256: 2b2bc9ef6dfde1752bf363e463b6b0020c7674c98b6c1aed0a551ac2ea5ac494 + md5: 78008823be2f1e1a3ef286ce2ef9c032 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20260107.1,<20260108.0a0 + - libgcc >=14 + - libopenvino 2026.2.0 h1f0fae8_1 + - libprotobuf >=6.33.5,<6.33.6.0a0 + - libstdcxx >=14 + - snappy >=1.2.2,<1.3.0a0 + license: Apache-2.0 + run_exports: + weak: + - libopenvino-tensorflow-frontend >=2026.2.0,<2026.2.1.0a0 + size: 1283246 + timestamp: 1781798960009 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-tensorflow-lite-frontend-2026.2.0-hecca717_1.conda + sha256: 5a2c5cabb91a241f624b7c99973664dea39013a4189a3700ff5f57e0901e0ef0 + md5: 94b6ad5b5ca490fc6ab1ddbf65178a95 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libopenvino 2026.2.0 h1f0fae8_1 + - libstdcxx >=14 + license: Apache-2.0 + run_exports: + weak: + - libopenvino-tensorflow-lite-frontend >=2026.2.0,<2026.2.1.0a0 + size: 503112 + timestamp: 1781798972815 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopus-1.6.1-h280c20c_0.conda + sha256: f1061a26213b9653bbb8372bfa3f291787ca091a9a3060a10df4d5297aad74fd + md5: 2446ac1fe030c2aa6141386c1f5a6aed + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: BSD-3-Clause + license_family: BSD + run_exports: + weak: + - libopus >=1.6.1,<2.0a0 + size: 324993 + timestamp: 1768497114401 - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-23.0.1-h7376487_13_cpu.conda build_number: 13 sha256: aa2a9989e79da6f85245696fbcaefd907618b23ab1d8d434f8a32ba60081300c @@ -1237,6 +2146,49 @@ packages: - libparquet >=23.0.1,<23.1.0a0 size: 1389013 timestamp: 1781582493268 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpciaccess-0.19-hb03c661_0.conda + sha256: f41721636a7c2e51bc2c642e1127955ab9c81145470714fdaac44d4d09e4af41 + md5: 33082e13b4769b48cfeb648e15bfe3fc + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: MIT + license_family: MIT + run_exports: + weak: + - libpciaccess >=0.19,<0.20.0a0 + size: 29147 + timestamp: 1773533027610 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libplacebo-7.360.1-h9eeb4b2_0.conda + sha256: 26cbbd3d7b91801826c779c3f7e87d071856d5cbe3d55b22777ca0d984fb02ed + md5: e6324dfe6c02e0736bb9235f8ef3c8a6 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - libdovi >=3.3.2,<4.0a0 + - libvulkan-loader >=1.4.341.0,<2.0a0 + - lcms2 >=2.19,<3.0a0 + - shaderc >=2026.2,<2026.3.0a0 + license: LGPL-2.1-or-later + run_exports: + weak: + - libplacebo >=7.360.1,<7.361.0a0 + size: 549348 + timestamp: 1777835950707 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.58-h421ea60_0.conda + sha256: 377cfe037f3eeb3b1bf3ad333f724a64d32f315ee1958581fc671891d63d3f89 + md5: eba48a68a1a2b9d3c0d9511548db85db + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libzlib >=1.3.2,<2.0a0 + license: zlib-acknowledgement + run_exports: + weak: + - libpng >=1.6.58,<1.7.0a0 + size: 317729 + timestamp: 1776315175087 - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-6.33.5-h6eeba95_1.conda sha256: a59aa3f076d5710c618ca8fd12d9cd8211d8b738f6b0e0c98517c0162f23a5de md5: 7a4b11f3dd7374f1991a4088390d07c1 @@ -1272,6 +2224,28 @@ packages: - libre2-11 >=2025.11.5 size: 213122 timestamp: 1768190028309 +- conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.62.3-h4c96295_0.conda + sha256: 5571bd8239d71961d4e3ce972f865b3ea95a91ce0b53d5749fe2dd24254ddbda + md5: 492c8d9b1c564c2e948b6cb4ba0f8261 + depends: + - __glibc >=2.17,<3.0.a0 + - cairo >=1.18.4,<2.0a0 + - fontconfig >=2.18.0,<3.0a0 + - fonts-conda-ecosystem + - gdk-pixbuf >=2.44.6,<3.0a0 + - harfbuzz >=14.2.0 + - libgcc >=14 + - libglib >=2.88.1,<3.0a0 + - libxml2-16 >=2.14.6 + - pango >=1.56.4,<2.0a0 + constrains: + - __glibc >=2.17 + license: LGPL-2.1-or-later + run_exports: + weak: + - librsvg >=2.62.3,<3.0a0 + size: 3476570 + timestamp: 1780450632624 - conda: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-14.3.0-h8f1669f_19.conda sha256: 8766de5423b0a510e2b1bdd1963d0554bdad2119f3e31d8fbd4189af434235ca md5: 007796e5a595bbc7df4a5e1580d72e1a @@ -1286,6 +2260,26 @@ packages: - libsanitizer 14.3.0 size: 7947790 timestamp: 1778268494844 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsndfile-1.2.2-hc7d488a_2.conda + sha256: 57cb5f92110324c04498b96563211a1bca6a74b2918b1e8df578bfed03cc32e4 + md5: 067590f061c9f6ea7e61e3b2112ed6b3 + depends: + - __glibc >=2.17,<3.0.a0 + - lame >=3.100,<3.101.0a0 + - libflac >=1.5.0,<1.6.0a0 + - libgcc >=14 + - libogg >=1.3.5,<1.4.0a0 + - libopus >=1.5.2,<2.0a0 + - libstdcxx >=14 + - libvorbis >=1.3.7,<1.4.0a0 + - mpg123 >=1.32.9,<1.33.0a0 + license: LGPL-2.1-or-later + license_family: LGPL + run_exports: + weak: + - libsndfile >=1.2.2,<1.3.0a0 + size: 355619 + timestamp: 1765181778282 - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.22-h280c20c_1.conda sha256: b677bbf1c339d894757c3dcfbb2f88649e499e4991d70ae09a1466da9a6c92d6 md5: 965e4d531b588b2e42f66fd8e48b056c @@ -1351,6 +2345,17 @@ packages: - libstdcxx size: 27776 timestamp: 1778269074600 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-257.13-h084b8d7_1.conda + sha256: 2293884d59cf0436c37fc0a4bad71011a8de2a6913610d1c701a7703377c1f75 + md5: ea0da9c20bbb221b530810c3c68bbe62 + depends: + - __glibc >=2.17,<3.0.a0 + - libcap >=2.78,<2.79.0a0 + - libgcc >=14 + license: LGPL-2.1-or-later + run_exports: {} + size: 493022 + timestamp: 1780084748140 - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.22.0-h7d032f7_2.conda sha256: af6025aa4a4fc3f4e71334000d2739d927e2f678607b109ec630cc17d716918a md5: b6e326fbe1e3948da50ec29cee0380db @@ -1368,6 +2373,78 @@ packages: - libthrift >=0.22.0,<0.22.1.0a0 size: 423861 timestamp: 1777018957474 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.1-h9d88235_1.conda + sha256: e5f8c38625aa6d567809733ae04bb71c161a42e44a9fa8227abe61fa5c60ebe0 + md5: cd5a90476766d53e901500df9215e927 + depends: + - __glibc >=2.17,<3.0.a0 + - lerc >=4.0.0,<5.0a0 + - libdeflate >=1.25,<1.26.0a0 + - libgcc >=14 + - libjpeg-turbo >=3.1.0,<4.0a0 + - liblzma >=5.8.1,<6.0a0 + - libstdcxx >=14 + - libwebp-base >=1.6.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.7,<1.6.0a0 + license: HPND + run_exports: + weak: + - libtiff >=4.7.1,<4.8.0a0 + size: 435273 + timestamp: 1762022005702 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libudev1-257.13-h084b8d7_1.conda + sha256: 287d05680e49eea51b8145fbf34bc213c0618b04f32e450e9da5d715e5134e38 + md5: 89e5671a076d99516a6acd72a35b1640 + depends: + - __glibc >=2.17,<3.0.a0 + - libcap >=2.78,<2.79.0a0 + - libgcc >=14 + license: LGPL-2.1-or-later + run_exports: {} + size: 145969 + timestamp: 1780084753104 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libunwind-1.8.3-h65a8314_0.conda + sha256: 71c8b9d5c72473752a0bb6e91b01dd209a03916cb71f36cc6a564e3a2a132d7a + md5: e179a69edd30d75c0144d7a380b88f28 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + license: MIT + license_family: MIT + run_exports: + weak: + - libunwind >=1.8.3,<1.9.0a0 + size: 75995 + timestamp: 1757032240102 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liburing-2.14-hb700be7_0.conda + sha256: 3d17b7aa90610afc65356e9e6149aeac0b2df19deda73a51f0a09cf04fd89286 + md5: 56f65185b520e016d29d01657ac02c0d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + license: MIT + license_family: MIT + run_exports: + weak: + - liburing >=2.14,<2.15.0a0 + size: 154203 + timestamp: 1770566529700 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libusb-1.0.29-h73b1eb8_0.conda + sha256: 89c84f5b26028a9d0f5c4014330703e7dff73ba0c98f90103e9cef6b43a5323c + md5: d17e3fb595a9f24fa9e149239a33475d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libudev1 >=257.4 + license: LGPL-2.1-or-later + run_exports: + weak: + - libusb >=1.0.29,<2.0a0 + size: 89551 + timestamp: 1748856210075 - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.42.2-h5347b49_0.conda sha256: 9b1bdce27a7e31f7d241aeecff67a1f3101d52a2b1e33ccc2cdf2613072bf81f md5: 01bb81d12c957de066ea7362007df642 @@ -1394,6 +2471,144 @@ packages: - libuv >=1.52.1,<2.0a0 size: 419935 timestamp: 1779396012261 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libva-2.23.0-he1eb515_0.conda + sha256: 255c7d00b54e26f19fad9340db080716bced1d8539606e2b8396c57abd40007c + md5: 25813fe38b3e541fc40007592f12bae5 + depends: + - __glibc >=2.17,<3.0.a0 + - libdrm >=2.4.125,<2.5.0a0 + - libegl >=1.7.0,<2.0a0 + - libgcc >=14 + - libgl >=1.7.0,<2.0a0 + - libglx >=1.7.0,<2.0a0 + - libxcb >=1.17.0,<2.0a0 + - wayland >=1.24.0,<2.0a0 + - wayland-protocols + - xorg-libx11 >=1.8.12,<2.0a0 + - xorg-libxext >=1.3.6,<2.0a0 + - xorg-libxfixes >=6.0.2,<7.0a0 + license: MIT + license_family: MIT + run_exports: + weak: + - libva >=2.23.0,<3.0a0 + size: 221308 + timestamp: 1765652453244 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h54a6638_2.conda + sha256: ca494c99c7e5ecc1b4cd2f72b5584cef3d4ce631d23511184411abcbb90a21a5 + md5: b4ecbefe517ed0157c37f8182768271c + depends: + - libogg + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - libstdcxx >=14 + - libgcc >=14 + - libogg >=1.3.5,<1.4.0a0 + license: BSD-3-Clause + license_family: BSD + run_exports: + weak: + - libvorbis >=1.3.7,<1.4.0a0 + size: 285894 + timestamp: 1753879378005 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libvpl-2.16.0-h54a6638_0.conda + sha256: 38850657dd6835613ef16b34895a54bea98bc7639db6a649c886b331635714fc + md5: 9f6b0090c3902b2c763a16f7dace7b6e + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - intel-media-driver >=26.1.2,<26.2.0a0 + - libva >=2.23.0,<3.0a0 + license: MIT + license_family: MIT + run_exports: + weak: + - libvpl >=2.16.0,<2.17.0a0 + size: 287992 + timestamp: 1772980546550 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libvpx-1.15.2-hecca717_0.conda + sha256: 8e1119977f235b488ab32d540c018d3fd1eccefc3dd3859921a0ff555d8c10d2 + md5: 10f5008f1c89a40b09711b5a9cdbd229 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + license: BSD-3-Clause + license_family: BSD + run_exports: + weak: + - libvpx >=1.15.2,<1.16.0a0 + size: 1070048 + timestamp: 1762010217363 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libvulkan-loader-1.4.341.0-h5279c79_0.conda + sha256: a68280d57dfd29e3d53400409a39d67c4b9515097eba733aa6fe00c880620e2b + md5: 31ad065eda3c2d88f8215b1289df9c89 + depends: + - __glibc >=2.17,<3.0.a0 + - libstdcxx >=14 + - libgcc >=14 + - xorg-libx11 >=1.8.12,<2.0a0 + - xorg-libxrandr >=1.5.5,<2.0a0 + constrains: + - libvulkan-headers 1.4.341.0.* + license: Apache-2.0 + license_family: APACHE + run_exports: + weak: + - libvulkan-loader >=1.4.341.0,<2.0a0 + size: 199795 + timestamp: 1770077125520 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.6.0-hd42ef1d_0.conda + sha256: 3aed21ab28eddffdaf7f804f49be7a7d701e8f0e46c856d801270b470820a37b + md5: aea31d2e5b1091feca96fcfe945c3cf9 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + constrains: + - libwebp 1.6.0 + license: BSD-3-Clause + license_family: BSD + run_exports: + weak: + - libwebp-base >=1.6.0,<2.0a0 + size: 429011 + timestamp: 1752159441324 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda + sha256: 666c0c431b23c6cec6e492840b176dde533d48b7e6fb8883f5071223433776aa + md5: 92ed62436b625154323d40d5f2f11dd7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + license: MIT + license_family: MIT + run_exports: + weak: + - libxcb >=1.17.0,<2.0a0 + size: 395888 + timestamp: 1727278577118 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.13.2-hca5e8e5_0.conda + sha256: 046f2ff4acebd8729fac03e99c8c307dfb48b6a32894ba8c11576e78f6e76e43 + md5: dc8b067e22b414172bedd8e3f03f3c95 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - libxcb >=1.17.0,<2.0a0 + - libxml2 + - libxml2-16 >=2.14.6 + - xkeyboard-config + - xorg-libxau >=1.0.12,<2.0a0 + license: MIT/X11 Derivative + license_family: MIT + run_exports: + weak: + - libxkbcommon >=1.13.2,<2.0a0 + size: 851166 + timestamp: 1780213397575 - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-16-2.15.3-hca6bf5a_0.conda sha256: 3d44f737c5ae52d5af32682cc1530df433f401f8e58a7533926536244127572a md5: e79d2c2f24b027aa8d5ab1b1ba3061e7 @@ -1475,6 +2690,20 @@ packages: - lz4-c >=1.10.0,<1.11.0a0 size: 167055 timestamp: 1733741040117 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda + sha256: 39c4700fb3fbe403a77d8cc27352fa72ba744db487559d5d44bf8411bb4ea200 + md5: c7f302fd11eeb0987a6a5e1f3aed6a21 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + license: LGPL-2.1-only + license_family: LGPL + run_exports: + weak: + - mpg123 >=1.32.9,<1.33.0a0 + size: 491140 + timestamp: 1730581373280 - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.6-hdb14827_0.conda sha256: fc89f74bbe362fb29fa3c037697a89bec140b346a2469a90f7936d1d7ea4d8a3 md5: fc21868a1a5aacc937e7a18747acb8a5 @@ -1509,6 +2738,46 @@ packages: run_exports: {} size: 136216 timestamp: 1758194284857 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ocl-icd-2.3.4-hb03c661_1.conda + sha256: 75f3bf733523a338f73d6c276c4a26634877cd970edb558f2769d9fa52b100a9 + md5: c2871ba95727fd1382c05db66048b64c + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - opencl-headers >=2025.6.13 + license: BSD-2-Clause + license_family: BSD + run_exports: + weak: + - ocl-icd >=2.3.4,<3.0a0 + size: 109598 + timestamp: 1780362789611 +- conda: https://conda.anaconda.org/conda-forge/linux-64/opencl-headers-2025.06.13-hecca717_0.conda + sha256: 8de2f0cd8a659b01abf86e7fbb8cea4f28ada62fd288429a2bbc040db1b98dd0 + md5: c930c8052d780caa41216af7de472226 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + license: Apache-2.0 + license_family: APACHE + run_exports: {} + size: 55754 + timestamp: 1773844383536 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openh264-2.6.0-hc22cd8d_0.conda + sha256: 3f231f2747a37a58471c82a9a8a80d92b7fece9f3fce10901a5ac888ce00b747 + md5: b28cf020fd2dead0ca6d113608683842 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + license: BSD-2-Clause + license_family: BSD + run_exports: + weak: + - openh264 >=2.6.0,<2.6.1.0a0 + size: 731471 + timestamp: 1739400677213 - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.3-h35e630c_0.conda sha256: d48f5c22b9897c01e4dff3680f1f57ceb02711ab9c62f74339b080419dfad34b md5: 79dd2074b5cd5c5c6b2930514a11e22d @@ -1573,6 +2842,70 @@ packages: - paho-mqtt-cpp >=1.6.0,<1.7.0a0 size: 200776 timestamp: 1778053287807 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.4-hda50119_1.conda + sha256: 315b52bfa6d1a820f4806f6490d472581438a28e21df175290477caec18972b0 + md5: d53ffc0edc8eabf4253508008493c5bc + depends: + - __glibc >=2.17,<3.0.a0 + - cairo >=1.18.4,<2.0a0 + - fontconfig >=2.17.1,<3.0a0 + - fonts-conda-ecosystem + - fribidi >=1.0.16,<2.0a0 + - harfbuzz >=13.2.1 + - libexpat >=2.7.4,<3.0a0 + - libfreetype >=2.14.2 + - libfreetype6 >=2.14.2 + - libgcc >=14 + - libglib >=2.86.4,<3.0a0 + - libpng >=1.6.55,<1.7.0a0 + - libzlib >=1.3.2,<2.0a0 + license: LGPL-2.1-or-later + run_exports: + weak: + - pango >=1.56.4,<2.0a0 + size: 458036 + timestamp: 1774281947855 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.47-haa7fec5_0.conda + sha256: 5e6f7d161356fefd981948bea5139c5aa0436767751a6930cb1ca801ebb113ff + md5: 7a3bff861a6583f1889021facefc08b1 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - libgcc >=14 + - libzlib >=1.3.1,<2.0a0 + license: BSD-3-Clause + license_family: BSD + run_exports: + weak: + - pcre2 >=10.47,<10.48.0a0 + size: 1222481 + timestamp: 1763655398280 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.4-h54a6638_1.conda + sha256: 43d37bc9ca3b257c5dd7bf76a8426addbdec381f6786ff441dc90b1a49143b6a + md5: c01af13bdc553d1a8fbfff6e8db075f0 + depends: + - libgcc >=14 + - libstdcxx >=14 + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + license: MIT + license_family: MIT + run_exports: + weak: + - pixman >=0.46.4,<1.0a0 + size: 450960 + timestamp: 1754665235234 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pkg-config-0.29.2-h4bc722e_1009.conda + sha256: c9601efb1af5391317e04eca77c6fe4d716bf1ca1ad8da2a05d15cb7c28d7d4e + md5: 1bee70681f504ea424fb07cdb090c001 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + license: GPL-2.0-or-later + license_family: GPL + run_exports: {} + size: 115175 + timestamp: 1720805894943 - conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda sha256: 013669433eb447548f21c3c6b16b2ed64356f726b5f77c1b39d5ba17a8a4b8bc md5: a83f6a2fdc079e643237887a37460668 @@ -1609,6 +2942,52 @@ packages: run_exports: {} size: 491842 timestamp: 1773265994654 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + sha256: 9c88f8c64590e9567c6c80823f0328e58d3b1efb0e1c539c0315ceca764e0973 + md5: b3c17d95b5a10c6e64a21fa17573e70e + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + run_exports: {} + size: 8252 + timestamp: 1726802366959 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pugixml-1.15-h3f63f65_0.conda + sha256: 23c98a5000356e173568dc5c5770b53393879f946f3ace716bbdefac2a8b23d2 + md5: b11a4c6bf6f6f44e5e143f759ffa2087 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + license: MIT + license_family: MIT + run_exports: + weak: + - pugixml >=1.15,<1.16.0a0 + size: 118488 + timestamp: 1736601364156 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pulseaudio-client-17.0-h9a6aba3_3.conda + sha256: 0a0858c59805d627d02bdceee965dd84fde0aceab03a2f984325eec08d822096 + md5: b8ea447fdf62e3597cb8d2fae4eb1a90 + depends: + - __glibc >=2.17,<3.0.a0 + - dbus >=1.16.2,<2.0a0 + - libgcc >=14 + - libglib >=2.86.1,<3.0a0 + - libiconv >=1.18,<2.0a0 + - libsndfile >=1.2.2,<1.3.0a0 + - libsystemd0 >=257.10 + - libxcb >=1.17.0,<2.0a0 + constrains: + - pulseaudio 17.0 *_3 + license: LGPL-2.1-or-later + license_family: LGPL + run_exports: + weak: + - pulseaudio-client >=17.0,<17.1.0a0 + size: 750785 + timestamp: 1763148198088 - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.14.6-habeac84_100_cp314.conda build_number: 100 sha256: 6d28ac2b061179deb434d3d57afa98ffd20ec3c5d44ab8048a1ca33424b22d38 @@ -1695,6 +3074,70 @@ packages: - s2n >=1.7.4,<1.7.5.0a0 size: 392550 timestamp: 1781634128636 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2-2.32.56-h54a6638_0.conda + sha256: 987ad072939fdd51c92ea8d3544b286bb240aefda329f9b03a51d9b7e777f9de + md5: cdd138897d94dc07d99afe7113a07bec + depends: + - libstdcxx >=14 + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - libgl >=1.7.0,<2.0a0 + - sdl3 >=3.2.22,<4.0a0 + - libegl >=1.7.0,<2.0a0 + license: Zlib + run_exports: + weak: + - sdl2 >=2.32.56,<3.0a0 + size: 589145 + timestamp: 1757842881000 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sdl3-3.4.10-hdeec2a5_0.conda + sha256: 04fa7dab2b8f688e3fc4b7ae4522fd3935fb0601e3329cda8b40d63c60d6cc05 + md5: 845c0b154836c034f361668bec2a4f20 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - xorg-libxcursor >=1.2.3,<2.0a0 + - libusb >=1.0.29,<2.0a0 + - libxkbcommon >=1.13.2,<2.0a0 + - xorg-libx11 >=1.8.13,<2.0a0 + - xorg-libxi >=1.8.3,<2.0a0 + - liburing >=2.14,<2.15.0a0 + - libunwind >=1.8.3,<1.9.0a0 + - xorg-libxtst >=1.2.5,<2.0a0 + - wayland >=1.25.0,<2.0a0 + - dbus >=1.16.2,<2.0a0 + - libgl >=1.7.0,<2.0a0 + - xorg-libxscrnsaver >=1.2.4,<2.0a0 + - xorg-libxext >=1.3.7,<2.0a0 + - libdrm >=2.4.127,<2.5.0a0 + - pulseaudio-client >=17.0,<17.1.0a0 + - libvulkan-loader >=1.4.341.0,<2.0a0 + - libegl >=1.7.0,<2.0a0 + - xorg-libxfixes >=6.0.2,<7.0a0 + - libudev1 >=257.13 + license: Zlib + run_exports: + weak: + - sdl3 >=3.4.10,<4.0a0 + size: 2148830 + timestamp: 1780262823658 +- conda: https://conda.anaconda.org/conda-forge/linux-64/shaderc-2026.2-h718be3e_0.conda + sha256: c6e3280867e54c97996a4fedda0ab72c92d48d1d69258bddf910130df72c169d + md5: 6438976979721e2f60ec47327d8d38df + depends: + - __glibc >=2.17,<3.0.a0 + - glslang >=16,<17.0a0 + - libgcc >=14 + - libstdcxx >=14 + - spirv-tools >=2026,<2027.0a0 + license: Apache-2.0 + license_family: Apache + run_exports: + weak: + - shaderc >=2026.2,<2026.3.0a0 + size: 113684 + timestamp: 1777360595361 - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.2-h03e3b7b_1.conda sha256: 48f3f6a76c34b2cfe80de9ce7f2283ecb55d5ed47367ba91e8bb8104e12b8f11 md5: 98b6c9dc80eb87b2519b97bcf7e578dd @@ -1723,6 +3166,49 @@ packages: run_exports: {} size: 150813 timestamp: 1762617014065 +- conda: https://conda.anaconda.org/conda-forge/linux-64/spirv-tools-2026.2-hb700be7_0.conda + sha256: 309d1a3317e91a03611bc960fc807cf2c0c5baacbfddea0f5636438a76c52256 + md5: 0c2b1d811632f1f4aa923450a002ff4f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + constrains: + - spirv-headers >=1.4.350.0,<1.4.350.1.0a0 + license: Apache-2.0 + license_family: APACHE + run_exports: + weak: + - spirv-tools >=2026,<2027.0a0 + size: 2392190 + timestamp: 1780139567779 +- conda: https://conda.anaconda.org/conda-forge/linux-64/svt-av1-4.0.1-hecca717_0.conda + sha256: 4a1d2005153b9454fc21c9bad1b539df189905be49e851ec62a6212c2e045381 + md5: 2a2170a3e5c9a354d09e4be718c43235 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + license: BSD-2-Clause + license_family: BSD + run_exports: + weak: + - svt-av1 >=4.0.1,<4.0.2.0a0 + size: 2619743 + timestamp: 1769664536467 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2023.0.0-hab88423_2.conda + sha256: 30cb9355c2fefc20ff1a3d6566b9714d5614086a2524c07721fc344eb20515ae + md5: 7073b15f9364ebc118998601ac6ca6a6 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libhwloc >=2.13.0,<2.13.1.0a0 + - libstdcxx >=14 + license: Apache-2.0 + license_family: APACHE + run_exports: {} + size: 182331 + timestamp: 1778673758649 - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h366c992_103.conda sha256: cafeec44494f842ffeca27e9c8b0c27ed714f93ac77ddadc6aaf726b5554ebac md5: cffd3bdd58090148f4cfcd831f4b26ab @@ -1739,6 +3225,248 @@ packages: - tk >=8.6.13,<8.7.0a0 size: 3301196 timestamp: 1769460227866 +- conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.25.0-hd6090a7_0.conda + sha256: ea374d57a8fcda281a0a89af0ee49a2c2e99cc4ac97cf2e2db7064e74e764bdb + md5: 996583ea9c796e5b915f7d7580b51ea6 + depends: + - __glibc >=2.17,<3.0.a0 + - libexpat >=2.7.4,<3.0a0 + - libffi >=3.5.2,<3.6.0a0 + - libgcc >=14 + - libstdcxx >=14 + license: MIT + license_family: MIT + run_exports: + weak: + - wayland >=1.25.0,<2.0a0 + size: 334139 + timestamp: 1773959575393 +- conda: https://conda.anaconda.org/conda-forge/linux-64/x264-1!164.3095-h166bdaf_2.tar.bz2 + sha256: 175315eb3d6ea1f64a6ce470be00fa2ee59980108f246d3072ab8b977cb048a5 + md5: 6c99772d483f566d59e25037fea2c4b1 + depends: + - libgcc-ng >=12 + license: GPL-2.0-or-later + license_family: GPL + run_exports: + weak: + - x264 >=1!164.3095,<1!165 + size: 897548 + timestamp: 1660323080555 +- conda: https://conda.anaconda.org/conda-forge/linux-64/x265-3.5-h924138e_3.tar.bz2 + sha256: 76c7405bcf2af639971150f342550484efac18219c0203c5ee2e38b8956fe2a0 + md5: e7f6ed84d4623d52ee581325c1587a6b + depends: + - libgcc-ng >=10.3.0 + - libstdcxx-ng >=10.3.0 + license: GPL-2.0-or-later + license_family: GPL + run_exports: + weak: + - x265 >=3.5,<3.6.0a0 + size: 3357188 + timestamp: 1646609687141 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.47-h280c20c_1.conda + sha256: 2bd7452f68c39bfff954385b062aca9389262369e318739af270d23af47580a5 + md5: bb1e548a92b0efa12c3e2385ae2d4529 + depends: + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - xorg-libx11 >=1.8.13,<2.0a0 + license: MIT + license_family: MIT + run_exports: {} + size: 440702 + timestamp: 1781482698093 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda + sha256: c12396aabb21244c212e488bbdc4abcdef0b7404b15761d9329f5a4a39113c4b + md5: fb901ff28063514abb6046c9ec2c4a45 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + run_exports: + weak: + - xorg-libice >=1.1.2,<2.0a0 + size: 58628 + timestamp: 1734227592886 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-he73a12e_0.conda + sha256: 277841c43a39f738927145930ff963c5ce4c4dacf66637a3d95d802a64173250 + md5: 1c74ff8c35dcadf952a16f752ca5aa49 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libuuid >=2.38.1,<3.0a0 + - xorg-libice >=1.1.2,<2.0a0 + license: MIT + license_family: MIT + run_exports: + weak: + - xorg-libsm >=1.2.6,<2.0a0 + size: 27590 + timestamp: 1741896361728 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.13-he1eb515_0.conda + sha256: 516d4060139dbb4de49a4dcdc6317a9353fb39ebd47789c14e6fe52de0deee42 + md5: 861fb6ccbc677bb9a9fb2468430b9c6a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libxcb >=1.17.0,<2.0a0 + license: MIT + license_family: MIT + run_exports: + weak: + - xorg-libx11 >=1.8.13,<2.0a0 + size: 839652 + timestamp: 1770819209719 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb03c661_1.conda + sha256: 6bc6ab7a90a5d8ac94c7e300cc10beb0500eeba4b99822768ca2f2ef356f731b + md5: b2895afaf55bf96a8c8282a2e47a5de0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: MIT + license_family: MIT + run_exports: + weak: + - xorg-libxau >=1.0.12,<2.0a0 + size: 15321 + timestamp: 1762976464266 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcursor-1.2.3-hb9d3cd8_0.conda + sha256: 832f538ade441b1eee863c8c91af9e69b356cd3e9e1350fff4fe36cc573fc91a + md5: 2ccd714aa2242315acaf0a67faea780b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - xorg-libx11 >=1.8.10,<2.0a0 + - xorg-libxfixes >=6.0.1,<7.0a0 + - xorg-libxrender >=0.9.11,<0.10.0a0 + license: MIT + license_family: MIT + run_exports: + weak: + - xorg-libxcursor >=1.2.3,<2.0a0 + size: 32533 + timestamp: 1730908305254 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb03c661_1.conda + sha256: 25d255fb2eef929d21ff660a0c687d38a6d2ccfbcbf0cc6aa738b12af6e9d142 + md5: 1dafce8548e38671bea82e3f5c6ce22f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: MIT + license_family: MIT + run_exports: + weak: + - xorg-libxdmcp >=1.1.5,<2.0a0 + size: 20591 + timestamp: 1762976546182 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.7-hb03c661_0.conda + sha256: 79c60fc6acfd3d713d6340d3b4e296836a0f8c51602327b32794625826bd052f + md5: 34e54f03dfea3e7a2dcf1453a85f1085 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - xorg-libx11 >=1.8.12,<2.0a0 + license: MIT + license_family: MIT + run_exports: + weak: + - xorg-libxext >=1.3.7,<2.0a0 + size: 50326 + timestamp: 1769445253162 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.2-hb03c661_0.conda + sha256: 83c4c99d60b8784a611351220452a0a85b080668188dce5dfa394b723d7b64f4 + md5: ba231da7fccf9ea1e768caf5c7099b84 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - xorg-libx11 >=1.8.12,<2.0a0 + license: MIT + license_family: MIT + run_exports: + weak: + - xorg-libxfixes >=6.0.2,<7.0a0 + size: 20071 + timestamp: 1759282564045 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxi-1.8.3-hb03c661_0.conda + sha256: 495f99c8eacfa4ae2d8fed2a7f2105777af89acdc204df145d2bbbc380ac631b + md5: adba2e334082bb218db806d4c12277c9 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - xorg-libx11 >=1.8.13,<2.0a0 + - xorg-libxext >=1.3.7,<2.0a0 + - xorg-libxfixes >=6.0.2,<7.0a0 + license: MIT + license_family: MIT + run_exports: + weak: + - xorg-libxi >=1.8.3,<2.0a0 + size: 47717 + timestamp: 1779111857071 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrandr-1.5.5-hb03c661_0.conda + sha256: 80ed047a5cb30632c3dc5804c7716131d767089f65877813d4ae855ee5c9d343 + md5: e192019153591938acf7322b6459d36e + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - xorg-libx11 >=1.8.12,<2.0a0 + - xorg-libxext >=1.3.6,<2.0a0 + - xorg-libxrender >=0.9.12,<0.10.0a0 + license: MIT + license_family: MIT + run_exports: + weak: + - xorg-libxrandr >=1.5.5,<2.0a0 + size: 30456 + timestamp: 1769445263457 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.12-hb9d3cd8_0.conda + sha256: 044c7b3153c224c6cedd4484dd91b389d2d7fd9c776ad0f4a34f099b3389f4a1 + md5: 96d57aba173e878a2089d5638016dc5e + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - xorg-libx11 >=1.8.10,<2.0a0 + license: MIT + license_family: MIT + run_exports: + weak: + - xorg-libxrender >=0.9.12,<0.10.0a0 + size: 33005 + timestamp: 1734229037766 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxscrnsaver-1.2.4-hb9d3cd8_0.conda + sha256: 58e8fc1687534124832d22e102f098b5401173212ac69eb9fd96b16a3e2c8cb2 + md5: 303f7a0e9e0cd7d250bb6b952cecda90 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - xorg-libx11 >=1.8.10,<2.0a0 + - xorg-libxext >=1.3.6,<2.0a0 + license: MIT + license_family: MIT + run_exports: + weak: + - xorg-libxscrnsaver >=1.2.4,<2.0a0 + size: 14412 + timestamp: 1727899730073 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxtst-1.2.5-hb9d3cd8_3.conda + sha256: 752fdaac5d58ed863bbf685bb6f98092fe1a488ea8ebb7ed7b606ccfce08637a + md5: 7bbe9a0cc0df0ac5f5a8ad6d6a11af2f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - xorg-libx11 >=1.8.10,<2.0a0 + - xorg-libxext >=1.3.6,<2.0a0 + - xorg-libxi >=1.7.10,<2.0a0 + license: MIT + license_family: MIT + run_exports: + weak: + - xorg-libxtst >=1.2.5,<2.0a0 + size: 32808 + timestamp: 1727964811275 - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h09e67af_11.conda sha256: dc9f28dedcb5f35a127fad2d847674d2833369dd616d294e423b8997df31d8a8 md5: 96b08867e21d4694fa5c2c226e6581b0 @@ -1790,6 +3518,61 @@ packages: run_exports: {} size: 128866 timestamp: 1781708962055 +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + sha256: 58d7f40d2940dd0a8aa28651239adbf5613254df0f75789919c4e6762054403b + md5: 0c96522c6bdaed4b1566d11387caaf45 + license: BSD-3-Clause + license_family: BSD + run_exports: {} + size: 397370 + timestamp: 1566932522327 +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + sha256: c52a29fdac682c20d252facc50f01e7c2e7ceac52aa9817aaf0bb83f7559ec5c + md5: 34893075a5c9e55cdafac56607368fc6 + license: OFL-1.1 + license_family: Other + run_exports: {} + size: 96530 + timestamp: 1620479909603 +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + sha256: 00925c8c055a2275614b4d983e1df637245e19058d79fc7dd1a93b8d9fb4b139 + md5: 4d59c254e01d9cde7957100457e2d5fb + license: OFL-1.1 + license_family: Other + run_exports: {} + size: 700814 + timestamp: 1620479612257 +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda + sha256: 2821ec1dc454bd8b9a31d0ed22a7ce22422c0aef163c59f49dfdf915d0f0ca14 + md5: 49023d73832ef61042f6a237cb2687e7 + license: LicenseRef-Ubuntu-Font-Licence-Version-1.0 + license_family: Other + run_exports: {} + size: 1620504 + timestamp: 1727511233259 +- conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + sha256: a997f2f1921bb9c9d76e6fa2f6b408b7fa549edd349a77639c9fe7a23ea93e61 + md5: fee5683a3f04bd15cbd8318b096a27ab + depends: + - fonts-conda-forge + license: BSD-3-Clause + license_family: BSD + run_exports: {} + size: 3667 + timestamp: 1566974674465 +- conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda + sha256: 54eea8469786bc2291cc40bca5f46438d3e062a399e8f53f013b6a9f50e98333 + md5: a7970cd949a077b7cb9696379d338681 + depends: + - font-ttf-ubuntu + - font-ttf-inconsolata + - font-ttf-dejavu-sans-mono + - font-ttf-source-code-pro + license: BSD-3-Clause + license_family: BSD + run_exports: {} + size: 4059 + timestamp: 1762351264405 - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-6.12.0-he073ed8_6.conda sha256: 73b11f31db6c9ebe63d900334fa4f46859aa1ddd8f37cfa5f25a043e0a59253c md5: ad5a27ffc9350af2624927dd79edf2be @@ -1855,6 +3638,14 @@ packages: run_exports: {} size: 119135 timestamp: 1767016325805 +- conda: https://conda.anaconda.org/conda-forge/noarch/wayland-protocols-1.49-hd8ed1ab_0.conda + sha256: 04ce686cd187d379344f9b2be7b4da5f431b265dc0944a6b764fab9da9171948 + md5: 0839a3421140d4a9ba93fb988698fc00 + license: MIT + license_family: MIT + run_exports: {} + size: 147954 + timestamp: 1780946721169 - conda: https://prefix.dev/plotjuggler/linux-64/plotjuggler_sdk-0.8.1-hb0f4dca_0.conda sha256: ef7f036f7b0043c359b4a9dd74050fa3cb5df3ba9100809bee8f49f58ee4cc56 md5: 5e44370c1837156def3935b6d3d9be83 diff --git a/pixi.toml b/pixi.toml index 71d87657..7335aa7c 100644 --- a/pixi.toml +++ b/pixi.toml @@ -51,9 +51,15 @@ ixwebsocket = "11.4.*" [feature.mosaico.dependencies] libarrow-flight = ">=23,<24" fmt = "*" +# data_load_mp4 + data_load_lerobot (via common/pj_video_demux): walk MP4/video +# containers for per-frame indexing. conda-forge ffmpeg is pkg-config only (no +# CMake config), consumed via pj_target_link_ffmpeg; pkg-config drives the probe. +[feature.media.dependencies] +ffmpeg = ">=6,<9" +pkg-config = "*" [environments] -default = { features = ["datetime", "serialization", "compression", "protobuf", "mqtt", "zmq", "udp", "scripting", "bridge", "mosaico"], solve-group = "main" } +default = { features = ["datetime", "serialization", "compression", "protobuf", "mqtt", "zmq", "udp", "scripting", "bridge", "mosaico", "media"], solve-group = "main" } [tasks] # BUILD_TESTING=ON so plugins that gate their tests on it (toolbox_mosaico) still