[devel] I: llvm-common 17

Aresny Maslennikov arseny на altlinux.org
Чт Окт 5 14:10:38 MSK 2023


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 <llvm-c/Transforms/Scalar.h>
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
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
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : signature.asc
Тип     : application/pgp-signature
Размер  : 833 байтов
Описание: отсутствует
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20231005/6bf0d9f9/attachment.bin>


Подробная информация о списке рассылки Devel