[devel] [#263468] EPERM (try 14) llvm-common.git=11.0.0-alt2 srpm=llvm11.0-11.0.0-alt2.src.rpm

Konstantin Lepikhov lakostis на altlinux.org
Пн Янв 11 19:09:45 MSK 2021


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.


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