ALT Linux Team development discussions
 help / color / mirror / Atom feed
* 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 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

* 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 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

* 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] [#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: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 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 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] 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-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: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  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] [#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-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] 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 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-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  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] 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 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

* [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" &lt;gremlin@altlinux.org&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>

Извините, ради всего святого, но у многих активных читателей devel@ и
писателей в него же ваши письма из-под yamail выглядят примерно так, как
процитировано :(, а в архивы рассылки эти письма вообще не попадают; читать
их и ссылаться на них затруднительно.

Я не знаю, как заставить yamail генерировать письма с текстом. Всякие
нынешние почтовики умеют делать письма с обоими версиями сразу под
разными MIME-типами.

[-- 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] 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" &lt;<a href="mailto:arseny@altlinux.org" rel="noopener noreferrer">arseny@altlinux.org</a>&gt;:</div><blockquote><p>On Tue, Jan 12, 2021 at 10:31:45PM +0300, Aleksey Cheusov wrote:</p><blockquote> &lt;div&gt;12.01.2021, 16:18, "Alexey V. Vissarionov" &amp;<a href="mailto:lt;gremlin@altlinux.org" rel="noopener noreferrer">lt;gremlin@altlinux.org</a>&amp;gt;:&lt;/div&gt;&lt;blockquote&gt;&lt;p&gt;On 2021-01-12 15:53:16 +0300, Arseny Maslennikov wrote:&lt;br /&gt;&lt;br /&gt; &amp;gt; Разве мнение тестера, администратора сборочницы или другого&lt;br /&gt; &amp;gt; одобрителя не является лишь рядовой галкой в списке этих&lt;br /&gt; &amp;gt; мнений, и для совершения коммита в репозиторий не необходимо,&lt;br /&gt; &amp;gt; чтобы все эти галки были булево истинными?&lt;br /&gt;&lt;br /&gt;Я в соседнем сообщении расписал чуть более логичный вариант&lt;br /&gt;workflow, нежели то, что сейчас реализовано у нас. Напомню,&lt;br /&gt;там параметр "--commit" определяет свойство итерации, а не&lt;br /&gt;задания, а для успешно собранного задания (с готовыми пакетами)&lt;br /&gt;предусмотрены три варианта: (1) уперлись в ACL, нужен аппрув,&lt;br /&gt;а для этого нужно тестирование; (2) уперлись в отсутствие&lt;br /&gt;параметра "--commit", нужно тестирование; (3) все в порядке,&lt;br /&gt;выполняем commit, пакеты уезжают в репу.&lt;/p&gt;&lt;/blockquote&gt;&lt;div&gt;Здесь все просто прекрасно. Надо еще опцию --test-only убрать,&lt;/div&gt;&lt;div&gt;ибо это дефолтное поведение должно быть.&lt;/div&gt;&lt;div&gt;В результате система максимально упростится.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;</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-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] 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  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  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: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  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: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  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: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: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: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: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] [#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] 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 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] [#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-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-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 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 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-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] [#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

* 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

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