* Re: [devel] [#263468] EPERM (try 14) llvm-common.git=11.0.0-alt2 srpm=llvm11.0-11.0.0-alt2.src.rpm @ 2021-01-07 14:08 ` Arseny Maslennikov 2021-01-07 20:52 ` Konstantin Lepikhov 0 siblings, 1 reply; 79+ messages in thread From: Arseny Maslennikov @ 2021-01-07 14:08 UTC (permalink / raw) To: shrek, devel [-- Attachment #1: Type: text/plain, Size: 3735 bytes --] On Thu, Jan 07, 2021 at 11:22:02AM +0000, Girar awaiter (arseny) wrote: > http://git.altlinux.org/tasks/263468/logs/events.13.1.log > http://git.altlinux.org/tasks/263468/logs/events.14.1.log > <...> > 2021-Jan-07 11:21:21 :: gears inheritance check OK > 2021-Jan-07 11:21:21 :: srpm inheritance check OK > girar-check-perms: access to llvm-common ALLOWED for arseny: project `llvm-common' is not listed in acl file for repository `sisyphus' > check-subtask-perms: #1100: llvm-common: allowed for arseny > girar-check-perms: access to llvm11.0 DENIED for arseny: does not belong to approved builders list: shrek > check-subtask-perms: #1500: llvm11.0: Operation not permitted > 2021-Jan-07 11:21:21 :: acl check FAILED > 2021-Jan-07 11:21:41 :: created contents_index files > 2021-Jan-07 11:21:59 :: created hash files: aarch64 armh i586 noarch ppc64le src x86_64-i586 x86_64 > 2021-Jan-07 11:22:01 :: task #263468 for sisyphus EPERM Прошу пропустить задание в сизиф. * Fri Dec 11 2020 Arseny Maslennikov <arseny@altlinux.org> 11.0.0-alt2 - Installed to /usr/lib/llvm-11.0 to ensure peaceful co-existence with other LLVM versions.[1] Numbered shared libraries in %llvm_prefix/%%_lib are symlinked to %%_libdir to properly generate library dependencies. - Moved clang-format and other clang-based tools to clang11.0-tools. - New LLVM subproject: clang-tools-extra. + 2 new packages: clang11.0-tools, clangd11.0 - Enabled all LLVM targets. - Moved C/C++ compiler support away from clang-libs to clang-libs-support. - Moved Clang .so runtimes (scudo and sanitizers) with available static variants to clang-libs-support-shared-runtimes to comply with sisyphus-check-static. [1] https://bugzilla.altlinux.org/show_bug.cgi?id=39087#c13 Исполнимые файлы (например, clang-11), библиотеки с мажорной версией в имени файла (например, libclang.so.11, libLLVM-11.so.1), маны (например, clang-11.1.xz) проброшены симлинком в стандартные каталоги. По именам исполнимых утилит без суффикса (например, clang) установлены симлинки в пакете llvm-common из этого задания на программу-обёртку, совершающую execve(2) на настоящую утилиту той версии, что указана в переменных окружения; подробнее — см. тот пакет. Для CMake-конфигов пришлось написать обёртку, которая смотрит в те же переменные окружения и инклюдит свой аналог для соответствующей версии. Провайды вида llvm-* (без номера версии) представлены подпакетами llvm-common, которые вытягивают по зависимостям некоторую версию llvm, признанную стандартной (сейчас 11). Все изменения пакета есть по ссылке [2]. Кто-то просил дифф на спек — наш гитвеб показывает его по ссылке [3]. [2] http://git.altlinux.org/people/arseny/packages/llvm11.0.git?p=llvm11.0.git;a=shortlog;h=refs/heads/master [3] http://git.altlinux.org/people/arseny/packages/llvm11.0.git?p=llvm11.0.git;a=blobdiff;f=llvm11.spec;h=64681a96e2520e90e7f4f3d74b5439e0ea8f2872;hp=659847bc56dab3889c89e5e779a6b5e5a9c08202;hb=f70dcfeb57560ad1e0e39cddc5318ad41c86902a;hpb=8986c2acdc8311f69a43a1661a849a2e12788de8 [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] [#263468] EPERM (try 14) llvm-common.git=11.0.0-alt2 srpm=llvm11.0-11.0.0-alt2.src.rpm 2021-01-07 14:08 ` [devel] [#263468] EPERM (try 14) llvm-common.git=11.0.0-alt2 srpm=llvm11.0-11.0.0-alt2.src.rpm Arseny Maslennikov @ 2021-01-07 20:52 ` Konstantin Lepikhov 2021-01-07 21:18 ` Arseny Maslennikov 0 siblings, 1 reply; 79+ messages in thread From: Konstantin Lepikhov @ 2021-01-07 20:52 UTC (permalink / raw) To: ALT Linux Team development discussions Hi Arseny! On 01/07/2021, at 05:08:00 PM you wrote: > гитвеб показывает его по ссылке [3]. > .... > [3] http://git.altlinux.org/people/arseny/packages/llvm11.0.git?p=llvm11.0.git;a=blobdiff;f=llvm11.spec;h=64681a96e2520e90e7f4f3d74b5439e0ea8f2872;hp=659847bc56dab3889c89e5e779a6b5e5a9c08202;hb=f70dcfeb57560ad1e0e39cddc5318ad41c86902a;hpb=8986c2acdc8311f69a43a1661a849a2e12788de8 говорит 404 - Reading git-diff-tree failed Я бы все-таки хотел посмотреть на diff. -- WBR et al. ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] [#263468] EPERM (try 14) llvm-common.git=11.0.0-alt2 srpm=llvm11.0-11.0.0-alt2.src.rpm 2021-01-07 20:52 ` Konstantin Lepikhov @ 2021-01-07 21:18 ` Arseny Maslennikov 2021-01-11 9:13 ` Konstantin Lepikhov 2021-01-11 16:09 ` [devel] [#263468] EPERM (try 14) llvm-common.git=11.0.0-alt2 srpm=llvm11.0-11.0.0-alt2.src.rpm Konstantin Lepikhov 0 siblings, 2 replies; 79+ messages in thread From: Arseny Maslennikov @ 2021-01-07 21:18 UTC (permalink / raw) To: ALT Linux Team development discussions [-- Attachment #1.1: Type: text/plain, Size: 809 bytes --] On Thu, Jan 07, 2021 at 09:52:20PM +0100, Konstantin Lepikhov wrote: > Hi Arseny! > > On 01/07/2021, at 05:08:00 PM you wrote: > > > гитвеб показывает его по ссылке [3]. > > > .... > > [3] http://git.altlinux.org/people/arseny/packages/llvm11.0.git?p=llvm11.0.git;a=blobdiff;f=llvm11.spec;h=64681a96e2520e90e7f4f3d74b5439e0ea8f2872;hp=659847bc56dab3889c89e5e779a6b5e5a9c08202;hb=f70dcfeb57560ad1e0e39cddc5318ad41c86902a;hpb=8986c2acdc8311f69a43a1661a849a2e12788de8 > > говорит 404 - Reading git-diff-tree failed > > Я бы все-таки хотел посмотреть на diff. > УМВР. Может, мой почтовый клиент сломал ссылку или ваш не так показал? Прикладываю файлом. [-- Attachment #1.2: llvm11.spec.diff --] [-- Type: text/x-diff, Size: 24841 bytes --] diff --git a/llvm11.spec b/llvm11.spec index 659847bc5..6ff57e544 100644 --- a/llvm11.spec +++ b/llvm11.spec @@ -1,7 +1,26 @@ -%global v_major 11.0 -%global llvm_name llvm%v_major -%global clang_name clang%v_major -%global lld_name lld%v_major +%define _unpackaged_files_terminate_build 1 + +%global v_major 11 +%global v_majmin %v_major.0 +%global v_full %v_majmin.0 +%global rcsuffix %nil +%global llvm_name llvm%v_majmin +%global clang_name clang%v_majmin +%global clangd_name clangd%v_majmin +%global lld_name lld%v_majmin + +%global llvm_default_name llvm%_llvm_version +%global clang_default_name clang%_llvm_version +%global lld_default_name lld%_llvm_version + +%global llvm_prefix %_prefix/lib/llvm-%v_majmin +%global llvm_bindir %llvm_prefix/bin +%global llvm_libdir %llvm_prefix/%_lib +%global llvm_includedir %llvm_prefix/include +%global llvm_libexecdir %llvm_prefix/libexec +%global llvm_datadir %llvm_prefix/share +%global llvm_man1dir %llvm_datadir/man/man1 +%global llvm_docdir %llvm_datadir/doc # Decrease debuginfo verbosity to reduce memory consumption during final library linking %ifarch %ix86 %arm @@ -11,6 +30,8 @@ %define optflags_debug -g1 %endif +%define hwasan_symbolize_arches x86_64 aarch64 + %def_disable tests %ifarch x86_64 aarch64 %def_without clang @@ -18,44 +39,62 @@ %def_without clang %endif +%define tarversion %v_full%rcsuffix + Name: %llvm_name -Version: 11.0.0 -Release: alt1 -Summary: The Low Level Virtual Machine +Version: %v_full +Release: alt2 +Summary: The LLVM Compiler Infrastructure Group: Development/C -License: NCSA +License: Apache-2.0 with LLVM-exception Url: http://llvm.org -Source0: https://github.com/llvm/llvm-project/releases/download/llvmorg-%version/llvm-%version.src.tar.xz -Source1: https://github.com/llvm/llvm-project/releases/download/llvmorg-%version/clang-%version.src.tar.xz -Source2: https://github.com/llvm/llvm-project/releases/download/llvmorg-%version/lld-%version.src.tar.xz -Source3: https://github.com/llvm/llvm-project/releases/download/llvmorg-%version/compiler-rt-%version.src.tar.xz +Source0: https://github.com/llvm/llvm-project/releases/download/llvmorg-%tarversion/llvm-%tarversion.src.tar.xz +Source1: https://github.com/llvm/llvm-project/releases/download/llvmorg-%tarversion/clang-%tarversion.src.tar.xz +Source2: https://github.com/llvm/llvm-project/releases/download/llvmorg-%tarversion/clang-tools-extra-%tarversion.src.tar.xz +Source3: https://github.com/llvm/llvm-project/releases/download/llvmorg-%tarversion/lld-%tarversion.src.tar.xz +Source4: https://github.com/llvm/llvm-project/releases/download/llvmorg-%tarversion/compiler-rt-%tarversion.src.tar.xz Patch: clang-alt-i586-fallback.patch Patch1: clang-11-alt-triple.patch +Patch2: 0001-alt-llvm-config-Ignore-wrappers-when-looking-for-current.patch Patch3: llvm-alt-fix-linking.patch Patch4: llvm-alt-triple.patch Patch5: compiler-rt-9-alt-i586-arch.patch Patch6: RH-0001-CMake-Split-static-library-exports-into-their-own-ex.patch Patch7: clang-alt-aarch64-dynamic-linker-path.patch +Patch8: clang-tools-extra-alt-gcc-0001-clangd-satisfy-ALT-gcc-s-Werror-return-type.patch Patch9: lld-11-alt-mipsel-permit-textrels-by-default.patch Patch10: llvm-10-alt-python3.patch Patch14: llvm-10-alt-riscv64-config-guess.patch +Patch15: llvm-cmake-resolve-symlinks-in-LLVMConfig.cmake.patch +Patch16: clang-cmake-resolve-symlinks-in-ClangConfig.cmake.patch + +%if_with clang +# https://bugs.altlinux.org/show_bug.cgi?id=34671 +%set_verify_elf_method lint=skip +%endif -# ThinLTO requires /proc/cpuinfo to exists so the same does llvm +# ThinLTO requires /proc/cpuinfo to exist; so the same does llvm BuildPreReq: /proc +# Obtain %%__python3 at prep stage. +BuildRequires(pre): rpm-build-python +BuildRequires(pre): rpm-build-python3 +BuildRequires(pre): rpm-macros-llvm-common + BuildRequires(pre): cmake >= 3.4.3 BuildRequires: rpm-build >= 4.0.4-alt112 libncursesw-devel -BuildRequires: chrpath libstdc++-devel libffi-devel perl-Pod-Parser perl-devel +BuildRequires: libstdc++-devel libffi-devel perl-Pod-Parser perl-devel BuildRequires: python3-module-recommonmark zip zlib-devel binutils-devel ninja-build %if_with clang -BuildRequires: %clang_name %llvm_name-devel %lld_name +BuildRequires: %clang_default_name %llvm_default_name-devel %lld_default_name %else BuildRequires: gcc-c++ %endif -Provides: llvm = %EVR -Obsoletes: llvm < %version +%define requires_filesystem Requires: %name-filesystem = %EVR +%requires_filesystem +Requires: llvm >= %_llvm_version %description LLVM is a compiler infrastructure designed for compile-time, link-time, @@ -63,11 +102,19 @@ runtime, and idle-time optimization of programs from arbitrary programming languages. The compiler infrastructure includes mirror sets of programming tools as well as libraries with equivalent functionality. +%package filesystem +Group: Development/Other +Summary: Owns the installation prefix for LLVM + +%description filesystem +This package owns the installation prefix for LLVM. It is designed to be +pulled in by all non-empty LLVM packages. + %package devel Group: Development/C Summary: Libraries and header files for LLVM -Provides: llvm-devel = %EVR -Obsoletes: llvm-devel < %version +%requires_filesystem +Requires: llvm-devel >= %_llvm_version Requires: %name = %EVR %description devel @@ -77,8 +124,8 @@ native programs that use the LLVM infrastructure. %package devel-static Summary: Static libraries for LLVM Group: Development/C -Provides: llvm-devel-static = %EVR -Obsoletes: llvm-devel-static < %version +%requires_filesystem +Requires: llvm-devel-static >= %_llvm_version Requires: %name-devel = %EVR %description devel-static @@ -88,26 +135,38 @@ native programs that use the LLVM infrastructure. %package libs Group: Development/C Summary: LLVM shared libraries +%requires_filesystem %description libs -Shared libraries for the LLVM compiler infrastructure. +This package contains shared libraries needed to develop new +native programs that use LLVM. %package doc Summary: Documentation for LLVM Group: Documentation BuildArch: noarch -Provides: llvm-doc = %EVR -Obsoletes: llvm-doc < %version +%requires_filesystem %description doc Documentation for the LLVM compiler infrastructure. +%package tools +Summary: Various minor tools bundled with LLVM +Group: Development/C +%requires_filesystem + +%description tools +This package contains various tools maintained as part of LLVM, including +opt-viewer. + %package -n %clang_name Summary: A C language family frontend for LLVM Group: Development/C +%requires_filesystem +# clang uses various parts of GNU crt bundled with gcc. +# Should they be packaged separately? Requires: gcc -Provides: clang = %EVR -Obsoletes: clang < %version +Requires: clang >= %_llvm_version %description -n %clang_name clang: noun @@ -122,15 +181,36 @@ as libraries and designed to be loosely-coupled and extendable. %package -n %clang_name-libs Group: Development/C Summary: clang shared libraries +%requires_filesystem +Requires: %clang_name-libs-support = %EVR %description -n %clang_name-libs Shared libraries for the clang compiler. +%package -n %clang_name-libs-support +Group: Development/C +Summary: Support for Clang's shared libraries +%requires_filesystem + +%description -n %clang_name-libs-support +The Clang's shared libraries implement compilers for C and C++, and thus have +to bundle additional platform support headers and libraries for use within the +compilation product. This package contains the platform support. + +%package -n %clang_name-libs-support-shared-runtimes +Group: Development/C +Summary: Shared runtimes for Clang's shared libraries +%requires_filesystem +Requires: %clang_name-libs-support = %EVR + +%description -n %clang_name-libs-support-shared-runtimes +This package contains shared runtime libraries for Scudo and sanitizers. + %package -n %clang_name-devel Summary: Header files for clang Group: Development/C -Provides: clang-devel = %EVR -Obsoletes: clang-devel < %version +%requires_filesystem +Requires: clang-devel >= %_llvm_version Requires: %clang_name = %EVR %description -n %clang_name-devel @@ -139,8 +219,7 @@ This package contains header files for the Clang compiler. %package -n %clang_name-devel-static Summary: Static libraries for clang Group: Development/C -Provides: clang-devel-static = %EVR -Obsoletes: clang-devel-static < %version +%requires_filesystem Requires: %clang_name-devel = %EVR %description -n %clang_name-devel-static @@ -150,8 +229,7 @@ This package contains static libraries for the Clang compiler. Summary: A source code analysis framework Group: Development/C BuildArch: noarch -Provides: clang-analyzer = %EVR -Obsoletes: clang-analyzer < %version +%requires_filesystem Requires: %clang_name = %EVR %description -n %clang_name-analyzer @@ -160,21 +238,38 @@ framework and a standalone tool that finds bugs in C and Objective-C programs. The standalone tool is invoked from the command-line, and is intended to run in tandem with a build of a project or code base. +%package -n %clang_name-tools +Summary: Various clang-based tools +Group: Development/C +%requires_filesystem +Requires: %clang_name = %EVR + +%description -n %clang_name-tools +This package contains various code analysis and manipulation tools based on +libclang, including clang-format. + %package -n %clang_name-doc Summary: Documentation for Clang Group: Documentation BuildArch: noarch -Provides: clang-doc = %EVR -Obsoletes: clang-doc < %version +%requires_filesystem %description -n %clang_name-doc Documentation for the Clang compiler front-end. +%package -n %clangd_name +Summary: A clang-based language server +Group: Development/C +%requires_filesystem + +%description -n %clangd_name +This package contains clangd, a Clang-based language server for C and C++. + %package -n %lld_name Summary: LLD - The LLVM Linker Group: Development/C -Provides: lld = %EVR -Obsoletes: lld < %version +%requires_filesystem +Requires: lld >= %_llvm_version %description -n %lld_name LLD is a linker from the LLVM project. That is a drop-in replacement for system @@ -184,8 +279,8 @@ useful for toolchain developers. %package -n %lld_name-devel Summary: Header files for LLD Group: Development/C -Provides: lld-devel = %EVR -Obsoletes: lld-devel < %version +%requires_filesystem +Requires: lld-devel >= %_llvm_version Requires: %lld_name = %EVR %description -n %lld_name-devel @@ -195,35 +290,48 @@ This package contains header files for the LLD linker. Summary: Documentation for LLD Group: Documentation BuildArch: noarch -Provides: lld-doc = %EVR -Obsoletes: lld-doc < %version +%requires_filesystem %description -n %lld_name-doc Documentation for the LLD linker. %prep -%setup -n llvm-%version.src -a1 -a2 -a3 +%setup -n llvm-%tarversion.src -a1 -a2 -a3 -a4 for pkg in clang lld; do - mv $pkg-%version.src tools/$pkg + mv $pkg-%tarversion.src tools/$pkg done -mv compiler-rt-%version.src projects/compiler-rt +mv clang-tools-extra-%tarversion.src tools/clang/tools/extra +mv compiler-rt-%tarversion.src projects/compiler-rt %patch -p1 -b .alt-i586-fallback %patch1 -p1 -b .alt-triple +%patch2 -p1 +sed -i 's)"%%llvm_bindir")"%llvm_bindir")' lib/Support/Unix/Path.inc %patch3 -p1 -b .alt-fix-linking %patch4 -p1 -b .alt-triple %patch5 -p1 -b .alt-i586-arch %patch6 -p1 %patch7 -p1 -b .alt-aarch64-dynamic-linker +%patch8 -p1 %patch9 -p1 -b .alt-mipsel-permit-textrels-by-default %patch10 -p1 %patch14 -p1 +%patch15 -p2 +%patch16 -p1 + +# Explicitly use python2 in hashbangs. +# TODO: LLVM 12 and onward deprecate Python 2: +# https://releases.llvm.org/11.0.0/docs/ReleaseNotes.html +subst '/^#!.*python$/s|python$|python2|' $(grep -Rl '#!.*python$' *) %build +%define _cmake_skip_rpath -DCMAKE_SKIP_RPATH:BOOL=OFF %cmake -G Ninja \ -DLLVM_PARALLEL_LINK_JOBS=1 \ -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX=%llvm_prefix \ + -DCMAKE_SKIP_INSTALL_RPATH:BOOL=OFF \ -DBUILD_SHARED_LIBS:BOOL=OFF \ - -DLLVM_TARGETS_TO_BUILD="host;AMDGPU;BPF;NVPTX;" \ + -DLLVM_TARGETS_TO_BUILD="all" \ -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD='AVR' \ -DLLVM_ENABLE_LIBCXX:BOOL=OFF \ -DLLVM_ENABLE_ZLIB:BOOL=ON \ @@ -287,13 +395,13 @@ ninja -vvv -j %__nprocs -C BUILD %install pushd BUILD -cmake -DCMAKE_INSTALL_PREFIX=%buildroot%prefix ../ +cmake -DCMAKE_INSTALL_PREFIX=%buildroot%llvm_prefix ../ sed -i 's|man\ tools/lld/docs/docs-lld-html|man|' build.ninja sed -i '/^[[:space:]]*include.*tools\/lld\/docs\/cmake_install.cmake.*/d' tools/lld/cmake_install.cmake popd ninja -C BUILD install -# And prepare Clang documentation +# Prepare Clang documentation. rm -rf BUILD/clang-docs mkdir -p BUILD/clang-docs for f in LICENSE.TXT NOTES.txt README.txt; do @@ -301,113 +409,295 @@ for f in LICENSE.TXT NOTES.txt README.txt; do done rm -rf tools/clang/docs/{doxygen*,Makefile*,*.graffle,tools} -install -m 0755 BUILD/%_lib/LLVMHello.so %buildroot%_libdir/ -install -m 0755 BUILD/%_lib/BugpointPasses.so %buildroot%_libdir/ -mkdir -p %buildroot%_docdir/lld - -file %buildroot%_bindir/* | awk -F: '$2~/ELF/{print $1}' | xargs -r chrpath -d -file %buildroot%_libdir/*.so | awk -F: '$2~/ELF/{print $1}' | xargs -r chrpath -d +install -m 0755 BUILD/%_lib/LLVMHello.so %buildroot%llvm_libdir/ +install -m 0755 BUILD/%_lib/BugpointPasses.so %buildroot%llvm_libdir/ +mkdir -p %buildroot%llvm_docdir/lld %ifarch %ix86 -cd %buildroot%_libdir/clang/%version/lib/linux +cd %buildroot%llvm_libdir/clang/%v_full/lib/linux ls *-i[3-9]86* | while read f; do ln -s $f $(echo $f | sed 's|i[3-9]86|i386|') ; done %endif +# The following files are not used by LLVM builds for Linux. +rm -f %buildroot%llvm_bindir/argdumper +rm -f %buildroot%llvm_datadir/clang/clang-format-bbedit.applescript + +# Install the clang bash completion. +mkdir -p %buildroot%_datadir/bash-completion/completions +ln -sr %buildroot%llvm_datadir/clang/bash-autocomplete.sh %buildroot%_datadir/bash-completion/completions/clang-%v_major + +# Symlink executables to %_bindir. +mkdir -p %buildroot%_bindir +for b in %buildroot%llvm_bindir/*; do + bb="$(basename "$b")" + echo "$bb" | grep -q -- '-%v_major$' && continue # if already appended + ln -srv "$b" "%buildroot%_bindir/$bb-%v_major" +done +# Symlink man pages to the man dirs. +for mand in %buildroot%llvm_datadir/man/man*; do + mand_index="${mand##*/man}" + for m in "$mand"/*.[1-9]*; do + # Let's force compress the man page, then symlink it. + # /usr/lib/llvm-11.0/share/man/manD/utilX.D.xz -> /usr/share/man/manD/utilX-11.D.xz + # Otherwise, brp-alt(compress) keeps fucking us up. + # It remakes the symlinks first, then compresses their targets, + # severing the symlinks. + /usr/lib/rpm/compress_files "$m" + + mb="$(basename "$m")" # e. g. llvm-ar.1.xz + new_mb="${mb%%.[1-9]*}-%v_major.$mand_index" # e. g. llvm-ar-11.1.xz + + mkdir -p "%buildroot%_mandir/man$mand_index" + ln -srv "$m" "%buildroot%_mandir/man$mand_index/$new_mb" + done +done + +# Symlink sonamed shared libraries in %llvm_prefix/%_libdir to %_libdir. +mkdir -p %buildroot%_libdir +find %buildroot%llvm_libdir/*.so* -type f | grep -E '^%buildroot%llvm_libdir/.*(%v_major)' | sort | tee %_tmppath/shared-objects \ + | sed 's)%llvm_libdir)%_libdir)' > %_tmppath/shared-object-links +paste %_tmppath/shared-objects %_tmppath/shared-object-links | while read object link; do + ln -srv "$object" "$link" +done + +# List all packaged binaries in this source package. +find %buildroot%_bindir/*-%v_major > %_tmppath/PATH-executables + +# For paranoic reasons library packaging policy covers peculiar directory paths. +# If there are $A.a and $A.so in %llvm_libdir/clang, they should not end up in the +# same package (but can be co-installed on a system). +# Let's list all the $A.so for which $A.a exists into a separate package. +# We also consider i386-symlinks for iN86. +find %buildroot%llvm_libdir/clang -type f,l -name '*.a' -or -name '*.so' | \ + sed -r -n 's/^(\/.+)\.a$/\1/p; s/^(.+)\.so$/\1/p' | sort | uniq -d > %_tmppath/libclang-support-dupes +sed < %_tmppath/libclang-support-dupes 's)^%buildroot)); s/$/.a/' > %_tmppath/libclang-support-static-runtimes +sed < %_tmppath/libclang-support-dupes 's)^%buildroot)); s/$/.so/' > %_tmppath/libclang-support-shared-runtimes +sed < %_tmppath/libclang-support-shared-runtimes 's/^/%%exclude /' > %_tmppath/dyn-files-libclang-support +echo "Expelling likely redundant Clang shared runtimes:" && cat %_tmppath/dyn-files-libclang-support + %check %if_enabled tests -LD_LIBRARY_PATH=%buildroot%_libdir:$LD_LIBRARY_PATH +LD_LIBRARY_PATH=%buildroot%llvm_libdir:$LD_LIBRARY_PATH export LD_LIBRARY_PATH ninja -C BUILD check-all || : %endif +# Do not generate dependencies for clang-{format,rename} plugins. +%add_findreq_skiplist %llvm_datadir/clang/* + +%files filesystem +%dir %llvm_prefix +%dir %llvm_bindir +%dir %llvm_libdir +%dir %llvm_includedir +%dir %llvm_libexecdir +%dir %llvm_datadir +%dir %llvm_datadir/clang +%dir %llvm_datadir/man +%dir %llvm_man1dir +%dir %llvm_docdir + %files %doc CREDITS.TXT LICENSE.TXT README.txt +%llvm_bindir/* %_bindir/* +%llvm_man1dir/* %_man1dir/* +%exclude %llvm_bindir/llvm-config* %exclude %_bindir/llvm-config* +%exclude %llvm_bindir/*clang* %exclude %_bindir/*clang* -%exclude %_bindir/c-index-test +%exclude %llvm_bindir/*clangd* +%exclude %_bindir/*clangd* +%exclude %llvm_bindir/c-index-test +%exclude %_bindir/c-index-test-%v_major +%exclude %llvm_bindir/find-all-symbols +%exclude %_bindir/find-all-symbols-%v_major +%exclude %llvm_bindir/scan-* %exclude %_bindir/scan-* -%exclude %_man1dir/llvm-config.1.* -%exclude %_man1dir/clang.1* -%exclude %_man1dir/scan-build.1* +%exclude %llvm_man1dir/llvm-config.1.* +%exclude %_man1dir/llvm-config-%v_major.1.* +%exclude %llvm_man1dir/clang.1* +%exclude %_man1dir/clang-%v_major.1* +%exclude %llvm_man1dir/scan-build.1* +%exclude %_man1dir/scan-build-%v_major.1* +%exclude %llvm_bindir/lld* %exclude %_bindir/lld* -%exclude %_bindir/ld*.lld -%exclude %_bindir/wasm-ld +%exclude %llvm_bindir/ld*.lld +%exclude %_bindir/ld*.lld-%v_major +%exclude %llvm_bindir/wasm-ld +%exclude %_bindir/wasm-ld-%v_major %files libs +%llvm_libdir/libLLVM-*.so %_libdir/libLLVM-*.so +%llvm_libdir/libLTO.so.* %_libdir/libLTO.so.* +%llvm_libdir/libRemarks.so.* %_libdir/libRemarks.so.* +%files tools +%llvm_datadir/opt-viewer + %files devel -%_bindir/llvm-config -%_man1dir/llvm-config.1.* -%_includedir/llvm -%_includedir/llvm-c -%_libdir/libLLVM.so -%_libdir/libLTO.so -%_libdir/LLVMgold.so -%_libdir/libRemarks.so -%_libdir/LLVMHello.so -%_libdir/BugpointPasses.so -%_libdir/cmake/llvm -%exclude %_libdir/cmake/llvm/LLVMStaticExports*.cmake +%llvm_bindir/llvm-config +%_bindir/llvm-config-%v_major +%llvm_man1dir/llvm-config.1.* +%_man1dir/llvm-config-%v_major.1.* +%llvm_includedir/llvm +%llvm_includedir/llvm-c +%llvm_libdir/libLLVM.so +%llvm_libdir/libLTO.so +%llvm_libdir/LLVMgold.so +%llvm_libdir/libRemarks.so +%llvm_libdir/LLVMHello.so +%llvm_libdir/BugpointPasses.so +%dir %llvm_libdir/cmake +%llvm_libdir/cmake/llvm +%exclude %llvm_libdir/cmake/llvm/LLVMStaticExports.cmake %files devel-static -%_libdir/*.a -%exclude %_libdir/libclang*.a -%_libdir/cmake/llvm/LLVMStaticExports*.cmake +%llvm_libdir/*.a +%exclude %llvm_libdir/libclang*.a +%dir %llvm_libdir/cmake +%dir %llvm_libdir/cmake/llvm +%llvm_libdir/cmake/llvm/LLVMStaticExports.cmake %files -n %clang_name %doc BUILD/clang-docs/* -%_bindir/*clang* -%_bindir/c-index-test -%_man1dir/clang.1* +%llvm_bindir/clang-%v_major +%llvm_bindir/clang +%_bindir/clang-%v_major +%llvm_bindir/clang++ +%_bindir/clang++-%v_major +%llvm_bindir/clang-cl +%_bindir/clang-cl-%v_major +%llvm_bindir/clang-cpp +%_bindir/clang-cpp-%v_major +%llvm_man1dir/clang.1* +%_man1dir/clang-%v_major.1* +%exclude %llvm_bindir/clang-check* +%exclude %_bindir/clang-check* +%exclude %llvm_bindir/clang-extdef-mapping* +%exclude %_bindir/clang-extdef-mapping* +%exclude %llvm_bindir/clang-format* +%exclude %_bindir/clang-format* +%exclude %llvm_bindir/git-clang-format* +%exclude %_bindir/git-clang-format* +%exclude %llvm_bindir/clang-offload-* +%exclude %_bindir/clang-offload-* +%exclude %llvm_bindir/clang-refactor* +%exclude %_bindir/clang-refactor* +%exclude %llvm_bindir/clang-rename* +%exclude %_bindir/clang-rename* +%llvm_datadir/clang/bash-autocomplete.sh +%_datadir/bash-completion/completions/clang* %files -n %clang_name-libs -%_libdir/clang +%llvm_libdir/libclang*.so.* %_libdir/libclang*.so.* +%files -n %clang_name-libs-support -f %_tmppath/dyn-files-libclang-support +%llvm_libdir/clang +# clang-tools +%ifarch %hwasan_symbolize_arches +%exclude %llvm_libdir/clang/%v_full/bin/hwasan_symbolize +%endif + +%files -n %clang_name-libs-support-shared-runtimes -f %_tmppath/libclang-support-shared-runtimes + %files -n %clang_name-devel -%_includedir/clang -%_includedir/clang-c -%_libdir/libclang*.so -%_libdir/cmake/clang +%llvm_includedir/clang +%llvm_includedir/clang-c +%llvm_includedir/clang-tidy +%llvm_libdir/libclang*.so +%dir %llvm_libdir/cmake +%llvm_libdir/cmake/clang %files -n %clang_name-devel-static -%_libdir/libclang*.a +%llvm_libdir/libclang*.a %files -n %clang_name-analyzer -%_prefix/libexec/*-analyzer -%_bindir/scan-build -%_bindir/scan-view -%_datadir/scan-build -%_datadir/scan-view -%_man1dir/scan-build.1* +%llvm_prefix/libexec/*-analyzer +%llvm_bindir/scan-build +%_bindir/scan-build-%v_major +%llvm_bindir/scan-view +%_bindir/scan-view-%v_major +%llvm_datadir/scan-build +%llvm_datadir/scan-view +%llvm_man1dir/scan-build.1* +%_man1dir/scan-build-%v_major.1* + +%files -n %clang_name-tools +%llvm_bindir/c-index-test +%_bindir/c-index-test-%v_major +%llvm_bindir/clang-* +%_bindir/clang-* +%exclude %llvm_bindir/clang-%v_major +%exclude %llvm_bindir/clang +%exclude %_bindir/*clang-%v_major +%exclude %llvm_bindir/clang++ +%exclude %_bindir/clang++-%v_major +%exclude %llvm_bindir/clang-cl +%exclude %_bindir/clang-cl-%v_major +%exclude %llvm_bindir/clang-cpp +%exclude %_bindir/clang-cpp-%v_major +%llvm_bindir/find-all-symbols +%_bindir/find-all-symbols-%v_major +%llvm_datadir/clang +%exclude %llvm_datadir/clang/bash-autocomplete.sh +%ifarch %hwasan_symbolize_arches +%llvm_libdir/clang/%v_full/bin/hwasan_symbolize +%endif + +%files -n %clangd_name +%llvm_bindir/clangd +%_bindir/clangd-%v_major %files -n %lld_name +%llvm_bindir/lld* %_bindir/lld* -%_bindir/ld*.lld -%_bindir/wasm-ld +%llvm_bindir/ld*.lld +%_bindir/ld*.lld-%v_major +%llvm_bindir/wasm-ld +%_bindir/wasm-ld-%v_major %files -n %lld_name-devel -%dir %_includedir/lld -%_includedir/lld/* -%_libdir/cmake/lld +%dir %llvm_includedir/lld +%llvm_includedir/lld/* +%dir %llvm_libdir/cmake +%llvm_libdir/cmake/lld %files doc -%doc %_docdir/llvm +%doc %llvm_docdir/llvm %files -n %clang_name-doc -%doc %_docdir/clang +%doc %llvm_docdir/clang +%doc %llvm_docdir/clang-tools %files -n %lld_name-doc -%doc %_docdir/lld +%doc %llvm_docdir/lld %changelog +* Fri Dec 11 2020 Arseny Maslennikov <arseny@altlinux.org> 11.0.0-alt2 +- Installed to /usr/lib/llvm-11.0 to ensure peaceful co-existence with other + LLVM versions. + Numbered shared libraries in %llvm_prefix/%%_lib are symlinked to %%_libdir + to properly generate library dependencies. +- Moved clang-format and other clang-based tools to clang11.0-tools. +- New LLVM subproject: clang-tools-extra. + + 2 new packages: clang11.0-tools, clangd11.0 +- Enabled all LLVM targets. +- Moved C/C++ compiler support away from clang-libs to clang-libs-support. +- Moved Clang .so runtimes (scudo and sanitizers) with available static variants + to clang-libs-support-shared-runtimes to comply with sisyphus-check-static. + * Tue Oct 13 2020 Valery Inozemtsev <shrek@altlinux.ru> 11.0.0-alt1 - 11.0.0 +- Built with gcc. + +* Wed Aug 12 2020 Aleksei Nikiforov <darktemplar@altlinux.org> 10.0.1-alt2 +- Applied upstream patch which should fix ppc64le-specific issue. * Tue Aug 11 2020 Valery Inozemtsev <shrek@altlinux.ru> 10.0.1-alt1 - 10.0.1 [-- Attachment #1.3: llvm11.whole.diff --] [-- Type: text/x-diff, Size: 34161 bytes --] diff --git a/0001-alt-llvm-config-Ignore-wrappers-when-looking-for-current.patch b/0001-alt-llvm-config-Ignore-wrappers-when-looking-for-current.patch new file mode 100644 index 000000000..09493ea33 --- /dev/null +++ b/0001-alt-llvm-config-Ignore-wrappers-when-looking-for-current.patch @@ -0,0 +1,39 @@ +From febc3e5c7bb8502775add342c33c221af9e87a50 Mon Sep 17 00:00:00 2001 +From: Arseny Maslennikov <arseny@altlinux.org> +Date: Thu, 19 Nov 2020 11:39:51 +0300 +Subject: [PATCH] llvm-config: Ignore wrappers when looking for current + executable path + +In ALT, tools are installed into their own prefix and bindir, and the +respective paths in /usr/bin are symlinked to a small wrapper program +which can call different versions of the requested tool depending on its +environment. + +When /proc/self/exe is not available, the executable is looked up in +PATH, which usually includes /usr/bin and excludes /usr/lib/llvm-*/bin. +We forgo the path to wrapper at /usr/bin/$tool and use +/usr/lib/llvm-%v_majmin/bin/$tool instead. +--- + llvm/lib/Support/Unix/Path.inc | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/lib/Support/Unix/Path.inc b/lib/Support/Unix/Path.inc +index d91b269cc..b409a8611 100644 +--- a/lib/Support/Unix/Path.inc ++++ b/lib/Support/Unix/Path.inc +@@ -174,6 +174,12 @@ getprogpath(char ret[PATH_MAX], const char *bin) + for (char *t = strtok_r(s, ":", &state); t != nullptr; + t = strtok_r(nullptr, ":", &state)) { + if (test_dir(ret, t, bin) == 0) { ++ /* An ALT-specific exception: if found in /usr/bin, this is a wrapper ++ * and the real binary is in /usr/lib/llvm-%v_majmin/bin. ++ */ ++ if (!strncmp(ret, "/usr/bin/llvm-alt-tool-wrapper", strlen("/usr/bin/llvm-alt-tool-wrapper"))) { ++ snprintf(ret, PATH_MAX, "%s/%s", "%llvm_bindir", bin); ++ } + free(s); + return ret; + } +-- +2.25.4 + diff --git a/clang-cmake-resolve-symlinks-in-ClangConfig.cmake.patch b/clang-cmake-resolve-symlinks-in-ClangConfig.cmake.patch new file mode 100644 index 000000000..de165448b --- /dev/null +++ b/clang-cmake-resolve-symlinks-in-ClangConfig.cmake.patch @@ -0,0 +1,30 @@ +From c830d84bc802ca1e9219415a5784c4ad97a34819 Mon Sep 17 00:00:00 2001 +From: Peter Wu <peter@lekensteyn.nl> +Date: Fri, 4 May 2018 15:55:26 +0200 +Subject: [PATCH] [clang] cmake: resolve symlinks in ClangConfig.cmake + +Ensure that symlinks such as /usr/lib/cmake/clang-X.Y (pointing to +/usr/lib/llvm-X.Y/lib/cmake/llvm) are resolved. This ensures that +CLANG_INSTALL_PREFIX ends up to be /usr/lib/llvm-X.Y instead of /usr. + +Partially addresses PR37128 +--- + cmake/modules/CMakeLists.txt | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/tools/clang/cmake/modules/CMakeLists.txt b/tools/clang/cmake/modules/CMakeLists.txt +--- a/tools/clang/cmake/modules/CMakeLists.txt ++++ b/tools/clang/cmake/modules/CMakeLists.txt +@@ -30,10 +30,10 @@ set(CLANG_CONFIG_EXPORTS_FILE) + # Generate ClangConfig.cmake for the install tree. + set(CLANG_CONFIG_CODE " + # Compute the installation prefix from this LLVMConfig.cmake file location. +-get_filename_component(CLANG_INSTALL_PREFIX \"\${CMAKE_CURRENT_LIST_FILE}\" PATH)") ++get_filename_component(CLANG_INSTALL_PREFIX \"\${CMAKE_CURRENT_LIST_FILE}\" REALPATH)") + # Construct the proper number of get_filename_component(... PATH) + # calls to compute the installation prefix. +-string(REGEX REPLACE "/" ";" _count "${CLANG_INSTALL_PACKAGE_DIR}") ++string(REGEX REPLACE "/" ";" _count "prefix/${CLANG_INSTALL_PACKAGE_DIR}") + foreach(p ${_count}) + set(CLANG_CONFIG_CODE "${CLANG_CONFIG_CODE} + get_filename_component(CLANG_INSTALL_PREFIX \"\${CLANG_INSTALL_PREFIX}\" PATH)") diff --git a/clang-tools-extra-alt-gcc-0001-clangd-satisfy-ALT-gcc-s-Werror-return-type.patch b/clang-tools-extra-alt-gcc-0001-clangd-satisfy-ALT-gcc-s-Werror-return-type.patch new file mode 100644 index 000000000..438ad35d6 --- /dev/null +++ b/clang-tools-extra-alt-gcc-0001-clangd-satisfy-ALT-gcc-s-Werror-return-type.patch @@ -0,0 +1,29 @@ +From 1035bddfb8612ef6ddb9d675a7d597ac502f15cc Mon Sep 17 00:00:00 2001 +From: Arseny Maslennikov <arseny@altlinux.org> +Date: Thu, 26 Nov 2020 22:16:58 +0300 +Subject: [PATCH] clangd: satisfy ALT gcc's -Werror-return-type + +--- + clang-tools-extra/clangd/CompileCommands.cpp | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/tools/clang/tools/extra/clangd/CompileCommands.cpp b/tools/clang/tools/extra/clangd/CompileCommands.cpp +index 473122157..6353bb13a 100644 +--- a/tools/clang/tools/extra/clangd/CompileCommands.cpp ++++ b/tools/clang/tools/extra/clangd/CompileCommands.cpp +@@ -270,6 +270,12 @@ std::pair<unsigned, unsigned> getArgCount(const llvm::opt::Option &Opt) { + return {Rest, 0}; + case Option::RemainingArgsJoinedClass: + return {Rest, Rest}; ++ /* Shut up ALT GCC! */ ++ default: ++ /* I guess, this control branch is intended to be unreachable thus disallowed, ++ * and they say 0 means not allowed, so let's assume {0, 0} is not allowed. ++ */ ++ return {0, 0}; + } + } + +-- +2.25.4 + diff --git a/llvm-10-alt-python3.patch b/llvm-10-alt-python3.patch index 0b9d2be43..8c0e26d0a 100644 --- a/llvm-10-alt-python3.patch +++ b/llvm-10-alt-python3.patch @@ -1,21 +1,21 @@ ---- llvm-9.0.1.src/tools/clang/tools/clang-format/git-clang-format.alt 2020-02-13 07:43:29.545981388 +0000 -+++ llvm-9.0.1.src/tools/clang/tools/clang-format/git-clang-format 2020-02-13 07:45:08.271273350 +0000 +--- llvm-11.0.1.src/tools/clang/tools/clang-format/git-clang-format.alt 2020-02-13 07:43:29.545981388 +0000 ++++ llvm-11.0.1.src/tools/clang/tools/clang-format/git-clang-format 2020-02-13 07:45:08.271273350 +0000 @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # #===- git-clang-format - ClangFormat Git Integration ---------*- python -*--===# # ---- llvm-9.0.1.src/tools/clang/utils/hmaptool/hmaptool.alt 2020-02-13 07:44:21.103133843 +0000 -+++ llvm-9.0.1.src/tools/clang/utils/hmaptool/hmaptool 2020-02-13 07:45:25.700324888 +0000 +--- llvm-11.0.1.src/tools/clang/utils/hmaptool/hmaptool.alt 2020-02-13 07:44:21.103133843 +0000 ++++ llvm-11.0.1.src/tools/clang/utils/hmaptool/hmaptool 2020-02-13 07:45:25.700324888 +0000 @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 from __future__ import absolute_import, division, print_function import json ---- llvm-9.0.1.src/tools/clang/tools/scan-view/bin/scan-view.alt 2019-12-11 19:15:30.000000000 +0000 -+++ llvm-9.0.1.src/tools/clang/tools/scan-view/bin/scan-view 2020-02-13 11:15:19.089985347 +0000 +--- llvm-11.0.1.src/tools/clang/tools/scan-view/bin/scan-view.alt 2019-12-11 19:15:30.000000000 +0000 ++++ llvm-11.0.1.src/tools/clang/tools/scan-view/bin/scan-view 2020-02-13 11:15:19.089985347 +0000 @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 @@ -30,11 +30,3 @@ import os import posixpath import threading ---- llvm-10.0.0.src/projects/compiler-rt/lib/hwasan/scripts/hwasan_symbolize.alt 2020-03-25 08:00:47.736222391 +0000 -+++ llvm-10.0.0.src/projects/compiler-rt/lib/hwasan/scripts/hwasan_symbolize 2020-03-25 08:02:05.439101328 +0000 -@@ -1,4 +1,4 @@ --#!/usr/bin/env python -+#!/usr/bin/env python3 - #===- lib/hwasan/scripts/hwasan_symbolize ----------------------------------===# - # - # Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. diff --git a/llvm-cmake-resolve-symlinks-in-LLVMConfig.cmake.patch b/llvm-cmake-resolve-symlinks-in-LLVMConfig.cmake.patch new file mode 100644 index 000000000..4e39a8ba8 --- /dev/null +++ b/llvm-cmake-resolve-symlinks-in-LLVMConfig.cmake.patch @@ -0,0 +1,30 @@ +From d0d969074f6e0f975ad53d21e7ce6c7b40cf2957 Mon Sep 17 00:00:00 2001 +From: Peter Wu <peter@lekensteyn.nl> +Date: Fri, 4 May 2018 15:43:06 +0200 +Subject: [PATCH] [llvm] cmake: resolve symlinks in LLVMConfig.cmake + +Ensure that symlinks such as /usr/lib/llvm-X.Y/cmake (pointing to +lib/cmake/llvm) are resolved. This ensures that LLVM_INSTALL_PREFIX +becomes /usr/lib/llvm-X.Y instead of /usr. + +Partially addresses PR37128 +--- + cmake/modules/CMakeLists.txt | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/llvm/cmake/modules/CMakeLists.txt b/llvm/cmake/modules/CMakeLists.txt +--- a/llvm/cmake/modules/CMakeLists.txt ++++ b/llvm/cmake/modules/CMakeLists.txt +@@ -88,10 +88,10 @@ file(COPY . + # Generate LLVMConfig.cmake for the install tree. + set(LLVM_CONFIG_CODE " + # Compute the installation prefix from this LLVMConfig.cmake file location. +-get_filename_component(LLVM_INSTALL_PREFIX \"\${CMAKE_CURRENT_LIST_FILE}\" PATH)") ++get_filename_component(LLVM_INSTALL_PREFIX \"\${CMAKE_CURRENT_LIST_FILE}\" REALPATH)") + # Construct the proper number of get_filename_component(... PATH) + # calls to compute the installation prefix. +-string(REGEX REPLACE "/" ";" _count "${LLVM_INSTALL_PACKAGE_DIR}") ++string(REGEX REPLACE "/" ";" _count "prefix/${LLVM_INSTALL_PACKAGE_DIR}") + foreach(p ${_count}) + set(LLVM_CONFIG_CODE "${LLVM_CONFIG_CODE} + get_filename_component(LLVM_INSTALL_PREFIX \"\${LLVM_INSTALL_PREFIX}\" PATH)") diff --git a/llvm11.spec b/llvm11.spec index 659847bc5..6ff57e544 100644 --- a/llvm11.spec +++ b/llvm11.spec @@ -1,7 +1,26 @@ -%global v_major 11.0 -%global llvm_name llvm%v_major -%global clang_name clang%v_major -%global lld_name lld%v_major +%define _unpackaged_files_terminate_build 1 + +%global v_major 11 +%global v_majmin %v_major.0 +%global v_full %v_majmin.0 +%global rcsuffix %nil +%global llvm_name llvm%v_majmin +%global clang_name clang%v_majmin +%global clangd_name clangd%v_majmin +%global lld_name lld%v_majmin + +%global llvm_default_name llvm%_llvm_version +%global clang_default_name clang%_llvm_version +%global lld_default_name lld%_llvm_version + +%global llvm_prefix %_prefix/lib/llvm-%v_majmin +%global llvm_bindir %llvm_prefix/bin +%global llvm_libdir %llvm_prefix/%_lib +%global llvm_includedir %llvm_prefix/include +%global llvm_libexecdir %llvm_prefix/libexec +%global llvm_datadir %llvm_prefix/share +%global llvm_man1dir %llvm_datadir/man/man1 +%global llvm_docdir %llvm_datadir/doc # Decrease debuginfo verbosity to reduce memory consumption during final library linking %ifarch %ix86 %arm @@ -11,6 +30,8 @@ %define optflags_debug -g1 %endif +%define hwasan_symbolize_arches x86_64 aarch64 + %def_disable tests %ifarch x86_64 aarch64 %def_without clang @@ -18,44 +39,62 @@ %def_without clang %endif +%define tarversion %v_full%rcsuffix + Name: %llvm_name -Version: 11.0.0 -Release: alt1 -Summary: The Low Level Virtual Machine +Version: %v_full +Release: alt2 +Summary: The LLVM Compiler Infrastructure Group: Development/C -License: NCSA +License: Apache-2.0 with LLVM-exception Url: http://llvm.org -Source0: https://github.com/llvm/llvm-project/releases/download/llvmorg-%version/llvm-%version.src.tar.xz -Source1: https://github.com/llvm/llvm-project/releases/download/llvmorg-%version/clang-%version.src.tar.xz -Source2: https://github.com/llvm/llvm-project/releases/download/llvmorg-%version/lld-%version.src.tar.xz -Source3: https://github.com/llvm/llvm-project/releases/download/llvmorg-%version/compiler-rt-%version.src.tar.xz +Source0: https://github.com/llvm/llvm-project/releases/download/llvmorg-%tarversion/llvm-%tarversion.src.tar.xz +Source1: https://github.com/llvm/llvm-project/releases/download/llvmorg-%tarversion/clang-%tarversion.src.tar.xz +Source2: https://github.com/llvm/llvm-project/releases/download/llvmorg-%tarversion/clang-tools-extra-%tarversion.src.tar.xz +Source3: https://github.com/llvm/llvm-project/releases/download/llvmorg-%tarversion/lld-%tarversion.src.tar.xz +Source4: https://github.com/llvm/llvm-project/releases/download/llvmorg-%tarversion/compiler-rt-%tarversion.src.tar.xz Patch: clang-alt-i586-fallback.patch Patch1: clang-11-alt-triple.patch +Patch2: 0001-alt-llvm-config-Ignore-wrappers-when-looking-for-current.patch Patch3: llvm-alt-fix-linking.patch Patch4: llvm-alt-triple.patch Patch5: compiler-rt-9-alt-i586-arch.patch Patch6: RH-0001-CMake-Split-static-library-exports-into-their-own-ex.patch Patch7: clang-alt-aarch64-dynamic-linker-path.patch +Patch8: clang-tools-extra-alt-gcc-0001-clangd-satisfy-ALT-gcc-s-Werror-return-type.patch Patch9: lld-11-alt-mipsel-permit-textrels-by-default.patch Patch10: llvm-10-alt-python3.patch Patch14: llvm-10-alt-riscv64-config-guess.patch +Patch15: llvm-cmake-resolve-symlinks-in-LLVMConfig.cmake.patch +Patch16: clang-cmake-resolve-symlinks-in-ClangConfig.cmake.patch + +%if_with clang +# https://bugs.altlinux.org/show_bug.cgi?id=34671 +%set_verify_elf_method lint=skip +%endif -# ThinLTO requires /proc/cpuinfo to exists so the same does llvm +# ThinLTO requires /proc/cpuinfo to exist; so the same does llvm BuildPreReq: /proc +# Obtain %%__python3 at prep stage. +BuildRequires(pre): rpm-build-python +BuildRequires(pre): rpm-build-python3 +BuildRequires(pre): rpm-macros-llvm-common + BuildRequires(pre): cmake >= 3.4.3 BuildRequires: rpm-build >= 4.0.4-alt112 libncursesw-devel -BuildRequires: chrpath libstdc++-devel libffi-devel perl-Pod-Parser perl-devel +BuildRequires: libstdc++-devel libffi-devel perl-Pod-Parser perl-devel BuildRequires: python3-module-recommonmark zip zlib-devel binutils-devel ninja-build %if_with clang -BuildRequires: %clang_name %llvm_name-devel %lld_name +BuildRequires: %clang_default_name %llvm_default_name-devel %lld_default_name %else BuildRequires: gcc-c++ %endif -Provides: llvm = %EVR -Obsoletes: llvm < %version +%define requires_filesystem Requires: %name-filesystem = %EVR +%requires_filesystem +Requires: llvm >= %_llvm_version %description LLVM is a compiler infrastructure designed for compile-time, link-time, @@ -63,11 +102,19 @@ runtime, and idle-time optimization of programs from arbitrary programming languages. The compiler infrastructure includes mirror sets of programming tools as well as libraries with equivalent functionality. +%package filesystem +Group: Development/Other +Summary: Owns the installation prefix for LLVM + +%description filesystem +This package owns the installation prefix for LLVM. It is designed to be +pulled in by all non-empty LLVM packages. + %package devel Group: Development/C Summary: Libraries and header files for LLVM -Provides: llvm-devel = %EVR -Obsoletes: llvm-devel < %version +%requires_filesystem +Requires: llvm-devel >= %_llvm_version Requires: %name = %EVR %description devel @@ -77,8 +124,8 @@ native programs that use the LLVM infrastructure. %package devel-static Summary: Static libraries for LLVM Group: Development/C -Provides: llvm-devel-static = %EVR -Obsoletes: llvm-devel-static < %version +%requires_filesystem +Requires: llvm-devel-static >= %_llvm_version Requires: %name-devel = %EVR %description devel-static @@ -88,26 +135,38 @@ native programs that use the LLVM infrastructure. %package libs Group: Development/C Summary: LLVM shared libraries +%requires_filesystem %description libs -Shared libraries for the LLVM compiler infrastructure. +This package contains shared libraries needed to develop new +native programs that use LLVM. %package doc Summary: Documentation for LLVM Group: Documentation BuildArch: noarch -Provides: llvm-doc = %EVR -Obsoletes: llvm-doc < %version +%requires_filesystem %description doc Documentation for the LLVM compiler infrastructure. +%package tools +Summary: Various minor tools bundled with LLVM +Group: Development/C +%requires_filesystem + +%description tools +This package contains various tools maintained as part of LLVM, including +opt-viewer. + %package -n %clang_name Summary: A C language family frontend for LLVM Group: Development/C +%requires_filesystem +# clang uses various parts of GNU crt bundled with gcc. +# Should they be packaged separately? Requires: gcc -Provides: clang = %EVR -Obsoletes: clang < %version +Requires: clang >= %_llvm_version %description -n %clang_name clang: noun @@ -122,15 +181,36 @@ as libraries and designed to be loosely-coupled and extendable. %package -n %clang_name-libs Group: Development/C Summary: clang shared libraries +%requires_filesystem +Requires: %clang_name-libs-support = %EVR %description -n %clang_name-libs Shared libraries for the clang compiler. +%package -n %clang_name-libs-support +Group: Development/C +Summary: Support for Clang's shared libraries +%requires_filesystem + +%description -n %clang_name-libs-support +The Clang's shared libraries implement compilers for C and C++, and thus have +to bundle additional platform support headers and libraries for use within the +compilation product. This package contains the platform support. + +%package -n %clang_name-libs-support-shared-runtimes +Group: Development/C +Summary: Shared runtimes for Clang's shared libraries +%requires_filesystem +Requires: %clang_name-libs-support = %EVR + +%description -n %clang_name-libs-support-shared-runtimes +This package contains shared runtime libraries for Scudo and sanitizers. + %package -n %clang_name-devel Summary: Header files for clang Group: Development/C -Provides: clang-devel = %EVR -Obsoletes: clang-devel < %version +%requires_filesystem +Requires: clang-devel >= %_llvm_version Requires: %clang_name = %EVR %description -n %clang_name-devel @@ -139,8 +219,7 @@ This package contains header files for the Clang compiler. %package -n %clang_name-devel-static Summary: Static libraries for clang Group: Development/C -Provides: clang-devel-static = %EVR -Obsoletes: clang-devel-static < %version +%requires_filesystem Requires: %clang_name-devel = %EVR %description -n %clang_name-devel-static @@ -150,8 +229,7 @@ This package contains static libraries for the Clang compiler. Summary: A source code analysis framework Group: Development/C BuildArch: noarch -Provides: clang-analyzer = %EVR -Obsoletes: clang-analyzer < %version +%requires_filesystem Requires: %clang_name = %EVR %description -n %clang_name-analyzer @@ -160,21 +238,38 @@ framework and a standalone tool that finds bugs in C and Objective-C programs. The standalone tool is invoked from the command-line, and is intended to run in tandem with a build of a project or code base. +%package -n %clang_name-tools +Summary: Various clang-based tools +Group: Development/C +%requires_filesystem +Requires: %clang_name = %EVR + +%description -n %clang_name-tools +This package contains various code analysis and manipulation tools based on +libclang, including clang-format. + %package -n %clang_name-doc Summary: Documentation for Clang Group: Documentation BuildArch: noarch -Provides: clang-doc = %EVR -Obsoletes: clang-doc < %version +%requires_filesystem %description -n %clang_name-doc Documentation for the Clang compiler front-end. +%package -n %clangd_name +Summary: A clang-based language server +Group: Development/C +%requires_filesystem + +%description -n %clangd_name +This package contains clangd, a Clang-based language server for C and C++. + %package -n %lld_name Summary: LLD - The LLVM Linker Group: Development/C -Provides: lld = %EVR -Obsoletes: lld < %version +%requires_filesystem +Requires: lld >= %_llvm_version %description -n %lld_name LLD is a linker from the LLVM project. That is a drop-in replacement for system @@ -184,8 +279,8 @@ useful for toolchain developers. %package -n %lld_name-devel Summary: Header files for LLD Group: Development/C -Provides: lld-devel = %EVR -Obsoletes: lld-devel < %version +%requires_filesystem +Requires: lld-devel >= %_llvm_version Requires: %lld_name = %EVR %description -n %lld_name-devel @@ -195,35 +290,48 @@ This package contains header files for the LLD linker. Summary: Documentation for LLD Group: Documentation BuildArch: noarch -Provides: lld-doc = %EVR -Obsoletes: lld-doc < %version +%requires_filesystem %description -n %lld_name-doc Documentation for the LLD linker. %prep -%setup -n llvm-%version.src -a1 -a2 -a3 +%setup -n llvm-%tarversion.src -a1 -a2 -a3 -a4 for pkg in clang lld; do - mv $pkg-%version.src tools/$pkg + mv $pkg-%tarversion.src tools/$pkg done -mv compiler-rt-%version.src projects/compiler-rt +mv clang-tools-extra-%tarversion.src tools/clang/tools/extra +mv compiler-rt-%tarversion.src projects/compiler-rt %patch -p1 -b .alt-i586-fallback %patch1 -p1 -b .alt-triple +%patch2 -p1 +sed -i 's)"%%llvm_bindir")"%llvm_bindir")' lib/Support/Unix/Path.inc %patch3 -p1 -b .alt-fix-linking %patch4 -p1 -b .alt-triple %patch5 -p1 -b .alt-i586-arch %patch6 -p1 %patch7 -p1 -b .alt-aarch64-dynamic-linker +%patch8 -p1 %patch9 -p1 -b .alt-mipsel-permit-textrels-by-default %patch10 -p1 %patch14 -p1 +%patch15 -p2 +%patch16 -p1 + +# Explicitly use python2 in hashbangs. +# TODO: LLVM 12 and onward deprecate Python 2: +# https://releases.llvm.org/11.0.0/docs/ReleaseNotes.html +subst '/^#!.*python$/s|python$|python2|' $(grep -Rl '#!.*python$' *) %build +%define _cmake_skip_rpath -DCMAKE_SKIP_RPATH:BOOL=OFF %cmake -G Ninja \ -DLLVM_PARALLEL_LINK_JOBS=1 \ -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX=%llvm_prefix \ + -DCMAKE_SKIP_INSTALL_RPATH:BOOL=OFF \ -DBUILD_SHARED_LIBS:BOOL=OFF \ - -DLLVM_TARGETS_TO_BUILD="host;AMDGPU;BPF;NVPTX;" \ + -DLLVM_TARGETS_TO_BUILD="all" \ -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD='AVR' \ -DLLVM_ENABLE_LIBCXX:BOOL=OFF \ -DLLVM_ENABLE_ZLIB:BOOL=ON \ @@ -287,13 +395,13 @@ ninja -vvv -j %__nprocs -C BUILD %install pushd BUILD -cmake -DCMAKE_INSTALL_PREFIX=%buildroot%prefix ../ +cmake -DCMAKE_INSTALL_PREFIX=%buildroot%llvm_prefix ../ sed -i 's|man\ tools/lld/docs/docs-lld-html|man|' build.ninja sed -i '/^[[:space:]]*include.*tools\/lld\/docs\/cmake_install.cmake.*/d' tools/lld/cmake_install.cmake popd ninja -C BUILD install -# And prepare Clang documentation +# Prepare Clang documentation. rm -rf BUILD/clang-docs mkdir -p BUILD/clang-docs for f in LICENSE.TXT NOTES.txt README.txt; do @@ -301,113 +409,295 @@ for f in LICENSE.TXT NOTES.txt README.txt; do done rm -rf tools/clang/docs/{doxygen*,Makefile*,*.graffle,tools} -install -m 0755 BUILD/%_lib/LLVMHello.so %buildroot%_libdir/ -install -m 0755 BUILD/%_lib/BugpointPasses.so %buildroot%_libdir/ -mkdir -p %buildroot%_docdir/lld - -file %buildroot%_bindir/* | awk -F: '$2~/ELF/{print $1}' | xargs -r chrpath -d -file %buildroot%_libdir/*.so | awk -F: '$2~/ELF/{print $1}' | xargs -r chrpath -d +install -m 0755 BUILD/%_lib/LLVMHello.so %buildroot%llvm_libdir/ +install -m 0755 BUILD/%_lib/BugpointPasses.so %buildroot%llvm_libdir/ +mkdir -p %buildroot%llvm_docdir/lld %ifarch %ix86 -cd %buildroot%_libdir/clang/%version/lib/linux +cd %buildroot%llvm_libdir/clang/%v_full/lib/linux ls *-i[3-9]86* | while read f; do ln -s $f $(echo $f | sed 's|i[3-9]86|i386|') ; done %endif +# The following files are not used by LLVM builds for Linux. +rm -f %buildroot%llvm_bindir/argdumper +rm -f %buildroot%llvm_datadir/clang/clang-format-bbedit.applescript + +# Install the clang bash completion. +mkdir -p %buildroot%_datadir/bash-completion/completions +ln -sr %buildroot%llvm_datadir/clang/bash-autocomplete.sh %buildroot%_datadir/bash-completion/completions/clang-%v_major + +# Symlink executables to %_bindir. +mkdir -p %buildroot%_bindir +for b in %buildroot%llvm_bindir/*; do + bb="$(basename "$b")" + echo "$bb" | grep -q -- '-%v_major$' && continue # if already appended + ln -srv "$b" "%buildroot%_bindir/$bb-%v_major" +done +# Symlink man pages to the man dirs. +for mand in %buildroot%llvm_datadir/man/man*; do + mand_index="${mand##*/man}" + for m in "$mand"/*.[1-9]*; do + # Let's force compress the man page, then symlink it. + # /usr/lib/llvm-11.0/share/man/manD/utilX.D.xz -> /usr/share/man/manD/utilX-11.D.xz + # Otherwise, brp-alt(compress) keeps fucking us up. + # It remakes the symlinks first, then compresses their targets, + # severing the symlinks. + /usr/lib/rpm/compress_files "$m" + + mb="$(basename "$m")" # e. g. llvm-ar.1.xz + new_mb="${mb%%.[1-9]*}-%v_major.$mand_index" # e. g. llvm-ar-11.1.xz + + mkdir -p "%buildroot%_mandir/man$mand_index" + ln -srv "$m" "%buildroot%_mandir/man$mand_index/$new_mb" + done +done + +# Symlink sonamed shared libraries in %llvm_prefix/%_libdir to %_libdir. +mkdir -p %buildroot%_libdir +find %buildroot%llvm_libdir/*.so* -type f | grep -E '^%buildroot%llvm_libdir/.*(%v_major)' | sort | tee %_tmppath/shared-objects \ + | sed 's)%llvm_libdir)%_libdir)' > %_tmppath/shared-object-links +paste %_tmppath/shared-objects %_tmppath/shared-object-links | while read object link; do + ln -srv "$object" "$link" +done + +# List all packaged binaries in this source package. +find %buildroot%_bindir/*-%v_major > %_tmppath/PATH-executables + +# For paranoic reasons library packaging policy covers peculiar directory paths. +# If there are $A.a and $A.so in %llvm_libdir/clang, they should not end up in the +# same package (but can be co-installed on a system). +# Let's list all the $A.so for which $A.a exists into a separate package. +# We also consider i386-symlinks for iN86. +find %buildroot%llvm_libdir/clang -type f,l -name '*.a' -or -name '*.so' | \ + sed -r -n 's/^(\/.+)\.a$/\1/p; s/^(.+)\.so$/\1/p' | sort | uniq -d > %_tmppath/libclang-support-dupes +sed < %_tmppath/libclang-support-dupes 's)^%buildroot)); s/$/.a/' > %_tmppath/libclang-support-static-runtimes +sed < %_tmppath/libclang-support-dupes 's)^%buildroot)); s/$/.so/' > %_tmppath/libclang-support-shared-runtimes +sed < %_tmppath/libclang-support-shared-runtimes 's/^/%%exclude /' > %_tmppath/dyn-files-libclang-support +echo "Expelling likely redundant Clang shared runtimes:" && cat %_tmppath/dyn-files-libclang-support + %check %if_enabled tests -LD_LIBRARY_PATH=%buildroot%_libdir:$LD_LIBRARY_PATH +LD_LIBRARY_PATH=%buildroot%llvm_libdir:$LD_LIBRARY_PATH export LD_LIBRARY_PATH ninja -C BUILD check-all || : %endif +# Do not generate dependencies for clang-{format,rename} plugins. +%add_findreq_skiplist %llvm_datadir/clang/* + +%files filesystem +%dir %llvm_prefix +%dir %llvm_bindir +%dir %llvm_libdir +%dir %llvm_includedir +%dir %llvm_libexecdir +%dir %llvm_datadir +%dir %llvm_datadir/clang +%dir %llvm_datadir/man +%dir %llvm_man1dir +%dir %llvm_docdir + %files %doc CREDITS.TXT LICENSE.TXT README.txt +%llvm_bindir/* %_bindir/* +%llvm_man1dir/* %_man1dir/* +%exclude %llvm_bindir/llvm-config* %exclude %_bindir/llvm-config* +%exclude %llvm_bindir/*clang* %exclude %_bindir/*clang* -%exclude %_bindir/c-index-test +%exclude %llvm_bindir/*clangd* +%exclude %_bindir/*clangd* +%exclude %llvm_bindir/c-index-test +%exclude %_bindir/c-index-test-%v_major +%exclude %llvm_bindir/find-all-symbols +%exclude %_bindir/find-all-symbols-%v_major +%exclude %llvm_bindir/scan-* %exclude %_bindir/scan-* -%exclude %_man1dir/llvm-config.1.* -%exclude %_man1dir/clang.1* -%exclude %_man1dir/scan-build.1* +%exclude %llvm_man1dir/llvm-config.1.* +%exclude %_man1dir/llvm-config-%v_major.1.* +%exclude %llvm_man1dir/clang.1* +%exclude %_man1dir/clang-%v_major.1* +%exclude %llvm_man1dir/scan-build.1* +%exclude %_man1dir/scan-build-%v_major.1* +%exclude %llvm_bindir/lld* %exclude %_bindir/lld* -%exclude %_bindir/ld*.lld -%exclude %_bindir/wasm-ld +%exclude %llvm_bindir/ld*.lld +%exclude %_bindir/ld*.lld-%v_major +%exclude %llvm_bindir/wasm-ld +%exclude %_bindir/wasm-ld-%v_major %files libs +%llvm_libdir/libLLVM-*.so %_libdir/libLLVM-*.so +%llvm_libdir/libLTO.so.* %_libdir/libLTO.so.* +%llvm_libdir/libRemarks.so.* %_libdir/libRemarks.so.* +%files tools +%llvm_datadir/opt-viewer + %files devel -%_bindir/llvm-config -%_man1dir/llvm-config.1.* -%_includedir/llvm -%_includedir/llvm-c -%_libdir/libLLVM.so -%_libdir/libLTO.so -%_libdir/LLVMgold.so -%_libdir/libRemarks.so -%_libdir/LLVMHello.so -%_libdir/BugpointPasses.so -%_libdir/cmake/llvm -%exclude %_libdir/cmake/llvm/LLVMStaticExports*.cmake +%llvm_bindir/llvm-config +%_bindir/llvm-config-%v_major +%llvm_man1dir/llvm-config.1.* +%_man1dir/llvm-config-%v_major.1.* +%llvm_includedir/llvm +%llvm_includedir/llvm-c +%llvm_libdir/libLLVM.so +%llvm_libdir/libLTO.so +%llvm_libdir/LLVMgold.so +%llvm_libdir/libRemarks.so +%llvm_libdir/LLVMHello.so +%llvm_libdir/BugpointPasses.so +%dir %llvm_libdir/cmake +%llvm_libdir/cmake/llvm +%exclude %llvm_libdir/cmake/llvm/LLVMStaticExports.cmake %files devel-static -%_libdir/*.a -%exclude %_libdir/libclang*.a -%_libdir/cmake/llvm/LLVMStaticExports*.cmake +%llvm_libdir/*.a +%exclude %llvm_libdir/libclang*.a +%dir %llvm_libdir/cmake +%dir %llvm_libdir/cmake/llvm +%llvm_libdir/cmake/llvm/LLVMStaticExports.cmake %files -n %clang_name %doc BUILD/clang-docs/* -%_bindir/*clang* -%_bindir/c-index-test -%_man1dir/clang.1* +%llvm_bindir/clang-%v_major +%llvm_bindir/clang +%_bindir/clang-%v_major +%llvm_bindir/clang++ +%_bindir/clang++-%v_major +%llvm_bindir/clang-cl +%_bindir/clang-cl-%v_major +%llvm_bindir/clang-cpp +%_bindir/clang-cpp-%v_major +%llvm_man1dir/clang.1* +%_man1dir/clang-%v_major.1* +%exclude %llvm_bindir/clang-check* +%exclude %_bindir/clang-check* +%exclude %llvm_bindir/clang-extdef-mapping* +%exclude %_bindir/clang-extdef-mapping* +%exclude %llvm_bindir/clang-format* +%exclude %_bindir/clang-format* +%exclude %llvm_bindir/git-clang-format* +%exclude %_bindir/git-clang-format* +%exclude %llvm_bindir/clang-offload-* +%exclude %_bindir/clang-offload-* +%exclude %llvm_bindir/clang-refactor* +%exclude %_bindir/clang-refactor* +%exclude %llvm_bindir/clang-rename* +%exclude %_bindir/clang-rename* +%llvm_datadir/clang/bash-autocomplete.sh +%_datadir/bash-completion/completions/clang* %files -n %clang_name-libs -%_libdir/clang +%llvm_libdir/libclang*.so.* %_libdir/libclang*.so.* +%files -n %clang_name-libs-support -f %_tmppath/dyn-files-libclang-support +%llvm_libdir/clang +# clang-tools +%ifarch %hwasan_symbolize_arches +%exclude %llvm_libdir/clang/%v_full/bin/hwasan_symbolize +%endif + +%files -n %clang_name-libs-support-shared-runtimes -f %_tmppath/libclang-support-shared-runtimes + %files -n %clang_name-devel -%_includedir/clang -%_includedir/clang-c -%_libdir/libclang*.so -%_libdir/cmake/clang +%llvm_includedir/clang +%llvm_includedir/clang-c +%llvm_includedir/clang-tidy +%llvm_libdir/libclang*.so +%dir %llvm_libdir/cmake +%llvm_libdir/cmake/clang %files -n %clang_name-devel-static -%_libdir/libclang*.a +%llvm_libdir/libclang*.a %files -n %clang_name-analyzer -%_prefix/libexec/*-analyzer -%_bindir/scan-build -%_bindir/scan-view -%_datadir/scan-build -%_datadir/scan-view -%_man1dir/scan-build.1* +%llvm_prefix/libexec/*-analyzer +%llvm_bindir/scan-build +%_bindir/scan-build-%v_major +%llvm_bindir/scan-view +%_bindir/scan-view-%v_major +%llvm_datadir/scan-build +%llvm_datadir/scan-view +%llvm_man1dir/scan-build.1* +%_man1dir/scan-build-%v_major.1* + +%files -n %clang_name-tools +%llvm_bindir/c-index-test +%_bindir/c-index-test-%v_major +%llvm_bindir/clang-* +%_bindir/clang-* +%exclude %llvm_bindir/clang-%v_major +%exclude %llvm_bindir/clang +%exclude %_bindir/*clang-%v_major +%exclude %llvm_bindir/clang++ +%exclude %_bindir/clang++-%v_major +%exclude %llvm_bindir/clang-cl +%exclude %_bindir/clang-cl-%v_major +%exclude %llvm_bindir/clang-cpp +%exclude %_bindir/clang-cpp-%v_major +%llvm_bindir/find-all-symbols +%_bindir/find-all-symbols-%v_major +%llvm_datadir/clang +%exclude %llvm_datadir/clang/bash-autocomplete.sh +%ifarch %hwasan_symbolize_arches +%llvm_libdir/clang/%v_full/bin/hwasan_symbolize +%endif + +%files -n %clangd_name +%llvm_bindir/clangd +%_bindir/clangd-%v_major %files -n %lld_name +%llvm_bindir/lld* %_bindir/lld* -%_bindir/ld*.lld -%_bindir/wasm-ld +%llvm_bindir/ld*.lld +%_bindir/ld*.lld-%v_major +%llvm_bindir/wasm-ld +%_bindir/wasm-ld-%v_major %files -n %lld_name-devel -%dir %_includedir/lld -%_includedir/lld/* -%_libdir/cmake/lld +%dir %llvm_includedir/lld +%llvm_includedir/lld/* +%dir %llvm_libdir/cmake +%llvm_libdir/cmake/lld %files doc -%doc %_docdir/llvm +%doc %llvm_docdir/llvm %files -n %clang_name-doc -%doc %_docdir/clang +%doc %llvm_docdir/clang +%doc %llvm_docdir/clang-tools %files -n %lld_name-doc -%doc %_docdir/lld +%doc %llvm_docdir/lld %changelog +* Fri Dec 11 2020 Arseny Maslennikov <arseny@altlinux.org> 11.0.0-alt2 +- Installed to /usr/lib/llvm-11.0 to ensure peaceful co-existence with other + LLVM versions. + Numbered shared libraries in %llvm_prefix/%%_lib are symlinked to %%_libdir + to properly generate library dependencies. +- Moved clang-format and other clang-based tools to clang11.0-tools. +- New LLVM subproject: clang-tools-extra. + + 2 new packages: clang11.0-tools, clangd11.0 +- Enabled all LLVM targets. +- Moved C/C++ compiler support away from clang-libs to clang-libs-support. +- Moved Clang .so runtimes (scudo and sanitizers) with available static variants + to clang-libs-support-shared-runtimes to comply with sisyphus-check-static. + * Tue Oct 13 2020 Valery Inozemtsev <shrek@altlinux.ru> 11.0.0-alt1 - 11.0.0 +- Built with gcc. + +* Wed Aug 12 2020 Aleksei Nikiforov <darktemplar@altlinux.org> 10.0.1-alt2 +- Applied upstream patch which should fix ppc64le-specific issue. * Tue Aug 11 2020 Valery Inozemtsev <shrek@altlinux.ru> 10.0.1-alt1 - 10.0.1 [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] [#263468] EPERM (try 14) llvm-common.git=11.0.0-alt2 srpm=llvm11.0-11.0.0-alt2.src.rpm 2021-01-07 21:18 ` Arseny Maslennikov @ 2021-01-11 9:13 ` Konstantin Lepikhov 2021-01-11 10:25 ` [devel] hazardous girar builder (was: Re: [#263468] EPERM (try 14) llvm-common.git=11.0.0-alt2 srpm=llvm11.0-11.0.0-alt2.src.rpm) Arseny Maslennikov 2021-01-11 16:09 ` [devel] [#263468] EPERM (try 14) llvm-common.git=11.0.0-alt2 srpm=llvm11.0-11.0.0-alt2.src.rpm Konstantin Lepikhov 1 sibling, 1 reply; 79+ messages in thread From: Konstantin Lepikhov @ 2021-01-11 9:13 UTC (permalink / raw) To: devel Hi Arseny! On 01/08/2021, at 12:18:41 AM you wrote: > On Thu, Jan 07, 2021 at 09:52:20PM +0100, Konstantin Lepikhov wrote: > > Hi Arseny! > > > > On 01/07/2021, at 05:08:00 PM you wrote: > > > > > гитвеб показывает его по ссылке [3]. > > > > > .... > > > [3] http://git.altlinux.org/people/arseny/packages/llvm11.0.git?p=llvm11.0.git;a=blobdiff;f=llvm11.spec;h=64681a96e2520e90e7f4f3d74b5439e0ea8f2872;hp=659847bc56dab3889c89e5e779a6b5e5a9c08202;hb=f70dcfeb57560ad1e0e39cddc5318ad41c86902a;hpb=8986c2acdc8311f69a43a1661a849a2e12788de8 > > > > говорит 404 - Reading git-diff-tree failed > > > > Я бы все-таки хотел посмотреть на diff. > > > > УМВР. Может, мой почтовый клиент сломал ссылку или ваш не так показал? > > Прикладываю файлом. Я вот сначала думал, что будет хоть какое-то обсуждение перед выкладкой в сизиф, а тут очередной "я сделалъ". Тогда извините, собирайте как хотите. -- WBR et al. ^ permalink raw reply [flat|nested] 79+ messages in thread
* [devel] hazardous girar builder (was: Re: [#263468] EPERM (try 14) llvm-common.git=11.0.0-alt2 srpm=llvm11.0-11.0.0-alt2.src.rpm) 2021-01-11 9:13 ` Konstantin Lepikhov @ 2021-01-11 10:25 ` Arseny Maslennikov 2021-01-11 10:44 ` [devel] hazardous girar builder Dmitry V. Levin 0 siblings, 1 reply; 79+ messages in thread From: Arseny Maslennikov @ 2021-01-11 10:25 UTC (permalink / raw) To: devel [-- Attachment #1: Type: text/plain, Size: 4021 bytes --] On Mon, Jan 11, 2021 at 10:13:27AM +0100, Konstantin Lepikhov wrote: > Hi Arseny! > > On 01/08/2021, at 12:18:41 AM you wrote: > > > On Thu, Jan 07, 2021 at 09:52:20PM +0100, Konstantin Lepikhov wrote: > > > Hi Arseny! > > > > > > On 01/07/2021, at 05:08:00 PM you wrote: > > > > > > > гитвеб показывает его по ссылке [3]. > > > > > > > .... > > > > [3] http://git.altlinux.org/people/arseny/packages/llvm11.0.git?p=llvm11.0.git;a=blobdiff;f=llvm11.spec;h=64681a96e2520e90e7f4f3d74b5439e0ea8f2872;hp=659847bc56dab3889c89e5e779a6b5e5a9c08202;hb=f70dcfeb57560ad1e0e39cddc5318ad41c86902a;hpb=8986c2acdc8311f69a43a1661a849a2e12788de8 > > > > > > говорит 404 - Reading git-diff-tree failed > > > > > > Я бы все-таки хотел посмотреть на diff. > > > > > > > УМВР. Может, мой почтовый клиент сломал ссылку или ваш не так показал? > > > > Прикладываю файлом. > Я вот сначала думал, что будет хоть какое-то обсуждение перед выкладкой в Я вообще планировал _завтра_ отправить это задание. Извините, произошло недоразумение; ниже о нём. Когда я создавал задание, я выставил ему test-only=yes. 14 попытку я собрал с --commit (мне в своё время объяснили, что задание в состоянии TESTED никогда не получит одобрения, а, чтобы ему иметь шанс быть рассмотренным, его нужно с --commit собрать до EPERM). У нас в инфраструктуре есть рассылка писем людям об изменениях ACL в отношении этих людей, слава Богу, но об одобрении подзаданий её нет. Ещё чуть позже я отправил try 15, которая соответствует диффу из предыдущего моего письма. Для этого я выполнил `ssh girar task run 263468', полагая, что test_only=yes. Где-то между этим моментом и try 14 test_only _приняло_ значение no (ещё раз простите, я до той поры не видел нужды проверять все параметры после каждого действия с заданием; я полагал, что такую подставу сборочница себе не позволяет). Задание улетело в сизиф; хорошо, что это затронуло лишь 2 пакета — их мы с мейтейнерами починили. Если робот сам по желанию откуда-то взявшейся у него левой пятки позволяет себе менять нарочно выставленные параметры, этот робот — опасный, если не сказать "плохой". Сейчас все читатели devel@ могут наблюдать этому подтверждение: человека ошибочно записали в идиоты — или в мудаки — не по его поступкам, а из-за происшествий вне его зоны ответственности. > сизиф, а тут очередной "я сделалъ". Тогда извините, собирайте как хотите. Если бы мне лично было плевать на ваше (и других читателей devel@) мнение, я бы не прикладывал вам дифф к письму. Конец света не наступил, обсуждать всё ещё можно — если, конечно, всё ещё хотите. :) [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] hazardous girar builder 2021-01-11 10:25 ` [devel] hazardous girar builder (was: Re: [#263468] EPERM (try 14) llvm-common.git=11.0.0-alt2 srpm=llvm11.0-11.0.0-alt2.src.rpm) Arseny Maslennikov @ 2021-01-11 10:44 ` Dmitry V. Levin 2021-01-11 10:49 ` Arseny Maslennikov 0 siblings, 1 reply; 79+ messages in thread From: Dmitry V. Levin @ 2021-01-11 10:44 UTC (permalink / raw) To: ALT Devel discussion list On Mon, Jan 11, 2021 at 01:25:16PM +0300, Arseny Maslennikov wrote: [...] > Я вообще планировал _завтра_ отправить это задание. > Извините, произошло недоразумение; ниже о нём. > > Когда я создавал задание, я выставил ему test-only=yes. > 14 попытку я собрал с --commit (мне в своё время объяснили, что задание > в состоянии TESTED никогда не получит одобрения, а, чтобы ему иметь шанс > быть рассмотренным, его нужно с --commit собрать до EPERM). > У нас в инфраструктуре есть рассылка писем людям об изменениях ACL в > отношении этих людей, слава Богу, но об одобрении подзаданий её нет. > Ещё чуть позже я отправил try 15, которая соответствует диффу из > предыдущего моего письма. Для этого я выполнил `ssh girar task run > 263468', полагая, что test_only=yes. Где-то между этим моментом и try 14 > test_only _приняло_ значение no (ещё раз простите, я до той поры не > видел нужды проверять все параметры после каждого действия с заданием; я > полагал, что такую подставу сборочница себе не позволяет). Задание > улетело в сизиф; хорошо, что это затронуло лишь 2 пакета — их мы с > мейтейнерами починили. > > Если робот сам по желанию откуда-то взявшейся у него левой пятки > позволяет себе менять нарочно выставленные параметры, этот робот — > опасный, если не сказать "плохой". Сейчас все читатели devel@ могут > наблюдать этому подтверждение: человека ошибочно записали в идиоты — или > в мудаки — не по его поступкам, а из-за происшествий вне его > зоны ответственности. Jan 6 12:03:54 gyle girar-sh: arseny: -c task run 263468 Jan 6 15:19:40 gyle girar-builder: user=arseny task=263468 repo=sisyphus try=13 iter=1 status=TESTED Jan 7 11:03:16 gyle girar-sh: arseny: -c task run 263468 --commit Jan 7 11:22:01 gyle girar-builder: user=arseny task=263468 repo=sisyphus try=14 iter=1 status=EPERM Jan 7 15:37:30 gyle girar-sh: shrek: -c acl sisyphus llvm11.0 add arseny Jan 8 10:52:19 gyle girar-sh: arseny: -c task run 263468 Jan 8 14:28:08 gyle girar-builder: user=arseny task=263468 repo=sisyphus try=15 iter=2 status=DONE (время указано в UTC) На мой взгляд, тут не видно никаких аномалий, система сделала в точности то, о чём её проинструктировали arseny@ и shrek@. -- ldv ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] hazardous girar builder 2021-01-11 10:44 ` [devel] hazardous girar builder Dmitry V. Levin @ 2021-01-11 10:49 ` Arseny Maslennikov 2021-01-11 10:56 ` Dmitry V. Levin 0 siblings, 1 reply; 79+ messages in thread From: Arseny Maslennikov @ 2021-01-11 10:49 UTC (permalink / raw) To: ALT Linux Team development discussions [-- Attachment #1: Type: text/plain, Size: 4494 bytes --] On Mon, Jan 11, 2021 at 01:44:21PM +0300, Dmitry V. Levin wrote: > On Mon, Jan 11, 2021 at 01:25:16PM +0300, Arseny Maslennikov wrote: > [...] > > Я вообще планировал _завтра_ отправить это задание. > > Извините, произошло недоразумение; ниже о нём. > > > > Когда я создавал задание, я выставил ему test-only=yes. > > 14 попытку я собрал с --commit (мне в своё время объяснили, что задание > > в состоянии TESTED никогда не получит одобрения, а, чтобы ему иметь шанс > > быть рассмотренным, его нужно с --commit собрать до EPERM). > > У нас в инфраструктуре есть рассылка писем людям об изменениях ACL в > > отношении этих людей, слава Богу, но об одобрении подзаданий её нет. > > Ещё чуть позже я отправил try 15, которая соответствует диффу из > > предыдущего моего письма. Для этого я выполнил `ssh girar task run > > 263468', полагая, что test_only=yes. Где-то между этим моментом и try 14 > > test_only _приняло_ значение no (ещё раз простите, я до той поры не > > видел нужды проверять все параметры после каждого действия с заданием; я > > полагал, что такую подставу сборочница себе не позволяет). Задание > > улетело в сизиф; хорошо, что это затронуло лишь 2 пакета — их мы с > > мейтейнерами починили. > > > > Если робот сам по желанию откуда-то взявшейся у него левой пятки > > позволяет себе менять нарочно выставленные параметры, этот робот — > > опасный, если не сказать "плохой". Сейчас все читатели devel@ могут > > наблюдать этому подтверждение: человека ошибочно записали в идиоты — или > > в мудаки — не по его поступкам, а из-за происшествий вне его > > зоны ответственности. > > Jan 6 12:03:54 gyle girar-sh: arseny: -c task run 263468 > Jan 6 15:19:40 gyle girar-builder: user=arseny task=263468 repo=sisyphus try=13 iter=1 status=TESTED > Jan 7 11:03:16 gyle girar-sh: arseny: -c task run 263468 --commit > Jan 7 11:22:01 gyle girar-builder: user=arseny task=263468 repo=sisyphus try=14 iter=1 status=EPERM > Jan 7 15:37:30 gyle girar-sh: shrek: -c acl sisyphus llvm11.0 add arseny > Jan 8 10:52:19 gyle girar-sh: arseny: -c task run 263468 > Jan 8 14:28:08 gyle girar-builder: user=arseny task=263468 repo=sisyphus try=15 iter=2 status=DONE > (время указано в UTC) > > На мой взгляд, тут не видно никаких аномалий, система сделала > в точности то, о чём её проинструктировали arseny@ и shrek@. А на мой взгляд, система сделала то, о чём её следовало проинструктировать так: > Jan 6 12:03:54 gyle girar-sh: arseny: -c task run 263468 > Jan 6 15:19:40 gyle girar-builder: user=arseny task=263468 repo=sisyphus try=13 iter=1 status=TESTED > Jan 7 11:03:16 gyle girar-sh: arseny: -c task run 263468 --commit > Jan 7 11:22:01 gyle girar-builder: user=arseny task=263468 repo=sisyphus try=14 iter=1 status=EPERM > Jan 7 15:37:30 gyle girar-sh: shrek: -c acl sisyphus llvm11.0 add arseny > Jan 8 10:52:19 gyle girar-sh: arseny: -c task run 263468 --commit > Jan 8 14:28:08 gyle girar-builder: user=arseny task=263468 repo=sisyphus try=15 iter=2 status=DONE > (время указано в UTC) Я ж говорю — недоразумение. Наверное, один из вариантов решения проблемы — привести документацию в соответствие с текущим поведением. [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] hazardous girar builder 2021-01-11 10:49 ` Arseny Maslennikov @ 2021-01-11 10:56 ` Dmitry V. Levin 2021-01-11 11:08 ` Arseny Maslennikov 2021-01-11 12:30 ` Michael Shigorin 0 siblings, 2 replies; 79+ messages in thread From: Dmitry V. Levin @ 2021-01-11 10:56 UTC (permalink / raw) To: ALT Devel discussion list On Mon, Jan 11, 2021 at 01:49:08PM +0300, Arseny Maslennikov wrote: > On Mon, Jan 11, 2021 at 01:44:21PM +0300, Dmitry V. Levin wrote: > > On Mon, Jan 11, 2021 at 01:25:16PM +0300, Arseny Maslennikov wrote: > > [...] > > > Я вообще планировал _завтра_ отправить это задание. > > > Извините, произошло недоразумение; ниже о нём. > > > > > > Когда я создавал задание, я выставил ему test-only=yes. > > > 14 попытку я собрал с --commit (мне в своё время объяснили, что задание > > > в состоянии TESTED никогда не получит одобрения, а, чтобы ему иметь шанс > > > быть рассмотренным, его нужно с --commit собрать до EPERM). > > > У нас в инфраструктуре есть рассылка писем людям об изменениях ACL в > > > отношении этих людей, слава Богу, но об одобрении подзаданий её нет. > > > Ещё чуть позже я отправил try 15, которая соответствует диффу из > > > предыдущего моего письма. Для этого я выполнил `ssh girar task run > > > 263468', полагая, что test_only=yes. Где-то между этим моментом и try 14 > > > test_only _приняло_ значение no (ещё раз простите, я до той поры не > > > видел нужды проверять все параметры после каждого действия с заданием; я > > > полагал, что такую подставу сборочница себе не позволяет). Задание > > > улетело в сизиф; хорошо, что это затронуло лишь 2 пакета — их мы с > > > мейтейнерами починили. > > > > > > Если робот сам по желанию откуда-то взявшейся у него левой пятки > > > позволяет себе менять нарочно выставленные параметры, этот робот — > > > опасный, если не сказать "плохой". Сейчас все читатели devel@ могут > > > наблюдать этому подтверждение: человека ошибочно записали в идиоты — или > > > в мудаки — не по его поступкам, а из-за происшествий вне его > > > зоны ответственности. > > > > Jan 6 12:03:54 gyle girar-sh: arseny: -c task run 263468 > > Jan 6 15:19:40 gyle girar-builder: user=arseny task=263468 repo=sisyphus try=13 iter=1 status=TESTED > > Jan 7 11:03:16 gyle girar-sh: arseny: -c task run 263468 --commit > > Jan 7 11:22:01 gyle girar-builder: user=arseny task=263468 repo=sisyphus try=14 iter=1 status=EPERM > > Jan 7 15:37:30 gyle girar-sh: shrek: -c acl sisyphus llvm11.0 add arseny > > Jan 8 10:52:19 gyle girar-sh: arseny: -c task run 263468 > > Jan 8 14:28:08 gyle girar-builder: user=arseny task=263468 repo=sisyphus try=15 iter=2 status=DONE > > (время указано в UTC) > > > > На мой взгляд, тут не видно никаких аномалий, система сделала > > в точности то, о чём её проинструктировали arseny@ и shrek@. > > А на мой взгляд, система сделала то, о чём её следовало > проинструктировать так: > > > Jan 6 12:03:54 gyle girar-sh: arseny: -c task run 263468 > > Jan 6 15:19:40 gyle girar-builder: user=arseny task=263468 repo=sisyphus try=13 iter=1 status=TESTED > > Jan 7 11:03:16 gyle girar-sh: arseny: -c task run 263468 --commit > > Jan 7 11:22:01 gyle girar-builder: user=arseny task=263468 repo=sisyphus try=14 iter=1 status=EPERM > > Jan 7 15:37:30 gyle girar-sh: shrek: -c acl sisyphus llvm11.0 add arseny > > Jan 8 10:52:19 gyle girar-sh: arseny: -c task run 263468 --commit > > Jan 8 14:28:08 gyle girar-builder: user=arseny task=263468 repo=sisyphus try=15 iter=2 status=DONE > > (время указано в UTC) > > Я ж говорю — недоразумение. Второй --commit избыточен, см. https://lists.altlinux.org/pipermail/devel/2019-March/207169.html > Наверное, один из вариантов решения проблемы — привести документацию в > соответствие с текущим поведением. В том тексте, который считается документацией, параметр --commit вообще описан? -- ldv ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] hazardous girar builder 2021-01-11 10:56 ` Dmitry V. Levin @ 2021-01-11 11:08 ` Arseny Maslennikov 2021-01-11 11:22 ` Sergey V Turchin 2021-01-11 12:30 ` Michael Shigorin 1 sibling, 1 reply; 79+ messages in thread From: Arseny Maslennikov @ 2021-01-11 11:08 UTC (permalink / raw) To: ALT Linux Team development discussions [-- Attachment #1: Type: text/plain, Size: 1846 bytes --] On Mon, Jan 11, 2021 at 01:56:11PM +0300, Dmitry V. Levin wrote: > On Mon, Jan 11, 2021 at 01:49:08PM +0300, Arseny Maslennikov wrote: > > А на мой взгляд, система сделала то, о чём её следовало > > проинструктировать так: > > > > > Jan 6 12:03:54 gyle girar-sh: arseny: -c task run 263468 > > > Jan 6 15:19:40 gyle girar-builder: user=arseny task=263468 repo=sisyphus try=13 iter=1 status=TESTED > > > Jan 7 11:03:16 gyle girar-sh: arseny: -c task run 263468 --commit > > > Jan 7 11:22:01 gyle girar-builder: user=arseny task=263468 repo=sisyphus try=14 iter=1 status=EPERM > > > Jan 7 15:37:30 gyle girar-sh: shrek: -c acl sisyphus llvm11.0 add arseny > > > Jan 8 10:52:19 gyle girar-sh: arseny: -c task run 263468 --commit > > > Jan 8 14:28:08 gyle girar-builder: user=arseny task=263468 repo=sisyphus try=15 iter=2 status=DONE > > > (время указано в UTC) > > > > Я ж говорю — недоразумение. > > Второй --commit избыточен, см. > https://lists.altlinux.org/pipermail/devel/2019-March/207169.html > > > Наверное, один из вариантов решения проблемы — привести документацию в > > соответствие с текущим поведением. > > В том тексте, который считается документацией, параметр --commit вообще > описан? https://www.altlinux.org/Git.alt/%D0%A1%D0%BF%D1%80%D0%B0%D0%B2%D0%BE%D1%87%D0%BD%D0%B8%D0%BA#task, там где-то в середине. --commit описан, но изменение постоянно-запоминаемых параметров задания опциями --test-only/--commit к task run не отражено. [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] hazardous girar builder 2021-01-11 11:08 ` Arseny Maslennikov @ 2021-01-11 11:22 ` Sergey V Turchin 2021-01-11 11:25 ` Anton Farygin 0 siblings, 2 replies; 79+ messages in thread From: Sergey V Turchin @ 2021-01-11 11:22 UTC (permalink / raw) To: ALT Linux Team development discussions On Monday, 11 January 2021 14:08:05 MSK Arseny Maslennikov wrote: [...] > изменение > постоянно-запоминаемых параметров задания опциями --test-only/--commit к > task run не отражено. А может сделать всегда "test-only", если "--commit" явно не указан? Или для "run" и "--commit" могут потребоваться разные права? -- Regards, Sergey. ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] hazardous girar builder 2021-01-11 11:22 ` Sergey V Turchin @ 2021-01-11 11:25 ` Anton Farygin 2021-01-11 11:32 ` Alexey Gladkov 1 sibling, 1 reply; 79+ messages in thread From: Anton Farygin @ 2021-01-11 11:25 UTC (permalink / raw) To: devel On 11.01.2021 14:22, Sergey V Turchin wrote: > On Monday, 11 January 2021 14:08:05 MSK Arseny Maslennikov wrote: > > [...] >> изменение >> постоянно-запоминаемых параметров задания опциями --test-only/--commit к >> task run не отражено. > А может сделать всегда "test-only", если "--commit" явно не указан? > Или для "run" и "--commit" могут потребоваться разные права? > да, мне тоже кажется что статус --commit должен сбрасываться на test-only сразу после FAIL/EPERM сборки. Но придётся привыкать. ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] hazardous girar builder 2021-01-11 11:25 ` Anton Farygin @ 2021-01-11 11:32 ` Alexey Gladkov 2021-01-11 11:41 ` Yuri Sedunov 2021-01-11 12:30 ` Arseny Maslennikov 0 siblings, 2 replies; 79+ messages in thread From: Alexey Gladkov @ 2021-01-11 11:32 UTC (permalink / raw) To: ALT Linux Team development discussions On Mon, Jan 11, 2021 at 02:25:43PM +0300, Anton Farygin wrote: > > [...] > > > изменение > > > постоянно-запоминаемых параметров задания опциями --test-only/--commit к > > > task run не отражено. > > А может сделать всегда "test-only", если "--commit" явно не указан? > > Или для "run" и "--commit" могут потребоваться разные права? > > > да, мне тоже кажется что статус --commit должен сбрасываться на test-only > сразу после FAIL/EPERM сборки. +1 Вот это точно! -- Rgrds, legion ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] hazardous girar builder 2021-01-11 11:32 ` Alexey Gladkov @ 2021-01-11 11:41 ` Yuri Sedunov 2021-01-11 12:00 ` Alexey Gladkov 2021-01-11 12:30 ` Arseny Maslennikov 1 sibling, 1 reply; 79+ messages in thread From: Yuri Sedunov @ 2021-01-11 11:41 UTC (permalink / raw) To: devel В Пн, 11/01/2021 в 12:32 +0100, Alexey Gladkov пишет: > On Mon, Jan 11, 2021 at 02:25:43PM +0300, Anton Farygin wrote: > > > [...] > > > > изменение > > > > постоянно-запоминаемых параметров задания опциями --test-only/- > > > > -commit к > > > > task run не отражено. > > > А может сделать всегда "test-only", если "--commit" явно не > > > указан? > > > Или для "run" и "--commit" могут потребоваться разные права? > > > > > да, мне тоже кажется что статус --commit должен сбрасываться на > > test-only > > сразу после FAIL/EPERM сборки. > > +1 > > Вот это точно! > А, мне всё равно. $ alias GATRT GATR alias GATRT='ssh build.alt task run --test-only' alias GATR='ssh build.alt task run --commit -- Yuri N. Sedunov ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] hazardous girar builder 2021-01-11 11:41 ` Yuri Sedunov @ 2021-01-11 12:00 ` Alexey Gladkov 0 siblings, 0 replies; 79+ messages in thread From: Alexey Gladkov @ 2021-01-11 12:00 UTC (permalink / raw) To: ALT Linux Team development discussions On Mon, Jan 11, 2021 at 02:41:00PM +0300, Yuri Sedunov wrote: > > Вот это точно! > > > А, мне всё равно. > > $ alias GATRT GATR > alias GATRT='ssh build.alt task run --test-only' > alias GATR='ssh build.alt task run --commit Это и есть "привыкать" о котором писал Антон. Проблема в таком подходе в том, что вроде бы опции стали по сути аргументами команды run. А хотелось бы иметь именно опции. -- Rgrds, legion ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] hazardous girar builder 2021-01-11 11:32 ` Alexey Gladkov 2021-01-11 11:41 ` Yuri Sedunov @ 2021-01-11 12:30 ` Arseny Maslennikov 1 sibling, 0 replies; 79+ messages in thread From: Arseny Maslennikov @ 2021-01-11 12:30 UTC (permalink / raw) To: ALT Linux Team development discussions [-- Attachment #1: Type: text/plain, Size: 1104 bytes --] On Mon, Jan 11, 2021 at 12:32:57PM +0100, Alexey Gladkov wrote: > On Mon, Jan 11, 2021 at 02:25:43PM +0300, Anton Farygin wrote: > > > [...] > > > > изменение > > > > постоянно-запоминаемых параметров задания опциями --test-only/--commit к > > > > task run не отражено. > > > А может сделать всегда "test-only", если "--commit" явно не указан? > > > Или для "run" и "--commit" могут потребоваться разные права? > > > > > да, мне тоже кажется что статус --commit должен сбрасываться на test-only > > сразу после FAIL/EPERM сборки. > > +1 > > Вот это точно! > +1. Таким образом, test_only фактически прекратит быть независимым свойством задания и станет свойством итерации, что со стороны пользователя сборочницы вполне естественно. [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 79+ messages in thread
[parent not found: <1426741610366553@mail.yandex.ru>]
* Re: [devel] hazardous girar builder @ 2021-01-11 12:25 ` Sergey V Turchin 0 siblings, 1 reply; 79+ messages in thread From: Sergey V Turchin @ 2021-01-11 12:25 UTC (permalink / raw) To: ALT Linux Team development discussions On Monday, 11 January 2021 15:03:24 MSK Aleksey Cheusov wrote: [...] > изменение > постоянно-запоминаемых параметров задания опциями --test-only/--commit к > task run не отражено. > А может сделать всегда "test-only", если "--commit" явно не указан? > Пардон, а это не так? Да, это не так. > :-O Я понял документацию именно таким образом. Сейчас --test-only включает статус [test-only], а --commit его же выключает. [...] -- Regards, Sergey. ^ permalink raw reply [flat|nested] 79+ messages in thread
[parent not found: <802151610404991@mail.yandex.ru>]
* Re: [devel] hazardous girar builder @ 2021-01-12 7:44 ` Sergey V Turchin 2021-01-12 10:44 ` Alexey V. Vissarionov 0 siblings, 1 reply; 79+ messages in thread From: Sergey V Turchin @ 2021-01-12 7:44 UTC (permalink / raw) To: ALT Linux Team development discussions On Tuesday, 12 January 2021 01:44:04 MSK Aleksey Cheusov wrote: [...] > Сейчас --test-only включает статус [test-only], а --commit его же выключает. > Ужас. Совсем нет. После останова или сбоя сборочницы админиcтратору достаточно сказать run соотв. сборочным заданиям. > Совершенно нелогично. Зато предсказуемо, что важнее. Названия опций можно было бы придумать удачнее, да. -- Regards, Sergey. ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] hazardous girar builder 2021-01-12 7:44 ` Sergey V Turchin @ 2021-01-12 10:44 ` Alexey V. Vissarionov 2021-01-12 13:24 ` Sergey V Turchin 0 siblings, 1 reply; 79+ messages in thread From: Alexey V. Vissarionov @ 2021-01-12 10:44 UTC (permalink / raw) To: ALT Linux Team development discussions On 2021-01-12 10:44:38 +0300, Sergey V Turchin wrote: >> Сейчас --test-only включает статус [test-only], а --commit >> его же выключает. Ужас. > Совсем нет. После останова или сбоя сборочницы админиcтратору > достаточно сказать run соотв. сборочным заданиям. Или, соответственно, run --commit Что значительно логичнее и, главное, полностью исключает ситуации, подобные породившей этот тред. >> Совершенно нелогично. > Зато предсказуемо, что важнее. Названия опций можно было бы > придумать удачнее, да. Опция нужна всего одна, причем именно "--commit". Без нее задание должно выполняться в режиме test-only независимо от прежнего состояния (опцию "--test-only" на какое-то время можно оставить, но не обрабатывать). И вообще, если есть возможность состояние не сохранять - его сохранять и не надо. -- Alexey V. Vissarionov gremlin ПРИ altlinux ТЧК org; +vii-cmiii-ccxxix-lxxix-xlii GPG: 0D92F19E1C0DC36E27F61A29CD17E2B43D879005 @ hkp://keys.gnupg.net ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] hazardous girar builder 2021-01-12 10:44 ` Alexey V. Vissarionov @ 2021-01-12 13:24 ` Sergey V Turchin 0 siblings, 0 replies; 79+ messages in thread From: Sergey V Turchin @ 2021-01-12 13:24 UTC (permalink / raw) To: ALT Linux Team development discussions On Tuesday, 12 January 2021 13:44:15 MSK Alexey V wrote: > On 2021-01-12 10:44:38 +0300, Sergey V Turchin wrote: > >> Сейчас --test-only включает статус [test-only], а --commit > >> его же выключает. Ужас. > > > > Совсем нет. После останова или сбоя сборочницы админиcтратору > > достаточно сказать run соотв. сборочным заданиям. > Или, соответственно, run --commit Нет, --restore-commit-or-testonly-state. > Что значительно логичнее и, главное, полностью исключает ситуации, > подобные породившей этот тред. > > >> Совершенно нелогично. > > > > Зато предсказуемо, что важнее. Названия опций можно было бы > > придумать удачнее, да. > > Опция нужна всего одна, причем именно "--commit". Без нее > задание должно выполняться в режиме test-only независимо от > прежнего состояния Я это и предлагал выше. > (опцию "--test-only" на какое-то время > можно оставить, но не обрабатывать). И вообще, если есть > возможность состояние не сохранять - его сохранять и не надо. -- Regards, Sergey. ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] hazardous girar builder 2021-01-11 10:56 ` Dmitry V. Levin 2021-01-11 11:08 ` Arseny Maslennikov @ 2021-01-11 12:30 ` Michael Shigorin 2021-01-11 13:21 ` Sergey V Turchin 2021-01-12 7:55 ` Anton V. Boyarshinov 1 sibling, 2 replies; 79+ messages in thread From: Michael Shigorin @ 2021-01-11 12:30 UTC (permalink / raw) To: devel On Mon, Jan 11, 2021 at 01:56:11PM +0300, Dmitry V. Levin wrote: > Второй --commit избыточен, см. > https://lists.altlinux.org/pipermail/devel/2019-March/207169.html --- task run без указания ----test-only/--commit теперь оставляет неизменным значение атрибута test-only, установленное для этого задания ранее. --- Мне тоже кажется, что такое поведение более опасно, т.к. оно требует отслеживания состояния _и_ на стороне человека. С другой стороны, если взять в привычку задавать желаемое явно -- такое поведение расширяет возможные workflow. Поддерживаю предложение rider@ насчёт взвода test-only для следующей сборки при достижении FAILED/EPERM. -- ---- WBR, Michael Shigorin / http://altlinux.org ------ http://opennet.ru / http://anna-news.info ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] hazardous girar builder 2021-01-11 12:30 ` Michael Shigorin @ 2021-01-11 13:21 ` Sergey V Turchin 2021-01-11 13:58 ` Arseny Maslennikov 2021-01-12 7:55 ` Anton V. Boyarshinov 1 sibling, 1 reply; 79+ messages in thread From: Sergey V Turchin @ 2021-01-11 13:21 UTC (permalink / raw) To: ALT Linux Team development discussions On Monday, 11 January 2021 15:30:20 MSK Michael Shigorin wrote: [...] > Поддерживаю предложение rider@ насчёт взвода test-only > для следующей сборки при достижении FAILED/EPERM. А мне не нравится. В моём варианте я всегда знаю, test-only оно или нет в любой момент даже не глядя(при условии, что только я делал run), а когда оно будет само переключаться непредсказуемым образом, появится бестолковая необходимость отслеживания. -- Regards, Sergey. ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] hazardous girar builder 2021-01-11 13:21 ` Sergey V Turchin @ 2021-01-11 13:58 ` Arseny Maslennikov 2021-01-11 14:17 ` Sergey V Turchin 0 siblings, 1 reply; 79+ messages in thread From: Arseny Maslennikov @ 2021-01-11 13:58 UTC (permalink / raw) To: ALT Linux Team development discussions [-- Attachment #1: Type: text/plain, Size: 953 bytes --] On Mon, Jan 11, 2021 at 04:21:56PM +0300, Sergey V Turchin wrote: > On Monday, 11 January 2021 15:30:20 MSK Michael Shigorin wrote: > > [...] > > Поддерживаю предложение rider@ насчёт взвода test-only > > для следующей сборки при достижении FAILED/EPERM. > А мне не нравится. В моём варианте я всегда знаю, test-only оно или нет в > любой момент даже не глядя(при условии, что только я делал run), а когда оно > будет само переключаться непредсказуемым образом, появится бестолковая > необходимость отслеживания. > Так и так будете точно знать, что оно test-only. :) В сизиф задание положит тот, кто скажет --commit. [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] hazardous girar builder 2021-01-11 13:58 ` Arseny Maslennikov @ 2021-01-11 14:17 ` Sergey V Turchin 0 siblings, 0 replies; 79+ messages in thread From: Sergey V Turchin @ 2021-01-11 14:17 UTC (permalink / raw) To: ALT Linux Team development discussions On Monday, 11 January 2021 16:58:56 MSK Arseny Maslennikov wrote: > On Mon, Jan 11, 2021 at 04:21:56PM +0300, Sergey V Turchin wrote: > > On Monday, 11 January 2021 15:30:20 MSK Michael Shigorin wrote: > > > > [...] > > > > > Поддерживаю предложение rider@ насчёт взвода test-only > > > для следующей сборки при достижении FAILED/EPERM. > > > > А мне не нравится. В моём варианте я всегда знаю, test-only оно или нет в > > любой момент даже не глядя(при условии, что только я делал run), а когда > > оно будет само переключаться непредсказуемым образом, появится > > бестолковая необходимость отслеживания. > > Так и так будете точно знать, что оно test-only. :) С чего бы? `run --commit` иногда бывает 2 дня BUILDING без [test-only] и что будет потом, ещё неизвестно. > В сизиф задание положит тот, кто скажет --commit. В Сизиф задание положит тот, кто скажет DONE. -- Regards, Sergey. ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] hazardous girar builder 2021-01-11 12:30 ` Michael Shigorin 2021-01-11 13:21 ` Sergey V Turchin @ 2021-01-12 7:55 ` Anton V. Boyarshinov 2021-01-12 8:13 ` Anton Farygin ` (4 more replies) 1 sibling, 5 replies; 79+ messages in thread From: Anton V. Boyarshinov @ 2021-01-12 7:55 UTC (permalink / raw) To: Michael Shigorin; +Cc: ALT Linux Team development discussions В Mon, 11 Jan 2021 15:30:20 +0300 Michael Shigorin <mike@altlinux.org> пишет: > Поддерживаю предложение rider@ насчёт взвода test-only > для следующей сборки при достижении FAILED/EPERM. Только сейчас тестер, администратор репозитория или владелец acl может выдать approve на задание и отправить его в репозиторий, а в таком случае не сможет, так как переключать статус может только владелец задания (и это логично). ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] hazardous girar builder 2021-01-12 7:55 ` Anton V. Boyarshinov @ 2021-01-12 8:13 ` Anton Farygin 2021-01-12 8:26 ` Anton V. Boyarshinov ` (3 subsequent siblings) 4 siblings, 0 replies; 79+ messages in thread From: Anton Farygin @ 2021-01-12 8:13 UTC (permalink / raw) To: devel On 12.01.2021 10:55, Anton V. Boyarshinov wrote: > В Mon, 11 Jan 2021 15:30:20 +0300 > Michael Shigorin <mike@altlinux.org> пишет: > >> Поддерживаю предложение rider@ насчёт взвода test-only >> для следующей сборки при достижении FAILED/EPERM. > Только сейчас тестер, администратор репозитория или владелец acl может > выдать approve на задание и отправить его в репозиторий, а в таком > случае не сможет, так как переключать статус может только владелец > задания (и это логично). Очень верное замечание. Спасибо, Антон. Видимо, кому-то придётся этот момент с --test-only и --commit как-то более подробно описать в документации. ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] hazardous girar builder 2021-01-12 7:55 ` Anton V. Boyarshinov 2021-01-12 8:13 ` Anton Farygin @ 2021-01-12 8:26 ` Anton V. Boyarshinov 2021-01-12 9:10 ` Anton Farygin 2021-01-12 11:10 ` Alexey V. Vissarionov ` (2 subsequent siblings) 4 siblings, 1 reply; 79+ messages in thread From: Anton V. Boyarshinov @ 2021-01-12 8:26 UTC (permalink / raw) To: Michael Shigorin; +Cc: ALT Linux Team development discussions В Tue, 12 Jan 2021 10:55:17 +0300 "Anton V. Boyarshinov" <boyarsh@altlinux.org> пишет: > В Mon, 11 Jan 2021 15:30:20 +0300 > Michael Shigorin <mike@altlinux.org> пишет: > > > Поддерживаю предложение rider@ насчёт взвода test-only > > для следующей сборки при достижении FAILED/EPERM. > > Только сейчас тестер, администратор репозитория или владелец acl может > выдать approve на задание и отправить его в репозиторий, а в таком > случае не сможет, так как переключать статус может только владелец > задания (и это логично). Раскрою последние слова про "логично". Статус test-only говорит о том, что данное задание с точки зрения АВТОРА не предназначено для попадания в репозиторий или не готово к попаданию в репозиторий. Именно с точки зрения автора задания. Это мнение автора не имеет никакого отношения к проверкам acl, непроходимости из за необходимости пересобрать ещё какие-то пакеты и вообще к "мнению" сборочницы. Отсутствие статуса test-only говорит о том, что автор хочет, чтоб это задание попало в репозиторий. Совершенно непонятно почему эта точка зрения автора, зафиксированная в отсутствии статуса test-only должна автоматически меняться по какой-либо причине, кроме изменения этой самой точки зрения автора, которое он всегда может выразить, перезапустив задание с флагом --test-only. ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] hazardous girar builder 2021-01-12 8:26 ` Anton V. Boyarshinov @ 2021-01-12 9:10 ` Anton Farygin 2021-01-12 10:10 ` Anton V. Boyarshinov 0 siblings, 1 reply; 79+ messages in thread From: Anton Farygin @ 2021-01-12 9:10 UTC (permalink / raw) To: devel On 12.01.2021 11:26, Anton V. Boyarshinov wrote: > Совершенно непонятно почему эта точка зрения автора, зафиксированная в > отсутствии статуса test-only должна автоматически меняться по > какой-либо причине, кроме изменения этой самой точки зрения автора, > которое он всегда может выразить, перезапустив задание с флагом > --test-only. Тут есть такой нюанс - сейчас для всех новых заданий есть умолчание - test-only. А вот если я меняю задания (добавляю подзадание, например), то статус с --commit на --test-only не сбрасывается, хотя в данном случае логично было бы отменить --commit, т.к. задание ещё не готово для прохождения в репозиторий. Но это никак не коррелируется с изначальным топиком, конечно. ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] hazardous girar builder 2021-01-12 9:10 ` Anton Farygin @ 2021-01-12 10:10 ` Anton V. Boyarshinov 0 siblings, 0 replies; 79+ messages in thread From: Anton V. Boyarshinov @ 2021-01-12 10:10 UTC (permalink / raw) To: Anton Farygin; +Cc: ALT Linux Team development discussions В Tue, 12 Jan 2021 12:10:17 +0300 Anton Farygin <rider@basealt.ru> пишет: > А вот если я меняю задания (добавляю подзадание, например), то статус с > --commit на --test-only не сбрасывается, хотя в данном случае логично > было бы отменить --commit, т.к. задание ещё не готово для прохождения в > репозиторий. Мне так не кажется. Собственно об этом я и написал выше. Отсутствие флага test-only свидетельствует о том, что я, как автор хочу, чтоб это задание попало в репозиторий как только сборочница с этим согласится. Добавление/удаление/изменение подзаданий на это моё мнение не влияет. У сборочницы свои критерии готовности задания, у автора -- свои, не надо их смешивать. Собственно, если наличие/отсутствие test-only рассматривать как выражение воли автора (а, на мой взляд, его именно так и надо рассматривать), то на его наличие/отсутствие не должно влиять ничего, кроме воли автора задания, которую он может выразить используя интерфейс сборочницы. Сборочница выставляет статусы done/failed/eperm и так далее, автор убирает выставленный по умолчанию флаг test-only или возвращает его обратно. На мой взгляд, эти флаги и статусы не должны быть связаны вообще никак. ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] hazardous girar builder 2021-01-12 7:55 ` Anton V. Boyarshinov 2021-01-12 8:13 ` Anton Farygin 2021-01-12 8:26 ` Anton V. Boyarshinov @ 2021-01-12 11:10 ` Alexey V. Vissarionov 2021-01-12 12:53 ` Arseny Maslennikov 2021-01-12 14:12 ` Arseny Maslennikov 4 siblings, 0 replies; 79+ messages in thread From: Alexey V. Vissarionov @ 2021-01-12 11:10 UTC (permalink / raw) To: ALT Linux Team development discussions On 2021-01-12 10:55:17 +0300, Anton V. Boyarshinov wrote: >> Поддерживаю предложение rider@ насчёт взвода test-only >> для следующей сборки при достижении FAILED/EPERM. > Только сейчас тестер, администратор репозитория или > владелец acl может выдать approve на задание и отправить > его в репозиторий, а в таком случае не сможет, так как > переключать статус может только владелец задания (и это > логично). И это неправильно. Параметр "--commit" должен обозначать "отправить в репу" и ничего больше, а test-only должно быть свойством итерации, а не задания. То есть, когда мейнтейнер создает сборочное задание, оно может либо просто не собраться (в этом случае все совсем просто и понятно), либо собраться до состояния "готово к отправке в репу". Все, сборка на этом завершена - у нас есть готовые пакеты. Но выполнение задания продолжается. Задание с собранными пакетами, в свою очередь, может 1. либо упереться в ACL и остановиться на EPERM, 2. либо упереться в отсутствие "--commit", 3. либо обработать параметр "--commit" и уехать в репу. Да, очередность проверок важна! В первом случае его может пропихнуть кто-то, указанный в ACL. Во втором - создатель (и, пожалуй, кто угодно из ACL). А в третьем, очевидно, и пихать ничего не надо. -- Alexey V. Vissarionov gremlin ПРИ altlinux ТЧК org; +vii-cmiii-ccxxix-lxxix-xlii GPG: 0D92F19E1C0DC36E27F61A29CD17E2B43D879005 @ hkp://keys.gnupg.net ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] hazardous girar builder 2021-01-12 7:55 ` Anton V. Boyarshinov ` (2 preceding siblings ...) 2021-01-12 11:10 ` Alexey V. Vissarionov @ 2021-01-12 12:53 ` Arseny Maslennikov 2021-01-12 13:18 ` Alexey V. Vissarionov 2021-01-12 18:10 ` [devel] hazardous girar builder Anton V. Boyarshinov 2021-01-12 14:12 ` Arseny Maslennikov 4 siblings, 2 replies; 79+ messages in thread From: Arseny Maslennikov @ 2021-01-12 12:53 UTC (permalink / raw) To: ALT Linux Team development discussions; +Cc: Michael Shigorin [-- Attachment #1: Type: text/plain, Size: 1341 bytes --] On Tue, Jan 12, 2021 at 10:55:17AM +0300, Anton V. Boyarshinov wrote: > В Mon, 11 Jan 2021 15:30:20 +0300 > Michael Shigorin <mike@altlinux.org> пишет: > > > Поддерживаю предложение rider@ насчёт взвода test-only > > для следующей сборки при достижении FAILED/EPERM. > > Только сейчас тестер, администратор репозитория или владелец acl может > выдать approve на задание и отправить его в репозиторий, а в таком > случае не сможет, так как переключать статус может только владелец > задания (и это логично). Прямо-таки отправить, _вопреки_ воле владельца/автора задания? Это что-то новенькое. Разве мнение тестера, администратора сборочницы или другого одобрителя не является лишь рядовой галкой в списке этих мнений, и для совершения коммита в репозиторий не необходимо, чтобы все эти галки были булево истинными? [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] hazardous girar builder 2021-01-12 12:53 ` Arseny Maslennikov @ 2021-01-12 13:18 ` Alexey V. Vissarionov 2021-01-12 14:10 ` Arseny Maslennikov ` (2 more replies) 2021-01-12 18:10 ` [devel] hazardous girar builder Anton V. Boyarshinov 1 sibling, 3 replies; 79+ messages in thread From: Alexey V. Vissarionov @ 2021-01-12 13:18 UTC (permalink / raw) To: ALT Linux Team development discussions On 2021-01-12 15:53:16 +0300, Arseny Maslennikov wrote: >>> Поддерживаю предложение rider@ насчёт взвода test-only >>> для следующей сборки при достижении FAILED/EPERM. >> Только сейчас тестер, администратор репозитория или владелец >> acl может выдать approve на задание и отправить его в >> репозиторий, а в таком случае не сможет, так как переключать >> статус может только владелец задания (и это логично). > Прямо-таки отправить, _вопреки_ воле владельца/автора > задания? Это что-то новенькое. Не вопреки воле, а по результатам тестирования. > Разве мнение тестера, администратора сборочницы или другого > одобрителя не является лишь рядовой галкой в списке этих > мнений, и для совершения коммита в репозиторий не необходимо, > чтобы все эти галки были булево истинными? Я в соседнем сообщении расписал чуть более логичный вариант workflow, нежели то, что сейчас реализовано у нас. Напомню, там параметр "--commit" определяет свойство итерации, а не задания, а для успешно собранного задания (с готовыми пакетами) предусмотрены три варианта: (1) уперлись в ACL, нужен аппрув, а для этого нужно тестирование; (2) уперлись в отсутствие параметра "--commit", нужно тестирование; (3) все в порядке, выполняем commit, пакеты уезжают в репу. 1 и 2 варианты объединяет то, что пакеты на _этой_ итерации не отправляются в репу автоматически. Но как только их кто-то зааппрувил - не вижу причин, почему бы им не попасть в репу. -- Alexey V. Vissarionov gremlin ПРИ altlinux ТЧК org; +vii-cmiii-ccxxix-lxxix-xlii GPG: 0D92F19E1C0DC36E27F61A29CD17E2B43D879005 @ hkp://keys.gnupg.net ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] hazardous girar builder 2021-01-12 13:18 ` Alexey V. Vissarionov @ 2021-01-12 14:10 ` Arseny Maslennikov 2021-01-12 19:06 ` Leonid Krivoshein 2 siblings, 0 replies; 79+ messages in thread From: Arseny Maslennikov @ 2021-01-12 14:10 UTC (permalink / raw) To: ALT Linux Team development discussions [-- Attachment #1: Type: text/plain, Size: 3263 bytes --] On Tue, Jan 12, 2021 at 04:18:15PM +0300, Alexey V. Vissarionov wrote: > On 2021-01-12 15:53:16 +0300, Arseny Maslennikov wrote: > > >>> Поддерживаю предложение rider@ насчёт взвода test-only > >>> для следующей сборки при достижении FAILED/EPERM. > >> Только сейчас тестер, администратор репозитория или владелец > >> acl может выдать approve на задание и отправить его в > >> репозиторий, а в таком случае не сможет, так как переключать > >> статус может только владелец задания (и это логично). > > Прямо-таки отправить, _вопреки_ воле владельца/автора > > задания? Это что-то новенькое. > > Не вопреки воле, а по результатам тестирования. > > > Разве мнение тестера, администратора сборочницы или другого > > одобрителя не является лишь рядовой галкой в списке этих > > мнений, и для совершения коммита в репозиторий не необходимо, > > чтобы все эти галки были булево истинными? > > Я в соседнем сообщении расписал чуть более логичный вариант См. также: https://lore.altlinux.org/devel/?q=%D1%81%D0%B2%D0%BE%D0%B9%D1%81%D1%82%D0%B2%D0%BE%D0%BC+%D0%B8%D1%82%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B8+d%3A..20210112 =) > workflow, нежели то, что сейчас реализовано у нас. Напомню, > там параметр "--commit" определяет свойство итерации, а не > задания, а для успешно собранного задания (с готовыми пакетами) > предусмотрены три варианта: (1) уперлись в ACL, нужен аппрув, > а для этого нужно тестирование; (2) уперлись в отсутствие > параметра "--commit", нужно тестирование; (3) все в порядке, > выполняем commit, пакеты уезжают в репу. Да, я читал и солидарен, с точностью до толкования слова "тестирование". Но, полагаю, там не будет серьёзных разногласий, ибо вижу два толкования: либо ещё один барьер на пути задания в репу, либо доработка автором. > > 1 и 2 варианты объединяет то, что пакеты на _этой_ итерации > не отправляются в репу автоматически. Но как только их кто-то > зааппрувил - не вижу причин, почему бы им не попасть в репу. В случае наличия на итерации --commit — да. [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] hazardous girar builder 2021-01-12 13:18 ` Alexey V. Vissarionov 2021-01-12 14:10 ` Arseny Maslennikov @ 2021-01-12 19:06 ` Leonid Krivoshein 2 siblings, 0 replies; 79+ messages in thread From: Leonid Krivoshein @ 2021-01-12 19:06 UTC (permalink / raw) To: devel 12.01.2021 16:18, Alexey V. Vissarionov пишет: > On 2021-01-12 15:53:16 +0300, Arseny Maslennikov wrote: > > >>> Поддерживаю предложение rider@ насчёт взвода test-only > >>> для следующей сборки при достижении FAILED/EPERM. > >> Только сейчас тестер, администратор репозитория или владелец > >> acl может выдать approve на задание и отправить его в > >> репозиторий, а в таком случае не сможет, так как переключать > >> статус может только владелец задания (и это логично). > > Прямо-таки отправить, _вопреки_ воле владельца/автора > > задания? Это что-то новенькое. > > Не вопреки воле, а по результатам тестирования. > > > Разве мнение тестера, администратора сборочницы или другого > > одобрителя не является лишь рядовой галкой в списке этих > > мнений, и для совершения коммита в репозиторий не необходимо, > > чтобы все эти галки были булево истинными? > > Я в соседнем сообщении расписал чуть более логичный вариант > workflow, нежели то, что сейчас реализовано у нас. Напомню, > там параметр "--commit" определяет свойство итерации, а не > задания, а для успешно собранного задания (с готовыми пакетами) > предусмотрены три варианта: (1) уперлись в ACL, нужен аппрув, > а для этого нужно тестирование; (2) уперлись в отсутствие > параметра "--commit", нужно тестирование; (3) все в порядке, > выполняем commit, пакеты уезжают в репу. > > 1 и 2 варианты объединяет то, что пакеты на _этой_ итерации > не отправляются в репу автоматически. Но как только их кто-то > зааппрувил - не вижу причин, почему бы им не попасть в репу. Если бы этот "атрибут" сборки можно было бы изменить в процессе сборки, пока итерация не закончилась, это было бы и весьма полезно, и дало бы ожидаемый эффект (конечно после прочтения мануала). Мне кажется, сейчас данный "атрибут" воспринимается многими как свойство итерации, а не задания, именно из-за отсутствия такой возможности. -- Best regards, Leonid Krivoshein. ^ permalink raw reply [flat|nested] 79+ messages in thread
[parent not found: <3518281610479823@mail.yandex.ru>]
* [devel] html email in devel@ (was: Re: hazardous girar builder) @ 2021-01-12 20:54 ` Arseny Maslennikov 2021-01-13 9:03 ` Alexey Gladkov 0 siblings, 2 replies; 79+ messages in thread From: Arseny Maslennikov @ 2021-01-12 20:54 UTC (permalink / raw) To: ALT Linux Team development discussions [-- Attachment #1: Type: text/plain, Size: 2596 bytes --] On Tue, Jan 12, 2021 at 10:31:45PM +0300, Aleksey Cheusov wrote: > <div>12.01.2021, 16:18, "Alexey V. Vissarionov" <gremlin@altlinux.org>:</div><blockquote><p>On 2021-01-12 15:53:16 +0300, Arseny Maslennikov wrote:<br /><br /> > Разве мнение тестера, администратора сборочницы или другого<br /> > одобрителя не является лишь рядовой галкой в списке этих<br /> > мнений, и для совершения коммита в репозиторий не необходимо,<br /> > чтобы все эти галки были булево истинными?<br /><br />Я в соседнем сообщении расписал чуть более логичный вариант<br />workflow, нежели то, что сейчас реализовано у нас. Напомню,<br />там параметр "--commit" определяет свойство итерации, а не<br />задания, а для успешно собранного задания (с готовыми пакетами)<br />предусмотрены три варианта: (1) уперлись в ACL, нужен аппрув,<br />а для этого нужно тестирование; (2) уперлись в отсутствие<br />параметра "--commit", нужно тестирование; (3) все в порядке,<br />выполняем commit, пакеты уезжают в репу.</p></blockquote><div>Здесь все просто прекрасно. Надо еще опцию --test-only убрать,</div><div>ибо это дефолтное поведение должно быть.</div><div>В результате система максимально упростится.</div><div> </div> Извините, ради всего святого, но у многих активных читателей devel@ и писателей в него же ваши письма из-под yamail выглядят примерно так, как процитировано :(, а в архивы рассылки эти письма вообще не попадают; читать их и ссылаться на них затруднительно. Я не знаю, как заставить yamail генерировать письма с текстом. Всякие нынешние почтовики умеют делать письма с обоими версиями сразу под разными MIME-типами. [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 79+ messages in thread
[parent not found: <2642371610526287@mail.yandex.ru>]
* Re: [devel] html email in devel@ (was: Re: hazardous girar builder) @ 2021-01-13 8:45 ` Alexey V. Vissarionov 2021-01-13 8:54 ` Arseny Maslennikov 2021-01-13 8:59 ` Andrey Savchenko 2 siblings, 0 replies; 79+ messages in thread From: Alexey V. Vissarionov @ 2021-01-13 8:45 UTC (permalink / raw) To: ALT Linux Team development discussions On 2021-01-13 11:26:55 +0300, Aleksey Cheusov wrote: > Извините, ради всего святого, но у многих активных читателей > devel@ и писателей в него же ваши письма из-под yamail выглядят > примерно так, как процитировано :(, а в архивы рассылки эти > письма вообще не попадают; читать их и ссылаться на них > затруднительно. > > Я не знаю, как заставить yamail генерировать письма с > текстом. Всякие нынешние почтовики умеют делать письма с > обоими версиями сразу под разными MIME-типами. > > Да он вроде как умеет. Это называется "старый редактор писем", > и я вроде как стараюсь, но, видимо, что-то идет не так, хотя > раньше работало :-( Дайте знать, что с этим письмом. То же самое: text/html, base64, utf-8, 4.5K Самое неприятное при этом - то, что совершенно невозможно понять, где чья цитата. Для листа это, мягко говоря, очень плохо, так как создает бардак. Да и вообще писать в HTML - свинство. -- Alexey V. Vissarionov gremlin ПРИ altlinux ТЧК org; +vii-cmiii-ccxxix-lxxix-xlii GPG: 0D92F19E1C0DC36E27F61A29CD17E2B43D879005 @ hkp://keys.gnupg.net ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] html email in devel@ (was: Re: hazardous girar builder) 2021-01-13 8:45 ` Alexey V. Vissarionov @ 2021-01-13 8:54 ` Arseny Maslennikov 2021-01-13 8:59 ` Andrey Savchenko 2 siblings, 0 replies; 79+ messages in thread From: Arseny Maslennikov @ 2021-01-13 8:54 UTC (permalink / raw) To: ALT Linux Team development discussions [-- Attachment #1: Type: text/plain, Size: 3980 bytes --] On Wed, Jan 13, 2021 at 11:26:55AM +0300, Aleksey Cheusov wrote: > <div>12.01.2021, 23:54, "Arseny Maslennikov" <<a href="mailto:arseny@altlinux.org" rel="noopener noreferrer">arseny@altlinux.org</a>>:</div><blockquote><p>On Tue, Jan 12, 2021 at 10:31:45PM +0300, Aleksey Cheusov wrote:</p><blockquote> <div>12.01.2021, 16:18, "Alexey V. Vissarionov" &<a href="mailto:lt;gremlin@altlinux.org" rel="noopener noreferrer">lt;gremlin@altlinux.org</a>&gt;:</div><blockquote><p>On 2021-01-12 15:53:16 +0300, Arseny Maslennikov wrote:<br /><br /> &gt; Разве мнение тестера, администратора сборочницы или другого<br /> &gt; одобрителя не является лишь рядовой галкой в списке этих<br /> &gt; мнений, и для совершения коммита в репозиторий не необходимо,<br /> &gt; чтобы все эти галки были булево истинными?<br /><br />Я в соседнем сообщении расписал чуть более логичный вариант<br />workflow, нежели то, что сейчас реализовано у нас. Напомню,<br />там параметр "--commit" определяет свойство итерации, а не<br />задания, а для успешно собранного задания (с готовыми пакетами)<br />предусмотрены три варианта: (1) уперлись в ACL, нужен аппрув,<br />а для этого нужно тестирование; (2) уперлись в отсутствие<br />параметра "--commit", нужно тестирование; (3) все в порядке,<br />выполняем commit, пакеты уезжают в репу.</p></blockquote><div>Здесь все просто прекрасно. Надо еще опцию --test-only убрать,</div><div>ибо это дефолтное поведение должно быть.</div><div>В результате система максимально упростится.</div><div> </div></blockquote><p><br />Извините, ради всего святого, но у многих активных читателей devel@ и<br />писателей в него же ваши письма из-под yamail выглядят примерно так, как<br />процитировано :(, а в архивы рассылки эти письма вообще не попадают; читать<br />их и ссылаться на них затруднительно.<br /><br />Я не знаю, как заставить yamail генерировать письма с текстом. Всякие<br />нынешние почтовики умеют делать письма с обоими версиями сразу под<br />разными MIME-типами.</p></blockquote><div>Да он вроде как умеет. Это называется "старый редактор писем", и я вроде как стараюсь,</div><div>но, видимо, что-то идет не так, хотя раньше работало :-( Дайте знать, что с этим письмом.</div><div> </div> Вот так примерно 👆. Мне, бывает, часто пишут какие-то люди, у них тоже X-Mailer: Yamail (yandex.ru), и у них тоже те же проблемы, и они об этом не подозревают. А потом человек, допустим, приходит на работу, где у него Thunderbird какой-нибудь, и пишет письмо с текстовой версией. [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] html email in devel@ (was: Re: hazardous girar builder) 2021-01-13 8:45 ` Alexey V. Vissarionov 2021-01-13 8:54 ` Arseny Maslennikov @ 2021-01-13 8:59 ` Andrey Savchenko 2021-01-13 9:18 ` Arseny Maslennikov ` (2 more replies) 2 siblings, 3 replies; 79+ messages in thread From: Andrey Savchenko @ 2021-01-13 8:59 UTC (permalink / raw) To: ALT Linux Team development discussions [-- Attachment #1: Type: text/plain, Size: 1784 bytes --] On Wed, 13 Jan 2021 11:26:55 +0300 Aleksey Cheusov wrote: > On Tue, 12 Jan 2021 23:54:22 +0300 Arseny Maslennikov wrote: > > Извините, ради всего святого, но у многих активных читателей devel@ и > > писателей в него же ваши письма из-под yamail выглядят примерно так, как > > процитировано :(, У кого «у многих»? Даже mutt умеет отображать html-письма. Я сам не люблю html-письма и не пишу их, но слишком много людей их пишет и необходимость иметь возможность их читать — это реальность нашей жизни. > > а в архивы рассылки эти письма вообще не попадают; читать > > их и ссылаться на них затруднительно. По-моему, это проблема архивов, следует исправить архиватор. > > Я не знаю, как заставить yamail генерировать письма с текстом. Всякие > > нынешние почтовики умеют делать письма с обоими версиями сразу под > > разными MIME-типами. > Да он вроде как умеет. Это называется "старый редактор писем", и я вроде как стараюсь, > но, видимо, что-то идет не так, хотя раньше работало :-( Дайте знать, что с этим письмом. Это письмо тоже html. Best regards, Andrew Savchenko [-- Attachment #2: Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] html email in devel@ (was: Re: hazardous girar builder) 2021-01-13 8:59 ` Andrey Savchenko @ 2021-01-13 9:18 ` Arseny Maslennikov 2021-01-13 9:30 ` Vladimir D. Seleznev 2021-01-13 9:21 ` Alexey Gladkov 2021-01-13 9:27 ` Vladimir D. Seleznev 2 siblings, 1 reply; 79+ messages in thread From: Arseny Maslennikov @ 2021-01-13 9:18 UTC (permalink / raw) To: ALT Linux Team development discussions [-- Attachment #1: Type: text/plain, Size: 1011 bytes --] On Wed, Jan 13, 2021 at 11:59:03AM +0300, Andrey Savchenko wrote: > > > а в архивы рассылки эти письма вообще не попадают; читать > > > их и ссылаться на них затруднительно. > > По-моему, это проблема архивов, следует исправить архиватор. На всякий случай внесу уточнение: -ы, их два, и тот, что появился раньше, практически бесполезен, в отличие от исключительно (если даже не универсально) полезного того, что появился в конце прошлого года. Меня бы, кстати, этот вариант тоже устроил — я бы брал Message-ID, дописывал бы к нему https://lore.altlinux.org/devel/?q= и читал бы единственное письмо в выдаче. [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] html email in devel@ (was: Re: hazardous girar builder) 2021-01-13 9:18 ` Arseny Maslennikov @ 2021-01-13 9:30 ` Vladimir D. Seleznev 2021-01-13 9:37 ` Alexey Gladkov 2021-01-13 9:48 ` Arseny Maslennikov 0 siblings, 2 replies; 79+ messages in thread From: Vladimir D. Seleznev @ 2021-01-13 9:30 UTC (permalink / raw) To: ALT Linux Team development discussions On Wed, Jan 13, 2021 at 12:18:02PM +0300, Arseny Maslennikov wrote: > On Wed, Jan 13, 2021 at 11:59:03AM +0300, Andrey Savchenko wrote: > > > > а в архивы рассылки эти письма вообще не попадают; читать > > > > их и ссылаться на них затруднительно. > > > > По-моему, это проблема архивов, следует исправить архиватор. > > На всякий случай внесу уточнение: -ы, их два, и тот, что появился > раньше, практически бесполезен, в отличие от исключительно (если даже > не универсально) полезного того, что появился в конце прошлого года. Вот пользовался всё это время архивом, и тут узнал, что он, оказывается, практически бесполезен. > Меня бы, кстати, этот вариант тоже устроил — я бы брал Message-ID, > дописывал бы к нему https://lore.altlinux.org/devel/?q= и читал бы > единственное письмо в выдаче. -- WBR, Vladimir D. Seleznev ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] html email in devel@ (was: Re: hazardous girar builder) 2021-01-13 9:30 ` Vladimir D. Seleznev @ 2021-01-13 9:37 ` Alexey Gladkov 2021-01-13 9:48 ` Arseny Maslennikov 1 sibling, 0 replies; 79+ messages in thread From: Alexey Gladkov @ 2021-01-13 9:37 UTC (permalink / raw) To: ALT Linux Team development discussions On Wed, Jan 13, 2021 at 12:30:57PM +0300, Vladimir D. Seleznev wrote: > On Wed, Jan 13, 2021 at 12:18:02PM +0300, Arseny Maslennikov wrote: > > On Wed, Jan 13, 2021 at 11:59:03AM +0300, Andrey Savchenko wrote: > > > > > а в архивы рассылки эти письма вообще не попадают; читать > > > > > их и ссылаться на них затруднительно. > > > > > > По-моему, это проблема архивов, следует исправить архиватор. > > > > На всякий случай внесу уточнение: -ы, их два, и тот, что появился > > раньше, практически бесполезен, в отличие от исключительно (если даже > > не универсально) полезного того, что появился в конце прошлого года. > > Вот пользовался всё это время архивом, и тут узнал, что он, оказывается, > практически бесполезен. Некоторые письма даже mailman не может стерпеть: https://lists.altlinux.org/pipermail/devel/2021-January/213364.html -- Rgrds, legion ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] html email in devel@ (was: Re: hazardous girar builder) 2021-01-13 9:30 ` Vladimir D. Seleznev 2021-01-13 9:37 ` Alexey Gladkov @ 2021-01-13 9:48 ` Arseny Maslennikov 1 sibling, 0 replies; 79+ messages in thread From: Arseny Maslennikov @ 2021-01-13 9:48 UTC (permalink / raw) To: ALT Linux Team development discussions [-- Attachment #1: Type: text/plain, Size: 1635 bytes --] On Wed, Jan 13, 2021 at 12:30:57PM +0300, Vladimir D. Seleznev wrote: > On Wed, Jan 13, 2021 at 12:18:02PM +0300, Arseny Maslennikov wrote: > > On Wed, Jan 13, 2021 at 11:59:03AM +0300, Andrey Savchenko wrote: > > > > > а в архивы рассылки эти письма вообще не попадают; читать > > > > > их и ссылаться на них затруднительно. > > > > > > По-моему, это проблема архивов, следует исправить архиватор. > > > > На всякий случай внесу уточнение: -ы, их два, и тот, что появился > > раньше, практически бесполезен, в отличие от исключительно (если даже > > не универсально) полезного того, что появился в конце прошлого года. > > Вот пользовался всё это время архивом, и тут узнал, что он, оказывается, > практически бесполезен. Всё это время к использованию того архива подталкивала его единственность и безблагодатность. Какое счастье, что сейчас есть lore. > > > Меня бы, кстати, этот вариант тоже устроил — я бы брал Message-ID, > > дописывал бы к нему https://lore.altlinux.org/devel/?q= и читал бы > > единственное письмо в выдаче. > [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] html email in devel@ (was: Re: hazardous girar builder) 2021-01-13 8:59 ` Andrey Savchenko 2021-01-13 9:18 ` Arseny Maslennikov @ 2021-01-13 9:21 ` Alexey Gladkov 2021-01-13 10:00 ` Andrey Savchenko 2021-01-13 9:27 ` Vladimir D. Seleznev 2 siblings, 1 reply; 79+ messages in thread From: Alexey Gladkov @ 2021-01-13 9:21 UTC (permalink / raw) To: ALT Linux Team development discussions [-- Attachment #1: Type: text/plain, Size: 1423 bytes --] On Wed, Jan 13, 2021 at 11:59:03AM +0300, Andrey Savchenko wrote: > On Wed, 13 Jan 2021 11:26:55 +0300 Aleksey Cheusov wrote: > > On Tue, 12 Jan 2021 23:54:22 +0300 Arseny Maslennikov wrote: > > > Извините, ради всего святого, но у многих активных читателей devel@ и > > > писателей в него же ваши письма из-под yamail выглядят примерно так, как > > > процитировано :(, > > У кого «у многих»? Даже mutt умеет отображать html-письма. > > Я сам не люблю html-письма и не пишу их, но слишком много людей их > пишет и необходимость иметь возможность их читать — это реальность > нашей жизни. > > > > а в архивы рассылки эти письма вообще не попадают; читать > > > их и ссылаться на них затруднительно. > > По-моему, это проблема архивов, следует исправить архиватор. Напишите адекватный конвертор html-письма в текст ? Не elinks -dump, а нормальный, который уровни цитирования отделит. -- Rgrds, legion [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 195 bytes --] ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] html email in devel@ (was: Re: hazardous girar builder) 2021-01-13 9:21 ` Alexey Gladkov @ 2021-01-13 10:00 ` Andrey Savchenko 2021-01-13 10:10 ` Alexey Gladkov 2021-01-13 12:49 ` Dmitry V. Levin 0 siblings, 2 replies; 79+ messages in thread From: Andrey Savchenko @ 2021-01-13 10:00 UTC (permalink / raw) To: ALT Linux Team development discussions [-- Attachment #1: Type: text/plain, Size: 1882 bytes --] On Wed, 13 Jan 2021 10:21:17 +0100 Alexey Gladkov wrote: > On Wed, Jan 13, 2021 at 11:59:03AM +0300, Andrey Savchenko wrote: > > On Wed, 13 Jan 2021 11:26:55 +0300 Aleksey Cheusov wrote: > > > On Tue, 12 Jan 2021 23:54:22 +0300 Arseny Maslennikov wrote: > > > > Извините, ради всего святого, но у многих активных читателей devel@ и > > > > писателей в него же ваши письма из-под yamail выглядят примерно так, как > > > > процитировано :(, > > > > У кого «у многих»? Даже mutt умеет отображать html-письма. > > > > Я сам не люблю html-письма и не пишу их, но слишком много людей их > > пишет и необходимость иметь возможность их читать — это реальность > > нашей жизни. > > > > > > а в архивы рассылки эти письма вообще не попадают; читать > > > > их и ссылаться на них затруднительно. > > > > По-моему, это проблема архивов, следует исправить архиватор. > > Напишите адекватный конвертор html-письма в текст ? Не elinks -dump, а > нормальный, который уровни цитирования отделит. Лучшее — враг хорошего: elinks -dump (или w3m -dump) отделит уровни цитирования пробелами. Это, безусловно, не очень хорошо, но сохранит письмо читаемым, что на порядки лучше отсутствия письма вовсе. Best regards, Andrew Savchenko [-- Attachment #2: Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] html email in devel@ (was: Re: hazardous girar builder) 2021-01-13 10:00 ` Andrey Savchenko @ 2021-01-13 10:10 ` Alexey Gladkov 2021-01-13 10:47 ` Andrey Savchenko 2021-01-13 12:49 ` Dmitry V. Levin 1 sibling, 1 reply; 79+ messages in thread From: Alexey Gladkov @ 2021-01-13 10:10 UTC (permalink / raw) To: ALT Linux Team development discussions [-- Attachment #1: Type: text/plain, Size: 1216 bytes --] On Wed, Jan 13, 2021 at 01:00:50PM +0300, Andrey Savchenko wrote: > > > По-моему, это проблема архивов, следует исправить архиватор. > > > > Напишите адекватный конвертор html-письма в текст ? Не elinks -dump, а > > нормальный, который уровни цитирования отделит. > > Лучшее — враг хорошего: elinks -dump (или w3m -dump) отделит уровни > цитирования пробелами. Это, безусловно, не очень хорошо, но > сохранит письмо читаемым, что на порядки лучше отсутствия письма > вовсе. Мне сложно с вами согласиться, как человеку использующему mutt и elinks для конвертации html-писем. Я не буду тащить такие хаки в синхронизатор lore. Я скорее соглашусь с автором public-inbox и такие письма не будут присутствовать в архиве вообще. -- Rgrds, legion [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 195 bytes --] ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] html email in devel@ (was: Re: hazardous girar builder) 2021-01-13 10:10 ` Alexey Gladkov @ 2021-01-13 10:47 ` Andrey Savchenko 2021-01-13 11:48 ` Alexey Gladkov 0 siblings, 1 reply; 79+ messages in thread From: Andrey Savchenko @ 2021-01-13 10:47 UTC (permalink / raw) To: ALT Linux Team development discussions [-- Attachment #1: Type: text/plain, Size: 1497 bytes --] On Wed, 13 Jan 2021 11:10:29 +0100 Alexey Gladkov wrote: > On Wed, Jan 13, 2021 at 01:00:50PM +0300, Andrey Savchenko wrote: > > > > По-моему, это проблема архивов, следует исправить архиватор. > > > > > > Напишите адекватный конвертор html-письма в текст ? Не elinks -dump, а > > > нормальный, который уровни цитирования отделит. > > > > Лучшее — враг хорошего: elinks -dump (или w3m -dump) отделит уровни > > цитирования пробелами. Это, безусловно, не очень хорошо, но > > сохранит письмо читаемым, что на порядки лучше отсутствия письма > > вовсе. > > Мне сложно с вами согласиться, как человеку использующему mutt и elinks > для конвертации html-писем. Я не буду тащить такие хаки в синхронизатор > lore. Я скорее соглашусь с автором public-inbox и такие письма не будут > присутствовать в архиве вообще. Это Ваше право, но тогда ценность подобного архива помножается на значение, очень близкое к нулю. Best regards, Andrew Savchenko [-- Attachment #2: Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] html email in devel@ (was: Re: hazardous girar builder) 2021-01-13 10:47 ` Andrey Savchenko @ 2021-01-13 11:48 ` Alexey Gladkov 0 siblings, 0 replies; 79+ messages in thread From: Alexey Gladkov @ 2021-01-13 11:48 UTC (permalink / raw) To: ALT Linux Team development discussions [-- Attachment #1: Type: text/plain, Size: 2219 bytes --] On Wed, Jan 13, 2021 at 01:47:28PM +0300, Andrey Savchenko wrote: > > > > Напишите адекватный конвертор html-письма в текст ? Не elinks -dump, а > > > > нормальный, который уровни цитирования отделит. > > > > > > Лучшее — враг хорошего: elinks -dump (или w3m -dump) отделит уровни > > > цитирования пробелами. Это, безусловно, не очень хорошо, но > > > сохранит письмо читаемым, что на порядки лучше отсутствия письма > > > вовсе. > > > > Мне сложно с вами согласиться, как человеку использующему mutt и elinks > > для конвертации html-писем. Я не буду тащить такие хаки в синхронизатор > > lore. Я скорее соглашусь с автором public-inbox и такие письма не будут > > присутствовать в архиве вообще. > > Это Ваше право, но тогда ценность подобного архива помножается на > значение, очень близкое к нулю. У меня нет цели добавить в архив все письма любой ценой. Я также считаю, дискриминацию html-only писем вполне оправданным шагом поскольку такие письма это не уважение к другим подписчикам. Насчёт ценности: Для меня достаточно, что я могу найти, например, ваше письмо [1] и весь тред. Поэтому для меня ценность такого архива достаточно высока. Другие же подписчики вольны сами определять полезность архива. Архив не обязан всем нравиться. [1] https://lore.altlinux.org/devel/20210113134728.3d799e3d308506f2c9d57809@altlinux.org/ -- Rgrds, legion [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 195 bytes --] ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] html email in devel@ (was: Re: hazardous girar builder) 2021-01-13 10:00 ` Andrey Savchenko 2021-01-13 10:10 ` Alexey Gladkov @ 2021-01-13 12:49 ` Dmitry V. Levin 1 sibling, 0 replies; 79+ messages in thread From: Dmitry V. Levin @ 2021-01-13 12:49 UTC (permalink / raw) To: devel On Wed, Jan 13, 2021 at 01:00:50PM +0300, Andrey Savchenko wrote: > On Wed, 13 Jan 2021 10:21:17 +0100 Alexey Gladkov wrote: > > On Wed, Jan 13, 2021 at 11:59:03AM +0300, Andrey Savchenko wrote: > > > On Wed, 13 Jan 2021 11:26:55 +0300 Aleksey Cheusov wrote: > > > > On Tue, 12 Jan 2021 23:54:22 +0300 Arseny Maslennikov wrote: > > > > > Извините, ради всего святого, но у многих активных читателей devel@ и > > > > > писателей в него же ваши письма из-под yamail выглядят примерно так, как > > > > > процитировано :(, > > > > > > У кого «у многих»? Даже mutt умеет отображать html-письма. > > > > > > Я сам не люблю html-письма и не пишу их, но слишком много людей их > > > пишет и необходимость иметь возможность их читать — это реальность > > > нашей жизни. > > > > > > > > а в архивы рассылки эти письма вообще не попадают; читать > > > > > их и ссылаться на них затруднительно. > > > > > > По-моему, это проблема архивов, следует исправить архиватор. > > > > Напишите адекватный конвертор html-письма в текст ? Не elinks -dump, а > > нормальный, который уровни цитирования отделит. > > Лучшее — враг хорошего: elinks -dump (или w3m -dump) отделит уровни > цитирования пробелами. Это, безусловно, не очень хорошо, но > сохранит письмо читаемым, что на порядки лучше отсутствия письма > вовсе. Эти уровни цитирования пробелами делают письмо практически неотвечаемым. Я даже хотел было на одно письмо ответить, но когда нажал на кнопку list-reply и увидел результат, то отказался от этой идеи. -- ldv ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] html email in devel@ (was: Re: hazardous girar builder) 2021-01-13 8:59 ` Andrey Savchenko 2021-01-13 9:18 ` Arseny Maslennikov 2021-01-13 9:21 ` Alexey Gladkov @ 2021-01-13 9:27 ` Vladimir D. Seleznev 2021-01-13 9:55 ` Andrey Savchenko 2 siblings, 1 reply; 79+ messages in thread From: Vladimir D. Seleznev @ 2021-01-13 9:27 UTC (permalink / raw) To: ALT Linux Team development discussions On Wed, Jan 13, 2021 at 11:59:03AM +0300, Andrey Savchenko wrote: > On Wed, 13 Jan 2021 11:26:55 +0300 Aleksey Cheusov wrote: > > On Tue, 12 Jan 2021 23:54:22 +0300 Arseny Maslennikov wrote: > > > Извините, ради всего святого, но у многих активных читателей devel@ и > > > писателей в него же ваши письма из-под yamail выглядят примерно так, как > > > процитировано :(, > > У кого «у многих»? Даже mutt умеет отображать html-письма. Либо "как есть", либо через внешний рендер, привет RCE. -- WBR, Vladimir D. Seleznev ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] html email in devel@ (was: Re: hazardous girar builder) 2021-01-13 9:27 ` Vladimir D. Seleznev @ 2021-01-13 9:55 ` Andrey Savchenko 2021-01-13 10:14 ` Vladimir D. Seleznev 0 siblings, 1 reply; 79+ messages in thread From: Andrey Savchenko @ 2021-01-13 9:55 UTC (permalink / raw) To: ALT Linux Team development discussions [-- Attachment #1: Type: text/plain, Size: 1041 bytes --] On Wed, 13 Jan 2021 12:27:12 +0300 Vladimir D. Seleznev wrote: > On Wed, Jan 13, 2021 at 11:59:03AM +0300, Andrey Savchenko wrote: > > On Wed, 13 Jan 2021 11:26:55 +0300 Aleksey Cheusov wrote: > > > On Tue, 12 Jan 2021 23:54:22 +0300 Arseny Maslennikov wrote: > > > > Извините, ради всего святого, но у многих активных читателей devel@ и > > > > писателей в него же ваши письма из-под yamail выглядят примерно так, как > > > > процитировано :(, > > > > У кого «у многих»? Даже mutt умеет отображать html-письма. > > Либо "как есть", либо через внешний рендер, привет RCE. Ну вот 10-секундный поиск в сети даёт мне, что w3m очень легко туда прикручивается. Да, внешний рендер. И что? Работает же. Best regards, Andrew Savchenko [-- Attachment #2: Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] html email in devel@ (was: Re: hazardous girar builder) 2021-01-13 9:55 ` Andrey Savchenko @ 2021-01-13 10:14 ` Vladimir D. Seleznev 2021-01-13 10:49 ` Andrey Savchenko 0 siblings, 1 reply; 79+ messages in thread From: Vladimir D. Seleznev @ 2021-01-13 10:14 UTC (permalink / raw) To: ALT Linux Team development discussions On Wed, Jan 13, 2021 at 12:55:29PM +0300, Andrey Savchenko wrote: > On Wed, 13 Jan 2021 12:27:12 +0300 Vladimir D. Seleznev wrote: > > On Wed, Jan 13, 2021 at 11:59:03AM +0300, Andrey Savchenko wrote: > > > On Wed, 13 Jan 2021 11:26:55 +0300 Aleksey Cheusov wrote: > > > > On Tue, 12 Jan 2021 23:54:22 +0300 Arseny Maslennikov wrote: > > > > > Извините, ради всего святого, но у многих активных читателей devel@ и > > > > > писателей в него же ваши письма из-под yamail выглядят примерно так, как > > > > > процитировано :(, > > > > > > У кого «у многих»? Даже mutt умеет отображать html-письма. > > > > Либо "как есть", либо через внешний рендер, привет RCE. > > Ну вот 10-секундный поиск в сети даёт мне, что w3m очень легко > туда прикручивается. Да хоть elinks -dump > Да, внешний рендер. И что? Работает же. Увеличивается сложность системы. Я уже написал про RCE [1], grep crafted HTML, как подтверждение, что это не просто теоретическая возможность. Да, вероятность наткнуться на это, особенно в этом списке рассылки, практически нулевая, должно быть злое намерение участника, но ты же почту не только из листов получаешь. И ещё вопрос: сможешь ли ты понять, что был успешно атакован? [1] https://www.cvedetails.com/vulnerability-list/vendor_id-15995/product_id-35351/opec-1/W3m-Project-W3M.html -- WBR, Vladimir D. Seleznev ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] html email in devel@ (was: Re: hazardous girar builder) 2021-01-13 10:14 ` Vladimir D. Seleznev @ 2021-01-13 10:49 ` Andrey Savchenko 2021-01-13 10:59 ` [devel] [JT] fortunes-ALT (was: html email in devel@) Michael Shigorin 2021-01-13 12:45 ` [devel] html email in devel@ (was: Re: hazardous girar builder) Dmitry V. Levin 0 siblings, 2 replies; 79+ messages in thread From: Andrey Savchenko @ 2021-01-13 10:49 UTC (permalink / raw) To: ALT Linux Team development discussions [-- Attachment #1: Type: text/plain, Size: 2579 bytes --] On Wed, 13 Jan 2021 13:14:58 +0300 Vladimir D. Seleznev wrote: > On Wed, Jan 13, 2021 at 12:55:29PM +0300, Andrey Savchenko wrote: > > On Wed, 13 Jan 2021 12:27:12 +0300 Vladimir D. Seleznev wrote: > > > On Wed, Jan 13, 2021 at 11:59:03AM +0300, Andrey Savchenko wrote: > > > > On Wed, 13 Jan 2021 11:26:55 +0300 Aleksey Cheusov wrote: > > > > > On Tue, 12 Jan 2021 23:54:22 +0300 Arseny Maslennikov wrote: > > > > > > Извините, ради всего святого, но у многих активных читателей devel@ и > > > > > > писателей в него же ваши письма из-под yamail выглядят примерно так, как > > > > > > процитировано :(, > > > > > > > > У кого «у многих»? Даже mutt умеет отображать html-письма. > > > > > > Либо "как есть", либо через внешний рендер, привет RCE. > > > > Ну вот 10-секундный поиск в сети даёт мне, что w3m очень легко > > туда прикручивается. > > Да хоть elinks -dump > > > Да, внешний рендер. И что? Работает же. > > Увеличивается сложность системы. Я уже написал про RCE [1], grep crafted > HTML, как подтверждение, что это не просто теоретическая возможность. > Да, вероятность наткнуться на это, особенно в этом списке рассылки, > практически нулевая, должно быть злое намерение участника, но ты же > почту не только из листов получаешь. И ещё вопрос: сможешь ли ты понять, > что был успешно атакован? Там речь идёт о крахе приложения, даже возможность эксплойта не доказана, но и не опровергнута. Думаю, эта ситуация даже менее опасна, чем просмотр jpeg-картинки в браузере. Если хочется очень попараноить, можно читать почту в отдельном контейнере/оборудовании/бункере. > [1] https://www.cvedetails.com/vulnerability-list/vendor_id-15995/product_id-35351/opec-1/W3m-Project-W3M.html > Best regards, Andrew Savchenko [-- Attachment #2: Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 79+ messages in thread
* [devel] [JT] fortunes-ALT (was: html email in devel@) 2021-01-13 10:49 ` Andrey Savchenko @ 2021-01-13 10:59 ` Michael Shigorin 2021-01-13 12:45 ` [devel] html email in devel@ (was: Re: hazardous girar builder) Dmitry V. Levin 1 sibling, 0 replies; 79+ messages in thread From: Michael Shigorin @ 2021-01-13 10:59 UTC (permalink / raw) To: devel On Wed, Jan 13, 2021 at 01:49:59PM +0300, Andrey Savchenko wrote: > Если хочется очень попараноить, можно читать почту в отдельном > контейнере/оборудовании/бункере. Кстати, никто не хочет подхватить пакет fortunes-ALT? -- ---- WBR, Michael Shigorin / http://altlinux.org ------ http://opennet.ru / http://anna-news.info ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] html email in devel@ (was: Re: hazardous girar builder) 2021-01-13 10:49 ` Andrey Savchenko 2021-01-13 10:59 ` [devel] [JT] fortunes-ALT (was: html email in devel@) Michael Shigorin @ 2021-01-13 12:45 ` Dmitry V. Levin 2021-01-14 9:45 ` Alexey V. Vissarionov 1 sibling, 1 reply; 79+ messages in thread From: Dmitry V. Levin @ 2021-01-13 12:45 UTC (permalink / raw) To: devel On Wed, Jan 13, 2021 at 01:49:59PM +0300, Andrey Savchenko wrote: [...] > Если хочется очень попараноить, можно читать почту в отдельном > контейнере/оборудовании/бункере. Прошу прощения, неужели кто-то поступает иначе? -- ldv ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] html email in devel@ (was: Re: hazardous girar builder) 2021-01-13 12:45 ` [devel] html email in devel@ (was: Re: hazardous girar builder) Dmitry V. Levin @ 2021-01-14 9:45 ` Alexey V. Vissarionov 0 siblings, 0 replies; 79+ messages in thread From: Alexey V. Vissarionov @ 2021-01-14 9:45 UTC (permalink / raw) To: ALT Linux Team development discussions On 2021-01-13 15:45:38 +0300, Dmitry V. Levin wrote: >> Если хочется очень попараноить, можно читать почту в отдельном >> контейнере/оборудовании/бункере. > Прошу прощения, неужели кто-то поступает иначе? Эхехе, дядя Дима... далек ты от народа :-) Тут некоторые не то что ведрофонами, а уеб-мордами пользуются, вплоть до (тьфу!) гмыла. На этом фоне муть на десктопе - просто образец разумного подхода. -- Alexey V. Vissarionov gremlin ПРИ altlinux ТЧК org; +vii-cmiii-ccxxix-lxxix-xlii GPG: 0D92F19E1C0DC36E27F61A29CD17E2B43D879005 @ hkp://keys.gnupg.net ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] html email in devel@ (was: Re: hazardous girar builder) 2021-01-12 20:54 ` [devel] html email in devel@ (was: Re: hazardous girar builder) Arseny Maslennikov @ 2021-01-13 9:03 ` Alexey Gladkov 1 sibling, 0 replies; 79+ messages in thread From: Alexey Gladkov @ 2021-01-13 9:03 UTC (permalink / raw) To: ALT Linux Team development discussions [-- Attachment #1: Type: text/plain, Size: 1034 bytes --] On Tue, Jan 12, 2021 at 11:54:22PM +0300, Arseny Maslennikov wrote: > On Tue, Jan 12, 2021 at 10:31:45PM +0300, Aleksey Cheusov wrote: > > Извините, ради всего святого, но у многих активных читателей devel@ и > писателей в него же ваши письма из-под yamail выглядят примерно так, как > процитировано :(, а в архивы рассылки эти письма вообще не попадают; читать > их и ссылаться на них затруднительно. +1 В devel@ mailman никак не редактирует письма. Я могу попробовать включить filter_content в нём. В этом случае mailman будет преобразовывать части сообщения типа text/html в обычный текст (convert_html_to_plaintext). Правда, я не уверен в результате. -- Rgrds, legion [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 195 bytes --] ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] hazardous girar builder 2021-01-12 12:53 ` Arseny Maslennikov 2021-01-12 13:18 ` Alexey V. Vissarionov @ 2021-01-12 18:10 ` Anton V. Boyarshinov 2021-01-12 18:40 ` Dmitry V. Levin 1 sibling, 1 reply; 79+ messages in thread From: Anton V. Boyarshinov @ 2021-01-12 18:10 UTC (permalink / raw) To: Arseny Maslennikov Cc: ALT Linux Team development discussions, Michael Shigorin В Tue, 12 Jan 2021 15:53:16 +0300 Arseny Maslennikov <arseny@altlinux.org> пишет: > On Tue, Jan 12, 2021 at 10:55:17AM +0300, Anton V. Boyarshinov wrote: > > В Mon, 11 Jan 2021 15:30:20 +0300 > > Michael Shigorin <mike@altlinux.org> пишет: > > > > > Поддерживаю предложение rider@ насчёт взвода test-only > > > для следующей сборки при достижении FAILED/EPERM. > > > > Только сейчас тестер, администратор репозитория или владелец acl может > > выдать approve на задание и отправить его в репозиторий, а в таком > > случае не сможет, так как переключать статус может только владелец > > задания (и это логично). > > Прямо-таки отправить, _вопреки_ воле владельца/автора задания? Это > что-то новенькое. Нет, потому, что они могут сделать это только если автор проявил свою волю, сказав run --commit (то, что можно сделать своё задание из чужих коммитов и таки отправить его самостоятельно мы сейчас опустим) > Разве мнение тестера, администратора сборочницы или другого одобрителя > не является лишь рядовой галкой в списке этих мнений, и для совершения > коммита в репозиторий не необходимо, чтобы все эти галки были > булево истинными? Да, но тестеры тестируют только задания без флага test-only. Таким образом их галка является последней необходимой при всех остальных стоящих. Точно также и администратор репозитория может отправить в репозиторий только задание без test-only флага. Снять этот флаг может только автор задания и никто иной. ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] hazardous girar builder 2021-01-12 18:10 ` [devel] hazardous girar builder Anton V. Boyarshinov @ 2021-01-12 18:40 ` Dmitry V. Levin 2021-01-12 18:48 ` Anton V. Boyarshinov 0 siblings, 1 reply; 79+ messages in thread From: Dmitry V. Levin @ 2021-01-12 18:40 UTC (permalink / raw) To: ALT Linux Team development discussions On Tue, Jan 12, 2021 at 09:10:18PM +0300, Anton V. Boyarshinov wrote: [...] > Точно также и администратор репозитория может отправить в репозиторий > только задание без test-only флага. Снять этот флаг может только автор > задания и никто иной. Мы в теории можем это переиначить, если нам очень сильно захочется. А если не очень сильно захочется, то найдётся 100500 более важных дел. -- ldv ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] hazardous girar builder 2021-01-12 18:40 ` Dmitry V. Levin @ 2021-01-12 18:48 ` Anton V. Boyarshinov 0 siblings, 0 replies; 79+ messages in thread From: Anton V. Boyarshinov @ 2021-01-12 18:48 UTC (permalink / raw) To: Dmitry V. Levin; +Cc: ALT Linux Team development discussions В Tue, 12 Jan 2021 21:40:38 +0300 "Dmitry V. Levin" <ldv@altlinux.org> пишет: > > Точно также и администратор репозитория может отправить в репозиторий > > только задание без test-only флага. Снять этот флаг может только автор > > задания и никто иной. > > Мы в теории можем это переиначить, если нам очень сильно захочется. > А если не очень сильно захочется, то найдётся 100500 более важных дел. Конечно можем, только зачем? ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] hazardous girar builder 2021-01-12 7:55 ` Anton V. Boyarshinov ` (3 preceding siblings ...) 2021-01-12 12:53 ` Arseny Maslennikov @ 2021-01-12 14:12 ` Arseny Maslennikov 4 siblings, 0 replies; 79+ messages in thread From: Arseny Maslennikov @ 2021-01-12 14:12 UTC (permalink / raw) To: ALT Linux Team development discussions; +Cc: Michael Shigorin [-- Attachment #1: Type: text/plain, Size: 865 bytes --] On Tue, Jan 12, 2021 at 10:55:17AM +0300, Anton V. Boyarshinov wrote: > В Mon, 11 Jan 2021 15:30:20 +0300 > Michael Shigorin <mike@altlinux.org> пишет: > > > Поддерживаю предложение rider@ насчёт взвода test-only > > для следующей сборки при достижении FAILED/EPERM. > > Только сейчас тестер, администратор репозитория или владелец acl может > выдать approve на задание и отправить его в репозиторий, а в таком > случае не сможет, так как переключать статус может только владелец > задания (и это логично). Значит, цель та же, а воплощение может быть другим. [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] [#263468] EPERM (try 14) llvm-common.git=11.0.0-alt2 srpm=llvm11.0-11.0.0-alt2.src.rpm 2021-01-07 21:18 ` Arseny Maslennikov 2021-01-11 9:13 ` Konstantin Lepikhov @ 2021-01-11 16:09 ` Konstantin Lepikhov 2021-01-11 16:31 ` Michael Shigorin ` (2 more replies) 1 sibling, 3 replies; 79+ messages in thread From: Konstantin Lepikhov @ 2021-01-11 16:09 UTC (permalink / raw) To: devel Hi Arseny! On 01/08/2021, at 12:18:41 AM you wrote: > On Thu, Jan 07, 2021 at 09:52:20PM +0100, Konstantin Lepikhov wrote: > > Hi Arseny! > > > > On 01/07/2021, at 05:08:00 PM you wrote: > > > > > гитвеб показывает его по ссылке [3]. > > > > > .... > > > [3] http://git.altlinux.org/people/arseny/packages/llvm11.0.git?p=llvm11.0.git;a=blobdiff;f=llvm11.spec;h=64681a96e2520e90e7f4f3d74b5439e0ea8f2872;hp=659847bc56dab3889c89e5e779a6b5e5a9c08202;hb=f70dcfeb57560ad1e0e39cddc5318ad41c86902a;hpb=8986c2acdc8311f69a43a1661a849a2e12788de8 > > > > говорит 404 - Reading git-diff-tree failed > > > > Я бы все-таки хотел посмотреть на diff. > > > > УМВР. Может, мой почтовый клиент сломал ссылку или ваш не так показал? > > Прикладываю файлом. > diff --git a/llvm11.spec b/llvm11.spec > index 659847bc5..6ff57e544 100644 > --- a/llvm11.spec > +++ b/llvm11.spec > @@ -1,7 +1,26 @@ > -%global v_major 11.0 > -%global llvm_name llvm%v_major > -%global clang_name clang%v_major > -%global lld_name lld%v_major > +%define _unpackaged_files_terminate_build 1 > + > +%global v_major 11 > +%global v_majmin %v_major.0 > +%global v_full %v_majmin.0 > +%global rcsuffix %nil а так ли нужны все эти приседания с версиями и rc? У нас же не daily builds собираются. > +%global llvm_name llvm%v_majmin > +%global clang_name clang%v_majmin > +%global clangd_name clangd%v_majmin > +%global lld_name lld%v_majmin т.е. планируется собирать раздельные версии clang/llvm/lld? > + > +%global llvm_default_name llvm%_llvm_version > +%global clang_default_name clang%_llvm_version > +%global lld_default_name lld%_llvm_version > + > +%global llvm_prefix %_prefix/lib/llvm-%v_majmin > +%global llvm_bindir %llvm_prefix/bin > +%global llvm_libdir %llvm_prefix/%_lib > +%global llvm_includedir %llvm_prefix/include > +%global llvm_libexecdir %llvm_prefix/libexec > +%global llvm_datadir %llvm_prefix/share > +%global llvm_man1dir %llvm_datadir/man/man1 > +%global llvm_docdir %llvm_datadir/doc > > # Decrease debuginfo verbosity to reduce memory consumption during final library linking > %ifarch %ix86 %arm > @@ -11,6 +30,8 @@ > %define optflags_debug -g1 > %endif > > +%define hwasan_symbolize_arches x86_64 aarch64 > + > %def_disable tests > %ifarch x86_64 aarch64 > %def_without clang почему? without_clang используется только если у нас bootstrap. Иначе будет сборка без LTO. > @@ -18,44 +39,62 @@ > %def_without clang > %endif > > +%define tarversion %v_full%rcsuffix > + > Name: %llvm_name > -Version: 11.0.0 > -Release: alt1 > -Summary: The Low Level Virtual Machine > +Version: %v_full > +Release: alt2 > +Summary: The LLVM Compiler Infrastructure > > Group: Development/C > -License: NCSA > +License: Apache-2.0 with LLVM-exception > Url: http://llvm.org > -Source0: https://github.com/llvm/llvm-project/releases/download/llvmorg-%version/llvm-%version.src.tar.xz > -Source1: https://github.com/llvm/llvm-project/releases/download/llvmorg-%version/clang-%version.src.tar.xz > -Source2: https://github.com/llvm/llvm-project/releases/download/llvmorg-%version/lld-%version.src.tar.xz > -Source3: https://github.com/llvm/llvm-project/releases/download/llvmorg-%version/compiler-rt-%version.src.tar.xz > +Source0: https://github.com/llvm/llvm-project/releases/download/llvmorg-%tarversion/llvm-%tarversion.src.tar.xz > +Source1: https://github.com/llvm/llvm-project/releases/download/llvmorg-%tarversion/clang-%tarversion.src.tar.xz > +Source2: https://github.com/llvm/llvm-project/releases/download/llvmorg-%tarversion/clang-tools-extra-%tarversion.src.tar.xz > +Source3: https://github.com/llvm/llvm-project/releases/download/llvmorg-%tarversion/lld-%tarversion.src.tar.xz > +Source4: https://github.com/llvm/llvm-project/releases/download/llvmorg-%tarversion/compiler-rt-%tarversion.src.tar.xz > Patch: clang-alt-i586-fallback.patch > Patch1: clang-11-alt-triple.patch > +Patch2: 0001-alt-llvm-config-Ignore-wrappers-when-looking-for-current.patch > Patch3: llvm-alt-fix-linking.patch > Patch4: llvm-alt-triple.patch > Patch5: compiler-rt-9-alt-i586-arch.patch > Patch6: RH-0001-CMake-Split-static-library-exports-into-their-own-ex.patch > Patch7: clang-alt-aarch64-dynamic-linker-path.patch > +Patch8: clang-tools-extra-alt-gcc-0001-clangd-satisfy-ALT-gcc-s-Werror-return-type.patch > Patch9: lld-11-alt-mipsel-permit-textrels-by-default.patch > Patch10: llvm-10-alt-python3.patch > Patch14: llvm-10-alt-riscv64-config-guess.patch > +Patch15: llvm-cmake-resolve-symlinks-in-LLVMConfig.cmake.patch > +Patch16: clang-cmake-resolve-symlinks-in-ClangConfig.cmake.patch > + > +%if_with clang > +# https://bugs.altlinux.org/show_bug.cgi?id=34671 > +%set_verify_elf_method lint=skip > +%endif > > -# ThinLTO requires /proc/cpuinfo to exists so the same does llvm > +# ThinLTO requires /proc/cpuinfo to exist; so the same does llvm > BuildPreReq: /proc > > +# Obtain %%__python3 at prep stage. > +BuildRequires(pre): rpm-build-python > +BuildRequires(pre): rpm-build-python3 > +BuildRequires(pre): rpm-macros-llvm-common > + > BuildRequires(pre): cmake >= 3.4.3 > BuildRequires: rpm-build >= 4.0.4-alt112 libncursesw-devel > -BuildRequires: chrpath libstdc++-devel libffi-devel perl-Pod-Parser perl-devel > +BuildRequires: libstdc++-devel libffi-devel perl-Pod-Parser perl-devel > BuildRequires: python3-module-recommonmark zip zlib-devel binutils-devel ninja-build > %if_with clang > -BuildRequires: %clang_name %llvm_name-devel %lld_name > +BuildRequires: %clang_default_name %llvm_default_name-devel %lld_default_name > %else > BuildRequires: gcc-c++ > %endif > > -Provides: llvm = %EVR > -Obsoletes: llvm < %version > +%define requires_filesystem Requires: %name-filesystem = %EVR > +%requires_filesystem > +Requires: llvm >= %_llvm_version > > %description > LLVM is a compiler infrastructure designed for compile-time, link-time, > @@ -63,11 +102,19 @@ runtime, and idle-time optimization of programs from arbitrary > programming languages. The compiler infrastructure includes mirror sets > of programming tools as well as libraries with equivalent functionality. > > +%package filesystem > +Group: Development/Other > +Summary: Owns the installation prefix for LLVM > + > +%description filesystem > +This package owns the installation prefix for LLVM. It is designed to be > +pulled in by all non-empty LLVM packages. > + > %package devel > Group: Development/C > Summary: Libraries and header files for LLVM > -Provides: llvm-devel = %EVR > -Obsoletes: llvm-devel < %version > +%requires_filesystem > +Requires: llvm-devel >= %_llvm_version > Requires: %name = %EVR > > %description devel > @@ -77,8 +124,8 @@ native programs that use the LLVM infrastructure. > %package devel-static > Summary: Static libraries for LLVM > Group: Development/C > -Provides: llvm-devel-static = %EVR > -Obsoletes: llvm-devel-static < %version > +%requires_filesystem > +Requires: llvm-devel-static >= %_llvm_version > Requires: %name-devel = %EVR > > %description devel-static > @@ -88,26 +135,38 @@ native programs that use the LLVM infrastructure. > %package libs > Group: Development/C > Summary: LLVM shared libraries > +%requires_filesystem > > %description libs > -Shared libraries for the LLVM compiler infrastructure. > +This package contains shared libraries needed to develop new > +native programs that use LLVM. ? > > %package doc > Summary: Documentation for LLVM > Group: Documentation > BuildArch: noarch > -Provides: llvm-doc = %EVR > -Obsoletes: llvm-doc < %version > +%requires_filesystem > > %description doc > Documentation for the LLVM compiler infrastructure. > > +%package tools > +Summary: Various minor tools bundled with LLVM > +Group: Development/C > +%requires_filesystem > + > +%description tools > +This package contains various tools maintained as part of LLVM, including > +opt-viewer. > + > %package -n %clang_name > Summary: A C language family frontend for LLVM > Group: Development/C > +%requires_filesystem > +# clang uses various parts of GNU crt bundled with gcc. > +# Should they be packaged separately? > Requires: gcc > -Provides: clang = %EVR > -Obsoletes: clang < %version > +Requires: clang >= %_llvm_version > > %description -n %clang_name > clang: noun > @@ -122,15 +181,36 @@ as libraries and designed to be loosely-coupled and extendable. > %package -n %clang_name-libs > Group: Development/C > Summary: clang shared libraries > +%requires_filesystem > +Requires: %clang_name-libs-support = %EVR > > %description -n %clang_name-libs > Shared libraries for the clang compiler. > > +%package -n %clang_name-libs-support > +Group: Development/C > +Summary: Support for Clang's shared libraries > +%requires_filesystem > + > +%description -n %clang_name-libs-support > +The Clang's shared libraries implement compilers for C and C++, and thus have > +to bundle additional platform support headers and libraries for use within the > +compilation product. This package contains the platform support. > + > +%package -n %clang_name-libs-support-shared-runtimes > +Group: Development/C > +Summary: Shared runtimes for Clang's shared libraries > +%requires_filesystem > +Requires: %clang_name-libs-support = %EVR > + > +%description -n %clang_name-libs-support-shared-runtimes > +This package contains shared runtime libraries for Scudo and sanitizers. > + > %package -n %clang_name-devel > Summary: Header files for clang > Group: Development/C > -Provides: clang-devel = %EVR > -Obsoletes: clang-devel < %version > +%requires_filesystem > +Requires: clang-devel >= %_llvm_version > Requires: %clang_name = %EVR > > %description -n %clang_name-devel > @@ -139,8 +219,7 @@ This package contains header files for the Clang compiler. > %package -n %clang_name-devel-static > Summary: Static libraries for clang > Group: Development/C > -Provides: clang-devel-static = %EVR > -Obsoletes: clang-devel-static < %version > +%requires_filesystem > Requires: %clang_name-devel = %EVR > > %description -n %clang_name-devel-static > @@ -150,8 +229,7 @@ This package contains static libraries for the Clang compiler. > Summary: A source code analysis framework > Group: Development/C > BuildArch: noarch > -Provides: clang-analyzer = %EVR > -Obsoletes: clang-analyzer < %version > +%requires_filesystem > Requires: %clang_name = %EVR > > %description -n %clang_name-analyzer > @@ -160,21 +238,38 @@ framework and a standalone tool that finds bugs in C and Objective-C > programs. The standalone tool is invoked from the command-line, and is > intended to run in tandem with a build of a project or code base. > > +%package -n %clang_name-tools > +Summary: Various clang-based tools > +Group: Development/C > +%requires_filesystem > +Requires: %clang_name = %EVR > + > +%description -n %clang_name-tools > +This package contains various code analysis and manipulation tools based on > +libclang, including clang-format. > + > %package -n %clang_name-doc > Summary: Documentation for Clang > Group: Documentation > BuildArch: noarch > -Provides: clang-doc = %EVR > -Obsoletes: clang-doc < %version > +%requires_filesystem > > %description -n %clang_name-doc > Documentation for the Clang compiler front-end. > > +%package -n %clangd_name > +Summary: A clang-based language server > +Group: Development/C > +%requires_filesystem > + > +%description -n %clangd_name > +This package contains clangd, a Clang-based language server for C and C++. > + > %package -n %lld_name > Summary: LLD - The LLVM Linker > Group: Development/C > -Provides: lld = %EVR > -Obsoletes: lld < %version > +%requires_filesystem > +Requires: lld >= %_llvm_version > > %description -n %lld_name > LLD is a linker from the LLVM project. That is a drop-in replacement for system > @@ -184,8 +279,8 @@ useful for toolchain developers. > %package -n %lld_name-devel > Summary: Header files for LLD > Group: Development/C > -Provides: lld-devel = %EVR > -Obsoletes: lld-devel < %version > +%requires_filesystem > +Requires: lld-devel >= %_llvm_version > Requires: %lld_name = %EVR > > %description -n %lld_name-devel > @@ -195,35 +290,48 @@ This package contains header files for the LLD linker. > Summary: Documentation for LLD > Group: Documentation > BuildArch: noarch > -Provides: lld-doc = %EVR > -Obsoletes: lld-doc < %version > +%requires_filesystem > > %description -n %lld_name-doc > Documentation for the LLD linker. > > %prep > -%setup -n llvm-%version.src -a1 -a2 -a3 > +%setup -n llvm-%tarversion.src -a1 -a2 -a3 -a4 > for pkg in clang lld; do > - mv $pkg-%version.src tools/$pkg > + mv $pkg-%tarversion.src tools/$pkg > done > -mv compiler-rt-%version.src projects/compiler-rt > +mv clang-tools-extra-%tarversion.src tools/clang/tools/extra > +mv compiler-rt-%tarversion.src projects/compiler-rt > %patch -p1 -b .alt-i586-fallback > %patch1 -p1 -b .alt-triple > +%patch2 -p1 > +sed -i 's)"%%llvm_bindir")"%llvm_bindir")' lib/Support/Unix/Path.inc > %patch3 -p1 -b .alt-fix-linking > %patch4 -p1 -b .alt-triple > %patch5 -p1 -b .alt-i586-arch > %patch6 -p1 > %patch7 -p1 -b .alt-aarch64-dynamic-linker > +%patch8 -p1 > %patch9 -p1 -b .alt-mipsel-permit-textrels-by-default > %patch10 -p1 > %patch14 -p1 > +%patch15 -p2 > +%patch16 -p1 > + > +# Explicitly use python2 in hashbangs. > +# TODO: LLVM 12 and onward deprecate Python 2: > +# https://releases.llvm.org/11.0.0/docs/ReleaseNotes.html > +subst '/^#!.*python$/s|python$|python2|' $(grep -Rl '#!.*python$' *) > > %build > +%define _cmake_skip_rpath -DCMAKE_SKIP_RPATH:BOOL=OFF > %cmake -G Ninja \ > -DLLVM_PARALLEL_LINK_JOBS=1 \ > -DCMAKE_BUILD_TYPE=Release \ > + -DCMAKE_INSTALL_PREFIX=%llvm_prefix \ > + -DCMAKE_SKIP_INSTALL_RPATH:BOOL=OFF \ > -DBUILD_SHARED_LIBS:BOOL=OFF \ > - -DLLVM_TARGETS_TO_BUILD="host;AMDGPU;BPF;NVPTX;" \ > + -DLLVM_TARGETS_TO_BUILD="all" \ Почему нам нужны все TARGETS? > -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD='AVR' \ > -DLLVM_ENABLE_LIBCXX:BOOL=OFF \ > -DLLVM_ENABLE_ZLIB:BOOL=ON \ > @@ -287,13 +395,13 @@ ninja -vvv -j %__nprocs -C BUILD > > %install > pushd BUILD > -cmake -DCMAKE_INSTALL_PREFIX=%buildroot%prefix ../ > +cmake -DCMAKE_INSTALL_PREFIX=%buildroot%llvm_prefix ../ > sed -i 's|man\ tools/lld/docs/docs-lld-html|man|' build.ninja > sed -i '/^[[:space:]]*include.*tools\/lld\/docs\/cmake_install.cmake.*/d' tools/lld/cmake_install.cmake > popd > ninja -C BUILD install > > -# And prepare Clang documentation > +# Prepare Clang documentation. > rm -rf BUILD/clang-docs > mkdir -p BUILD/clang-docs > for f in LICENSE.TXT NOTES.txt README.txt; do > @@ -301,113 +409,295 @@ for f in LICENSE.TXT NOTES.txt README.txt; do > done > rm -rf tools/clang/docs/{doxygen*,Makefile*,*.graffle,tools} > > -install -m 0755 BUILD/%_lib/LLVMHello.so %buildroot%_libdir/ > -install -m 0755 BUILD/%_lib/BugpointPasses.so %buildroot%_libdir/ > -mkdir -p %buildroot%_docdir/lld > - > -file %buildroot%_bindir/* | awk -F: '$2~/ELF/{print $1}' | xargs -r chrpath -d > -file %buildroot%_libdir/*.so | awk -F: '$2~/ELF/{print $1}' | xargs -r chrpath -d > +install -m 0755 BUILD/%_lib/LLVMHello.so %buildroot%llvm_libdir/ > +install -m 0755 BUILD/%_lib/BugpointPasses.so %buildroot%llvm_libdir/ > +mkdir -p %buildroot%llvm_docdir/lld > > %ifarch %ix86 > -cd %buildroot%_libdir/clang/%version/lib/linux > +cd %buildroot%llvm_libdir/clang/%v_full/lib/linux > ls *-i[3-9]86* | while read f; do ln -s $f $(echo $f | sed 's|i[3-9]86|i386|') ; done > %endif > > +# The following files are not used by LLVM builds for Linux. > +rm -f %buildroot%llvm_bindir/argdumper > +rm -f %buildroot%llvm_datadir/clang/clang-format-bbedit.applescript > + > +# Install the clang bash completion. > +mkdir -p %buildroot%_datadir/bash-completion/completions > +ln -sr %buildroot%llvm_datadir/clang/bash-autocomplete.sh %buildroot%_datadir/bash-completion/completions/clang-%v_major > + > +# Symlink executables to %_bindir. > +mkdir -p %buildroot%_bindir > +for b in %buildroot%llvm_bindir/*; do > + bb="$(basename "$b")" > + echo "$bb" | grep -q -- '-%v_major$' && continue # if already appended > + ln -srv "$b" "%buildroot%_bindir/$bb-%v_major" > +done > +# Symlink man pages to the man dirs. > +for mand in %buildroot%llvm_datadir/man/man*; do > + mand_index="${mand##*/man}" > + for m in "$mand"/*.[1-9]*; do > + # Let's force compress the man page, then symlink it. > + # /usr/lib/llvm-11.0/share/man/manD/utilX.D.xz -> /usr/share/man/manD/utilX-11.D.xz > + # Otherwise, brp-alt(compress) keeps fucking us up. > + # It remakes the symlinks first, then compresses their targets, > + # severing the symlinks. > + /usr/lib/rpm/compress_files "$m" > + > + mb="$(basename "$m")" # e. g. llvm-ar.1.xz > + new_mb="${mb%%.[1-9]*}-%v_major.$mand_index" # e. g. llvm-ar-11.1.xz > + > + mkdir -p "%buildroot%_mandir/man$mand_index" > + ln -srv "$m" "%buildroot%_mandir/man$mand_index/$new_mb" > + done > +done > + > +# Symlink sonamed shared libraries in %llvm_prefix/%_libdir to %_libdir. > +mkdir -p %buildroot%_libdir > +find %buildroot%llvm_libdir/*.so* -type f | grep -E '^%buildroot%llvm_libdir/.*(%v_major)' | sort | tee %_tmppath/shared-objects \ > + | sed 's)%llvm_libdir)%_libdir)' > %_tmppath/shared-object-links > +paste %_tmppath/shared-objects %_tmppath/shared-object-links | while read object link; do > + ln -srv "$object" "$link" > +done > + > +# List all packaged binaries in this source package. > +find %buildroot%_bindir/*-%v_major > %_tmppath/PATH-executables > + > +# For paranoic reasons library packaging policy covers peculiar directory paths. > +# If there are $A.a and $A.so in %llvm_libdir/clang, they should not end up in the > +# same package (but can be co-installed on a system). > +# Let's list all the $A.so for which $A.a exists into a separate package. > +# We also consider i386-symlinks for iN86. > +find %buildroot%llvm_libdir/clang -type f,l -name '*.a' -or -name '*.so' | \ > + sed -r -n 's/^(\/.+)\.a$/\1/p; s/^(.+)\.so$/\1/p' | sort | uniq -d > %_tmppath/libclang-support-dupes > +sed < %_tmppath/libclang-support-dupes 's)^%buildroot)); s/$/.a/' > %_tmppath/libclang-support-static-runtimes > +sed < %_tmppath/libclang-support-dupes 's)^%buildroot)); s/$/.so/' > %_tmppath/libclang-support-shared-runtimes > +sed < %_tmppath/libclang-support-shared-runtimes 's/^/%%exclude /' > %_tmppath/dyn-files-libclang-support > +echo "Expelling likely redundant Clang shared runtimes:" && cat %_tmppath/dyn-files-libclang-support > + > %check > %if_enabled tests > -LD_LIBRARY_PATH=%buildroot%_libdir:$LD_LIBRARY_PATH > +LD_LIBRARY_PATH=%buildroot%llvm_libdir:$LD_LIBRARY_PATH > export LD_LIBRARY_PATH > ninja -C BUILD check-all || : > %endif > > +# Do not generate dependencies for clang-{format,rename} plugins. > +%add_findreq_skiplist %llvm_datadir/clang/* > + > +%files filesystem > +%dir %llvm_prefix > +%dir %llvm_bindir > +%dir %llvm_libdir > +%dir %llvm_includedir > +%dir %llvm_libexecdir > +%dir %llvm_datadir > +%dir %llvm_datadir/clang > +%dir %llvm_datadir/man > +%dir %llvm_man1dir > +%dir %llvm_docdir > + > %files > %doc CREDITS.TXT LICENSE.TXT README.txt > +%llvm_bindir/* > %_bindir/* > +%llvm_man1dir/* > %_man1dir/* %_man1dir/* - лишний > +%exclude %llvm_bindir/llvm-config* > %exclude %_bindir/llvm-config* > +%exclude %llvm_bindir/*clang* > %exclude %_bindir/*clang* > -%exclude %_bindir/c-index-test > +%exclude %llvm_bindir/*clangd* > +%exclude %_bindir/*clangd* > +%exclude %llvm_bindir/c-index-test > +%exclude %_bindir/c-index-test-%v_major > +%exclude %llvm_bindir/find-all-symbols > +%exclude %_bindir/find-all-symbols-%v_major > +%exclude %llvm_bindir/scan-* > %exclude %_bindir/scan-* > -%exclude %_man1dir/llvm-config.1.* > -%exclude %_man1dir/clang.1* > -%exclude %_man1dir/scan-build.1* > +%exclude %llvm_man1dir/llvm-config.1.* > +%exclude %_man1dir/llvm-config-%v_major.1.* > +%exclude %llvm_man1dir/clang.1* > +%exclude %_man1dir/clang-%v_major.1* > +%exclude %llvm_man1dir/scan-build.1* > +%exclude %_man1dir/scan-build-%v_major.1* > +%exclude %llvm_bindir/lld* > %exclude %_bindir/lld* > -%exclude %_bindir/ld*.lld > -%exclude %_bindir/wasm-ld > +%exclude %llvm_bindir/ld*.lld > +%exclude %_bindir/ld*.lld-%v_major > +%exclude %llvm_bindir/wasm-ld > +%exclude %_bindir/wasm-ld-%v_major > > %files libs > +%llvm_libdir/libLLVM-*.so > %_libdir/libLLVM-*.so > +%llvm_libdir/libLTO.so.* > %_libdir/libLTO.so.* > +%llvm_libdir/libRemarks.so.* > %_libdir/libRemarks.so.* > > +%files tools > +%llvm_datadir/opt-viewer > + > %files devel > -%_bindir/llvm-config > -%_man1dir/llvm-config.1.* > -%_includedir/llvm > -%_includedir/llvm-c > -%_libdir/libLLVM.so > -%_libdir/libLTO.so > -%_libdir/LLVMgold.so > -%_libdir/libRemarks.so > -%_libdir/LLVMHello.so > -%_libdir/BugpointPasses.so > -%_libdir/cmake/llvm > -%exclude %_libdir/cmake/llvm/LLVMStaticExports*.cmake > +%llvm_bindir/llvm-config > +%_bindir/llvm-config-%v_major > +%llvm_man1dir/llvm-config.1.* > +%_man1dir/llvm-config-%v_major.1.* > +%llvm_includedir/llvm > +%llvm_includedir/llvm-c > +%llvm_libdir/libLLVM.so > +%llvm_libdir/libLTO.so > +%llvm_libdir/LLVMgold.so > +%llvm_libdir/libRemarks.so > +%llvm_libdir/LLVMHello.so > +%llvm_libdir/BugpointPasses.so > +%dir %llvm_libdir/cmake > +%llvm_libdir/cmake/llvm > +%exclude %llvm_libdir/cmake/llvm/LLVMStaticExports.cmake > > %files devel-static > -%_libdir/*.a > -%exclude %_libdir/libclang*.a > -%_libdir/cmake/llvm/LLVMStaticExports*.cmake > +%llvm_libdir/*.a > +%exclude %llvm_libdir/libclang*.a > +%dir %llvm_libdir/cmake > +%dir %llvm_libdir/cmake/llvm > +%llvm_libdir/cmake/llvm/LLVMStaticExports.cmake > > %files -n %clang_name > %doc BUILD/clang-docs/* > -%_bindir/*clang* > -%_bindir/c-index-test > -%_man1dir/clang.1* > +%llvm_bindir/clang-%v_major > +%llvm_bindir/clang > +%_bindir/clang-%v_major > +%llvm_bindir/clang++ > +%_bindir/clang++-%v_major > +%llvm_bindir/clang-cl > +%_bindir/clang-cl-%v_major > +%llvm_bindir/clang-cpp > +%_bindir/clang-cpp-%v_major > +%llvm_man1dir/clang.1* > +%_man1dir/clang-%v_major.1* > +%exclude %llvm_bindir/clang-check* > +%exclude %_bindir/clang-check* > +%exclude %llvm_bindir/clang-extdef-mapping* > +%exclude %_bindir/clang-extdef-mapping* > +%exclude %llvm_bindir/clang-format* > +%exclude %_bindir/clang-format* > +%exclude %llvm_bindir/git-clang-format* > +%exclude %_bindir/git-clang-format* > +%exclude %llvm_bindir/clang-offload-* > +%exclude %_bindir/clang-offload-* > +%exclude %llvm_bindir/clang-refactor* > +%exclude %_bindir/clang-refactor* > +%exclude %llvm_bindir/clang-rename* > +%exclude %_bindir/clang-rename* > +%llvm_datadir/clang/bash-autocomplete.sh > +%_datadir/bash-completion/completions/clang* > > %files -n %clang_name-libs > -%_libdir/clang > +%llvm_libdir/libclang*.so.* > %_libdir/libclang*.so.* > > +%files -n %clang_name-libs-support -f %_tmppath/dyn-files-libclang-support > +%llvm_libdir/clang > +# clang-tools > +%ifarch %hwasan_symbolize_arches > +%exclude %llvm_libdir/clang/%v_full/bin/hwasan_symbolize > +%endif > + > +%files -n %clang_name-libs-support-shared-runtimes -f %_tmppath/libclang-support-shared-runtimes > + > %files -n %clang_name-devel > -%_includedir/clang > -%_includedir/clang-c > -%_libdir/libclang*.so > -%_libdir/cmake/clang > +%llvm_includedir/clang > +%llvm_includedir/clang-c > +%llvm_includedir/clang-tidy > +%llvm_libdir/libclang*.so > +%dir %llvm_libdir/cmake > +%llvm_libdir/cmake/clang > > %files -n %clang_name-devel-static > -%_libdir/libclang*.a > +%llvm_libdir/libclang*.a > > %files -n %clang_name-analyzer > -%_prefix/libexec/*-analyzer > -%_bindir/scan-build > -%_bindir/scan-view > -%_datadir/scan-build > -%_datadir/scan-view > -%_man1dir/scan-build.1* > +%llvm_prefix/libexec/*-analyzer > +%llvm_bindir/scan-build > +%_bindir/scan-build-%v_major > +%llvm_bindir/scan-view > +%_bindir/scan-view-%v_major > +%llvm_datadir/scan-build > +%llvm_datadir/scan-view > +%llvm_man1dir/scan-build.1* > +%_man1dir/scan-build-%v_major.1* > + > +%files -n %clang_name-tools > +%llvm_bindir/c-index-test > +%_bindir/c-index-test-%v_major > +%llvm_bindir/clang-* > +%_bindir/clang-* > +%exclude %llvm_bindir/clang-%v_major > +%exclude %llvm_bindir/clang > +%exclude %_bindir/*clang-%v_major > +%exclude %llvm_bindir/clang++ > +%exclude %_bindir/clang++-%v_major > +%exclude %llvm_bindir/clang-cl > +%exclude %_bindir/clang-cl-%v_major > +%exclude %llvm_bindir/clang-cpp > +%exclude %_bindir/clang-cpp-%v_major > +%llvm_bindir/find-all-symbols > +%_bindir/find-all-symbols-%v_major > +%llvm_datadir/clang > +%exclude %llvm_datadir/clang/bash-autocomplete.sh > +%ifarch %hwasan_symbolize_arches > +%llvm_libdir/clang/%v_full/bin/hwasan_symbolize > +%endif > + > +%files -n %clangd_name > +%llvm_bindir/clangd > +%_bindir/clangd-%v_major > > %files -n %lld_name > +%llvm_bindir/lld* > %_bindir/lld* > -%_bindir/ld*.lld > -%_bindir/wasm-ld > +%llvm_bindir/ld*.lld > +%_bindir/ld*.lld-%v_major > +%llvm_bindir/wasm-ld > +%_bindir/wasm-ld-%v_major > > %files -n %lld_name-devel > -%dir %_includedir/lld > -%_includedir/lld/* > -%_libdir/cmake/lld > +%dir %llvm_includedir/lld > +%llvm_includedir/lld/* > +%dir %llvm_libdir/cmake > +%llvm_libdir/cmake/lld > > %files doc > -%doc %_docdir/llvm > +%doc %llvm_docdir/llvm > > %files -n %clang_name-doc > -%doc %_docdir/clang > +%doc %llvm_docdir/clang > +%doc %llvm_docdir/clang-tools > > %files -n %lld_name-doc > -%doc %_docdir/lld > +%doc %llvm_docdir/lld > > %changelog > +* Fri Dec 11 2020 Arseny Maslennikov <arseny@altlinux.org> 11.0.0-alt2 > +- Installed to /usr/lib/llvm-11.0 to ensure peaceful co-existence with other > + LLVM versions. > + Numbered shared libraries in %llvm_prefix/%%_lib are symlinked to %%_libdir > + to properly generate library dependencies. > +- Moved clang-format and other clang-based tools to clang11.0-tools. > +- New LLVM subproject: clang-tools-extra. > + + 2 new packages: clang11.0-tools, clangd11.0 > +- Enabled all LLVM targets. > +- Moved C/C++ compiler support away from clang-libs to clang-libs-support. > +- Moved Clang .so runtimes (scudo and sanitizers) with available static variants > + to clang-libs-support-shared-runtimes to comply with sisyphus-check-static. > + > * Tue Oct 13 2020 Valery Inozemtsev <shrek@altlinux.ru> 11.0.0-alt1 > - 11.0.0 > +- Built with gcc. > + > +* Wed Aug 12 2020 Aleksei Nikiforov <darktemplar@altlinux.org> 10.0.1-alt2 > +- Applied upstream patch which should fix ppc64le-specific issue. > > * Tue Aug 11 2020 Valery Inozemtsev <shrek@altlinux.ru> 10.0.1-alt1 > - 10.0.1 > diff --git a/0001-alt-llvm-config-Ignore-wrappers-when-looking-for-current.patch b/0001-alt-llvm-config-Ignore-wrappers-when-looking-for-current.patch > new file mode 100644 > index 000000000..09493ea33 > --- /dev/null > +++ b/0001-alt-llvm-config-Ignore-wrappers-when-looking-for-current.patch > @@ -0,0 +1,39 @@ > +From febc3e5c7bb8502775add342c33c221af9e87a50 Mon Sep 17 00:00:00 2001 > +From: Arseny Maslennikov <arseny@altlinux.org> > +Date: Thu, 19 Nov 2020 11:39:51 +0300 > +Subject: [PATCH] llvm-config: Ignore wrappers when looking for current > + executable path > + > +In ALT, tools are installed into their own prefix and bindir, and the > +respective paths in /usr/bin are symlinked to a small wrapper program > +which can call different versions of the requested tool depending on its > +environment. > + > +When /proc/self/exe is not available, the executable is looked up in > +PATH, which usually includes /usr/bin and excludes /usr/lib/llvm-*/bin. > +We forgo the path to wrapper at /usr/bin/$tool and use > +/usr/lib/llvm-%v_majmin/bin/$tool instead. > +--- > + llvm/lib/Support/Unix/Path.inc | 6 ++++++ > + 1 file changed, 6 insertions(+) > + > +diff --git a/lib/Support/Unix/Path.inc b/lib/Support/Unix/Path.inc > +index d91b269cc..b409a8611 100644 > +--- a/lib/Support/Unix/Path.inc > ++++ b/lib/Support/Unix/Path.inc > +@@ -174,6 +174,12 @@ getprogpath(char ret[PATH_MAX], const char *bin) > + for (char *t = strtok_r(s, ":", &state); t != nullptr; > + t = strtok_r(nullptr, ":", &state)) { > + if (test_dir(ret, t, bin) == 0) { > ++ /* An ALT-specific exception: if found in /usr/bin, this is a wrapper > ++ * and the real binary is in /usr/lib/llvm-%v_majmin/bin. > ++ */ > ++ if (!strncmp(ret, "/usr/bin/llvm-alt-tool-wrapper", strlen("/usr/bin/llvm-alt-tool-wrapper"))) { > ++ snprintf(ret, PATH_MAX, "%s/%s", "%llvm_bindir", bin); > ++ } > + free(s); > + return ret; > + } > +-- > +2.25.4 > + > diff --git a/clang-cmake-resolve-symlinks-in-ClangConfig.cmake.patch b/clang-cmake-resolve-symlinks-in-ClangConfig.cmake.patch > new file mode 100644 > index 000000000..de165448b > --- /dev/null > +++ b/clang-cmake-resolve-symlinks-in-ClangConfig.cmake.patch > @@ -0,0 +1,30 @@ > +From c830d84bc802ca1e9219415a5784c4ad97a34819 Mon Sep 17 00:00:00 2001 > +From: Peter Wu <peter@lekensteyn.nl> > +Date: Fri, 4 May 2018 15:55:26 +0200 > +Subject: [PATCH] [clang] cmake: resolve symlinks in ClangConfig.cmake > + > +Ensure that symlinks such as /usr/lib/cmake/clang-X.Y (pointing to > +/usr/lib/llvm-X.Y/lib/cmake/llvm) are resolved. This ensures that > +CLANG_INSTALL_PREFIX ends up to be /usr/lib/llvm-X.Y instead of /usr. > + > +Partially addresses PR37128 > +--- > + cmake/modules/CMakeLists.txt | 4 ++-- > + 1 file changed, 2 insertions(+), 2 deletions(-) > + > +diff --git a/tools/clang/cmake/modules/CMakeLists.txt b/tools/clang/cmake/modules/CMakeLists.txt > +--- a/tools/clang/cmake/modules/CMakeLists.txt > ++++ b/tools/clang/cmake/modules/CMakeLists.txt > +@@ -30,10 +30,10 @@ set(CLANG_CONFIG_EXPORTS_FILE) > + # Generate ClangConfig.cmake for the install tree. > + set(CLANG_CONFIG_CODE " > + # Compute the installation prefix from this LLVMConfig.cmake file location. > +-get_filename_component(CLANG_INSTALL_PREFIX \"\${CMAKE_CURRENT_LIST_FILE}\" PATH)") > ++get_filename_component(CLANG_INSTALL_PREFIX \"\${CMAKE_CURRENT_LIST_FILE}\" REALPATH)") > + # Construct the proper number of get_filename_component(... PATH) > + # calls to compute the installation prefix. > +-string(REGEX REPLACE "/" ";" _count "${CLANG_INSTALL_PACKAGE_DIR}") > ++string(REGEX REPLACE "/" ";" _count "prefix/${CLANG_INSTALL_PACKAGE_DIR}") > + foreach(p ${_count}) > + set(CLANG_CONFIG_CODE "${CLANG_CONFIG_CODE} > + get_filename_component(CLANG_INSTALL_PREFIX \"\${CLANG_INSTALL_PREFIX}\" PATH)") > diff --git a/clang-tools-extra-alt-gcc-0001-clangd-satisfy-ALT-gcc-s-Werror-return-type.patch b/clang-tools-extra-alt-gcc-0001-clangd-satisfy-ALT-gcc-s-Werror-return-type.patch > new file mode 100644 > index 000000000..438ad35d6 > --- /dev/null > +++ b/clang-tools-extra-alt-gcc-0001-clangd-satisfy-ALT-gcc-s-Werror-return-type.patch > @@ -0,0 +1,29 @@ > +From 1035bddfb8612ef6ddb9d675a7d597ac502f15cc Mon Sep 17 00:00:00 2001 > +From: Arseny Maslennikov <arseny@altlinux.org> > +Date: Thu, 26 Nov 2020 22:16:58 +0300 > +Subject: [PATCH] clangd: satisfy ALT gcc's -Werror-return-type > + > +--- > + clang-tools-extra/clangd/CompileCommands.cpp | 6 ++++++ > + 1 file changed, 6 insertions(+) > + > +diff --git a/tools/clang/tools/extra/clangd/CompileCommands.cpp b/tools/clang/tools/extra/clangd/CompileCommands.cpp > +index 473122157..6353bb13a 100644 > +--- a/tools/clang/tools/extra/clangd/CompileCommands.cpp > ++++ b/tools/clang/tools/extra/clangd/CompileCommands.cpp > +@@ -270,6 +270,12 @@ std::pair<unsigned, unsigned> getArgCount(const llvm::opt::Option &Opt) { > + return {Rest, 0}; > + case Option::RemainingArgsJoinedClass: > + return {Rest, Rest}; > ++ /* Shut up ALT GCC! */ > ++ default: > ++ /* I guess, this control branch is intended to be unreachable thus disallowed, > ++ * and they say 0 means not allowed, so let's assume {0, 0} is not allowed. > ++ */ > ++ return {0, 0}; > + } > + } > + > +-- > +2.25.4 > + > diff --git a/llvm-10-alt-python3.patch b/llvm-10-alt-python3.patch > index 0b9d2be43..8c0e26d0a 100644 > --- a/llvm-10-alt-python3.patch > +++ b/llvm-10-alt-python3.patch > @@ -1,21 +1,21 @@ > ---- llvm-9.0.1.src/tools/clang/tools/clang-format/git-clang-format.alt 2020-02-13 07:43:29.545981388 +0000 > -+++ llvm-9.0.1.src/tools/clang/tools/clang-format/git-clang-format 2020-02-13 07:45:08.271273350 +0000 > +--- llvm-11.0.1.src/tools/clang/tools/clang-format/git-clang-format.alt 2020-02-13 07:43:29.545981388 +0000 > ++++ llvm-11.0.1.src/tools/clang/tools/clang-format/git-clang-format 2020-02-13 07:45:08.271273350 +0000 > @@ -1,4 +1,4 @@ > -#!/usr/bin/env python > +#!/usr/bin/env python3 > # > #===- git-clang-format - ClangFormat Git Integration ---------*- python -*--===# > # > ---- llvm-9.0.1.src/tools/clang/utils/hmaptool/hmaptool.alt 2020-02-13 07:44:21.103133843 +0000 > -+++ llvm-9.0.1.src/tools/clang/utils/hmaptool/hmaptool 2020-02-13 07:45:25.700324888 +0000 > +--- llvm-11.0.1.src/tools/clang/utils/hmaptool/hmaptool.alt 2020-02-13 07:44:21.103133843 +0000 > ++++ llvm-11.0.1.src/tools/clang/utils/hmaptool/hmaptool 2020-02-13 07:45:25.700324888 +0000 > @@ -1,4 +1,4 @@ > -#!/usr/bin/env python > +#!/usr/bin/env python3 > from __future__ import absolute_import, division, print_function > > import json > ---- llvm-9.0.1.src/tools/clang/tools/scan-view/bin/scan-view.alt 2019-12-11 19:15:30.000000000 +0000 > -+++ llvm-9.0.1.src/tools/clang/tools/scan-view/bin/scan-view 2020-02-13 11:15:19.089985347 +0000 > +--- llvm-11.0.1.src/tools/clang/tools/scan-view/bin/scan-view.alt 2019-12-11 19:15:30.000000000 +0000 > ++++ llvm-11.0.1.src/tools/clang/tools/scan-view/bin/scan-view 2020-02-13 11:15:19.089985347 +0000 > @@ -1,4 +1,4 @@ > -#!/usr/bin/env python > +#!/usr/bin/env python3 > @@ -30,11 +30,3 @@ > import os > import posixpath > import threading > ---- llvm-10.0.0.src/projects/compiler-rt/lib/hwasan/scripts/hwasan_symbolize.alt 2020-03-25 08:00:47.736222391 +0000 > -+++ llvm-10.0.0.src/projects/compiler-rt/lib/hwasan/scripts/hwasan_symbolize 2020-03-25 08:02:05.439101328 +0000 > -@@ -1,4 +1,4 @@ > --#!/usr/bin/env python > -+#!/usr/bin/env python3 > - #===- lib/hwasan/scripts/hwasan_symbolize ----------------------------------===# > - # > - # Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. > diff --git a/llvm-cmake-resolve-symlinks-in-LLVMConfig.cmake.patch b/llvm-cmake-resolve-symlinks-in-LLVMConfig.cmake.patch > new file mode 100644 > index 000000000..4e39a8ba8 > --- /dev/null > +++ b/llvm-cmake-resolve-symlinks-in-LLVMConfig.cmake.patch > @@ -0,0 +1,30 @@ > +From d0d969074f6e0f975ad53d21e7ce6c7b40cf2957 Mon Sep 17 00:00:00 2001 > +From: Peter Wu <peter@lekensteyn.nl> > +Date: Fri, 4 May 2018 15:43:06 +0200 > +Subject: [PATCH] [llvm] cmake: resolve symlinks in LLVMConfig.cmake > + > +Ensure that symlinks such as /usr/lib/llvm-X.Y/cmake (pointing to > +lib/cmake/llvm) are resolved. This ensures that LLVM_INSTALL_PREFIX > +becomes /usr/lib/llvm-X.Y instead of /usr. > + > +Partially addresses PR37128 > +--- > + cmake/modules/CMakeLists.txt | 4 ++-- > + 1 file changed, 2 insertions(+), 2 deletions(-) > + > +diff --git a/llvm/cmake/modules/CMakeLists.txt b/llvm/cmake/modules/CMakeLists.txt > +--- a/llvm/cmake/modules/CMakeLists.txt > ++++ b/llvm/cmake/modules/CMakeLists.txt > +@@ -88,10 +88,10 @@ file(COPY . > + # Generate LLVMConfig.cmake for the install tree. > + set(LLVM_CONFIG_CODE " > + # Compute the installation prefix from this LLVMConfig.cmake file location. > +-get_filename_component(LLVM_INSTALL_PREFIX \"\${CMAKE_CURRENT_LIST_FILE}\" PATH)") > ++get_filename_component(LLVM_INSTALL_PREFIX \"\${CMAKE_CURRENT_LIST_FILE}\" REALPATH)") > + # Construct the proper number of get_filename_component(... PATH) > + # calls to compute the installation prefix. > +-string(REGEX REPLACE "/" ";" _count "${LLVM_INSTALL_PACKAGE_DIR}") > ++string(REGEX REPLACE "/" ";" _count "prefix/${LLVM_INSTALL_PACKAGE_DIR}") > + foreach(p ${_count}) > + set(LLVM_CONFIG_CODE "${LLVM_CONFIG_CODE} > + get_filename_component(LLVM_INSTALL_PREFIX \"\${LLVM_INSTALL_PREFIX}\" PATH)") > diff --git a/llvm11.spec b/llvm11.spec > index 659847bc5..6ff57e544 100644 > --- a/llvm11.spec > +++ b/llvm11.spec > @@ -1,7 +1,26 @@ > -%global v_major 11.0 > -%global llvm_name llvm%v_major > -%global clang_name clang%v_major > -%global lld_name lld%v_major > +%define _unpackaged_files_terminate_build 1 > + > +%global v_major 11 > +%global v_majmin %v_major.0 > +%global v_full %v_majmin.0 > +%global rcsuffix %nil > +%global llvm_name llvm%v_majmin > +%global clang_name clang%v_majmin > +%global clangd_name clangd%v_majmin > +%global lld_name lld%v_majmin > + > +%global llvm_default_name llvm%_llvm_version > +%global clang_default_name clang%_llvm_version > +%global lld_default_name lld%_llvm_version > + > +%global llvm_prefix %_prefix/lib/llvm-%v_majmin > +%global llvm_bindir %llvm_prefix/bin > +%global llvm_libdir %llvm_prefix/%_lib > +%global llvm_includedir %llvm_prefix/include > +%global llvm_libexecdir %llvm_prefix/libexec > +%global llvm_datadir %llvm_prefix/share > +%global llvm_man1dir %llvm_datadir/man/man1 > +%global llvm_docdir %llvm_datadir/doc > > # Decrease debuginfo verbosity to reduce memory consumption during final library linking > %ifarch %ix86 %arm > @@ -11,6 +30,8 @@ > %define optflags_debug -g1 > %endif > > +%define hwasan_symbolize_arches x86_64 aarch64 > + > %def_disable tests > %ifarch x86_64 aarch64 > %def_without clang > @@ -18,44 +39,62 @@ > %def_without clang > %endif > > +%define tarversion %v_full%rcsuffix > + > Name: %llvm_name > -Version: 11.0.0 > -Release: alt1 > -Summary: The Low Level Virtual Machine > +Version: %v_full > +Release: alt2 > +Summary: The LLVM Compiler Infrastructure > > Group: Development/C > -License: NCSA > +License: Apache-2.0 with LLVM-exception > Url: http://llvm.org > -Source0: https://github.com/llvm/llvm-project/releases/download/llvmorg-%version/llvm-%version.src.tar.xz > -Source1: https://github.com/llvm/llvm-project/releases/download/llvmorg-%version/clang-%version.src.tar.xz > -Source2: https://github.com/llvm/llvm-project/releases/download/llvmorg-%version/lld-%version.src.tar.xz > -Source3: https://github.com/llvm/llvm-project/releases/download/llvmorg-%version/compiler-rt-%version.src.tar.xz > +Source0: https://github.com/llvm/llvm-project/releases/download/llvmorg-%tarversion/llvm-%tarversion.src.tar.xz > +Source1: https://github.com/llvm/llvm-project/releases/download/llvmorg-%tarversion/clang-%tarversion.src.tar.xz > +Source2: https://github.com/llvm/llvm-project/releases/download/llvmorg-%tarversion/clang-tools-extra-%tarversion.src.tar.xz > +Source3: https://github.com/llvm/llvm-project/releases/download/llvmorg-%tarversion/lld-%tarversion.src.tar.xz > +Source4: https://github.com/llvm/llvm-project/releases/download/llvmorg-%tarversion/compiler-rt-%tarversion.src.tar.xz > Patch: clang-alt-i586-fallback.patch > Patch1: clang-11-alt-triple.patch > +Patch2: 0001-alt-llvm-config-Ignore-wrappers-when-looking-for-current.patch > Patch3: llvm-alt-fix-linking.patch > Patch4: llvm-alt-triple.patch > Patch5: compiler-rt-9-alt-i586-arch.patch > Patch6: RH-0001-CMake-Split-static-library-exports-into-their-own-ex.patch > Patch7: clang-alt-aarch64-dynamic-linker-path.patch > +Patch8: clang-tools-extra-alt-gcc-0001-clangd-satisfy-ALT-gcc-s-Werror-return-type.patch > Patch9: lld-11-alt-mipsel-permit-textrels-by-default.patch > Patch10: llvm-10-alt-python3.patch > Patch14: llvm-10-alt-riscv64-config-guess.patch > +Patch15: llvm-cmake-resolve-symlinks-in-LLVMConfig.cmake.patch > +Patch16: clang-cmake-resolve-symlinks-in-ClangConfig.cmake.patch > + > +%if_with clang > +# https://bugs.altlinux.org/show_bug.cgi?id=34671 > +%set_verify_elf_method lint=skip > +%endif > > -# ThinLTO requires /proc/cpuinfo to exists so the same does llvm > +# ThinLTO requires /proc/cpuinfo to exist; so the same does llvm > BuildPreReq: /proc > > +# Obtain %%__python3 at prep stage. > +BuildRequires(pre): rpm-build-python > +BuildRequires(pre): rpm-build-python3 > +BuildRequires(pre): rpm-macros-llvm-common > + > BuildRequires(pre): cmake >= 3.4.3 > BuildRequires: rpm-build >= 4.0.4-alt112 libncursesw-devel > -BuildRequires: chrpath libstdc++-devel libffi-devel perl-Pod-Parser perl-devel > +BuildRequires: libstdc++-devel libffi-devel perl-Pod-Parser perl-devel > BuildRequires: python3-module-recommonmark zip zlib-devel binutils-devel ninja-build > %if_with clang > -BuildRequires: %clang_name %llvm_name-devel %lld_name > +BuildRequires: %clang_default_name %llvm_default_name-devel %lld_default_name > %else > BuildRequires: gcc-c++ > %endif > > -Provides: llvm = %EVR > -Obsoletes: llvm < %version > +%define requires_filesystem Requires: %name-filesystem = %EVR > +%requires_filesystem > +Requires: llvm >= %_llvm_version > > %description > LLVM is a compiler infrastructure designed for compile-time, link-time, > @@ -63,11 +102,19 @@ runtime, and idle-time optimization of programs from arbitrary > programming languages. The compiler infrastructure includes mirror sets > of programming tools as well as libraries with equivalent functionality. > > +%package filesystem > +Group: Development/Other > +Summary: Owns the installation prefix for LLVM > + > +%description filesystem > +This package owns the installation prefix for LLVM. It is designed to be > +pulled in by all non-empty LLVM packages. > + > %package devel > Group: Development/C > Summary: Libraries and header files for LLVM > -Provides: llvm-devel = %EVR > -Obsoletes: llvm-devel < %version > +%requires_filesystem > +Requires: llvm-devel >= %_llvm_version > Requires: %name = %EVR > > %description devel > @@ -77,8 +124,8 @@ native programs that use the LLVM infrastructure. > %package devel-static > Summary: Static libraries for LLVM > Group: Development/C > -Provides: llvm-devel-static = %EVR > -Obsoletes: llvm-devel-static < %version > +%requires_filesystem > +Requires: llvm-devel-static >= %_llvm_version > Requires: %name-devel = %EVR > > %description devel-static > @@ -88,26 +135,38 @@ native programs that use the LLVM infrastructure. > %package libs > Group: Development/C > Summary: LLVM shared libraries > +%requires_filesystem > > %description libs > -Shared libraries for the LLVM compiler infrastructure. > +This package contains shared libraries needed to develop new > +native programs that use LLVM. > > %package doc > Summary: Documentation for LLVM > Group: Documentation > BuildArch: noarch > -Provides: llvm-doc = %EVR > -Obsoletes: llvm-doc < %version > +%requires_filesystem > > %description doc > Documentation for the LLVM compiler infrastructure. > > +%package tools > +Summary: Various minor tools bundled with LLVM > +Group: Development/C > +%requires_filesystem > + > +%description tools > +This package contains various tools maintained as part of LLVM, including > +opt-viewer. > + > %package -n %clang_name > Summary: A C language family frontend for LLVM > Group: Development/C > +%requires_filesystem > +# clang uses various parts of GNU crt bundled with gcc. > +# Should they be packaged separately? > Requires: gcc > -Provides: clang = %EVR > -Obsoletes: clang < %version > +Requires: clang >= %_llvm_version > > %description -n %clang_name > clang: noun > @@ -122,15 +181,36 @@ as libraries and designed to be loosely-coupled and extendable. > %package -n %clang_name-libs > Group: Development/C > Summary: clang shared libraries > +%requires_filesystem > +Requires: %clang_name-libs-support = %EVR > > %description -n %clang_name-libs > Shared libraries for the clang compiler. > > +%package -n %clang_name-libs-support > +Group: Development/C > +Summary: Support for Clang's shared libraries > +%requires_filesystem > + > +%description -n %clang_name-libs-support > +The Clang's shared libraries implement compilers for C and C++, and thus have > +to bundle additional platform support headers and libraries for use within the > +compilation product. This package contains the platform support. > + > +%package -n %clang_name-libs-support-shared-runtimes > +Group: Development/C > +Summary: Shared runtimes for Clang's shared libraries > +%requires_filesystem > +Requires: %clang_name-libs-support = %EVR > + > +%description -n %clang_name-libs-support-shared-runtimes > +This package contains shared runtime libraries for Scudo and sanitizers. > + > %package -n %clang_name-devel > Summary: Header files for clang > Group: Development/C > -Provides: clang-devel = %EVR > -Obsoletes: clang-devel < %version > +%requires_filesystem > +Requires: clang-devel >= %_llvm_version > Requires: %clang_name = %EVR > > %description -n %clang_name-devel > @@ -139,8 +219,7 @@ This package contains header files for the Clang compiler. > %package -n %clang_name-devel-static > Summary: Static libraries for clang > Group: Development/C > -Provides: clang-devel-static = %EVR > -Obsoletes: clang-devel-static < %version > +%requires_filesystem > Requires: %clang_name-devel = %EVR > > %description -n %clang_name-devel-static > @@ -150,8 +229,7 @@ This package contains static libraries for the Clang compiler. > Summary: A source code analysis framework > Group: Development/C > BuildArch: noarch > -Provides: clang-analyzer = %EVR > -Obsoletes: clang-analyzer < %version > +%requires_filesystem > Requires: %clang_name = %EVR > > %description -n %clang_name-analyzer > @@ -160,21 +238,38 @@ framework and a standalone tool that finds bugs in C and Objective-C > programs. The standalone tool is invoked from the command-line, and is > intended to run in tandem with a build of a project or code base. > > +%package -n %clang_name-tools > +Summary: Various clang-based tools > +Group: Development/C > +%requires_filesystem > +Requires: %clang_name = %EVR > + > +%description -n %clang_name-tools > +This package contains various code analysis and manipulation tools based on > +libclang, including clang-format. > + > %package -n %clang_name-doc > Summary: Documentation for Clang > Group: Documentation > BuildArch: noarch > -Provides: clang-doc = %EVR > -Obsoletes: clang-doc < %version > +%requires_filesystem > > %description -n %clang_name-doc > Documentation for the Clang compiler front-end. > > +%package -n %clangd_name > +Summary: A clang-based language server > +Group: Development/C > +%requires_filesystem > + > +%description -n %clangd_name > +This package contains clangd, a Clang-based language server for C and C++. > + > %package -n %lld_name > Summary: LLD - The LLVM Linker > Group: Development/C > -Provides: lld = %EVR > -Obsoletes: lld < %version > +%requires_filesystem > +Requires: lld >= %_llvm_version > > %description -n %lld_name > LLD is a linker from the LLVM project. That is a drop-in replacement for system > @@ -184,8 +279,8 @@ useful for toolchain developers. > %package -n %lld_name-devel > Summary: Header files for LLD > Group: Development/C > -Provides: lld-devel = %EVR > -Obsoletes: lld-devel < %version > +%requires_filesystem > +Requires: lld-devel >= %_llvm_version > Requires: %lld_name = %EVR > > %description -n %lld_name-devel > @@ -195,35 +290,48 @@ This package contains header files for the LLD linker. > Summary: Documentation for LLD > Group: Documentation > BuildArch: noarch > -Provides: lld-doc = %EVR > -Obsoletes: lld-doc < %version > +%requires_filesystem > > %description -n %lld_name-doc > Documentation for the LLD linker. > > %prep > -%setup -n llvm-%version.src -a1 -a2 -a3 > +%setup -n llvm-%tarversion.src -a1 -a2 -a3 -a4 > for pkg in clang lld; do > - mv $pkg-%version.src tools/$pkg > + mv $pkg-%tarversion.src tools/$pkg > done > -mv compiler-rt-%version.src projects/compiler-rt > +mv clang-tools-extra-%tarversion.src tools/clang/tools/extra > +mv compiler-rt-%tarversion.src projects/compiler-rt > %patch -p1 -b .alt-i586-fallback > %patch1 -p1 -b .alt-triple > +%patch2 -p1 > +sed -i 's)"%%llvm_bindir")"%llvm_bindir")' lib/Support/Unix/Path.inc > %patch3 -p1 -b .alt-fix-linking > %patch4 -p1 -b .alt-triple > %patch5 -p1 -b .alt-i586-arch > %patch6 -p1 > %patch7 -p1 -b .alt-aarch64-dynamic-linker > +%patch8 -p1 > %patch9 -p1 -b .alt-mipsel-permit-textrels-by-default > %patch10 -p1 > %patch14 -p1 > +%patch15 -p2 > +%patch16 -p1 > + > +# Explicitly use python2 in hashbangs. > +# TODO: LLVM 12 and onward deprecate Python 2: > +# https://releases.llvm.org/11.0.0/docs/ReleaseNotes.html > +subst '/^#!.*python$/s|python$|python2|' $(grep -Rl '#!.*python$' *) > > %build > +%define _cmake_skip_rpath -DCMAKE_SKIP_RPATH:BOOL=OFF > %cmake -G Ninja \ > -DLLVM_PARALLEL_LINK_JOBS=1 \ > -DCMAKE_BUILD_TYPE=Release \ > + -DCMAKE_INSTALL_PREFIX=%llvm_prefix \ > + -DCMAKE_SKIP_INSTALL_RPATH:BOOL=OFF \ > -DBUILD_SHARED_LIBS:BOOL=OFF \ > - -DLLVM_TARGETS_TO_BUILD="host;AMDGPU;BPF;NVPTX;" \ > + -DLLVM_TARGETS_TO_BUILD="all" \ > -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD='AVR' \ > -DLLVM_ENABLE_LIBCXX:BOOL=OFF \ > -DLLVM_ENABLE_ZLIB:BOOL=ON \ > @@ -287,13 +395,13 @@ ninja -vvv -j %__nprocs -C BUILD > > %install > pushd BUILD > -cmake -DCMAKE_INSTALL_PREFIX=%buildroot%prefix ../ > +cmake -DCMAKE_INSTALL_PREFIX=%buildroot%llvm_prefix ../ > sed -i 's|man\ tools/lld/docs/docs-lld-html|man|' build.ninja > sed -i '/^[[:space:]]*include.*tools\/lld\/docs\/cmake_install.cmake.*/d' tools/lld/cmake_install.cmake > popd > ninja -C BUILD install > > -# And prepare Clang documentation > +# Prepare Clang documentation. > rm -rf BUILD/clang-docs > mkdir -p BUILD/clang-docs > for f in LICENSE.TXT NOTES.txt README.txt; do > @@ -301,113 +409,295 @@ for f in LICENSE.TXT NOTES.txt README.txt; do > done > rm -rf tools/clang/docs/{doxygen*,Makefile*,*.graffle,tools} > > -install -m 0755 BUILD/%_lib/LLVMHello.so %buildroot%_libdir/ > -install -m 0755 BUILD/%_lib/BugpointPasses.so %buildroot%_libdir/ > -mkdir -p %buildroot%_docdir/lld > - > -file %buildroot%_bindir/* | awk -F: '$2~/ELF/{print $1}' | xargs -r chrpath -d > -file %buildroot%_libdir/*.so | awk -F: '$2~/ELF/{print $1}' | xargs -r chrpath -d > +install -m 0755 BUILD/%_lib/LLVMHello.so %buildroot%llvm_libdir/ > +install -m 0755 BUILD/%_lib/BugpointPasses.so %buildroot%llvm_libdir/ > +mkdir -p %buildroot%llvm_docdir/lld > > %ifarch %ix86 > -cd %buildroot%_libdir/clang/%version/lib/linux > +cd %buildroot%llvm_libdir/clang/%v_full/lib/linux > ls *-i[3-9]86* | while read f; do ln -s $f $(echo $f | sed 's|i[3-9]86|i386|') ; done > %endif > > +# The following files are not used by LLVM builds for Linux. > +rm -f %buildroot%llvm_bindir/argdumper > +rm -f %buildroot%llvm_datadir/clang/clang-format-bbedit.applescript > + > +# Install the clang bash completion. > +mkdir -p %buildroot%_datadir/bash-completion/completions > +ln -sr %buildroot%llvm_datadir/clang/bash-autocomplete.sh %buildroot%_datadir/bash-completion/completions/clang-%v_major > + > +# Symlink executables to %_bindir. > +mkdir -p %buildroot%_bindir > +for b in %buildroot%llvm_bindir/*; do > + bb="$(basename "$b")" > + echo "$bb" | grep -q -- '-%v_major$' && continue # if already appended > + ln -srv "$b" "%buildroot%_bindir/$bb-%v_major" > +done > +# Symlink man pages to the man dirs. > +for mand in %buildroot%llvm_datadir/man/man*; do > + mand_index="${mand##*/man}" > + for m in "$mand"/*.[1-9]*; do > + # Let's force compress the man page, then symlink it. > + # /usr/lib/llvm-11.0/share/man/manD/utilX.D.xz -> /usr/share/man/manD/utilX-11.D.xz > + # Otherwise, brp-alt(compress) keeps fucking us up. > + # It remakes the symlinks first, then compresses their targets, > + # severing the symlinks. > + /usr/lib/rpm/compress_files "$m" > + > + mb="$(basename "$m")" # e. g. llvm-ar.1.xz > + new_mb="${mb%%.[1-9]*}-%v_major.$mand_index" # e. g. llvm-ar-11.1.xz > + > + mkdir -p "%buildroot%_mandir/man$mand_index" > + ln -srv "$m" "%buildroot%_mandir/man$mand_index/$new_mb" > + done > +done > + > +# Symlink sonamed shared libraries in %llvm_prefix/%_libdir to %_libdir. > +mkdir -p %buildroot%_libdir > +find %buildroot%llvm_libdir/*.so* -type f | grep -E '^%buildroot%llvm_libdir/.*(%v_major)' | sort | tee %_tmppath/shared-objects \ > + | sed 's)%llvm_libdir)%_libdir)' > %_tmppath/shared-object-links > +paste %_tmppath/shared-objects %_tmppath/shared-object-links | while read object link; do > + ln -srv "$object" "$link" > +done > + > +# List all packaged binaries in this source package. > +find %buildroot%_bindir/*-%v_major > %_tmppath/PATH-executables > + > +# For paranoic reasons library packaging policy covers peculiar directory paths. > +# If there are $A.a and $A.so in %llvm_libdir/clang, they should not end up in the > +# same package (but can be co-installed on a system). > +# Let's list all the $A.so for which $A.a exists into a separate package. > +# We also consider i386-symlinks for iN86. > +find %buildroot%llvm_libdir/clang -type f,l -name '*.a' -or -name '*.so' | \ > + sed -r -n 's/^(\/.+)\.a$/\1/p; s/^(.+)\.so$/\1/p' | sort | uniq -d > %_tmppath/libclang-support-dupes > +sed < %_tmppath/libclang-support-dupes 's)^%buildroot)); s/$/.a/' > %_tmppath/libclang-support-static-runtimes > +sed < %_tmppath/libclang-support-dupes 's)^%buildroot)); s/$/.so/' > %_tmppath/libclang-support-shared-runtimes > +sed < %_tmppath/libclang-support-shared-runtimes 's/^/%%exclude /' > %_tmppath/dyn-files-libclang-support > +echo "Expelling likely redundant Clang shared runtimes:" && cat %_tmppath/dyn-files-libclang-support > + > %check > %if_enabled tests > -LD_LIBRARY_PATH=%buildroot%_libdir:$LD_LIBRARY_PATH > +LD_LIBRARY_PATH=%buildroot%llvm_libdir:$LD_LIBRARY_PATH > export LD_LIBRARY_PATH > ninja -C BUILD check-all || : > %endif > > +# Do not generate dependencies for clang-{format,rename} plugins. > +%add_findreq_skiplist %llvm_datadir/clang/* > + > +%files filesystem > +%dir %llvm_prefix > +%dir %llvm_bindir > +%dir %llvm_libdir > +%dir %llvm_includedir > +%dir %llvm_libexecdir > +%dir %llvm_datadir > +%dir %llvm_datadir/clang > +%dir %llvm_datadir/man > +%dir %llvm_man1dir > +%dir %llvm_docdir > + > %files > %doc CREDITS.TXT LICENSE.TXT README.txt > +%llvm_bindir/* > %_bindir/* > +%llvm_man1dir/* > %_man1dir/* > +%exclude %llvm_bindir/llvm-config* > %exclude %_bindir/llvm-config* > +%exclude %llvm_bindir/*clang* > %exclude %_bindir/*clang* > -%exclude %_bindir/c-index-test > +%exclude %llvm_bindir/*clangd* > +%exclude %_bindir/*clangd* > +%exclude %llvm_bindir/c-index-test > +%exclude %_bindir/c-index-test-%v_major > +%exclude %llvm_bindir/find-all-symbols > +%exclude %_bindir/find-all-symbols-%v_major > +%exclude %llvm_bindir/scan-* > %exclude %_bindir/scan-* > -%exclude %_man1dir/llvm-config.1.* > -%exclude %_man1dir/clang.1* > -%exclude %_man1dir/scan-build.1* > +%exclude %llvm_man1dir/llvm-config.1.* > +%exclude %_man1dir/llvm-config-%v_major.1.* > +%exclude %llvm_man1dir/clang.1* > +%exclude %_man1dir/clang-%v_major.1* > +%exclude %llvm_man1dir/scan-build.1* > +%exclude %_man1dir/scan-build-%v_major.1* > +%exclude %llvm_bindir/lld* > %exclude %_bindir/lld* > -%exclude %_bindir/ld*.lld > -%exclude %_bindir/wasm-ld > +%exclude %llvm_bindir/ld*.lld > +%exclude %_bindir/ld*.lld-%v_major > +%exclude %llvm_bindir/wasm-ld > +%exclude %_bindir/wasm-ld-%v_major > > %files libs > +%llvm_libdir/libLLVM-*.so > %_libdir/libLLVM-*.so > +%llvm_libdir/libLTO.so.* > %_libdir/libLTO.so.* > +%llvm_libdir/libRemarks.so.* > %_libdir/libRemarks.so.* > > +%files tools > +%llvm_datadir/opt-viewer > + > %files devel > -%_bindir/llvm-config > -%_man1dir/llvm-config.1.* > -%_includedir/llvm > -%_includedir/llvm-c > -%_libdir/libLLVM.so > -%_libdir/libLTO.so > -%_libdir/LLVMgold.so > -%_libdir/libRemarks.so > -%_libdir/LLVMHello.so > -%_libdir/BugpointPasses.so > -%_libdir/cmake/llvm > -%exclude %_libdir/cmake/llvm/LLVMStaticExports*.cmake > +%llvm_bindir/llvm-config > +%_bindir/llvm-config-%v_major > +%llvm_man1dir/llvm-config.1.* > +%_man1dir/llvm-config-%v_major.1.* > +%llvm_includedir/llvm > +%llvm_includedir/llvm-c > +%llvm_libdir/libLLVM.so > +%llvm_libdir/libLTO.so > +%llvm_libdir/LLVMgold.so > +%llvm_libdir/libRemarks.so > +%llvm_libdir/LLVMHello.so > +%llvm_libdir/BugpointPasses.so > +%dir %llvm_libdir/cmake > +%llvm_libdir/cmake/llvm > +%exclude %llvm_libdir/cmake/llvm/LLVMStaticExports.cmake > > %files devel-static > -%_libdir/*.a > -%exclude %_libdir/libclang*.a > -%_libdir/cmake/llvm/LLVMStaticExports*.cmake > +%llvm_libdir/*.a > +%exclude %llvm_libdir/libclang*.a > +%dir %llvm_libdir/cmake > +%dir %llvm_libdir/cmake/llvm > +%llvm_libdir/cmake/llvm/LLVMStaticExports.cmake > > %files -n %clang_name > %doc BUILD/clang-docs/* > -%_bindir/*clang* > -%_bindir/c-index-test > -%_man1dir/clang.1* > +%llvm_bindir/clang-%v_major > +%llvm_bindir/clang > +%_bindir/clang-%v_major > +%llvm_bindir/clang++ > +%_bindir/clang++-%v_major > +%llvm_bindir/clang-cl > +%_bindir/clang-cl-%v_major > +%llvm_bindir/clang-cpp > +%_bindir/clang-cpp-%v_major > +%llvm_man1dir/clang.1* > +%_man1dir/clang-%v_major.1* > +%exclude %llvm_bindir/clang-check* > +%exclude %_bindir/clang-check* > +%exclude %llvm_bindir/clang-extdef-mapping* > +%exclude %_bindir/clang-extdef-mapping* > +%exclude %llvm_bindir/clang-format* > +%exclude %_bindir/clang-format* > +%exclude %llvm_bindir/git-clang-format* > +%exclude %_bindir/git-clang-format* > +%exclude %llvm_bindir/clang-offload-* > +%exclude %_bindir/clang-offload-* > +%exclude %llvm_bindir/clang-refactor* > +%exclude %_bindir/clang-refactor* > +%exclude %llvm_bindir/clang-rename* > +%exclude %_bindir/clang-rename* > +%llvm_datadir/clang/bash-autocomplete.sh > +%_datadir/bash-completion/completions/clang* > > %files -n %clang_name-libs > -%_libdir/clang > +%llvm_libdir/libclang*.so.* > %_libdir/libclang*.so.* > > +%files -n %clang_name-libs-support -f %_tmppath/dyn-files-libclang-support > +%llvm_libdir/clang > +# clang-tools > +%ifarch %hwasan_symbolize_arches > +%exclude %llvm_libdir/clang/%v_full/bin/hwasan_symbolize > +%endif > + > +%files -n %clang_name-libs-support-shared-runtimes -f %_tmppath/libclang-support-shared-runtimes > + > %files -n %clang_name-devel > -%_includedir/clang > -%_includedir/clang-c > -%_libdir/libclang*.so > -%_libdir/cmake/clang > +%llvm_includedir/clang > +%llvm_includedir/clang-c > +%llvm_includedir/clang-tidy > +%llvm_libdir/libclang*.so > +%dir %llvm_libdir/cmake > +%llvm_libdir/cmake/clang > > %files -n %clang_name-devel-static > -%_libdir/libclang*.a > +%llvm_libdir/libclang*.a > > %files -n %clang_name-analyzer > -%_prefix/libexec/*-analyzer > -%_bindir/scan-build > -%_bindir/scan-view > -%_datadir/scan-build > -%_datadir/scan-view > -%_man1dir/scan-build.1* > +%llvm_prefix/libexec/*-analyzer > +%llvm_bindir/scan-build > +%_bindir/scan-build-%v_major > +%llvm_bindir/scan-view > +%_bindir/scan-view-%v_major > +%llvm_datadir/scan-build > +%llvm_datadir/scan-view > +%llvm_man1dir/scan-build.1* > +%_man1dir/scan-build-%v_major.1* > + > +%files -n %clang_name-tools > +%llvm_bindir/c-index-test > +%_bindir/c-index-test-%v_major > +%llvm_bindir/clang-* > +%_bindir/clang-* > +%exclude %llvm_bindir/clang-%v_major > +%exclude %llvm_bindir/clang > +%exclude %_bindir/*clang-%v_major > +%exclude %llvm_bindir/clang++ > +%exclude %_bindir/clang++-%v_major > +%exclude %llvm_bindir/clang-cl > +%exclude %_bindir/clang-cl-%v_major > +%exclude %llvm_bindir/clang-cpp > +%exclude %_bindir/clang-cpp-%v_major > +%llvm_bindir/find-all-symbols > +%_bindir/find-all-symbols-%v_major > +%llvm_datadir/clang > +%exclude %llvm_datadir/clang/bash-autocomplete.sh > +%ifarch %hwasan_symbolize_arches > +%llvm_libdir/clang/%v_full/bin/hwasan_symbolize > +%endif > + > +%files -n %clangd_name > +%llvm_bindir/clangd > +%_bindir/clangd-%v_major > > %files -n %lld_name > +%llvm_bindir/lld* > %_bindir/lld* > -%_bindir/ld*.lld > -%_bindir/wasm-ld > +%llvm_bindir/ld*.lld > +%_bindir/ld*.lld-%v_major > +%llvm_bindir/wasm-ld > +%_bindir/wasm-ld-%v_major > > %files -n %lld_name-devel > -%dir %_includedir/lld > -%_includedir/lld/* > -%_libdir/cmake/lld > +%dir %llvm_includedir/lld > +%llvm_includedir/lld/* > +%dir %llvm_libdir/cmake > +%llvm_libdir/cmake/lld > > %files doc > -%doc %_docdir/llvm > +%doc %llvm_docdir/llvm > > %files -n %clang_name-doc > -%doc %_docdir/clang > +%doc %llvm_docdir/clang > +%doc %llvm_docdir/clang-tools > > %files -n %lld_name-doc > -%doc %_docdir/lld > +%doc %llvm_docdir/lld > > %changelog > +* Fri Dec 11 2020 Arseny Maslennikov <arseny@altlinux.org> 11.0.0-alt2 > +- Installed to /usr/lib/llvm-11.0 to ensure peaceful co-existence with other > + LLVM versions. > + Numbered shared libraries in %llvm_prefix/%%_lib are symlinked to %%_libdir > + to properly generate library dependencies. > +- Moved clang-format and other clang-based tools to clang11.0-tools. > +- New LLVM subproject: clang-tools-extra. > + + 2 new packages: clang11.0-tools, clangd11.0 > +- Enabled all LLVM targets. > +- Moved C/C++ compiler support away from clang-libs to clang-libs-support. > +- Moved Clang .so runtimes (scudo and sanitizers) with available static variants > + to clang-libs-support-shared-runtimes to comply with sisyphus-check-static. > + > * Tue Oct 13 2020 Valery Inozemtsev <shrek@altlinux.ru> 11.0.0-alt1 > - 11.0.0 > +- Built with gcc. > + > +* Wed Aug 12 2020 Aleksei Nikiforov <darktemplar@altlinux.org> 10.0.1-alt2 > +- Applied upstream patch which should fix ppc64le-specific issue. > > * Tue Aug 11 2020 Valery Inozemtsev <shrek@altlinux.ru> 10.0.1-alt1 > - 10.0.1 > _______________________________________________ > Devel mailing list > Devel@lists.altlinux.org > https://lists.altlinux.org/mailman/listinfo/devel -- WBR et al. ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] [#263468] EPERM (try 14) llvm-common.git=11.0.0-alt2 srpm=llvm11.0-11.0.0-alt2.src.rpm 2021-01-11 16:09 ` [devel] [#263468] EPERM (try 14) llvm-common.git=11.0.0-alt2 srpm=llvm11.0-11.0.0-alt2.src.rpm Konstantin Lepikhov @ 2021-01-11 16:31 ` Michael Shigorin 2021-01-11 21:43 ` Konstantin Lepikhov 2021-01-11 16:38 ` Arseny Maslennikov 2021-01-13 12:47 ` Alexey Sheplyakov 2 siblings, 1 reply; 79+ messages in thread From: Michael Shigorin @ 2021-01-11 16:31 UTC (permalink / raw) To: devel On Mon, Jan 11, 2021 at 05:09:45PM +0100, Konstantin Lepikhov wrote: > > %ifarch x86_64 aarch64 > > %def_without clang > почему? without_clang используется только если у нас bootstrap. > Иначе будет сборка без LTO. Чисто на всякий: как минимум на %e2k мне была нужна сборка llvm для AMDGPU/NVPTX, но нативного кодогенератора ещё не было (сейчас вроде какой-то есть, но ещё не щупал). > > - -DLLVM_TARGETS_TO_BUILD="host;AMDGPU;BPF;NVPTX;" \ > > + -DLLVM_TARGETS_TO_BUILD="all" \ > Почему нам нужны все TARGETS? -- ---- WBR, Michael Shigorin / http://altlinux.org ------ http://opennet.ru / http://anna-news.info ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] [#263468] EPERM (try 14) llvm-common.git=11.0.0-alt2 srpm=llvm11.0-11.0.0-alt2.src.rpm 2021-01-11 16:31 ` Michael Shigorin @ 2021-01-11 21:43 ` Konstantin Lepikhov 0 siblings, 0 replies; 79+ messages in thread From: Konstantin Lepikhov @ 2021-01-11 21:43 UTC (permalink / raw) To: devel Hi Michael! On 01/11/2021, at 07:31:40 PM you wrote: > On Mon, Jan 11, 2021 at 05:09:45PM +0100, Konstantin Lepikhov wrote: > > > %ifarch x86_64 aarch64 > > > %def_without clang > > почему? without_clang используется только если у нас bootstrap. > > Иначе будет сборка без LTO. > > Чисто на всякий: как минимум на %e2k мне была нужна сборка llvm > для AMDGPU/NVPTX, но нативного кодогенератора ещё не было (сейчас > вроде какой-то есть, но ещё не щупал). А что, есть CUDA для ek2?? -- WBR et al. ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] [#263468] EPERM (try 14) llvm-common.git=11.0.0-alt2 srpm=llvm11.0-11.0.0-alt2.src.rpm 2021-01-11 16:09 ` [devel] [#263468] EPERM (try 14) llvm-common.git=11.0.0-alt2 srpm=llvm11.0-11.0.0-alt2.src.rpm Konstantin Lepikhov 2021-01-11 16:31 ` Michael Shigorin @ 2021-01-11 16:38 ` Arseny Maslennikov 2021-01-11 21:41 ` Konstantin Lepikhov 2021-01-13 12:47 ` Alexey Sheplyakov 2 siblings, 1 reply; 79+ messages in thread From: Arseny Maslennikov @ 2021-01-11 16:38 UTC (permalink / raw) To: devel [-- Attachment #1: Type: text/plain, Size: 10695 bytes --] On Mon, Jan 11, 2021 at 05:09:45PM +0100, Konstantin Lepikhov wrote: > Hi Arseny! > > On 01/08/2021, at 12:18:41 AM you wrote: > > УМВР. Может, мой почтовый клиент сломал ссылку или ваш не так показал? > > > > Прикладываю файлом. > > > diff --git a/llvm11.spec b/llvm11.spec <...> > > +%global v_major 11 > > +%global v_majmin %v_major.0 > > +%global v_full %v_majmin.0 > > +%global rcsuffix %nil > а так ли нужны все эти приседания с версиями и rc? У нас же не daily > builds собираются. До поры до времени. Начинать готовить адаптацию спека лучше с каких-то достаточно поздних rc, особенно в случае, когда после выхода времени у мейнтейнера мало, а чуть раньше — много. > > > +%global llvm_name llvm%v_majmin > > +%global clang_name clang%v_majmin > > +%global clangd_name clangd%v_majmin > > +%global lld_name lld%v_majmin > т.е. планируется собирать раздельные версии clang/llvm/lld? не в рамках одного исходного пакета. <...> > > %def_disable tests > > %ifarch x86_64 aarch64 > > %def_without clang > почему? without_clang используется только если у нас bootstrap. Иначе > будет сборка без LTO. Внимательно посмотрите changelog и архив. Одна из возможных причин: http://git.altlinux.org/people/arseny/packages/?p=llvm11.0.git;a=commit;h=4b3c6c13e4d70fd201691c636d57b5b020e00709 Надо думать, что с этим делать. > > > @@ -18,44 +39,62 @@ > > %def_without clang > > %endif > > > > +%define tarversion %v_full%rcsuffix > > + > > Name: %llvm_name > > -Version: 11.0.0 > > -Release: alt1 > > -Summary: The Low Level Virtual Machine > > +Version: %v_full > > +Release: alt2 > > +Summary: The LLVM Compiler Infrastructure <...> > > %package libs > > Group: Development/C > > Summary: LLVM shared libraries > > +%requires_filesystem > > > > %description libs > > -Shared libraries for the LLVM compiler infrastructure. > > +This package contains shared libraries needed to develop new > > +native programs that use LLVM. > ? разве тут что-то неверно? старый description был слишком неточным и подходил к нескольким бинарным пакетам. > > > > > %package doc > > Summary: Documentation for LLVM > > Group: Documentation <...> > > > > %build > > +%define _cmake_skip_rpath -DCMAKE_SKIP_RPATH:BOOL=OFF > > %cmake -G Ninja \ > > -DLLVM_PARALLEL_LINK_JOBS=1 \ > > -DCMAKE_BUILD_TYPE=Release \ > > + -DCMAKE_INSTALL_PREFIX=%llvm_prefix \ > > + -DCMAKE_SKIP_INSTALL_RPATH:BOOL=OFF \ > > -DBUILD_SHARED_LIBS:BOOL=OFF \ > > - -DLLVM_TARGETS_TO_BUILD="host;AMDGPU;BPF;NVPTX;" \ > > + -DLLVM_TARGETS_TO_BUILD="all" \ > Почему нам нужны все TARGETS? Я скоро буду собирать пакеты, которые этим будут пользоваться. Ну, и для "clang -target aarch64-unknown-linux-gnu" какого-нибудь. > > > -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD='AVR' \ > > -DLLVM_ENABLE_LIBCXX:BOOL=OFF \ > > -DLLVM_ENABLE_ZLIB:BOOL=ON \ > > @@ -287,13 +395,13 @@ ninja -vvv -j %__nprocs -C BUILD > > > > %install > > pushd BUILD > > -cmake -DCMAKE_INSTALL_PREFIX=%buildroot%prefix ../ > > +cmake -DCMAKE_INSTALL_PREFIX=%buildroot%llvm_prefix ../ > > sed -i 's|man\ tools/lld/docs/docs-lld-html|man|' build.ninja > > sed -i '/^[[:space:]]*include.*tools\/lld\/docs\/cmake_install.cmake.*/d' tools/lld/cmake_install.cmake > > popd > > ninja -C BUILD install > > > > -# And prepare Clang documentation > > +# Prepare Clang documentation. > > rm -rf BUILD/clang-docs > > mkdir -p BUILD/clang-docs > > for f in LICENSE.TXT NOTES.txt README.txt; do > > @@ -301,113 +409,295 @@ for f in LICENSE.TXT NOTES.txt README.txt; do > > done > > rm -rf tools/clang/docs/{doxygen*,Makefile*,*.graffle,tools} > > > > -install -m 0755 BUILD/%_lib/LLVMHello.so %buildroot%_libdir/ > > -install -m 0755 BUILD/%_lib/BugpointPasses.so %buildroot%_libdir/ > > -mkdir -p %buildroot%_docdir/lld > > - > > -file %buildroot%_bindir/* | awk -F: '$2~/ELF/{print $1}' | xargs -r chrpath -d > > -file %buildroot%_libdir/*.so | awk -F: '$2~/ELF/{print $1}' | xargs -r chrpath -d > > +install -m 0755 BUILD/%_lib/LLVMHello.so %buildroot%llvm_libdir/ > > +install -m 0755 BUILD/%_lib/BugpointPasses.so %buildroot%llvm_libdir/ > > +mkdir -p %buildroot%llvm_docdir/lld > > > > %ifarch %ix86 > > -cd %buildroot%_libdir/clang/%version/lib/linux > > +cd %buildroot%llvm_libdir/clang/%v_full/lib/linux > > ls *-i[3-9]86* | while read f; do ln -s $f $(echo $f | sed 's|i[3-9]86|i386|') ; done > > %endif > > > > +# The following files are not used by LLVM builds for Linux. > > +rm -f %buildroot%llvm_bindir/argdumper > > +rm -f %buildroot%llvm_datadir/clang/clang-format-bbedit.applescript > > + > > +# Install the clang bash completion. > > +mkdir -p %buildroot%_datadir/bash-completion/completions > > +ln -sr %buildroot%llvm_datadir/clang/bash-autocomplete.sh %buildroot%_datadir/bash-completion/completions/clang-%v_major > > + > > +# Symlink executables to %_bindir. > > +mkdir -p %buildroot%_bindir > > +for b in %buildroot%llvm_bindir/*; do > > + bb="$(basename "$b")" > > + echo "$bb" | grep -q -- '-%v_major$' && continue # if already appended > > + ln -srv "$b" "%buildroot%_bindir/$bb-%v_major" > > +done Вот тут написано, почему man1dir не лишний: > > +# Symlink man pages to the man dirs. > > +for mand in %buildroot%llvm_datadir/man/man*; do > > + mand_index="${mand##*/man}" > > + for m in "$mand"/*.[1-9]*; do > > + # Let's force compress the man page, then symlink it. > > + # /usr/lib/llvm-11.0/share/man/manD/utilX.D.xz -> /usr/share/man/manD/utilX-11.D.xz > > + # Otherwise, brp-alt(compress) keeps fucking us up. > > + # It remakes the symlinks first, then compresses their targets, > > + # severing the symlinks. > > + /usr/lib/rpm/compress_files "$m" > > + > > + mb="$(basename "$m")" # e. g. llvm-ar.1.xz > > + new_mb="${mb%%.[1-9]*}-%v_major.$mand_index" # e. g. llvm-ar-11.1.xz > > + > > + mkdir -p "%buildroot%_mandir/man$mand_index" > > + ln -srv "$m" "%buildroot%_mandir/man$mand_index/$new_mb" > > + done > > +done > > + > > +# Symlink sonamed shared libraries in %llvm_prefix/%_libdir to %_libdir. > > +mkdir -p %buildroot%_libdir > > +find %buildroot%llvm_libdir/*.so* -type f | grep -E '^%buildroot%llvm_libdir/.*(%v_major)' | sort | tee %_tmppath/shared-objects \ > > + | sed 's)%llvm_libdir)%_libdir)' > %_tmppath/shared-object-links > > +paste %_tmppath/shared-objects %_tmppath/shared-object-links | while read object link; do > > + ln -srv "$object" "$link" > > +done > > + > > +# List all packaged binaries in this source package. > > +find %buildroot%_bindir/*-%v_major > %_tmppath/PATH-executables > > + > > +# For paranoic reasons library packaging policy covers peculiar directory paths. > > +# If there are $A.a and $A.so in %llvm_libdir/clang, they should not end up in the > > +# same package (but can be co-installed on a system). > > +# Let's list all the $A.so for which $A.a exists into a separate package. > > +# We also consider i386-symlinks for iN86. > > +find %buildroot%llvm_libdir/clang -type f,l -name '*.a' -or -name '*.so' | \ > > + sed -r -n 's/^(\/.+)\.a$/\1/p; s/^(.+)\.so$/\1/p' | sort | uniq -d > %_tmppath/libclang-support-dupes > > +sed < %_tmppath/libclang-support-dupes 's)^%buildroot)); s/$/.a/' > %_tmppath/libclang-support-static-runtimes > > +sed < %_tmppath/libclang-support-dupes 's)^%buildroot)); s/$/.so/' > %_tmppath/libclang-support-shared-runtimes > > +sed < %_tmppath/libclang-support-shared-runtimes 's/^/%%exclude /' > %_tmppath/dyn-files-libclang-support > > +echo "Expelling likely redundant Clang shared runtimes:" && cat %_tmppath/dyn-files-libclang-support > > + > > %check > > %if_enabled tests > > -LD_LIBRARY_PATH=%buildroot%_libdir:$LD_LIBRARY_PATH > > +LD_LIBRARY_PATH=%buildroot%llvm_libdir:$LD_LIBRARY_PATH > > export LD_LIBRARY_PATH > > ninja -C BUILD check-all || : > > %endif > > > > +# Do not generate dependencies for clang-{format,rename} plugins. > > +%add_findreq_skiplist %llvm_datadir/clang/* > > + > > +%files filesystem > > +%dir %llvm_prefix > > +%dir %llvm_bindir > > +%dir %llvm_libdir > > +%dir %llvm_includedir > > +%dir %llvm_libexecdir > > +%dir %llvm_datadir > > +%dir %llvm_datadir/clang > > +%dir %llvm_datadir/man > > +%dir %llvm_man1dir > > +%dir %llvm_docdir > > + > > %files > > %doc CREDITS.TXT LICENSE.TXT README.txt > > +%llvm_bindir/* > > %_bindir/* > > +%llvm_man1dir/* > > %_man1dir/* > %_man1dir/* - лишний man не смотрит в llvm_man1dir. Заморочиться и научить — вариант хуже, чем текущий, потому что программе man надо ещё ман от правильной версии достать. > > > +%exclude %llvm_bindir/llvm-config* > > %exclude %_bindir/llvm-config* > > +%exclude %llvm_bindir/*clang* > > %exclude %_bindir/*clang* > > -%exclude %_bindir/c-index-test > > +%exclude %llvm_bindir/*clangd* > > +%exclude %_bindir/*clangd* > > +%exclude %llvm_bindir/c-index-test > > +%exclude %_bindir/c-index-test-%v_major > > +%exclude %llvm_bindir/find-all-symbols > > +%exclude %_bindir/find-all-symbols-%v_major > > +%exclude %llvm_bindir/scan-* > > %exclude %_bindir/scan-* > > -%exclude %_man1dir/llvm-config.1.* > > -%exclude %_man1dir/clang.1* > > -%exclude %_man1dir/scan-build.1* > > +%exclude %llvm_man1dir/llvm-config.1.* > > +%exclude %_man1dir/llvm-config-%v_major.1.* > > +%exclude %llvm_man1dir/clang.1* > > +%exclude %_man1dir/clang-%v_major.1* > > +%exclude %llvm_man1dir/scan-build.1* > > +%exclude %_man1dir/scan-build-%v_major.1* > > +%exclude %llvm_bindir/lld* > > %exclude %_bindir/lld* > > -%exclude %_bindir/ld*.lld > > -%exclude %_bindir/wasm-ld > > +%exclude %llvm_bindir/ld*.lld > > +%exclude %_bindir/ld*.lld-%v_major > > +%exclude %llvm_bindir/wasm-ld > > +%exclude %_bindir/wasm-ld-%v_major > > <...> [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] [#263468] EPERM (try 14) llvm-common.git=11.0.0-alt2 srpm=llvm11.0-11.0.0-alt2.src.rpm 2021-01-11 16:38 ` Arseny Maslennikov @ 2021-01-11 21:41 ` Konstantin Lepikhov 2021-01-11 23:16 ` Dmitry V. Levin ` (2 more replies) 0 siblings, 3 replies; 79+ messages in thread From: Konstantin Lepikhov @ 2021-01-11 21:41 UTC (permalink / raw) To: devel Hi Arseny! On 01/11/2021, at 07:38:51 PM you wrote: <skip> > > а так ли нужны все эти приседания с версиями и rc? У нас же не daily > > builds собираются. > > До поры до времени. > Начинать готовить адаптацию спека лучше с каких-то достаточно поздних > rc, особенно в случае, когда после выхода времени у мейнтейнера мало, а > чуть раньше — много. а мы куда то спешим? > > > > > > +%global llvm_name llvm%v_majmin > > > +%global clang_name clang%v_majmin > > > +%global clangd_name clangd%v_majmin > > > +%global lld_name lld%v_majmin > > т.е. планируется собирать раздельные версии clang/llvm/lld? > > не в рамках одного исходного пакета. Я знаю, что в Fedora/Arch так делают, поэтому и спросил. Еще у нас есть lav@ который собирает все что находит - https://bugzilla.altlinux.org/show_bug.cgi?id=33411 https://bugzilla.altlinux.org/show_bug.cgi?id=34672 Тут все еще есть нерешенная проблема - чего мы хотим достигнуть с llvm в сизифе? Конкурентный toolchain или еще одну библиотеку для сборки пакета xyz. > > <...> > > > > %def_disable tests > > > %ifarch x86_64 aarch64 > > > %def_without clang > > почему? without_clang используется только если у нас bootstrap. Иначе > > будет сборка без LTO. > > Внимательно посмотрите changelog и архив. > > Одна из возможных причин: > http://git.altlinux.org/people/arseny/packages/?p=llvm11.0.git;a=commit;h=4b3c6c13e4d70fd201691c636d57b5b020e00709 > Надо думать, что с этим делать. Наверное, уведомить апстрим? Еще неплохо прояснить вот этот баг https://bugzilla.altlinux.org/show_bug.cgi?id=34672 > разве тут что-то неверно? > старый description был слишком неточным и подходил к нескольким бинарным > пакетам. по мне масло маслянное ну да ладно. <skip> > > Почему нам нужны все TARGETS? > > Я скоро буду собирать пакеты, которые этим будут пользоваться. > > Ну, и для "clang -target aarch64-unknown-linux-gnu" какого-нибудь. все таргеты это время сборки, потенциально сваленные тесты и т.д. Более того, предлагается все эти таргеты поддерживать? > Вот тут написано, почему man1dir не лишний: > > > > +# Symlink man pages to the man dirs. > > > +for mand in %buildroot%llvm_datadir/man/man*; do > > > + mand_index="${mand##*/man}" > > > + for m in "$mand"/*.[1-9]*; do > > > + # Let's force compress the man page, then symlink it. > > > + # /usr/lib/llvm-11.0/share/man/manD/utilX.D.xz -> /usr/share/man/manD/utilX-11.D.xz > > > + # Otherwise, brp-alt(compress) keeps fucking us up. > > > + # It remakes the symlinks first, then compresses their targets, > > > + # severing the symlinks. > > > + /usr/lib/rpm/compress_files "$m" > > > + > > > + mb="$(basename "$m")" # e. g. llvm-ar.1.xz > > > + new_mb="${mb%%.[1-9]*}-%v_major.$mand_index" # e. g. llvm-ar-11.1.xz > > > + > > > + mkdir -p "%buildroot%_mandir/man$mand_index" > > > + ln -srv "$m" "%buildroot%_mandir/man$mand_index/$new_mb" > > > + done > > > +done Ну так костыль жеж. У нас тут есть мантейнеры rpm, почему они не помогают? :) <skip> > man не смотрит в llvm_man1dir. > Заморочиться и научить — вариант хуже, чем текущий, потому что программе > man надо ещё ман от правильной версии достать. я понимаю ваше желание сделать все красиво, но этот пакет могут поддерживать другие люди и хотелось бы, чтобы эта поддержка была вот без таких объездов, особенно, если тут есть те, кто могут помочь и исправить rpm/gear/whatever. PS До сих пор собираю новую версию postfix вот именно из-за таких прекрасных патчей и .spec которые, конечно, собирают в результате космический дрендноут, но уж очень неподдерживаемые. PPS Огромное спасибо вам, что не бросаете работу и таки собрали пакет! -- WBR et al. ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] [#263468] EPERM (try 14) llvm-common.git=11.0.0-alt2 srpm=llvm11.0-11.0.0-alt2.src.rpm 2021-01-11 21:41 ` Konstantin Lepikhov @ 2021-01-11 23:16 ` Dmitry V. Levin 2021-01-12 12:11 ` Arseny Maslennikov 2021-01-12 12:09 ` Arseny Maslennikov 2021-01-12 21:39 ` Vitaly Lipatov 2 siblings, 1 reply; 79+ messages in thread From: Dmitry V. Levin @ 2021-01-11 23:16 UTC (permalink / raw) To: ALT Devel discussion list On Mon, Jan 11, 2021 at 10:41:00PM +0100, Konstantin Lepikhov wrote: [...] > > Вот тут написано, почему man1dir не лишний: > > > > > > +# Symlink man pages to the man dirs. > > > > +for mand in %buildroot%llvm_datadir/man/man*; do > > > > + mand_index="${mand##*/man}" > > > > + for m in "$mand"/*.[1-9]*; do > > > > + # Let's force compress the man page, then symlink it. > > > > + # /usr/lib/llvm-11.0/share/man/manD/utilX.D.xz -> /usr/share/man/manD/utilX-11.D.xz > > > > + # Otherwise, brp-alt(compress) keeps fucking us up. > > > > + # It remakes the symlinks first, then compresses their targets, > > > > + # severing the symlinks. > > > > + /usr/lib/rpm/compress_files "$m" > > > > + > > > > + mb="$(basename "$m")" # e. g. llvm-ar.1.xz > > > > + new_mb="${mb%%.[1-9]*}-%v_major.$mand_index" # e. g. llvm-ar-11.1.xz > > > > + > > > > + mkdir -p "%buildroot%_mandir/man$mand_index" > > > > + ln -srv "$m" "%buildroot%_mandir/man$mand_index/$new_mb" > > > > + done > > > > +done > Ну так костыль жеж. У нас тут есть мантейнеры rpm, почему они не помогают? Так, а в чём проблема и зачем понадобились костыли? Может быть, всё уже было придумано много лет назад, а вы ещё не в курсе, что это было придумано именно для вашего случая? ;) -- ldv ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] [#263468] EPERM (try 14) llvm-common.git=11.0.0-alt2 srpm=llvm11.0-11.0.0-alt2.src.rpm 2021-01-11 23:16 ` Dmitry V. Levin @ 2021-01-12 12:11 ` Arseny Maslennikov 0 siblings, 0 replies; 79+ messages in thread From: Arseny Maslennikov @ 2021-01-12 12:11 UTC (permalink / raw) To: ALT Linux Team development discussions [-- Attachment #1: Type: text/plain, Size: 1856 bytes --] On Tue, Jan 12, 2021 at 02:16:42AM +0300, Dmitry V. Levin wrote: > On Mon, Jan 11, 2021 at 10:41:00PM +0100, Konstantin Lepikhov wrote: > [...] > > > Вот тут написано, почему man1dir не лишний: > > > > > > > > +# Symlink man pages to the man dirs. > > > > > +for mand in %buildroot%llvm_datadir/man/man*; do > > > > > + mand_index="${mand##*/man}" > > > > > + for m in "$mand"/*.[1-9]*; do > > > > > + # Let's force compress the man page, then symlink it. > > > > > + # /usr/lib/llvm-11.0/share/man/manD/utilX.D.xz -> /usr/share/man/manD/utilX-11.D.xz > > > > > + # Otherwise, brp-alt(compress) keeps fucking us up. Вот за этим: > > > > > + # It remakes the symlinks first, then compresses their targets, > > > > > + # severing the symlinks. А надо наоборот. Приходится сжимать в секции %install, до того, как до этого доберётся brp: > > > > > + /usr/lib/rpm/compress_files "$m" > > > > > + > > > > > + mb="$(basename "$m")" # e. g. llvm-ar.1.xz > > > > > + new_mb="${mb%%.[1-9]*}-%v_major.$mand_index" # e. g. llvm-ar-11.1.xz > > > > > + > > > > > + mkdir -p "%buildroot%_mandir/man$mand_index" > > > > > + ln -srv "$m" "%buildroot%_mandir/man$mand_index/$new_mb" > > > > > + done > > > > > +done > > Ну так костыль жеж. У нас тут есть мантейнеры rpm, почему они не помогают? > > Так, а в чём проблема и зачем понадобились костыли? Чуть выше. > Может быть, всё уже было придумано много лет назад, а вы ещё не в курсе, > что это было придумано именно для вашего случая? ;) Не исключаю. [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] [#263468] EPERM (try 14) llvm-common.git=11.0.0-alt2 srpm=llvm11.0-11.0.0-alt2.src.rpm 2021-01-11 21:41 ` Konstantin Lepikhov 2021-01-11 23:16 ` Dmitry V. Levin @ 2021-01-12 12:09 ` Arseny Maslennikov 2021-01-14 21:12 ` Konstantin Lepikhov 2021-01-12 21:39 ` Vitaly Lipatov 2 siblings, 1 reply; 79+ messages in thread From: Arseny Maslennikov @ 2021-01-12 12:09 UTC (permalink / raw) To: devel [-- Attachment #1: Type: text/plain, Size: 10746 bytes --] On Mon, Jan 11, 2021 at 10:41:00PM +0100, Konstantin Lepikhov wrote: > Hi Arseny! > > On 01/11/2021, at 07:38:51 PM you wrote: > > <skip> > > > а так ли нужны все эти приседания с версиями и rc? У нас же не daily > > > builds собираются. > > > > До поры до времени. > > Начинать готовить адаптацию спека лучше с каких-то достаточно поздних > > rc, особенно в случае, когда после выхода времени у мейнтейнера мало, а > > чуть раньше — много. > а мы куда то спешим? Самая важная причина, по которой я начал миграцию llvm в собственный префикс — в том, что разным пакетам, в т. ч. пакетам-тулчейнам, требуются llvm разной мажорной версии в одном репозитории, потому что они написаны с расчётом на конкретную мажорную версию, и в том, что пользователи не-мейнтейнеры хотели бы иметь в репозитории свежий clang и иногда старый clang. Я не планирую сборку rc в репозиторий, но вот test-only задания — почему нет, если так будет удобно. > > > > > > > > > > +%global llvm_name llvm%v_majmin > > > > +%global clang_name clang%v_majmin > > > > +%global clangd_name clangd%v_majmin > > > > +%global lld_name lld%v_majmin > > > т.е. планируется собирать раздельные версии clang/llvm/lld? на всякий случай уточню: я понял эти слова так, что в репозитории могут сосуществовать clang-11, clang-12 и clang-10, lld-11, lld-12 и lld-10, и да, разные мажорные версии собираются не из одного исходного пакета. > > > > не в рамках одного исходного пакета. > Я знаю, что в Fedora/Arch так делают, поэтому и спросил. Еще у нас есть > lav@ который собирает все что находит - > > https://bugzilla.altlinux.org/show_bug.cgi?id=33411 > https://bugzilla.altlinux.org/show_bug.cgi?id=34672 > > Тут все еще есть нерешенная проблема - чего мы хотим достигнуть с llvm в > сизифе? Конкурентный toolchain или еще одну библиотеку для сборки пакета > xyz. И то, и другое. И не только тулчейн, там ещё много всего интересного. > > > > > <...> > > > > > > %def_disable tests > > > > %ifarch x86_64 aarch64 > > > > %def_without clang > > > почему? without_clang используется только если у нас bootstrap. Иначе > > > будет сборка без LTO. > > > > Внимательно посмотрите changelog и архив. > > > > Одна из возможных причин: > > http://git.altlinux.org/people/arseny/packages/?p=llvm11.0.git;a=commit;h=4b3c6c13e4d70fd201691c636d57b5b020e00709 > > Надо думать, что с этим делать. > Наверное, уведомить апстрим? > > Еще неплохо прояснить вот этот баг > https://bugzilla.altlinux.org/show_bug.cgi?id=34672 _Лично мне_ libcxx не слишком интересна до тех пор, пока с ней не будет иметь смысл собирать (асимптотически) всё, что ныне может быть собрано с libstdc++, и держать такие пакеты в рамках одной инсталляции ОС. Когда-то clang вообще не конкурировал с gcc на том, что ещё пока принято называть гнулинуксами; сейчас, в общем, монокультуры уже нет. О подробностях и прогнозах тут не буду. (Вскользь припомню только недавний порыв пассионарных googlers добавить под зонтик llvm ещё и собственную libc, от чего их отговорило сообщество musl. А где libc, там и elfutils, и dynamic linker.) Собирать её в рамках llvm-экосистемы в репозитории и брать ответственность за её работоспособность _лично я_ точно не в силах и не хочу; если только договориться с теми, кому она нужна. > > > разве тут что-то неверно? > > старый description был слишком неточным и подходил к нескольким бинарным > > пакетам. > по мне масло маслянное ну да ладно. > > <skip> > > > Почему нам нужны все TARGETS? > > > > Я скоро буду собирать пакеты, которые этим будут пользоваться. > > > > Ну, и для "clang -target aarch64-unknown-linux-gnu" какого-нибудь. > все таргеты это время сборки, потенциально сваленные тесты и т.д. Более > того, предлагается все эти таргеты поддерживать? В рамках того, что умеет их апстрим. В случае необходимости бутстрапа можно решить собирать только host, а потом им собирать all. > > > Вот тут написано, почему man1dir не лишний: > > > > > > +# Symlink man pages to the man dirs. > > > > +for mand in %buildroot%llvm_datadir/man/man*; do > > > > + mand_index="${mand##*/man}" > > > > + for m in "$mand"/*.[1-9]*; do > > > > + # Let's force compress the man page, then symlink it. > > > > + # /usr/lib/llvm-11.0/share/man/manD/utilX.D.xz -> /usr/share/man/manD/utilX-11.D.xz > > > > + # Otherwise, brp-alt(compress) keeps fucking us up. > > > > + # It remakes the symlinks first, then compresses their targets, > > > > + # severing the symlinks. > > > > + /usr/lib/rpm/compress_files "$m" > > > > + > > > > + mb="$(basename "$m")" # e. g. llvm-ar.1.xz > > > > + new_mb="${mb%%.[1-9]*}-%v_major.$mand_index" # e. g. llvm-ar-11.1.xz > > > > + > > > > + mkdir -p "%buildroot%_mandir/man$mand_index" > > > > + ln -srv "$m" "%buildroot%_mandir/man$mand_index/$new_mb" > > > > + done > > > > +done > Ну так костыль жеж. У нас тут есть мантейнеры rpm, почему они не помогают? > :) Помогут — уберём. :) А пока — надо было достичь готового пакета с удовлетворительным (а лучше — хорошим) результатом; это лучше, чем полгода искать время подготовить исправление и проталкивать его ещё 9 месяцев. Со слов автора /usr/lib/rpm/compress_files, этот старый код надо как-нибудь познакомить с xz и zstd, а то и переосмыслить. > > <skip> > > man не смотрит в llvm_man1dir. > > Заморочиться и научить — вариант хуже, чем текущий, потому что программе > > man надо ещё ман от правильной версии достать. > я понимаю ваше желание сделать все красиво, но этот пакет могут > поддерживать другие люди и хотелось бы, чтобы эта поддержка была вот без (Note to self: мне надо бы подробно расписать в каком-то публичном месте, что делает пакет llvm-common, как и зачем, как раз для других людей и приравненного к ним будущего себя.) У себя в packages я подробно веду git-историю всего, что происходит со спеком, с пояснением, почему. Правда, её не видно в git.altlinux.org/srpms... В самом спеке около каждого дредноута я кратко пишу, зачем он. Надо бы собирать из gear, но с использованием апстримных тарболлов, без мучительной перепаковки. В инструментарии gear у нас есть gear-import, а вот, например, такого нет: tar.xz clang name=clang-@version@.src origin=https://github.com/llvm/llvm-project/releases/download/llvmorg-@version@/clang-@version@.src.tar.xz Тогда gear мог бы взять локально закешированный тарболл, выкачанный оттуда, и при составлении исходного пакета его использовать. При этом тарболл распакован в git-репозиторий, с каталогом можно работать средствами git. > таких объездов, особенно, если тут есть те, кто могут помочь и исправить > rpm/gear/whatever. > > PS До сих пор собираю новую версию postfix вот именно из-за таких > прекрасных патчей и .spec которые, конечно, собирают в результате > космический дрендноут, но уж очень неподдерживаемые. Я где-то краем уха слышал, что мейнтейнеры сами недовольны сложившейся ситуацией, но забрасывать дрындноут не готовы, и ребейзить его тоже некогда. > > PPS Огромное спасибо вам, что не бросаете работу и таки собрали пакет! :) [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] [#263468] EPERM (try 14) llvm-common.git=11.0.0-alt2 srpm=llvm11.0-11.0.0-alt2.src.rpm 2021-01-12 12:09 ` Arseny Maslennikov @ 2021-01-14 21:12 ` Konstantin Lepikhov 2021-01-15 8:50 ` Arseny Maslennikov 0 siblings, 1 reply; 79+ messages in thread From: Konstantin Lepikhov @ 2021-01-14 21:12 UTC (permalink / raw) To: devel Hi Arseny! On 01/12/2021, at 03:09:01 PM you wrote: <skip> > > а мы куда то спешим? > > Самая важная причина, по которой я начал миграцию llvm в собственный > префикс — в том, что разным пакетам, в т. ч. пакетам-тулчейнам, требуются > llvm разной мажорной версии в одном репозитории, потому что они написаны > с расчётом на конкретную мажорную версию, и в том, что пользователи > не-мейнтейнеры хотели бы иметь в репозитории свежий clang и иногда > старый clang. Я не планирую сборку rc в репозиторий, но вот test-only > задания — почему нет, если так будет удобно. пакеты-тучейны это интересно звучит, но как это применимо к дистрибутиву? Весь эти тулчейны как правило имеют свой бранч/репо llvm, и живут своей жизнью, отдельной от апстрима. Т.е. например, они внезапно могут не поддерживать ту или иную версию gcc/libc в сизифе, я уж не говорю про архитектуру. И толк-то какой от них? Разве ООО захочет просертифицировать какой-то продукт на базе этих тулчейнов или нужно будет добиться ABI совместимости (хотя в этом случае достаточно пропатчить glibc в рамках конкретного релиза, а не пересобирать весь тулчейн целиком). У вас есть примеры которые вот так прямо нужны в сизифе? <skip> > > > > т.е. планируется собирать раздельные версии clang/llvm/lld? > > на всякий случай уточню: я понял эти слова так, что в репозитории могут > сосуществовать clang-11, clang-12 и clang-10, lld-11, lld-12 и lld-10, и > да, разные мажорные версии собираются не из одного исходного пакета. понял. > > > > > > > не в рамках одного исходного пакета. > > Я знаю, что в Fedora/Arch так делают, поэтому и спросил. Еще у нас есть > > lav@ который собирает все что находит - > > > > https://bugzilla.altlinux.org/show_bug.cgi?id=33411 > > https://bugzilla.altlinux.org/show_bug.cgi?id=34672 > > > > Тут все еще есть нерешенная проблема - чего мы хотим достигнуть с llvm в > > сизифе? Конкурентный toolchain или еще одну библиотеку для сборки пакета > > xyz. > > И то, и другое. > И не только тулчейн, там ещё много всего интересного. см. выше. Как пример от меня - у нас есть пакет vulkan-amdgpu, это vulkan ICD для amd, который собирается на базе libllvm из master + патчи от amd + обвязка к железу. Пакетить это "по уму" просто трата времени, поскольку все это генерирует на выходе _одну_ библиотеку. Т.е. проще собрать libllvm статиком и воткнуть его в эту библиотеку. В этом виде ваши усилия как бы сбоку, поскольку все равно AMD собирает эту библиотеку gcc, и, думаю, даже не планирует переходить на clang. А есть, например их toolchain https://github.com/ROCm-Developer-Tools/aomp > AOMP is a clang/llvm compiler, it also supports GPU offloading with HIP, > CUDA, and OpenCL. Some sources to support OpenMP target offload on AMD GPUs have not yet been merged into the upstream LLVM trunk. Как ваш патч тут поможет? -- WBR et al. ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] [#263468] EPERM (try 14) llvm-common.git=11.0.0-alt2 srpm=llvm11.0-11.0.0-alt2.src.rpm 2021-01-14 21:12 ` Konstantin Lepikhov @ 2021-01-15 8:50 ` Arseny Maslennikov 0 siblings, 0 replies; 79+ messages in thread From: Arseny Maslennikov @ 2021-01-15 8:50 UTC (permalink / raw) To: devel [-- Attachment #1: Type: text/plain, Size: 7921 bytes --] On Thu, Jan 14, 2021 at 10:12:38PM +0100, Konstantin Lepikhov wrote: > Hi Arseny! > > On 01/12/2021, at 03:09:01 PM you wrote: > > <skip> > > > а мы куда то спешим? > > > > Самая важная причина, по которой я начал миграцию llvm в собственный > > префикс — в том, что разным пакетам, в т. ч. пакетам-тулчейнам, требуются > > llvm разной мажорной версии в одном репозитории, потому что они написаны > > с расчётом на конкретную мажорную версию, и в том, что пользователи > > не-мейнтейнеры хотели бы иметь в репозитории свежий clang и иногда > > старый clang. Я не планирую сборку rc в репозиторий, но вот test-only > > задания — почему нет, если так будет удобно. > пакеты-тучейны это интересно звучит, но как это применимо к дистрибутиву? > Все эти тулчейны как правило имеют свой бранч/репо llvm, и живут своей > жизнью, отдельной от апстрима. Т.е. например, они внезапно могут не Все или не все — покажет практика и время. > поддерживать ту или иную версию gcc/libc в сизифе, я уж не говорю про > архитектуру. И толк-то какой от них? Разве ООО захочет просертифицировать Если официально признАть, что сизиф нужен только в качеСтве базы для дистрибутивов ООО (варианТ покруче — только сертифицированных), то вообще полсизифа надо удалять, а сообщество за пРеделами ООО и его клиентов — распускАть за ненадобностью. > какой-то продукт на базе этих тулчейнов или нужно будет добиться ABI > совместимости (хотя в этом случае достаточно пропатчить glibc в рамках > конкретного релиза, а не пересобирать весь тулчейн целиком). > > У вас есть примеры которые вот так прямо нужны в сизифе? Взглянул вот на сегодняшний rust. 2 патча, не связанные с llvm по смыслу, и 1 патч, принятый в апстрим Rust. %def_without bundled_llvm. Никакой личной жизни не видно, хотя когда-то, скорее всего, была. Впрочем, найдутся и те, кому ничего в сизифе вот так прямо не нужно, потому что их сам сизиф по тем или иным причинам не устраивает, или потому что от всего сизифа им нужно пакетов 50. Более того, у разных лиц это окажутся разные множества пакетов. > > <skip> > > > > > т.е. планируется собирать раздельные версии clang/llvm/lld? > > > > на всякий случай уточню: я понял эти слова так, что в репозитории могут > > сосуществовать clang-11, clang-12 и clang-10, lld-11, lld-12 и lld-10, и > > да, разные мажорные версии собираются не из одного исходного пакета. > понял. > > > > > > > > > > > не в рамках одного исходного пакета. > > > Я знаю, что в Fedora/Arch так делают, поэтому и спросил. Еще у нас есть > > > lav@ который собирает все что находит - > > > > > > https://bugzilla.altlinux.org/show_bug.cgi?id=33411 > > > https://bugzilla.altlinux.org/show_bug.cgi?id=34672 > > > > > > Тут все еще есть нерешенная проблема - чего мы хотим достигнуть с llvm в > > > сизифе? Конкурентный toolchain или еще одну библиотеку для сборки пакета > > > xyz. Можно, конечно, к каждому пользователю llvm в комплект тащить свою копию llvm (или форк) и собирать его статически, обмазав LTO. Но возникают три недостатка: * в репозитории отсутствуют clang и clang-tools для пользователей сизифа; * пакеты будут безобразно распухать в объёме; * (теор.) в случае необходимости навязать важное исправление патч придётся накладывать в N мест вместо 1. Да, третий пункт — теоретический, но никакой процесс обеспечения безопасности не имеет смысла, если не опирается на достаточно надёжный toolchain. Поэтому у нас и введено в традицию по возможности переиспользовать компоненты, которые используем при сборке.[1] По моему личному мнению, первого уже достаточно, чтобы не делать это "нормой всеобщего законодательства" (c). > > > > И то, и другое. > > И не только тулчейн, там ещё много всего интересного. > см. выше. > > Как пример от меня - у нас есть пакет vulkan-amdgpu, это vulkan ICD для > amd, который собирается на базе libllvm из master + патчи от amd + обвязка > к железу. Пакетить это "по уму" просто трата времени, поскольку все это > генерирует на выходе _одну_ библиотеку. Т.е. проще собрать libllvm > статиком и воткнуть его в эту библиотеку. В этом виде ваши усилия как бы > сбоку, поскольку все равно AMD собирает эту библиотеку gcc, и, думаю, даже не > планирует переходить на clang. > > А есть, например их toolchain https://github.com/ROCm-Developer-Tools/aomp > > > AOMP is a clang/llvm compiler, it also supports GPU offloading with HIP, > > CUDA, and OpenCL. > > Some sources to support OpenMP target offload on AMD GPUs have not yet > been merged into the upstream LLVM trunk. > > Как ваш патч тут поможет? Тут — честно, никак. А вот с https://bugzilla.altlinux.org/show_bug.cgi?id=39087 должен помочь. P.S. [1] Даже если целесообразность динамической линковки резко упадёт, есть теоретические меры, которые можно было бы принять в репозитории — например, введение в пакетную систему аналога дебиановского Built-Using. [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] [#263468] EPERM (try 14) llvm-common.git=11.0.0-alt2 srpm=llvm11.0-11.0.0-alt2.src.rpm 2021-01-11 21:41 ` Konstantin Lepikhov 2021-01-11 23:16 ` Dmitry V. Levin 2021-01-12 12:09 ` Arseny Maslennikov @ 2021-01-12 21:39 ` Vitaly Lipatov 2021-01-14 20:55 ` Konstantin Lepikhov 2 siblings, 1 reply; 79+ messages in thread From: Vitaly Lipatov @ 2021-01-12 21:39 UTC (permalink / raw) To: devel Konstantin Lepikhov писал 12.1.21 0:41: ... >> не в рамках одного исходного пакета. > Я знаю, что в Fedora/Arch так делают, поэтому и спросил. Еще у нас есть > lav@ который собирает все что находит - > > https://bugzilla.altlinux.org/show_bug.cgi?id=33411 > https://bugzilla.altlinux.org/show_bug.cgi?id=34672 Ну что поделать, я провёл детство на городских и районных свалках. Хотите что-то изменить в нём? Отвечать на ваше высказывание смысла не вижу, но других хочу уверить, что я собираю то, что позволяет решить те или иные задачи. А не всё подряд. -- С уважением, Виталий Липатов, ALT Linux Team ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] [#263468] EPERM (try 14) llvm-common.git=11.0.0-alt2 srpm=llvm11.0-11.0.0-alt2.src.rpm 2021-01-12 21:39 ` Vitaly Lipatov @ 2021-01-14 20:55 ` Konstantin Lepikhov 0 siblings, 0 replies; 79+ messages in thread From: Konstantin Lepikhov @ 2021-01-14 20:55 UTC (permalink / raw) To: devel Hi Vitaly! On 01/13/2021, at 12:39:43 AM you wrote: > Konstantin Lepikhov писал 12.1.21 0:41: > ... > >> не в рамках одного исходного пакета. > > Я знаю, что в Fedora/Arch так делают, поэтому и спросил. Еще у нас есть > > lav@ который собирает все что находит - > > > > https://bugzilla.altlinux.org/show_bug.cgi?id=33411 .. lldb нужен для сборки .NET Core > > https://bugzilla.altlinux.org/show_bug.cgi?id=34672 .. Пакет собирается ради наличия альтернативной стандартной C++-библиотеки. <skip> > Отвечать на ваше высказывание смысла не вижу, но других хочу уверить, > что я собираю то, что позволяет решить те или иные задачи. А не всё > подряд. Мы все вам поверили, ведь вы так подробно описали ваши задачи в ошибках. -- WBR et al. ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] [#263468] EPERM (try 14) llvm-common.git=11.0.0-alt2 srpm=llvm11.0-11.0.0-alt2.src.rpm 2021-01-11 16:09 ` [devel] [#263468] EPERM (try 14) llvm-common.git=11.0.0-alt2 srpm=llvm11.0-11.0.0-alt2.src.rpm Konstantin Lepikhov 2021-01-11 16:31 ` Michael Shigorin 2021-01-11 16:38 ` Arseny Maslennikov @ 2021-01-13 12:47 ` Alexey Sheplyakov 2021-01-14 20:46 ` Konstantin Lepikhov 2 siblings, 1 reply; 79+ messages in thread From: Alexey Sheplyakov @ 2021-01-13 12:47 UTC (permalink / raw) To: devel Добрый день! On 1/11/21 8:09 PM, Konstantin Lepikhov wrote: >> %build >> +%define _cmake_skip_rpath -DCMAKE_SKIP_RPATH:BOOL=OFF >> %cmake -G Ninja \ >> -DLLVM_PARALLEL_LINK_JOBS=1 \ >> -DCMAKE_BUILD_TYPE=Release \ >> + -DCMAKE_INSTALL_PREFIX=%llvm_prefix \ >> + -DCMAKE_SKIP_INSTALL_RPATH:BOOL=OFF \ >> -DBUILD_SHARED_LIBS:BOOL=OFF \ >> - -DLLVM_TARGETS_TO_BUILD="host;AMDGPU;BPF;NVPTX;" \ >> + -DLLVM_TARGETS_TO_BUILD="all" \ > Почему нам нужны все TARGETS? Для Mesa, например. И для кросс-компиляции (clang --target=aarch64-linux-gnu). Не так, что прям кровь из носу нужны. Но весьма приятны. ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] [#263468] EPERM (try 14) llvm-common.git=11.0.0-alt2 srpm=llvm11.0-11.0.0-alt2.src.rpm 2021-01-13 12:47 ` Alexey Sheplyakov @ 2021-01-14 20:46 ` Konstantin Lepikhov 2021-01-15 7:49 ` Ivan A. Melnikov 2021-01-15 8:50 ` Alexey Sheplyakov 0 siblings, 2 replies; 79+ messages in thread From: Konstantin Lepikhov @ 2021-01-14 20:46 UTC (permalink / raw) To: devel Hi Alexey! On 01/13/2021, at 04:47:46 PM you wrote: > Добрый день! > > On 1/11/21 8:09 PM, Konstantin Lepikhov wrote: > > >> %build > >> +%define _cmake_skip_rpath -DCMAKE_SKIP_RPATH:BOOL=OFF > >> %cmake -G Ninja \ > >> -DLLVM_PARALLEL_LINK_JOBS=1 \ > >> -DCMAKE_BUILD_TYPE=Release \ > >> + -DCMAKE_INSTALL_PREFIX=%llvm_prefix \ > >> + -DCMAKE_SKIP_INSTALL_RPATH:BOOL=OFF \ > >> -DBUILD_SHARED_LIBS:BOOL=OFF \ > >> - -DLLVM_TARGETS_TO_BUILD="host;AMDGPU;BPF;NVPTX;" \ > >> + -DLLVM_TARGETS_TO_BUILD="all" \ > > > Почему нам нужны все TARGETS? > > Для Mesa, например. И для кросс-компиляции (clang --target=aarch64-linux-gnu). для Mesa нужен только AMDGPU а не _все_ TARGETS. И кросскопиляция это самодельный колхоз, который все равно не поддерживается на уровне дистрибутива. > Не так, что прям кровь из носу нужны. Но весьма приятны. Тут кто-то недавно жаловался, что сборка llvm с полным debuginfo сьела всю память на сборочнице, есть подозрение, что он с вами не согласится. -- WBR et al. ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] [#263468] EPERM (try 14) llvm-common.git=11.0.0-alt2 srpm=llvm11.0-11.0.0-alt2.src.rpm 2021-01-14 20:46 ` Konstantin Lepikhov @ 2021-01-15 7:49 ` Ivan A. Melnikov 2021-01-15 8:50 ` Alexey Sheplyakov 1 sibling, 0 replies; 79+ messages in thread From: Ivan A. Melnikov @ 2021-01-15 7:49 UTC (permalink / raw) To: devel On Thu, Jan 14, 2021 at 09:46:46PM +0100, Konstantin Lepikhov wrote: > Hi Alexey! > > On 01/13/2021, at 04:47:46 PM you wrote: > > > Добрый день! > > > > On 1/11/21 8:09 PM, Konstantin Lepikhov wrote: > > > > >> %build > > >> +%define _cmake_skip_rpath -DCMAKE_SKIP_RPATH:BOOL=OFF > > >> %cmake -G Ninja \ > > >> -DLLVM_PARALLEL_LINK_JOBS=1 \ > > >> -DCMAKE_BUILD_TYPE=Release \ > > >> + -DCMAKE_INSTALL_PREFIX=%llvm_prefix \ > > >> + -DCMAKE_SKIP_INSTALL_RPATH:BOOL=OFF \ > > >> -DBUILD_SHARED_LIBS:BOOL=OFF \ > > >> - -DLLVM_TARGETS_TO_BUILD="host;AMDGPU;BPF;NVPTX;" \ > > >> + -DLLVM_TARGETS_TO_BUILD="all" \ > > > > > Почему нам нужны все TARGETS? > > > > Для Mesa, например. И для кросс-компиляции (clang --target=aarch64-linux-gnu). > для Mesa нужен только AMDGPU а не _все_ TARGETS. И кросскопиляция это > самодельный колхоз, который все равно не поддерживается на уровне > дистрибутива. Ну, надо же с чего то начать. -- wbr, iv m. ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] [#263468] EPERM (try 14) llvm-common.git=11.0.0-alt2 srpm=llvm11.0-11.0.0-alt2.src.rpm 2021-01-14 20:46 ` Konstantin Lepikhov 2021-01-15 7:49 ` Ivan A. Melnikov @ 2021-01-15 8:50 ` Alexey Sheplyakov 2021-01-15 9:45 ` Konstantin Lepikhov 2021-01-15 13:46 ` [devel] [#263468] EPERM (try 14) llvm-common.git=11.0.0-alt2 srpm=llvm11.0-11.0.0-alt2.src.rpm Alexey V. Vissarionov 1 sibling, 2 replies; 79+ messages in thread From: Alexey Sheplyakov @ 2021-01-15 8:50 UTC (permalink / raw) To: devel Добрый день! On 1/15/21 12:46 AM, Konstantin Lepikhov wrote: >>> Почему нам нужны все TARGETS? >> >> Для Mesa, например. И для кросс-компиляции (clang --target=aarch64-linux-gnu). > для Mesa нужен только AMDGPU а не _все_ TARGETS. Кроме amdgpu в мире (особенно в arm его части) есть много других GPU. > И кросскопиляция это самодельный колхоз, который все равно неподдерживается на уровне > дистрибутива. Кросс-компиляция - это стандартный способ работы. И то, что он "не поддерживается на уровне дистрибутива" - очень, очень плохо. Особенно когда это "не поддерживается" обусловлено не техническими причинами, а чьими-то субъективными предпочтениями. В частности, свежий clang (начиная с 10) вполне себе годится для сборки ядер (где-то с 5.4). И не нужно держать зоопарк gcc-{aarch64,arm,mipsel}. Отрезать эту возможность просто потому, что лично Вам она не нравится/не нужна - как-то странно. >> Не так, что прям кровь из носу нужны. Но весьма приятны. > Тут кто-то недавно жаловался, что сборка llvm с полным debuginfo сьела всю > память на сборочнице, есть подозрение, что он с вами не согласится. Значит, не надо собирать с "полным debuginfo" [1]. Или памяти добавить. А не урезать функциональность и/или отключать оптимизацию. [1] В случае C++ с кучей шаблонов debuginfo жрет много. И слабо полезен. ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] [#263468] EPERM (try 14) llvm-common.git=11.0.0-alt2 srpm=llvm11.0-11.0.0-alt2.src.rpm 2021-01-15 8:50 ` Alexey Sheplyakov @ 2021-01-15 9:45 ` Konstantin Lepikhov 2021-01-15 12:38 ` [devel] И еще про кросс-компиляторы (Re: [#263468] EPERM (try 14) llvm-common.git=11.0.0-alt2 srpm=llvm11.0-11.0.0-alt2.src.rpm) Alexey Sheplyakov 2021-01-15 13:46 ` [devel] [#263468] EPERM (try 14) llvm-common.git=11.0.0-alt2 srpm=llvm11.0-11.0.0-alt2.src.rpm Alexey V. Vissarionov 1 sibling, 1 reply; 79+ messages in thread From: Konstantin Lepikhov @ 2021-01-15 9:45 UTC (permalink / raw) To: devel Hi Alexey! On 01/15/2021, at 12:50:49 PM you wrote: > Добрый день! > > On 1/15/21 12:46 AM, Konstantin Lepikhov wrote: > > >>> Почему нам нужны все TARGETS? > >> > >> Для Mesa, например. И для кросс-компиляции (clang --target=aarch64-linux-gnu). > > для Mesa нужен только AMDGPU а не _все_ TARGETS. > > Кроме amdgpu в мире (особенно в arm его части) есть много других GPU. И для них всех, а также для zinc в Mesa llvm не нужен в принципе: ... elif with_amd_vk or with_gallium_radeonsi or with_gallium_swr error('The following drivers require LLVM: Radv, RadeonSI, SWR. One of these is enabled, but LLVM is disabled.') elif with_gallium_opencl error('The OpenCL "Clover" state tracker requires LLVM, but LLVM is disabled.') endif ... > > > > И кросскопиляция это самодельный колхоз, который все равно неподдерживается на уровне > > дистрибутива. > > Кросс-компиляция - это стандартный способ работы. И то, что он "не поддерживается > на уровне дистрибутива" - очень, очень плохо. Особенно когда это "не поддерживается" > обусловлено не техническими причинами, а чьими-то субъективными предпочтениями. > В частности, свежий clang (начиная с 10) вполне себе годится для сборки ядер > (где-то с 5.4). И не нужно держать зоопарк gcc-{aarch64,arm,mipsel}. Отрезать эту > возможность просто потому, что лично Вам она не нравится/не нужна - как-то странно. Собрать сферическое ядро в ваккуме это еще полдела, нужно собрать еще и драйверы так, чтобы они работали после этого. Продолжайте мечтать. > > >> Не так, что прям кровь из носу нужны. Но весьма приятны. > > Тут кто-то недавно жаловался, что сборка llvm с полным debuginfo сьела всю > > память на сборочнице, есть подозрение, что он с вами не согласится. > > Значит, не надо собирать с "полным debuginfo" [1]. Или памяти добавить. > А не урезать функциональность и/или отключать оптимизацию. Поддержка _всех_ поддерживаемых target'ов это не функциональность, а блажь. -- WBR et al. ^ permalink raw reply [flat|nested] 79+ messages in thread
* [devel] И еще про кросс-компиляторы (Re: [#263468] EPERM (try 14) llvm-common.git=11.0.0-alt2 srpm=llvm11.0-11.0.0-alt2.src.rpm) 2021-01-15 9:45 ` Konstantin Lepikhov @ 2021-01-15 12:38 ` Alexey Sheplyakov 2021-06-17 8:46 ` Konstantin Lepikhov 0 siblings, 1 reply; 79+ messages in thread From: Alexey Sheplyakov @ 2021-01-15 12:38 UTC (permalink / raw) To: devel On 1/15/21 1:45 PM, Konstantin Lepikhov wrote: > Собрать сферическое ядро в ваккуме это еще полдела, Да не "сферическое в ваккуме", а вот конкретно это: https://github.com/asheplyakov/linux/tree/baikalm-5.4.y и это https://github.com/asheplyakov/linux/tree/baikalm-5.10.y > нужно собрать еще и драйверы так, чтобы они работали после этого. failed to parse: -ENOSENSE > Продолжайте мечтать. Уже около года "мечтаю", ага. > Поддержка _всех_ поддерживаемых target'ов это не функциональность, а > блажь. Расскажите, пожалуйста, об этом авторам clang, а то мужики-то не знают, как надо компиляторы делать. Еще можно поучить уму-разуму Кена Томпсона, а то, вишь, придумали GOOS=adroid GOARCH=arm go build ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] И еще про кросс-компиляторы (Re: [#263468] EPERM (try 14) llvm-common.git=11.0.0-alt2 srpm=llvm11.0-11.0.0-alt2.src.rpm) 2021-01-15 12:38 ` [devel] И еще про кросс-компиляторы (Re: [#263468] EPERM (try 14) llvm-common.git=11.0.0-alt2 srpm=llvm11.0-11.0.0-alt2.src.rpm) Alexey Sheplyakov @ 2021-06-17 8:46 ` Konstantin Lepikhov 0 siblings, 0 replies; 79+ messages in thread From: Konstantin Lepikhov @ 2021-06-17 8:46 UTC (permalink / raw) To: devel Hi Alexey! On 01/15/2021, at 04:38:26 PM you wrote: <skip bla-bla-bla> > > Поддержка _всех_ поддерживаемых target'ов это не функциональность, а > > блажь. > > Расскажите, пожалуйста, об этом авторам clang, а то мужики-то не знают, > как надо компиляторы делать. Еще можно поучить уму-разуму Кена Томпсона, > а то, вишь, придумали ... https://gitlab.freedesktop.org/mesa/mesa/-/issues/4302 А теперь пожелайте удачи со сборкой будущих версий mesa, т.к. теперь clover там собрать опять нельзя. Проверено с llvm12.0 из сизифа: ... /usr/lib/llvm-12.0/include/llvm/Config/Targets.def:26: undefined reference to `LLVMInitializeAArch64Target' ld: src/gallium/frontends/clover/libclllvm.a(llvm_invocation.cpp.o): in function `LLVMInitializeAllTargets': /usr/lib/llvm-12.0/include/llvm/Config/Targets.def:28: undefined reference to `LLVMInitializeARMTarget' ld: /usr/lib/llvm-12.0/include/llvm/Config/Targets.def:29: undefined reference to `LLVMInitializeAVRTarget' ld: /usr/lib/llvm-12.0/include/llvm/Config/Targets.def:30: undefined reference to `LLVMInitializeBPFTarget' ld: /usr/lib/llvm-12.0/include/llvm/Config/Targets.def:31: undefined reference to `LLVMInitializeHexagonTarget' ld: /usr/lib/llvm-12.0/include/llvm/Config/Targets.def:32: undefined reference to `LLVMInitializeLanaiTarget' ld: /usr/lib/llvm-12.0/include/llvm/Config/Targets.def:33: undefined reference to `LLVMInitializeMipsTarget' ld: /usr/lib/llvm-12.0/include/llvm/Config/Targets.def:34: undefined reference to `LLVMInitializeMSP430Target' ld: /usr/lib/llvm-12.0/include/llvm/Config/Targets.def:35: undefined reference to `LLVMInitializeNVPTXTarget' ld: /usr/lib/llvm-12.0/include/llvm/Config/Targets.def:36: undefined reference to `LLVMInitializePowerPCTarget' ld: /usr/lib/llvm-12.0/include/llvm/Config/Targets.def:37: undefined reference to `LLVMInitializeRISCVTarget' ld: /usr/lib/llvm-12.0/include/llvm/Config/Targets.def:38: undefined reference to `LLVMInitializeSparcTarget' ld: /usr/lib/llvm-12.0/include/llvm/Config/Targets.def:39: undefined reference to `LLVMInitializeSystemZTarget' ld: /usr/lib/llvm-12.0/include/llvm/Config/Targets.def:40: undefined reference to `LLVMInitializeWebAssemblyTarget' ld: /usr/lib/llvm-12.0/include/llvm/Config/Targets.def:42: undefined reference to `LLVMInitializeXCoreTarget' ld: src/gallium/frontends/clover/libclllvm.a(llvm_invocation.cpp.o): in function `(anonymous namespace)::create_context(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)': /usr/lib/llvm-12.0/include/llvm/Config/Targets.def:26: undefined reference to `LLVMInitializeAArch64TargetInfo' ld: src/gallium/frontends/clover/libclllvm.a(llvm_invocation.cpp.o): in function `LLVMInitializeAllTargetInfos': /usr/lib/llvm-12.0/include/llvm/Config/Targets.def:28: undefined reference to `LLVMInitializeARMTargetInfo Зато вы молодцы, запихали все возможные targets где не надо ради надуманной потребности "кросс-компиляции". -- WBR et al. ^ permalink raw reply [flat|nested] 79+ messages in thread
* Re: [devel] [#263468] EPERM (try 14) llvm-common.git=11.0.0-alt2 srpm=llvm11.0-11.0.0-alt2.src.rpm 2021-01-15 8:50 ` Alexey Sheplyakov 2021-01-15 9:45 ` Konstantin Lepikhov @ 2021-01-15 13:46 ` Alexey V. Vissarionov 1 sibling, 0 replies; 79+ messages in thread From: Alexey V. Vissarionov @ 2021-01-15 13:46 UTC (permalink / raw) To: ALT Linux Team development discussions On 2021-01-15 12:50:49 +0400, Alexey Sheplyakov wrote: > Отрезать [...] возможность просто потому, что лично Вам она не > нравится/не нужна - как-то странно. Личные предпочтения - хоть какой-то, но все же аргумент. Намного хуже, когда в пакет, наоборот, что-то пихают просто "на всякий случай, вдруг кому-то из пользователей понадобится". Причем именно в основной пакет, а не в %package :-/ -- Alexey V. Vissarionov gremlin ПРИ altlinux ТЧК org; +vii-cmiii-ccxxix-lxxix-xlii GPG: 0D92F19E1C0DC36E27F61A29CD17E2B43D879005 @ hkp://keys.gnupg.net ^ permalink raw reply [flat|nested] 79+ messages in thread
end of thread, other threads:[~2021-06-17 8:46 UTC | newest] Thread overview: 79+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2021-01-07 14:08 ` [devel] [#263468] EPERM (try 14) llvm-common.git=11.0.0-alt2 srpm=llvm11.0-11.0.0-alt2.src.rpm Arseny Maslennikov 2021-01-07 20:52 ` Konstantin Lepikhov 2021-01-07 21:18 ` Arseny Maslennikov 2021-01-11 9:13 ` Konstantin Lepikhov 2021-01-11 10:25 ` [devel] hazardous girar builder (was: Re: [#263468] EPERM (try 14) llvm-common.git=11.0.0-alt2 srpm=llvm11.0-11.0.0-alt2.src.rpm) Arseny Maslennikov 2021-01-11 10:44 ` [devel] hazardous girar builder Dmitry V. Levin 2021-01-11 10:49 ` Arseny Maslennikov 2021-01-11 10:56 ` Dmitry V. Levin 2021-01-11 11:08 ` Arseny Maslennikov 2021-01-11 11:22 ` Sergey V Turchin 2021-01-11 11:25 ` Anton Farygin 2021-01-11 11:32 ` Alexey Gladkov 2021-01-11 11:41 ` Yuri Sedunov 2021-01-11 12:00 ` Alexey Gladkov 2021-01-11 12:30 ` Arseny Maslennikov 2021-01-11 12:25 ` Sergey V Turchin 2021-01-12 7:44 ` Sergey V Turchin 2021-01-12 10:44 ` Alexey V. Vissarionov 2021-01-12 13:24 ` Sergey V Turchin 2021-01-11 12:30 ` Michael Shigorin 2021-01-11 13:21 ` Sergey V Turchin 2021-01-11 13:58 ` Arseny Maslennikov 2021-01-11 14:17 ` Sergey V Turchin 2021-01-12 7:55 ` Anton V. Boyarshinov 2021-01-12 8:13 ` Anton Farygin 2021-01-12 8:26 ` Anton V. Boyarshinov 2021-01-12 9:10 ` Anton Farygin 2021-01-12 10:10 ` Anton V. Boyarshinov 2021-01-12 11:10 ` Alexey V. Vissarionov 2021-01-12 12:53 ` Arseny Maslennikov 2021-01-12 13:18 ` Alexey V. Vissarionov 2021-01-12 14:10 ` Arseny Maslennikov 2021-01-12 19:06 ` Leonid Krivoshein 2021-01-12 20:54 ` [devel] html email in devel@ (was: Re: hazardous girar builder) Arseny Maslennikov 2021-01-13 8:45 ` Alexey V. Vissarionov 2021-01-13 8:54 ` Arseny Maslennikov 2021-01-13 8:59 ` Andrey Savchenko 2021-01-13 9:18 ` Arseny Maslennikov 2021-01-13 9:30 ` Vladimir D. Seleznev 2021-01-13 9:37 ` Alexey Gladkov 2021-01-13 9:48 ` Arseny Maslennikov 2021-01-13 9:21 ` Alexey Gladkov 2021-01-13 10:00 ` Andrey Savchenko 2021-01-13 10:10 ` Alexey Gladkov 2021-01-13 10:47 ` Andrey Savchenko 2021-01-13 11:48 ` Alexey Gladkov 2021-01-13 12:49 ` Dmitry V. Levin 2021-01-13 9:27 ` Vladimir D. Seleznev 2021-01-13 9:55 ` Andrey Savchenko 2021-01-13 10:14 ` Vladimir D. Seleznev 2021-01-13 10:49 ` Andrey Savchenko 2021-01-13 10:59 ` [devel] [JT] fortunes-ALT (was: html email in devel@) Michael Shigorin 2021-01-13 12:45 ` [devel] html email in devel@ (was: Re: hazardous girar builder) Dmitry V. Levin 2021-01-14 9:45 ` Alexey V. Vissarionov 2021-01-13 9:03 ` Alexey Gladkov 2021-01-12 18:10 ` [devel] hazardous girar builder Anton V. Boyarshinov 2021-01-12 18:40 ` Dmitry V. Levin 2021-01-12 18:48 ` Anton V. Boyarshinov 2021-01-12 14:12 ` Arseny Maslennikov 2021-01-11 16:09 ` [devel] [#263468] EPERM (try 14) llvm-common.git=11.0.0-alt2 srpm=llvm11.0-11.0.0-alt2.src.rpm Konstantin Lepikhov 2021-01-11 16:31 ` Michael Shigorin 2021-01-11 21:43 ` Konstantin Lepikhov 2021-01-11 16:38 ` Arseny Maslennikov 2021-01-11 21:41 ` Konstantin Lepikhov 2021-01-11 23:16 ` Dmitry V. Levin 2021-01-12 12:11 ` Arseny Maslennikov 2021-01-12 12:09 ` Arseny Maslennikov 2021-01-14 21:12 ` Konstantin Lepikhov 2021-01-15 8:50 ` Arseny Maslennikov 2021-01-12 21:39 ` Vitaly Lipatov 2021-01-14 20:55 ` Konstantin Lepikhov 2021-01-13 12:47 ` Alexey Sheplyakov 2021-01-14 20:46 ` Konstantin Lepikhov 2021-01-15 7:49 ` Ivan A. Melnikov 2021-01-15 8:50 ` Alexey Sheplyakov 2021-01-15 9:45 ` Konstantin Lepikhov 2021-01-15 12:38 ` [devel] И еще про кросс-компиляторы (Re: [#263468] EPERM (try 14) llvm-common.git=11.0.0-alt2 srpm=llvm11.0-11.0.0-alt2.src.rpm) Alexey Sheplyakov 2021-06-17 8:46 ` Konstantin Lepikhov 2021-01-15 13:46 ` [devel] [#263468] EPERM (try 14) llvm-common.git=11.0.0-alt2 srpm=llvm11.0-11.0.0-alt2.src.rpm Alexey V. Vissarionov
ALT Linux Team development discussions This inbox may be cloned and mirrored by anyone: git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \ devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru public-inbox-index devel Example config snippet for mirrors. Newsgroup available over NNTP: nntp://lore.altlinux.org/org.altlinux.lists.devel AGPL code for this site: git clone https://public-inbox.org/public-inbox.git