The package rpms/clang16.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/clang16.git/commit/?id=4ac0aacdbc...
https://src.fedoraproject.org/cgit/rpms/clang16.git/commit/?id=327d96277b...
https://src.fedoraproject.org/cgit/rpms/clang16.git/commit/?id=6f89e70358....
Change:
-%ifarch %{arm} riscv64
+%ifarch aarch64 %ix86 riscv64
+%ifarch %{arm} riscv64
Thanks.
Full change:
============
commit 4ac0aacdbc546aa08958f22dacb4116cc916a914
Author: Tulio Magno Quites Machado Filho <tuliom(a)redhat.com>
Date: Tue May 7 10:50:25 2024 -0300
Start distributing binaries
This is a partial backport from clang17 that let clang16 distribute the
binaries. It also comes with other fixes that had already been applied
to clang17 and were missing in clang16.
diff --git a/clang16.spec b/clang16.spec
index 5d385fe..ec9622b 100644
--- a/clang16.spec
+++ b/clang16.spec
@@ -15,6 +15,7 @@
%if %{with compat_build}
%global pkg_name clang%{maj_ver}
+%global sub_pkg_suffix %{maj_ver}
# Install clang to same prefix as llvm, so that apps that use llvm-config
# will also be able to find clang libs.
%global install_prefix %{_libdir}/llvm%{maj_ver}
@@ -22,15 +23,19 @@
%global install_includedir %{install_prefix}/include
%global install_libdir %{install_prefix}/lib
%global install_datadir %{install_prefix}/share
+%global install_libexecdir %{install_prefix}/libexec
+%global install_docdir %{install_datadir}/doc
-%global pkg_bindir %{install_bindir}
%global pkg_includedir %{install_includedir}
-%global pkg_libdir %{install_libdir}
%else
%global pkg_name clang
-%global install_prefix /usr
+%global install_prefix %{_prefix}
+%global install_bindir %{_bindir}
%global install_datadir %{_datadir}
-%global pkg_libdir %{_libdir}
+%global install_libdir %{_libdir}
+%global install_includedir %{_includedir}
+%global install_libexecdir %{_libexecdir}
+%global install_docdir %{_docdir}
%endif
%ifarch ppc64le
@@ -38,22 +43,25 @@
%global _smp_mflags -j8
%endif
+# Try to limit memory use on i686.
+%ifarch %ix86
+%constrain_build -m 3072
+%endif
+
%global clang_srcdir clang-%{clang_version}%{?rc_ver:rc%{rc_ver}}.src
%global clang_tools_srcdir clang-tools-extra-%{clang_version}%{?rc_ver:rc%{rc_ver}}.src
Name: %pkg_name
Version: %{clang_version}%{?rc_ver:~rc%{rc_ver}}
-Release: 6%{?dist}
+Release: 7%{?dist}
Summary: A C language family front-end for LLVM
License: Apache-2.0 WITH LLVM-exception OR NCSA
URL:
http://llvm.org
Source0:
https://github.com/llvm/llvm-project/releases/download/llvmorg-%{clang_ve...
Source3:
https://github.com/llvm/llvm-project/releases/download/llvmorg-%{clang_ve...
-%if %{without compat_build}
Source1:
https://github.com/llvm/llvm-project/releases/download/llvmorg-%{clang_ve...
Source2:
https://github.com/llvm/llvm-project/releases/download/llvmorg-%{clang_ve...
-%endif
Source4: release-keys.asc
%if %{without compat_build}
Source5: macros.%{name}
@@ -69,9 +77,6 @@ Patch5: 0010-PATCH-clang-Produce-DWARF4-by-default.patch
# Make clangBasic and clangDriver depend on LLVMTargetParser
# See
https://reviews.llvm.org/D141581
Patch7: D141581.diff
-# clang/cmake: Use installed gtest libraries for stand-alone builds
-# See
https://reviews.llvm.org/D138472
-Patch8: D138472.diff
# Backport from LLVM 18.
Patch9: 0001-clang-set-python3-as-required-build-dependency.patch
@@ -88,11 +93,9 @@ Patch100: 0001-Add-support-for-riscv64.patch
# Avoid unwanted dependency on python-recommonmark
Patch101: 0009-disable-recommonmark.patch
-%if %{without compat_build}
# Patches for clang-tools-extra
# See
https://reviews.llvm.org/D120301
Patch201: 0001-clang-tools-extra-Make-test-dependency-on-LLVMHello-.patch
-%endif
BuildRequires: clang
BuildRequires: cmake
@@ -102,8 +105,8 @@ BuildRequires: ninja-build
%global llvm_pkg_name llvm%{maj_ver}
%else
%global llvm_pkg_name llvm
-BuildRequires: llvm-test = %{version}
-BuildRequires: llvm-googletest = %{version}
+BuildRequires: %{llvm_pkg_name}-test = %{version}
+BuildRequires: %{llvm_pkg_name}-googletest = %{version}
%endif
BuildRequires: %{llvm_pkg_name}-devel = %{version}
@@ -131,10 +134,10 @@ BuildRequires: libatomic
# We need python3-devel for %%py3_shebang_fix
BuildRequires: python3-devel
-%if %{without compat_build}
# For reproducible pyc file generation
# See
https://docs.fedoraproject.org/en-US/packaging-guidelines/Python_Appendix...
BuildRequires: /usr/bin/marshalparser
+%if %{without compat_build}
%global py_reproducible_pyc_path %{buildroot}%{python3_sitelib}
%endif
@@ -186,7 +189,7 @@ libomp-devel to enable -fopenmp.
%package libs
Summary: Runtime library for clang
-Requires: %{name}-resource-filesystem%{?_isa} = %{version}
+Requires: %{name}-resource-filesystem = %{version}
Recommends: compiler-rt%{?_isa} = %{version}
# atomic support is not part of compiler-rt
Recommends: libatomic%{?_isa}
@@ -206,27 +209,34 @@ Runtime library for clang.
%package devel
Summary: Development header files for clang
Requires: %{name}-libs = %{version}-%{release}
-%if %{without compat_build}
Requires: %{name}%{?_isa} = %{version}-%{release}
# The clang CMake files reference tools from clang-tools-extra.
Requires: %{name}-tools-extra%{?_isa} = %{version}-%{release}
-%endif
+Provides: %{name}-devel(major) = %{maj_ver}
%description devel
Development header files for clang.
%package resource-filesystem
Summary: Filesystem package that owns the clang resource directory
-Provides: %{name}-resource-filesystem(major) = %{maj_ver}
+Provides: clang-resource-filesystem(major) = %{maj_ver}
+# This package can't be noarch for compat builds, becuase the x86_64 and i686
+# builds are installed to different prefixes.
+%if %{without compat_build}
+BuildArch: noarch
+%endif
%description resource-filesystem
This package owns the clang resouce directory: $libdir/clang/$version/
-%if %{without compat_build}
%package analyzer
Summary: A source code analysis framework
License: Apache-2.0 WITH LLVM-exception OR NCSA OR MIT
+# This package can't be noarch for compat builds, becuase the x86_64 and i686
+# builds are installed to different prefixes.
+%if %{without compat_build}
BuildArch: noarch
+%endif
Requires: %{name} = %{version}-%{release}
%description analyzer
@@ -253,16 +263,16 @@ Development header files for clang tools.
# Put git-clang-format in its own package, because it Requires git
# and we don't want to force users to install all those dependenices if they
# just want clang.
-%package -n git-clang-format
+%package -n git-clang-format%{?sub_pkg_suffix}
Summary: Integration of clang-format for git
Requires: %{name}-tools-extra = %{version}-%{release}
Requires: git
Requires: python3
-%description -n git-clang-format
+%description -n git-clang-format%{?sub_pkg_suffix}
clang-format integration for git.
-
+%if %{without compat_build}
%package -n python3-clang
Summary: Python3 bindings for clang
Requires: %{name}-devel%{?_isa} = %{version}-%{release}
@@ -277,15 +287,11 @@ Requires: python3
%prep
%{gpgverify} --keyring='%{SOURCE4}' --signature='%{SOURCE3}'
--data='%{SOURCE0}'
-%if %{with compat_build}
-%autosetup -n %{clang_srcdir} -p2
-%else
%{gpgverify} --keyring='%{SOURCE4}' --signature='%{SOURCE2}'
--data='%{SOURCE1}'
%setup -T -q -b 1 -n %{clang_tools_srcdir}
%autopatch -m200 -p2
-
# failing test case
rm test/clang-tidy/checkers/altera/struct-pack-align.cpp
@@ -308,12 +314,9 @@ rm test/CodeGen/profile-filter.c
tools/scan-view/share/startfile.py \
tools/scan-build-py/bin/* \
tools/scan-build-py/libexec/*
-%endif
%build
-# Use ThinLTO to limit build time.
-%define _lto_cflags -flto=thin
# And disable LTO on AArch64 and RISC-V entirely.
# Disable lto on i686 due to memory constraints.
%ifarch aarch64 %ix86 riscv64
@@ -353,24 +356,23 @@ sed -i 's/\@FEDORA_LLVM_LIB_SUFFIX\@//g' test/lit.cfg.py
-DCMAKE_CXX_FLAGS_RELWITHDEBINFO="%{optflags} -DNDEBUG" \
%endif
%if %{with compat_build}
- -DCLANG_BUILD_TOOLS:BOOL=OFF \
-DCMAKE_INSTALL_PREFIX=%{install_prefix} \
-DCLANG_INCLUDE_TESTS:BOOL=OFF \
-DLLVM_INCLUDE_TESTS:BOOL=OFF \
-DLLVM_CMAKE_DIR=%{install_libdir}/cmake/llvm \
%else
-DCLANG_INCLUDE_TESTS:BOOL=ON \
- -DLLVM_BUILD_UTILS:BOOL=ON \
- -DLLVM_EXTERNAL_CLANG_TOOLS_EXTRA_SOURCE_DIR=../%{clang_tools_srcdir} \
- -DLLVM_EXTERNAL_LIT=%{_bindir}/lit \
- -DLLVM_LIT_ARGS="-vv" \
- -DLLVM_MAIN_SRC_DIR=%{_datadir}/llvm/src \
%if 0%{?__isa_bits} == 64
-DLLVM_LIBDIR_SUFFIX=64 \
%else
-DLLVM_LIBDIR_SUFFIX= \
%endif
%endif
+ -DLLVM_BUILD_UTILS:BOOL=ON \
+ -DLLVM_EXTERNAL_CLANG_TOOLS_EXTRA_SOURCE_DIR=../%{clang_tools_srcdir} \
+ -DLLVM_EXTERNAL_LIT=%{_bindir}/lit \
+ -DLLVM_LIT_ARGS="-vv" \
+ -DLLVM_MAIN_SRC_DIR=%{_datadir}/llvm/src \
\
%if %{with compat_build}
-DLLVM_TABLEGEN_EXE:FILEPATH=%{_bindir}/llvm-tblgen-%{maj_ver} \
@@ -395,6 +397,11 @@ sed -i 's/\@FEDORA_LLVM_LIB_SUFFIX\@//g' test/lit.cfg.py
-DCLANG_REPOSITORY_STRING="%{?dist_vendor} %{version}-%{release}" \
%ifarch %{arm}
-DCLANG_DEFAULT_LINKER=lld \
+%endif
+%if %{with compat_build}
+ -DCLANG_RESOURCE_DIR=../../../lib/clang/%{maj_ver} \
+%else
+ -DCLANG_RESOURCE_DIR=../lib/clang/%{maj_ver} \
%endif
-DCLANG_DEFAULT_UNWINDLIB=libgcc
@@ -404,20 +411,13 @@ sed -i 's/\@FEDORA_LLVM_LIB_SUFFIX\@//g' test/lit.cfg.py
%cmake_install
-%if %{with compat_build}
-
-# Remove binaries/other files
-rm -Rf %{buildroot}%{install_bindir}
-rm -Rf %{buildroot}%{install_prefix}/share
-rm -Rf %{buildroot}%{install_prefix}/libexec
-# Remove scanview-py helper libs
-rm -Rf %{buildroot}%{install_prefix}/lib/{libear,libscanbuild}
-
-%else
+# Add a symlink in /usr/bin to clang-format-diff
+ln -s %{install_datadir}/clang/clang-format-diff.py
%{buildroot}%{install_bindir}/clang-format-diff
# File in the macros file for other packages to use. We are not doing this
# in the compat package, because the version macros would # conflict with
# eachother if both clang and the clang compat package were installed together.
+%if %{without compat_build}
install -p -m0644 -D %{SOURCE5} %{buildroot}%{_rpmmacrodir}/macros.%{name}
sed -i -e "s|@@CLANG_MAJOR_VERSION@@|%{maj_ver}|" \
-e "s|@@CLANG_MINOR_VERSION@@|%{min_ver}|" \
@@ -433,54 +433,72 @@ install -p -m644 bindings/python/clang/*
%{buildroot}%{python3_sitelib}/clang/
mv %{buildroot}%{_prefix}/%{_lib}/{libear,libscanbuild} %{buildroot}%{python3_sitelib}
%py_byte_compile %{__python3} %{buildroot}%{python3_sitelib}/{libear,libscanbuild}
-# Fix permissions of scan-view scripts
-chmod a+x %{buildroot}%{_datadir}/scan-view/{Reporter.py,startfile.py}
-
-# multilib fix
-%multilib_fix_c_header --file %{_includedir}/clang/Config/config.h
-
# Move emacs integration files to the correct directory
mkdir -p %{buildroot}%{_emacs_sitestartdir}
for f in clang-format.el clang-rename.el clang-include-fixer.el; do
mv %{buildroot}{%{_datadir}/clang,%{_emacs_sitestartdir}}/$f
done
-# remove editor integrations (bbedit, sublime, emacs, vim)
-rm -vf %{buildroot}%{_datadir}/clang/clang-format-bbedit.applescript
-rm -vf %{buildroot}%{_datadir}/clang/clang-format-sublime.py*
-
-# TODO: Package html docs
-rm -Rvf %{buildroot}%{_docdir}/Clang/clang/html
-rm -Rvf %{buildroot}%{_datadir}/clang/clang-doc-default-stylesheet.css
-rm -Rvf %{buildroot}%{_datadir}/clang/index.js
-
-# TODO: What are the Fedora guidelines for packaging bash autocomplete files?
-rm -vf %{buildroot}%{_datadir}/clang/bash-autocomplete.sh
-
# Create Manpage symlinks
ln -s clang.1.gz %{buildroot}%{_mandir}/man1/clang++.1.gz
ln -s clang.1.gz %{buildroot}%{_mandir}/man1/clang-%{maj_ver}.1.gz
ln -s clang.1.gz %{buildroot}%{_mandir}/man1/clang++-%{maj_ver}.1.gz
+# Fix permission
+chmod u-x %{buildroot}%{_mandir}/man1/scan-build.1*
+
# Add clang++-{version} symlink
ln -s clang++ %{buildroot}%{_bindir}/clang++-%{maj_ver}
+%else
+# Not sure where to put these python modules for the compat build.
+rm -Rf %{buildroot}%{install_libdir}/{libear,libscanbuild}
+
+# Not sure where to put the emacs integration files for the compat build.
+rm -Rf %{buildroot}%{install_datadir}/clang/*.el
+
+# Not sure what to do with man pages for the compat builds
+rm -Rf %{buildroot}%{install_prefix}/share/man/
+
+# Add version suffix to binaries
+mkdir -p %{buildroot}%{_bindir}
+for f in %{buildroot}/%{install_bindir}/*; do
+ filename=`basename $f`
+ if echo $filename | grep -e '%{maj_ver}'; then
+ continue
+ fi
+ ln -s ../../%{install_bindir}/$filename %{buildroot}/%{_bindir}/$filename-%{maj_ver}
+done
-# Fix permission
-chmod u-x %{buildroot}%{_mandir}/man1/scan-build.1*
+# Add clang++-{version} symlink
+ln -s ../../%{install_bindir}/clang++ %{buildroot}%{install_bindir}/clang++-%{maj_ver}
%endif
+# Fix permissions of scan-view scripts
+chmod a+x %{buildroot}%{install_datadir}/scan-view/{Reporter.py,startfile.py}
+
+# multilib fix
+%multilib_fix_c_header --file %{install_includedir}/clang/Config/config.h
+
+# remove editor integrations (bbedit, sublime, emacs, vim)
+rm -vf %{buildroot}%{install_datadir}/clang/clang-format-bbedit.applescript
+rm -vf %{buildroot}%{install_datadir}/clang/clang-format-sublime.py*
+
+# TODO: Package html docs
+rm -Rvf %{buildroot}%{install_docdir}/Clang/clang/html
+rm -Rvf %{buildroot}%{install_datadir}/clang/clang-doc-default-stylesheet.css
+rm -Rvf %{buildroot}%{install_datadir}/clang/index.js
+
+# TODO: What are the Fedora guidelines for packaging bash autocomplete files?
+rm -vf %{buildroot}%{install_datadir}/clang/bash-autocomplete.sh
+
+
# Create sub-directories in the clang resource directory that will be
# populated by other packages
-mkdir -p %{buildroot}%{pkg_libdir}/clang/%{maj_ver}/{include,lib,share}/
+mkdir -p %{buildroot}%{_prefix}/lib/clang/%{maj_ver}/{bin,include,lib,share}/
-%if %{without compat_build}
-# Add a symlink in /usr/bin to clang-format-diff
-ln -s %{_datadir}/clang/clang-format-diff.py %{buildroot}%{_bindir}/clang-format-diff
-%endif
-
%check
%if %{without compat_build}
%if %{with check}
@@ -489,139 +507,181 @@ ln -s %{_datadir}/clang/clang-format-diff.py
%{buildroot}%{_bindir}/clang-format
%cmake_build --target clang-test-depends \
ExtraToolsUnitTests ClangdUnitTests ClangIncludeCleanerUnitTests
ClangPseudoUnitTests
# requires lit.py from LLVM utilities
-# FIXME: Fix failing ARM tests
-LD_LIBRARY_PATH=%{buildroot}/%{_libdir} %{__ninja} check-all -C %{__cmake_builddir} || \
-%ifarch %{arm} riscv64
-:
-%else
-false
-%endif
+LD_LIBRARY_PATH=%{buildroot}/%{install_libdir} %{__ninja} check-all -C
%{__cmake_builddir}
%endif
%endif
-
-%if %{without compat_build}
%files
%license LICENSE.TXT
-%{_bindir}/clang
-%{_bindir}/clang++
-%{_bindir}/clang-%{maj_ver}
-%{_bindir}/clang++-%{maj_ver}
-%{_bindir}/clang-cl
-%{_bindir}/clang-cpp
+%{install_bindir}/clang
+%{install_bindir}/clang++
+%{install_bindir}/clang-%{maj_ver}
+%{install_bindir}/clang++-%{maj_ver}
+%{install_bindir}/clang-cl
+%{install_bindir}/clang-cpp
+%if %{without compat_build}
%{_mandir}/man1/clang.1.gz
%{_mandir}/man1/clang++.1.gz
%{_mandir}/man1/clang-%{maj_ver}.1.gz
%{_mandir}/man1/clang++-%{maj_ver}.1.gz
+%else
+%{_bindir}/clang-%{maj_ver}
+%{_bindir}/clang++-%{maj_ver}
+%{_bindir}/clang-cl-%{maj_ver}
+%{_bindir}/clang-cpp-%{maj_ver}
%endif
%files libs
-%if %{without compat_build}
-%{_libdir}/clang/%{maj_ver}/include/*
-%{_libdir}/*.so.*
-%else
-%{pkg_libdir}/*.so.*
-%{pkg_libdir}/clang/%{maj_ver}/include/*
-%endif
+%{install_prefix}/lib/clang/%{maj_ver}/include/*
+%{install_libdir}/*.so.*
%files devel
+%{install_libdir}/*.so
+%{install_includedir}/clang/
+%{install_includedir}/clang-c/
+%{install_libdir}/cmake/*
+%{install_bindir}/clang-tblgen
+%if %{with compat_build}
+%{_bindir}/clang-tblgen-%{maj_ver}
+%endif
+%dir %{install_datadir}/clang/
+
+%files resource-filesystem
+%dir %{_prefix}/lib/clang/
+%dir %{_prefix}/lib/clang/%{maj_ver}/
+%dir %{_prefix}/lib/clang/%{maj_ver}/bin/
+%dir %{_prefix}/lib/clang/%{maj_ver}/include/
+%dir %{_prefix}/lib/clang/%{maj_ver}/lib/
+%dir %{_prefix}/lib/clang/%{maj_ver}/share/
%if %{without compat_build}
-%{_libdir}/*.so
-%{_includedir}/clang/
-%{_includedir}/clang-c/
-%{_libdir}/cmake/*
-%{_bindir}/clang-tblgen
-%dir %{_datadir}/clang/
%{_rpmmacrodir}/macros.%{name}
-%else
-%{pkg_libdir}/*.so
-%{pkg_includedir}/clang/
-%{pkg_includedir}/clang-c/
-%{pkg_libdir}/cmake/
%endif
-%files resource-filesystem
-%dir %{pkg_libdir}/clang/
-%dir %{pkg_libdir}/clang/%{maj_ver}/
-%dir %{pkg_libdir}/clang/%{maj_ver}/include/
-%dir %{pkg_libdir}/clang/%{maj_ver}/lib/
-%dir %{pkg_libdir}/clang/%{maj_ver}/share/
-%if %{without compat_build}
%files analyzer
-%{_bindir}/scan-view
-%{_bindir}/scan-build
-%{_bindir}/analyze-build
-%{_bindir}/intercept-build
-%{_bindir}/scan-build-py
-%{_libexecdir}/ccc-analyzer
-%{_libexecdir}/c++-analyzer
-%{_libexecdir}/analyze-c++
-%{_libexecdir}/analyze-cc
-%{_libexecdir}/intercept-c++
-%{_libexecdir}/intercept-cc
-%{_datadir}/scan-view/
-%{_datadir}/scan-build/
+%{install_bindir}/scan-view
+%{install_bindir}/scan-build
+%{install_bindir}/analyze-build
+%{install_bindir}/intercept-build
+%{install_bindir}/scan-build-py
+%if %{with compat_build}
+%{_bindir}/scan-view-%{maj_ver}
+%{_bindir}/scan-build-%{maj_ver}
+%{_bindir}/analyze-build-%{maj_ver}
+%{_bindir}/intercept-build-%{maj_ver}
+%{_bindir}/scan-build-py-%{maj_ver}
+%endif
+%{install_libexecdir}/ccc-analyzer
+%{install_libexecdir}/c++-analyzer
+%{install_libexecdir}/analyze-c++
+%{install_libexecdir}/analyze-cc
+%{install_libexecdir}/intercept-c++
+%{install_libexecdir}/intercept-cc
+%{install_datadir}/scan-view/
+%{install_datadir}/scan-build/
+%if %{without compat_build}
%{_mandir}/man1/scan-build.1.*
%{python3_sitelib}/libear
%{python3_sitelib}/libscanbuild
+%endif
%files tools-extra
-%{_bindir}/amdgpu-arch
-%{_bindir}/clang-apply-replacements
-%{_bindir}/clang-change-namespace
-%{_bindir}/clang-check
-%{_bindir}/clang-doc
-%{_bindir}/clang-extdef-mapping
-%{_bindir}/clang-format
-%{_bindir}/clang-include-cleaner
-%{_bindir}/clang-include-fixer
-%{_bindir}/clang-move
-%{_bindir}/clang-offload-bundler
-%{_bindir}/clang-offload-packager
-%{_bindir}/clang-linker-wrapper
-%{_bindir}/clang-pseudo
-%{_bindir}/clang-query
-%{_bindir}/clang-refactor
-%{_bindir}/clang-rename
-%{_bindir}/clang-reorder-fields
-%{_bindir}/clang-repl
-%{_bindir}/clang-scan-deps
-%{_bindir}/clang-tidy
-%{_bindir}/clangd
-%{_bindir}/diagtool
-%{_bindir}/hmaptool
-%{_bindir}/nvptx-arch
-%{_bindir}/pp-trace
-%{_bindir}/c-index-test
-%{_bindir}/find-all-symbols
-%{_bindir}/modularize
-%{_bindir}/clang-format-diff
+%{install_bindir}/amdgpu-arch
+%{install_bindir}/clang-apply-replacements
+%{install_bindir}/clang-change-namespace
+%{install_bindir}/clang-check
+%{install_bindir}/clang-doc
+%{install_bindir}/clang-extdef-mapping
+%{install_bindir}/clang-format
+%{install_bindir}/clang-include-cleaner
+%{install_bindir}/clang-include-fixer
+%{install_bindir}/clang-move
+%{install_bindir}/clang-offload-bundler
+%{install_bindir}/clang-offload-packager
+%{install_bindir}/clang-linker-wrapper
+%{install_bindir}/clang-pseudo
+%{install_bindir}/clang-query
+%{install_bindir}/clang-refactor
+%{install_bindir}/clang-rename
+%{install_bindir}/clang-reorder-fields
+%{install_bindir}/clang-repl
+%{install_bindir}/clang-scan-deps
+%{install_bindir}/clang-tidy
+%{install_bindir}/clangd
+%{install_bindir}/diagtool
+%{install_bindir}/hmaptool
+%{install_bindir}/nvptx-arch
+%{install_bindir}/pp-trace
+%{install_bindir}/c-index-test
+%{install_bindir}/find-all-symbols
+%{install_bindir}/modularize
+%{install_bindir}/clang-format-diff
+%{install_bindir}/run-clang-tidy
+%if %{with compat_build}
+%{_bindir}/amdgpu-arch-%{maj_ver}
+%{_bindir}/clang-apply-replacements-%{maj_ver}
+%{_bindir}/clang-change-namespace-%{maj_ver}
+%{_bindir}/clang-check-%{maj_ver}
+%{_bindir}/clang-doc-%{maj_ver}
+%{_bindir}/clang-extdef-mapping-%{maj_ver}
+%{_bindir}/clang-format-%{maj_ver}
+%{_bindir}/clang-include-cleaner-%{maj_ver}
+%{_bindir}/clang-include-fixer-%{maj_ver}
+%{_bindir}/clang-move-%{maj_ver}
+%{_bindir}/clang-offload-bundler-%{maj_ver}
+%{_bindir}/clang-offload-packager-%{maj_ver}
+%{_bindir}/clang-linker-wrapper-%{maj_ver}
+%{_bindir}/clang-pseudo-%{maj_ver}
+%{_bindir}/clang-query-%{maj_ver}
+%{_bindir}/clang-refactor-%{maj_ver}
+%{_bindir}/clang-rename-%{maj_ver}
+%{_bindir}/clang-reorder-fields-%{maj_ver}
+%{_bindir}/clang-repl-%{maj_ver}
+%{_bindir}/clang-scan-deps-%{maj_ver}
+%{_bindir}/clang-tidy-%{maj_ver}
+%{_bindir}/clangd-%{maj_ver}
+%{_bindir}/diagtool-%{maj_ver}
+%{_bindir}/hmaptool-%{maj_ver}
+%{_bindir}/nvptx-arch-%{maj_ver}
+%{_bindir}/pp-trace-%{maj_ver}
+%{_bindir}/c-index-test-%{maj_ver}
+%{_bindir}/find-all-symbols-%{maj_ver}
+%{_bindir}/modularize-%{maj_ver}
+%{_bindir}/clang-format-diff-%{maj_ver}
+%{_bindir}/run-clang-tidy-%{maj_ver}
+%else
%{_mandir}/man1/diagtool.1.gz
%{_emacs_sitestartdir}/clang-format.el
%{_emacs_sitestartdir}/clang-rename.el
%{_emacs_sitestartdir}/clang-include-fixer.el
-%{_datadir}/clang/clang-format.py*
-%{_datadir}/clang/clang-format-diff.py*
-%{_datadir}/clang/clang-include-fixer.py*
-%{_datadir}/clang/clang-tidy-diff.py*
-%{_bindir}/run-clang-tidy
-%{_datadir}/clang/run-find-all-symbols.py*
-%{_datadir}/clang/clang-rename.py*
+%endif
+%{install_datadir}/clang/clang-format.py*
+%{install_datadir}/clang/clang-format-diff.py*
+%{install_datadir}/clang/clang-include-fixer.py*
+%{install_datadir}/clang/clang-tidy-diff.py*
+%{install_datadir}/clang/run-find-all-symbols.py*
+%{install_datadir}/clang/clang-rename.py*
%files tools-extra-devel
-%{_includedir}/clang-tidy/
+%{install_includedir}/clang-tidy/
-%files -n git-clang-format
-%{_bindir}/git-clang-format
+%files -n git-clang-format%{?sub_pkg_suffix}
+%{install_bindir}/git-clang-format
+%if %{with compat_build}
+%{_bindir}/git-clang-format-%{maj_ver}
+%endif
+%if %{without compat_build}
%files -n python3-clang
%{python3_sitelib}/clang/
%endif
%changelog
+* Thu May 02 2024 Tulio Magno Quites Machado Filho <tuliom(a)redhat.com> - 16.0.6-7
+- Start distributing the binaries. Fix rhbz#2277782
+
* Fri Feb 23 2024 Songsong Zhang <U2FsdGVkX1(a)gmail.com> - 16.0.6-6
- Add riscv64 support
commit 327d96277bf30f0ff72983735cf67882833e6458
Author: Tulio Magno Quites Machado Filho <tuliom(a)redhat.com>
Date: Tue Feb 27 12:53:39 2024 -0300
Disable LTO in i686 builds
Backport a change from rawhide commit
10f313f559152149c108b3302372af9451e45dd9 that disabled LTO in i686 due
to memory contraints when linking binaries.
diff --git a/clang16.spec b/clang16.spec
index c15d7b8..5d385fe 100644
--- a/clang16.spec
+++ b/clang16.spec
@@ -315,7 +315,8 @@ rm test/CodeGen/profile-filter.c
# Use ThinLTO to limit build time.
%define _lto_cflags -flto=thin
# And disable LTO on AArch64 and RISC-V entirely.
-%ifarch aarch64 riscv64
+# Disable lto on i686 due to memory constraints.
+%ifarch aarch64 %ix86 riscv64
%define _lto_cflags %{nil}
%endif
commit 6f89e70358ed01b19ec690ef07d1b432f3ed539f
Author: U2FsdGVkX1 <U2FsdGVkX1(a)gmail.com>
Date: Fri Feb 23 11:04:08 2024 +0800
Add riscv64 support
diff --git a/0001-Add-support-for-riscv64.patch b/0001-Add-support-for-riscv64.patch
new file mode 100644
index 0000000..cd8f49b
--- /dev/null
+++ b/0001-Add-support-for-riscv64.patch
@@ -0,0 +1,43 @@
+From 44bea1c1866d1d8e623f5a17db1bca0ea5abce83 Mon Sep 17 00:00:00 2001
+From: David Abdurachmanov <davidlt(a)rivosinc.com>
+Date: Mon, 24 Apr 2023 08:28:31 +0000
+Subject: [PATCH] Add support for riscv64
+
+Signed-off-by: David Abdurachmanov <davidlt(a)rivosinc.com>
+---
+ clang-16.0.1.src/lib/Driver/ToolChains/Gnu.cpp | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/clang-16.0.1.src/lib/Driver/ToolChains/Gnu.cpp
b/clang-16.0.1.src/lib/Driver/ToolChains/Gnu.cpp
+index 8fdf4de4..d682410d 100644
+--- a/clang-16.0.1.src/lib/Driver/ToolChains/Gnu.cpp
++++ b/clang-16.0.1.src/lib/Driver/ToolChains/Gnu.cpp
+@@ -1994,6 +1994,7 @@ static const char *ConvertToGccTriple(StringRef CandidateTriple) {
+ .Case("aarch64-redhat-linux-gnu", "aarch64-redhat-linux")
+ .Case("i686-redhat-linux-gnu", "i686-redhat-linux")
+ .Case("ppc64le-redhat-linux-gnu", "ppc64le-redhat-linux")
++ .Case("riscv64-redhat-linux-gnu", "riscv64-redhat-linux")
+ .Case("s390x-redhat-linux-gnu", "s390x-redhat-linux")
+ .Case("x86_64-redhat-linux-gnu", "x86_64-redhat-linux")
+ .Default(NULL);
+@@ -2346,7 +2347,8 @@ void Generic_GCC::GCCInstallationDetector::AddDefaultGCCPrefixes(
+ static const char *const RISCV64LibDirs[] = {"/lib64", "/lib"};
+ static const char *const RISCV64Triples[] = {"riscv64-unknown-linux-gnu",
+ "riscv64-linux-gnu",
+- "riscv64-unknown-elf"};
++ "riscv64-unknown-elf",
++ "riscv64-redhat-linux"};
+
+ static const char *const SPARCv8LibDirs[] = {"/lib32", "/lib"};
+ static const char *const SPARCv8Triples[] = {"sparc-linux-gnu",
+@@ -2890,6 +2892,7 @@ Generic_GCC::getDefaultUnwindTableLevel(const ArgList &Args)
const {
+ // rhbz#1655546
+ case llvm::Triple::systemz:
+ case llvm::Triple::arm:
++ case llvm::Triple::riscv64:
+ return UnwindTableLevel::Asynchronous;
+ default:
+ return UnwindTableLevel::None;
+--
+2.40.0
+
diff --git a/clang16.spec b/clang16.spec
index fd27653..c15d7b8 100644
--- a/clang16.spec
+++ b/clang16.spec
@@ -43,7 +43,7 @@
Name: %pkg_name
Version: %{clang_version}%{?rc_ver:~rc%{rc_ver}}
-Release: 5%{?dist}
+Release: 6%{?dist}
Summary: A C language family front-end for LLVM
License: Apache-2.0 WITH LLVM-exception OR NCSA
@@ -81,6 +81,9 @@ Patch10: fix-ieee128-cross.diff
#
https://reviews.llvm.org/D155192
Patch11: D155192.diff
+#
http://fedora.riscv.rocks:3000/rpms/clang/src/branch/f38-riscv64/0001-Add...
+Patch100: 0001-Add-support-for-riscv64.patch
+
# RHEL specific patches
# Avoid unwanted dependency on python-recommonmark
Patch101: 0009-disable-recommonmark.patch
@@ -311,8 +314,8 @@ rm test/CodeGen/profile-filter.c
# Use ThinLTO to limit build time.
%define _lto_cflags -flto=thin
-# And disable LTO on AArch64 entirely.
-%ifarch aarch64
+# And disable LTO on AArch64 and RISC-V entirely.
+%ifarch aarch64 riscv64
%define _lto_cflags %{nil}
%endif
@@ -322,7 +325,7 @@ sed -i 's/\@FEDORA_LLVM_LIB_SUFFIX\@/64/g' test/lit.cfg.py
sed -i 's/\@FEDORA_LLVM_LIB_SUFFIX\@//g' test/lit.cfg.py
%endif
-%ifarch s390 s390x %{arm} aarch64 %ix86 ppc64le
+%ifarch s390 s390x %{arm} aarch64 %ix86 ppc64le riscv64
# Decrease debuginfo verbosity to reduce memory consumption during final library linking
%global optflags %(echo %{optflags} | sed 's/-g /-g1 /')
%endif
@@ -344,7 +347,7 @@ sed -i 's/\@FEDORA_LLVM_LIB_SUFFIX\@//g' test/lit.cfg.py
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DPYTHON_EXECUTABLE=%{__python3} \
-DCMAKE_SKIP_RPATH:BOOL=ON \
-%ifarch s390 s390x %{arm} %ix86 ppc64le
+%ifarch s390 s390x %{arm} %ix86 ppc64le riscv64
-DCMAKE_C_FLAGS_RELWITHDEBINFO="%{optflags} -DNDEBUG" \
-DCMAKE_CXX_FLAGS_RELWITHDEBINFO="%{optflags} -DNDEBUG" \
%endif
@@ -487,7 +490,7 @@ ln -s %{_datadir}/clang/clang-format-diff.py
%{buildroot}%{_bindir}/clang-format
# requires lit.py from LLVM utilities
# FIXME: Fix failing ARM tests
LD_LIBRARY_PATH=%{buildroot}/%{_libdir} %{__ninja} check-all -C %{__cmake_builddir} || \
-%ifarch %{arm}
+%ifarch %{arm} riscv64
:
%else
false
@@ -618,6 +621,9 @@ false
%endif
%changelog
+* Fri Feb 23 2024 Songsong Zhang <U2FsdGVkX1(a)gmail.com> - 16.0.6-6
+- Add riscv64 support
+
* Tue Jan 23 2024 Fedora Release Engineering <releng(a)fedoraproject.org> - 16.0.6-5
- Rebuilt for
https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild