Conversation
Поиск через cmake-конфиги заставлял meson разбирать generator expressions ($<LINK_ONLY:...>, $<PLATFORM_ID:...>), которые его cmake-парсер не знает: на каждом setup сыпалось полтора десятка «Unknown generator expression», а выброшенные LINK_ONLY-зависимости приходилось добирать вручную (libcurl, utf8_range/utf8_validity). Теперь все компоненты берутся из .pc-файлов, которые ставит сам opentelemetry-cpp; protobuf и libcurl подключаются явно (в Requires у otel-файлов их нет), а opentelemetry_proto и opentelemetry_http_client_curl, для которых .pc не генерируется, ищутся find_library в libdir из pkg-config. Порядок зависимостей выстроен под статическую линковку. -Dotel=builtin ссылался на несуществующий subproject -- теперь это явная ошибка с подсказкой использовать -Dotel=system. В CI вместо CMAKE_PREFIX_PATH выставляется PKG_CONFIG_PATH на /opt/opentelemetry-cpp/lib/pkgconfig.
.pc-файлы для экспортёров (opentelemetry_exporter_otlp_http и др.) upstream начал ставить только в 1.25, а поиск через pkg-config на них опирается. Ключ кэша меняется вместе с версией, /opt/opentelemetry-cpp пересоберётся.
Откат бампа 0.2.28 -> 0.2.27. Правило про бамп patch на каждый фикс/merge из CLAUDE.md убрано: версия меняется вручную тем, кому нужно, в отдельной ветке, иначе VERSION.txt конфликтует во всех PR.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Зачем
При
meson setup ... -Dotel=systemсыпалось ~15 предупрежденийUnknown generator expression '$<LINK_ONLY:...>','$<PLATFORM_ID:...>'. Источник — cmake-парсер самого meson (mesonbuild/cmake/generator.py): он не знает этих выражений и раскрывает их в пустоту. Upstream-фикс (mesonbuild/meson#15914) висит с июня и закрывает толькоLINK_ONLY.Что сделано
opentelemetry-cppищется через pkg-config (.pc-файлы ставит сам opentelemetry-cpp), cmake больше не запускается — предупреждениям неоткуда взяться.Requiresу otel-файлов нет protobuf и curl — они подключаются явно. Дляopentelemetry_protoиopentelemetry_http_client_curl.pcне генерируется вовсе — они берутсяfind_libraryизlibdir, полученного от pkg-config.utf8_range/utf8_validityубраны: их тянетprotobuf.pc.-Dotel=builtinссылался на отсутствующий subproject — теперь явная ошибка с подсказкой..pcдля экспортёров появились только в 1.25),PKG_CONFIG_PATH=/opt/opentelemetry-cpp/lib/pkgconfigвместоCMAKE_PREFIX_PATH.Проверка
Локально (vcpkg, opentelemetry-cpp 1.25.0, protobuf 33.4, meson 1.11.1):
meson setup -Dotel=system— 0 предупреждений, все 14 зависимостей найдены;ninja circle— линкуется, 0 предупреждений компилятора, ~5k символовopentelemetry::в бинаре;-Dotel=builtin— понятная ошибка.Внешние зависимости
Требуется opentelemetry-cpp ≥ 1.25:
.pc-файлы для экспортёров появились только в этой версии. С 1.24meson setupчестно падает наopentelemetry_exporter_otlp_http not found (tried pkg-config).Проверено на bylins.su: системный otel там 1.24.0 (не подходит), собран 1.25.0 в
~/opt/opentelemetry-cppбез sudo. СPKG_CONFIG_PATHна него: setup без предупреждений, полная сборка без предупреждений компилятора, 683 теста прошли. meson на машине не было, поставлен черезpipx.