import UBI lld-17.0.6-1.el9

This commit is contained in:
eabdullin 2024-04-30 15:28:01 +00:00
parent 7f8e1ba2b7
commit e854a73c86
4 changed files with 93 additions and 68 deletions

6
.gitignore vendored
View File

@ -1,4 +1,2 @@
SOURCES/cmake-16.0.6.src.tar.xz SOURCES/lld-17.0.6.src.tar.xz
SOURCES/cmake-16.0.6.src.tar.xz.sig SOURCES/lld-17.0.6.src.tar.xz.sig
SOURCES/lld-16.0.6.src.tar.xz
SOURCES/lld-16.0.6.src.tar.xz.sig

View File

@ -1,4 +1,2 @@
0de534cfef38697e115c3ae80634765f05e78e5b SOURCES/cmake-16.0.6.src.tar.xz abe5d45ebea2b9994a5e6ed31268a2114f4fa14f SOURCES/lld-17.0.6.src.tar.xz
2db5c88fe9277bb0fa85f49b58e946e49ff235c2 SOURCES/cmake-16.0.6.src.tar.xz.sig 849136b25fe7afb56131cdb31ffb08593b6ed997 SOURCES/lld-17.0.6.src.tar.xz.sig
2d0fabd3ed583d1030cfe802a709292057761f87 SOURCES/lld-16.0.6.src.tar.xz
4f5ffbb0aa5f32456432e450721b2e51f35638e6 SOURCES/lld-16.0.6.src.tar.xz.sig

View File

@ -1,37 +0,0 @@
From 56464ba865b7df5bf3edb9be7dc3b6a0fbe21e21 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org>
Date: Mon, 13 Mar 2023 18:22:31 +0100
Subject: [PATCH] [lld] Use installed llvm_gtest in standalone builds
Use the installed llvm_gtest library instead of rebuilding it locally
when standalone builds are used. This change is now required
as otherwise the build fails due to duplicate llvm_gtest target.
This is based on 82169103958583d3320b3a9a1e6542e8d32ef8da in clang.
Differential Revision: https://reviews.llvm.org/D145964
---
lld/CMakeLists.txt | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/lld/CMakeLists.txt b/lld/CMakeLists.txt
index 3d6225646fe6..1e9e47393196 100644
--- a/lld/CMakeLists.txt
+++ b/lld/CMakeLists.txt
@@ -75,11 +75,9 @@ if(LLD_BUILT_STANDALONE)
set(LLVM_UTILS_PROVIDED ON)
set(LLD_TEST_DEPS FileCheck not)
endif()
- set(UNITTEST_DIR ${LLVM_THIRD_PARTY_DIR}/unittest)
- if(EXISTS ${UNITTEST_DIR}/googletest/include/gtest/gtest.h
- AND NOT EXISTS ${LLVM_LIBRARY_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}gtest${CMAKE_STATIC_LIBRARY_SUFFIX}
- AND EXISTS ${UNITTEST_DIR}/CMakeLists.txt)
- add_subdirectory(${UNITTEST_DIR} third-party/unittest)
+
+ if (NOT TARGET llvm_gtest)
+ message(FATAL_ERROR "llvm-gtest not found. Please install llvm-gtest or disable tests with -DLLVM_INCLUDE_TESTS=OFF")
endif()
else()
# Seek installed Lit.
--
2.39.2

View File

