Hi! В сизифе от 2 октября версия LLVM по умолчанию была переключена на 17. Несколько пакетов оказались не готовы к этому, в их числе: Mesa-4:23.1.8-alt2 bcc-0.28.0-alt2 blender-3.6.3-alt1 cvise-2.8.0-alt2 ispc-1.21.0-alt1 picolisp-22.12-alt2 Кроме того, во исправление багрепорта[1] пакета clang17.0-libs-support больше нет (ему дано более точное имя), а пакет clang17.0-libs стал переходным метапакетом, получившим зависимости на libclang17 и libclang-cpp17, куда (наконец-то!) переехали соответствующие библиотеки. devel-пакет сейчас у них по-прежнему общий, я не уверен, что стоит тратить силы на разделение. Сами clang и clangd получили явные зависимости на свой support-пакет. Судя по тестовым пересборкам, никаким пакетам это не помешало пересобираться. Ниже следуют комментарии к логам неудачной пересборки. Mesa-4:23.1.8-alt2 FAILED: src/gallium/auxiliary/libgallium.a.p/gallivm_lp_bld_init.c.o cc -Isrc/gallium/auxiliary/libgallium.a.p -Isrc/gallium/auxiliary -I../src/gallium/auxiliary -Isrc/loader -I../src/loader -I../src/gallium/include -Isrc -I../src -Iinclude -I../include -I../src/gallium/auxiliary/util -Isrc/compiler/nir -I../src/compiler/nir -I/usr/include/libdrm -fvisibility=hidden -fdiagnostics-color=always -DNDEBUG -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -std=c11 -O2 -g '-DPACKAGE_VERSION="23.1.8"' '-DPACKAGE_BUGREPORT="https://gitlab.freedesktop.org/mesa/mesa/-/issues"' -DHAVE_OPENGL=1 -DHAVE_OPENGL_ES_1=0 -DHAVE_OPENGL_ES_2=1 -DHAVE_SWRAST -DHAVE_R300 -DHAVE_R600 -DHAVE_RADEONSI -DHAVE_I915 -DHAVE_CROCUS -DHAVE_IRIS -DHAVE_NOUVEAU -DHAVE_VIRGL -DHAVE_SVGA -DHAVE_ZINK -DVIDEO_CODEC_VC1DEC=1 -DVIDEO_CODEC_H264DEC=1 -DVIDEO_CODEC_H264ENC=1 -DVIDEO_CODEC_H265DEC=1 -DVIDEO_CODEC_H265ENC=1 -DHAVE_X11_PLATFORM -DHAVE_WAYLAND_PLATFORM -DHAVE_SURFACELESS_PLATFORM -DHAVE_DRM_PLATFORM -DHAVE_XCB_PLATFORM -DHAVE_ST_VDPAU -DENABLE_ST_OMX_BELLAGIO=0 -DENABLE_ST_OMX_TIZONIA=0 -DHAVE_VA_SURFACE_ATTRIB_DRM_FORMAT_MODIFIERS -DGLX_INDIRECT_RENDERING -DGLX_DIRECT_RENDERING -DGLX_USE_DRM -DALLOW_KCMP -DENABLE_SHADER_CACHE -DHAVE___BUILTIN_BSWAP32 -DHAVE___BUILTIN_BSWAP64 -DHAVE___BUILTIN_CLZ -DHAVE___BUILTIN_CLZLL -DHAVE___BUILTIN_CTZ -DHAVE___BUILTIN_EXPECT -DHAVE___BUILTIN_FFS -DHAVE___BUILTIN_FFSLL -DHAVE___BUILTIN_POPCOUNT -DHAVE___BUILTIN_POPCOUNTLL -DHAVE___BUILTIN_UNREACHABLE -DHAVE___BUILTIN_TYPES_COMPATIBLE_P -DHAVE_FUNC_ATTRIBUTE_CONST -DHAVE_FUNC_ATTRIBUTE_FLATTEN -DHAVE_FUNC_ATTRIBUTE_MALLOC -DHAVE_FUNC_ATTRIBUTE_PURE -DHAVE_FUNC_ATTRIBUTE_UNUSED -DHAVE_FUNC_ATTRIBUTE_WARN_UNUSED_RESULT -DHAVE_FUNC_ATTRIBUTE_WEAK -DHAVE_FUNC_ATTRIBUTE_FORMAT -DHAVE_FUNC_ATTRIBUTE_PACKED -DHAVE_FUNC_ATTRIBUTE_RETURNS_NONNULL -DHAVE_FUNC_ATTRIBUTE_ALIAS -DHAVE_FUNC_ATTRIBUTE_NORETURN -DHAVE_FUNC_ATTRIBUTE_VISIBILITY -DHAVE_UINT128 -DHAVE_REALLOCARRAY -DHAVE_FMEMOPEN -DUSE_SSE41 -DUSE_GCC_ATOMIC_BUILTINS -DUSE_X86_64_ASM -DMAJOR_IN_SYSMACROS -DHAS_SCHED_H -DHAS_SCHED_GETAFFINITY -DHAVE_LINUX_FUTEX_H -DHAVE_ENDIAN_H -DHAVE_DLFCN_H -DHAVE_SYS_SHM_H -DHAVE_CET_H -DHAVE_SYS_INOTIFY_H -DHAVE_STRTOF -DHAVE_MKOSTEMP -DHAVE_TIMESPEC_GET -DHAVE_MEMFD_CREATE -DHAVE_RANDOM_R -DHAVE_FLOCK -DHAVE_STRTOK_R -DHAVE_GETRANDOM -DHAVE_POSIX_FALLOCATE -DHAVE_GNU_QSORT_R -DHAVE_STRUCT_TIMESPEC -DHAVE_PROGRAM_INVOCATION_NAME -DHAVE_ISSIGNALING -DHAVE_POSIX_MEMALIGN -DHAVE_DIRENT_D_TYPE -DHAVE_STRTOD_L -DHAVE_DLADDR -DHAVE_DL_ITERATE_PHDR -DSUPPORT_INTEL_INTEGRATED_GPUS -DHAVE_ZLIB -DHAVE_ZSTD -DHAVE_COMPRESSION -DHAVE_PTHREAD -DHAVE_PTHREAD_SETAFFINITY -DHAVE_LIBDRM -DHAVE_LIBUDEV -DLLVM_AVAILABLE '-DMESA_LLVM_VERSION_STRING="17.0.2"' -DLLVM_IS_SHARED=1 -DDRAW_LLVM_AVAILABLE -DUSE_LIBELF -DUSE_LIBGLVND=1 -DMESA_SELINUX -DMESA_EXECMEM -DHAVE_LIBUNWIND -DWL_HIDE_DEPRECATED -DHAVE_DRI -DHAVE_DRI2 -DHAVE_DRI3 -DHAVE_DRI3_MODIFIERS -DHAVE_DRISW_KMS -DHAVE_LIBSENSORS=1 -mtls-dialect=gnu2 -Werror=implicit-function-declaration -Werror=missing-prototypes -Werror=return-type -Werror=empty-body -Werror=incompatible-pointer-types -Werror=int-conversion -Wimplicit-fallthrough -Wmisleading-indentation -Wno-missing-field-initializers -Wno-format-truncation -Wno-nonnull-compare -fno-math-errno -fno-trapping-math -fno-common -Wno-unused-function -Werror=format -Wformat-security -ffunction-sections -fdata-sections -Wno-unused-variable -Wno-unused-but-set-variable -pipe -frecord-gcc-switches -Wall -g -O2 -fPIC -pthread -isystem/usr/lib/llvm-17.0/include -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Werror=pointer-arith -Werror=vla -MD -MQ src/gallium/auxiliary/libgallium.a.p/gallivm_lp_bld_init.c.o -MF src/gallium/auxiliary/libgallium.a.p/gallivm_lp_bld_init.c.o.d -o src/gallium/auxiliary/libgallium.a.p/gallivm_lp_bld_init.c.o -c ../src/gallium/auxiliary/gallivm/lp_bld_init.c ../src/gallium/auxiliary/gallivm/lp_bld_init.c:45:10: fatal error: llvm-c/Transforms/Scalar.h: No such file or directory 45 | #include | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ compilation terminated. В LLVM 17 выкинули legacy pass manager, вместо него предлагая modern pass manager. Как минимум gallium и clover к этому не готовы. Бродя по их гитлабу, я нашёл два принятых MR: https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22980 https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24879 Если этого будет недостаточно, а апстрим не разберётся в достаточный срок, то придётся собирать 16-м — и будет желательно, чтобы clang-libs были переупакованы и там. Mesa shrek blender-3.6.3-alt1 /usr/bin/cc -Wall -Werror=implicit-function-declaration -Werror=return-type -Werror=vla -Wstrict-prototypes -Wmissing-prototypes -Wno-char-subscripts -Wno-unknown-pragmas -Wpointer-arith -Wunused-parameter -Wwrite-strings -Wlogical-op -Wundef -Winit-self -Wmissing-include-dirs -Wno-div-by-zero -Wtype-limits -Wformat-signedness -Wrestrict -Wno-stringop-overread -Wno-stringop-overflow -Wnonnull -Wabsolute-value -Wuninitialized -Wredundant-decls -Wshadow -Wno-error=unused-but-set-variable -Wimplicit-fallthrough=5 -pipe -frecord-gcc-switches -Wall -g -O2 "-I/usr/include/pcre" -fPIC -funsigned-char -fno-strict-aliasing -fopenmp -std=gnu11 -msse -pipe -fPIC -funsigned-char -fno-strict-aliasing -ffp-contract=off -msse2 -fmacro-prefix-map="/usr/src/RPM/BUILD/blender-3.6.3/"="" -fmacro-prefix-map="/usr/src/RPM/BUILD/blender-3.6.3/x86_64-alt-linux/"="" -Wno-maybe-uninitialized -O2 -DNDEBUG -Wl,--build-id=sha1 -fuse-ld=lld -Wl,--version-script='/usr/src/RPM/BUILD/blender-3.6.3/source/creator/symbols_unix.map' -latomic CMakeFiles/datatoc.dir/datatoc.c.o -o ../../../bin/datatoc ld.lld: error: version script assignment of 'global' to symbol '_bss_start' failed: symbol not defined ld.lld: error: version script assignment of 'global' to symbol '__end' failed: symbol not defined ld.lld: error: version script assignment of 'global' to symbol 'aligned_alloc' failed: symbol not defined ld.lld: error: version script assignment of 'global' to symbol 'aligned_free' failed: symbol not defined ld.lld: error: version script assignment of 'global' to symbol 'free' failed: symbol not defined ld.lld: error: version script assignment of 'global' to symbol 'mallinfo' failed: symbol not defined ld.lld: error: version script assignment of 'global' to symbol 'mallopt' failed: symbol not defined ld.lld: error: version script assignment of 'global' to symbol 'memalign' failed: symbol not defined ld.lld: error: version script assignment of 'global' to symbol 'memcpy' failed: symbol not defined ld.lld: error: version script assignment of 'global' to symbol 'posix_memalign' failed: symbol not defined ld.lld: error: version script assignment of 'global' to symbol 'pvalloc' failed: symbol not defined ld.lld: error: version script assignment of 'global' to symbol 'realpath' failed: symbol not defined ld.lld: error: version script assignment of 'global' to symbol 'valloc' failed: symbol not defined ld.lld: error: version script assignment of 'global' to symbol '__progname' failed: symbol not defined ld.lld: error: version script assignment of 'global' to symbol 'environ' failed: symbol not defined collect2: error: ld returned 1 exit status LLD 17 по умолчанию ведёт себя так, будто ему передана --no-undefined-version. С этой опцией version scripts обрабатываются более строго, чем с предыдущим зн. по умолч. --undefined-version: если в скрипте указан символ, которого нет во входных данных, то линкер ругнётся и завершится с ошибкой, что мы и видим в выдержке из лога. Пару опций с тем же названием --{no,}-undefined-version добавили в GNU binutils 2.40. Т. е. у апстрима пакета version script не соответствует окружению. Пока я склоняюсь к тому, что в пакетах, где это проявляется, стоит явно передавать при линковке -Wl,--undefined-version: https://cmake.org/cmake/help/v3.26/envvar/LDFLAGS.html#ldflags blender rider egori @everybody cvise-2.8.0-alt2 cvise lav @everybody /usr/lib/llvm-17.0/include/clang/AST/TypeLoc.h: In constructor 'clang::TypeSourceInfo::TypeSourceInfo(clang::QualType, size_t)': /usr/lib/llvm-17.0/include/clang/AST/TypeLoc.h:245:9: error: 'void* memset(void*, int, size_t)' clearing an object of non-trivial type 'class clang::TypeSourceInfo'; use assignment instead [-Werror=class-memaccess] 245 | memset(this + 1, 0, DataSize); | ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~ В проекте на С++ пишут, будто на Си, а потом наш GCC видит такое и кидает ворнинги. :/ Мне придётся исправить этот хедер. bcc-0.28.0-alt2 ispc-1.21.0-alt1 debugedit: ./usr/bin/check_isa: Unknown DWARF DW_FORM_0x25 debugedit: ./usr/lib64/libispcrt.so.1.21.0: Unknown DWARF DW_FORM_0x25 debugedit: ./usr/lib64/libispcrt_device_cpu.so.1.21.0: Unknown DWARF DW_FORM_0x25 056-debuginfo.brp: WARNING: 2 non-stripped binaries don't contain .debug sections making -debuginfo 056-debuginfo.brp: WARNING: package less relevant. An excerpt from the list of affected files follows: ./usr/lib64/libispcrt.so.1.21.0 ./usr/lib64/libispcrt_device_cpu.so.1.21.0 056-debuginfo.brp: ERROR: Files with stripped .debug_info found, terminating build Где-то между llvm15.0 и llvm17.0 отвалился патч, заставляющий clang генерировать debuginfo в формате DWARF4. Замечание уважаемым сомейнтейнерам разных llvmов: пожалуйста, когда редиффите патчи между версиями апстрима, _явно_ мигрируйте каждый патч, чтобы старую и новую ревизию было видно в gear-репозитории. picolisp-22.12-alt2 + cd /usr/src/RPM/BUILD + cd pil21 + cd src + make make: Entering directory '/usr/src/RPM/BUILD/pil21/src' opt: for the -o option: may not occur within a group! opt: Unknown command line argument '-opaque-pointers'. Try: 'opt --help' opt: Did you mean '-o'? make: *** [Makefile:45: base.bc] Error 1 make: Leaving directory '/usr/src/RPM/BUILD/pil21/src' В 17 ветке окончательно убрали поддержку typed pointers, и все указатели в LLVM IR теперь "opaque". Программа opt больше не поддерживает опцию -opaque-pointers: их не нужно включать, они всегда включены. В пакет стоит внести исправление наподобие: --- a/src/Makefile +++ a/src/Makefile @@ -14,4 +14,3 @@ LLVM = $(shell llvm-config --version | cut -d. -f1) ifeq ($(shell test $(LLVM) -ge 15; echo $$?), 0) - ASM += -opaque-pointers endif Не исключаю, что в новой версии апстрим уже об этом позаботился. picolisp mike arbars @everybody