@ -1,44 +1,83 @@
%global toolchain clang %bcond_with snapshot_build
%bcond_without check
%global lld_srcdir lld-%{maj_ver}.%{min_ver}.%{patch_ver}%{?rc_ver:rc%{rc_ver}}.src %if %{with snapshot_build}
%global cmake_srcdir cmake-%{maj_ver}.%{min_ver}.%{patch_ver}%{?rc_ver:rc%{rc_ver}}.src # Unlock LLVM Snapshot LUA functions
%global maj_ver 16 %{llvm_sb_verbose}
%{llvm_sb}
%endif
%global toolchain clang
# Opt out of https://fedoraproject.org/wiki/Changes/fno-omit-frame-pointer
# https://bugzilla.redhat.com/show_bug.cgi?id=2158587
%undefine _include_frame_pointers
%bcond_without check
%bcond_with compat_build
%global maj_ver 17
%global min_ver 0 %global min_ver 0
%global patch_ver 6 %global patch_ver 6
#global rc_ver 4
%if %{with snapshot_build}
%undefine rc_ver
%global maj_ver %{llvm_snapshot_version_major}
%global min_ver %{llvm_snapshot_version_minor}
%global patch_ver %{llvm_snapshot_version_patch}
%endif
%global lld_version %{maj_ver}.%{min_ver}.%{patch_ver}
%global lld_srcdir lld-%{lld_version}%{?rc_ver:rc%{rc_ver}}.src
%if %{with compat_build}
%global pkg_name lld%{maj_ver}
%global install_prefix %{_libdir}/llvm%{maj_ver}
%global install_includedir %{install_prefix}/include
%global install_libdir %{install_prefix}/lib
%global install_datadir %{install_prefix}/share
%else
%global pkg_name lld %global pkg_name lld
%global install_prefix /usr %global install_prefix /usr
%global install_includedir %{_includedir} %global install_includedir %{_includedir}
%global install_libdir %{_libdir} %global install_libdir %{_libdir}
%global install_datadir %{_datadir}
%endif
Name: %{pkg_name} Name: %{pkg_name}
Version: %{maj_ver}.%{min_ver}.%{patch_ver}%{?rc_ver:~rc%{rc_ver}} Version: %{lld_version}%{?rc_ver:~rc%{rc_ver}}%{?llvm_snapshot_version_suffix:~%{llvm_snapshot_version_suffix}}
Release: 1%{?dist} Release: 1%{?dist}
Summary: The LLVM Linker Summary: The LLVM Linker
License: Apache-2.0 WITH LLVM-exception OR NCSA License: Apache-2.0 WITH LLVM-exception OR NCSA
URL: http://llvm.org URL: http://llvm.org
%if %{with snapshot_build}
Source0: %{llvm_snapshot_source_prefix}lld-%{llvm_snapshot_yyyymmdd}.src.tar.xz
%{llvm_snapshot_extra_source_tags}
%else
Source0: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{maj_ver}.%{min_ver}.%{patch_ver}%{?rc_ver:-rc%{rc_ver}}/%{lld_srcdir}.tar.xz Source0: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{maj_ver}.%{min_ver}.%{patch_ver}%{?rc_ver:-rc%{rc_ver}}/%{lld_srcdir}.tar.xz
Source1: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{maj_ver}.%{min_ver}.%{patch_ver}%{?rc_ver:-rc%{rc_ver}}/%{lld_srcdir}.tar.xz.sig Source1: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{maj_ver}.%{min_ver}.%{patch_ver}%{?rc_ver:-rc%{rc_ver}}/%{lld_srcdir}.tar.xz.sig
Source2: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{maj_ver}.%{min_ver}.%{patch_ver}%{?rc_ver:-rc%{rc_ver}}/%{cmake_srcdir}.tar.xz Source2: release-keys.asc
Source3: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{maj_ver}.%{min_ver}.%{patch_ver}%{?rc_ver:-rc%{rc_ver}}/%{cmake_srcdir}.tar.xz.sig %endif
Source4: release-keys.asc
ExcludeArch: s390x ExcludeArch: s390x
# Backport from LLVM 17.
Patch0: 0001-lld-Use-installed-llvm_gtest-in-standalone-builds.patch
# Bundle libunwind header need during build for MachO support # Bundle libunwind header need during build for MachO support
Patch1: 0002-PATCH-lld-Import-compact_unwind_encoding.h-from-libu.patch Patch1: 0002-PATCH-lld-Import-compact_unwind_encoding.h-from-libu.patch
BuildRequires: clang BuildRequires: clang
BuildRequires: cmake BuildRequires: cmake
BuildRequires: ninja-build BuildRequires: ninja-build
%if %{with compat_build}
BuildRequires: llvm%{maj_ver}-devel = %{version}
BuildRequires: llvm%{maj_ver}-cmake-utils = %{version}
%else
BuildRequires: llvm-devel = %{version} BuildRequires: llvm-devel = %{version}
BuildRequires: llvm-cmake-utils = %{version}
BuildRequires: llvm-test = %{version} BuildRequires: llvm-test = %{version}
BuildRequires: llvm-googletest = %{version} BuildRequires: llvm-googletest = %{version}
%endif
BuildRequires: ncurses-devel BuildRequires: ncurses-devel
BuildRequires: zlib-devel BuildRequires: zlib-devel
@ -46,7 +85,6 @@ BuildRequires: zlib-devel
BuildRequires: python3-rpm-macros BuildRequires: python3-rpm-macros
BuildRequires: python3-lit BuildRequires: python3-lit
# For gpg source verification # For gpg source verification
BuildRequires: gnupg2 BuildRequires: gnupg2
@ -63,9 +101,11 @@ The LLVM project linker.
%package devel %package devel
Summary: Libraries and header files for LLD Summary: Libraries and header files for LLD
Requires: %{name}-libs%{?_isa} = %{version}-%{release} Requires: %{name}-libs%{?_isa} = %{version}-%{release}
%if %{without compat_build}
# lld tools are referenced in the cmake files, so we need to add lld as a # lld tools are referenced in the cmake files, so we need to add lld as a
# dependency. # dependency.
Requires: %{name}%{?_isa} = %{version}-%{release} Requires: %{name}%{?_isa} = %{version}-%{release}
%endif
%description devel %description devel
This package contains library and header files needed to develop new native This package contains library and header files needed to develop new native
@ -77,17 +117,21 @@ Summary: LLD shared libraries
%description libs %description libs
Shared libraries for LLD. Shared libraries for LLD.
%prep %prep
%{gpgverify} --keyring='%{SOURCE4}' --signature='%{SOURCE1}' --data='%{SOURCE0}' %if %{without snapshot_build}
%{gpgverify} --keyring='%{SOURCE4}' --signature='%{SOURCE3}' --data='%{SOURCE2}' %{gpgverify} --keyring='%{SOURCE2}' --signature='%{SOURCE1}' --data='%{SOURCE0}'
%setup -T -q -b 2 -n %{cmake_srcdir} %endif
# TODO: It would be more elegant to set -DLLVM_COMMON_CMAKE_UTILS=%{_builddir}/%{cmake_srcdir},
# but this is not a CACHED variable, so we can't actually set it externally :(
cd ..
mv %{cmake_srcdir} cmake
%autosetup -n %{lld_srcdir} -p2 %autosetup -n %{lld_srcdir} -p2
%if %{with compat_build}
# For compat builds, we don't want to build the actual lld binary. While there is an
# LLD_BUILD_TOOLS cmake option, it is incomplete in various ways (e.g. still leaves install
# targets and symlinks), so instead skip the tools/lld build entirely.
# We can't simply delete the binaries after the fact, because this would leave checks for
# their existence in the cmake exports.
sed 's/add_subdirectory(tools\/lld)//' -i CMakeLists.txt
%endif
%build %build
@ -97,16 +141,25 @@ mv %{cmake_srcdir} cmake
-DCMAKE_INSTALL_PREFIX=%{install_prefix} \ -DCMAKE_INSTALL_PREFIX=%{install_prefix} \
-DLLVM_LINK_LLVM_DYLIB:BOOL=ON \ -DLLVM_LINK_LLVM_DYLIB:BOOL=ON \
-DLLVM_DYLIB_COMPONENTS="all" \ -DLLVM_DYLIB_COMPONENTS="all" \
-DLLVM_COMMON_CMAKE_UTILS=%{install_datadir}/llvm/cmake \
-DCMAKE_SKIP_RPATH:BOOL=ON \ -DCMAKE_SKIP_RPATH:BOOL=ON \
-DPYTHON_EXECUTABLE=%{__python3} \ -DPYTHON_EXECUTABLE=%{__python3} \
%if %{with compat_build}
-DLLVM_CMAKE_DIR=%{install_libdir}/cmake/llvm \
-DLLVM_INCLUDE_TESTS=OFF \
%else
-DLLVM_INCLUDE_TESTS=ON \ -DLLVM_INCLUDE_TESTS=ON \
-DLLVM_EXTERNAL_LIT=%{_bindir}/lit \ -DLLVM_EXTERNAL_LIT=%{_bindir}/lit \
-DLLVM_LIT_ARGS="-sv \ -DLLVM_LIT_ARGS="-sv \
--path %{install_libdir}/llvm" \ --path %{_libdir}/llvm" \
%if %{with snapshot_build}
-DLLVM_VERSION_SUFFIX="%{llvm_snapshot_version_suffix}" \
%endif
%if 0%{?__isa_bits} == 64 %if 0%{?__isa_bits} == 64
-DLLVM_LIBDIR_SUFFIX=64 \ -DLLVM_LIBDIR_SUFFIX=64 \
%else %else
-DLLVM_LIBDIR_SUFFIX= \ -DLLVM_LIBDIR_SUFFIX= \
%endif
%endif %endif
-DLLVM_MAIN_SRC_DIR=%{_datadir}/llvm/src -DLLVM_MAIN_SRC_DIR=%{_datadir}/llvm/src
@ -120,6 +173,7 @@ mv %{cmake_srcdir} cmake
# This is generated by Patch1 during build and (probably) must be removed afterward # This is generated by Patch1 during build and (probably) must be removed afterward
rm %{buildroot}%{install_includedir}/mach-o/compact_unwind_encoding.h rm %{buildroot}%{install_includedir}/mach-o/compact_unwind_encoding.h
%if %{without compat_build}
# Required when using update-alternatives: # Required when using update-alternatives:
# https://docs.fedoraproject.org/en-US/packaging-guidelines/Alternatives/ # https://docs.fedoraproject.org/en-US/packaging-guidelines/Alternatives/
touch %{buildroot}%{_bindir}/ld touch %{buildroot}%{_bindir}/ld
@ -133,15 +187,19 @@ install -D -m 644 -t %{buildroot}%{_mandir}/man1/ docs/ld.lld.1
if [ $1 -eq 0 ] ; then if [ $1 -eq 0 ] ; then
%{_sbindir}/update-alternatives --remove ld %{_bindir}/ld.lld %{_sbindir}/update-alternatives --remove ld %{_bindir}/ld.lld
fi fi
%endif
%check %check
%if %{without compat_build}
%if %{with check} %if %{with check}
%cmake_build --target check-lld %cmake_build --target check-lld
%endif %endif
%ldconfig_scriptlets libs %ldconfig_scriptlets libs
%endif
%if %{without compat_build}
%files %files
%license LICENSE.TXT %license LICENSE.TXT
%ghost %{_bindir}/ld %ghost %{_bindir}/ld
@ -150,6 +208,7 @@ fi
%{_bindir}/ld64.lld %{_bindir}/ld64.lld
%{_bindir}/wasm-ld %{_bindir}/wasm-ld
%{_mandir}/man1/ld.lld.1* %{_mandir}/man1/ld.lld.1*
%endif
%files devel %files devel
%{install_includedir}/lld %{install_includedir}/lld
@ -159,8 +218,15 @@ fi
%files libs %files libs
%{install_libdir}/liblld*.so.* %{install_libdir}/liblld*.so.*
%changelog %changelog
%{?llvm_snapshot_changelog_entry}
* Mon Dec 11 2023 Timm Bäder <tbaeder@redhat.com> - 17.0.6-1
- Update to 17.0.6
* Thu Sep 28 2023 Timm Bäder <tbaeder@redhat.com> - 17.0.1-1
- Update to 17.0.1
* Wed Jul 05 2023 Nikita Popov <npopov@redhat.com> - 16.0.6-1 * Wed Jul 05 2023 Nikita Popov <npopov@redhat.com> - 16.0.6-1
- Update to LLVM 16.0.6 - Update to LLVM 16.0.6