From d5b39fd0812d84b59ee7da24a2fe7e0f87ba22c2 Mon Sep 17 00:00:00 2001 From: Tulio Magno Quites Machado Filho Date: Wed, 9 Aug 2023 11:47:38 -0300 Subject: [PATCH] Update to LLVM 17.0.0 RC1 This is also a squashed merge commit from upstream-snapshot (commit ID 340b9e8ea37dcbca) into rawhide whose most important commits from upstream-snapshot are: Konrad Kleine (50): Prepare for snapshot build Fix RPM build errors: File not found: /builddir/build/BUILDROOT/llvm-14.0.0~pre20211103.g1febf42f03f664-1.fc34.x86_64/usr/lib64/libLLVM-14.so Added back patch file Rebased with new patches from rawhide that weren't yet in the streamline branch Fix RPM build errors: File not found: /builddir/build/BUILDROOT/llvm-14.0.0~pre20211103.g1febf42f03f664-1.fc34.x86_64/usr/lib64/libLLVM-14.so Disable LTO for anything older than Fedora 34 Use llvm_snapshot_version_suffix Remove patch for https://reviews.llvm.org/D108332 which is already upstream Only package cmake-devel when building a snapshot package and when NOT building in compat mode Fix RPM build Fix Macro expanded in comment on line 586: %{_libdir}/libLLVM-%{maj_ver} Fix rpm build warning/error: absolute symlink Default to DWARF4 Merge remote-tracking branch 'upstream/rawhide' into upstream-snapshot Rebased patched on pagure/streamline Merge remote-tracking branch 'upstream/rawhide' into upstream-snapshot Added 0004-PATCH-clang-Revert-cmake-Don-t-install-plugins-used-.patch Revert "Added 0004-PATCH-clang-Revert-cmake-Don-t-install-plugins-used-.patch" Workaround linker error: memory exhausted Merge remote-tracking branch 'upstream/rawhide' into upstream-snapshot Added pgo_instrumented_build cmake args Fix /usr/bin/ld: cannot find /usr/lib64/clang/13.0.0/lib/linux/libclang_rt.profile-x86_64.a: No such file or directory Move bcond in cmake down in case we want to override stuff Make llvm use the llvm-snapshot-builder as well Use %{llvm_snapshot_extra_source_tags} macro Merge remote-tracking branch 'upstream/rawhide' into upstream-snapshot Merge remote-tracking branch 'upstream/rawhide' into upstream-snapshot Patch renewal from rebased llvm-project pagure/streamline branch Try to lock llvm* and clang* packages so that we don't install LLVM from a previous copr build Revert "Try to lock llvm* and clang* packages so that we don't install LLVM from a previous copr build" Rebase onto pagure/main Merge remote-tracking branch 'upstream/rawhide' into upstream-snapshot use llvm+cmake tarballs instead of big llvm-project and close unclosed %if Fixup: clang->cmake Move globals down for them to be expanded correctly Fix merge issue with patch Test without some patches Compiles and installs again Adapt to standalone third-party dir bring back files to llvm-googletest package fixing path to unittest Manually add https://reviews.llvm.org/D137890 Add missing patch files Apply patchfiles independently for llvm and third-party dir List third-party gmock/gtest files in install Merge remote-tracking branch 'origin/rawhide' into upstream-snapshot Re-enable patches for gtest Disable LTO to speed up builds Added libLLVMTestingAnnotations.a to googletest subpackage Merge remote-tracking branch 'origin/rawhide' into upstream-snapshot Nikita Popov (1): Sync with rawhide Tom Stellard (13): Add patch to fix some lit test failures Revert "Add patch to fix some lit test failures" Add a patch from main branch to fix some lit tests Revert "Add a patch from main branch to fix some lit tests" Remove patch applied upstream Remove another upstreamed patch Add llvm-googletest dependency to llvm-devel Add JITLink patch to fix clang failures on aarch64 with libgcc-13 Revert "Add JITLink patch to fix clang failures on aarch64 with libgcc-13" Fix a test failure on s390x Revert "Fix a test failure on s390x" copr: Install llvm-snapshot-builder from the local COPR project Sync with rawhide sergesanspaille (1): Rebase downstream patches --- .copr/Makefile | 17 ++ ...error-messages-for-unsupported-reloc.patch | 184 ------------------ ...-Add-LLVM_UNITTEST_LINK_FLAGS-option.patch | 39 ---- 0001-llvm-Add-install-targets-for-gtest.patch | 32 --- ...-party-Add-install-targets-for-gtest.patch | 47 ----- llvm.spec | 69 +++++-- sources | 12 +- 7 files changed, 71 insertions(+), 329 deletions(-) create mode 100644 .copr/Makefile delete mode 100644 0001-SystemZ-Improve-error-messages-for-unsupported-reloc.patch delete mode 100644 0001-cmake-Add-LLVM_UNITTEST_LINK_FLAGS-option.patch delete mode 100644 0001-llvm-Add-install-targets-for-gtest.patch delete mode 100644 0201-third-party-Add-install-targets-for-gtest.patch diff --git a/.copr/Makefile b/.copr/Makefile new file mode 100644 index 0000000..753982b --- /dev/null +++ b/.copr/Makefile @@ -0,0 +1,17 @@ +# See https://docs.pagure.org/copr.copr/user_documentation.html#make-srpm +# See for the --setopt option in the enabling of copr repo see: +# https://pagure.io/copr/copr/issue/184 + +COPR_USERNAME=$(shell rpm --eval %copr_username) +COPR_PROJECT=$(shell rpm --eval %copr_projectname) + +.PHONY: srpm +srpm: + dnf install -y dnf-plugins-core fedora-packager + dnf copr enable -y --setopt=reposdir=/tmp/yum.repos.d $(COPR_USERNAME)/$(COPR_PROJECT) + dnf install -y --setopt=reposdir=/tmp/yum.repos.d llvm-snapshot-builder + rpmbuild \ + --define "_srcrpmdir $(outdir)" \ + --define "_sourcedir $(shell pwd)" \ + --define "_disable_source_fetch 0" \ + -bs $(spec) diff --git a/0001-SystemZ-Improve-error-messages-for-unsupported-reloc.patch b/0001-SystemZ-Improve-error-messages-for-unsupported-reloc.patch deleted file mode 100644 index 34128b6..0000000 --- a/0001-SystemZ-Improve-error-messages-for-unsupported-reloc.patch +++ /dev/null @@ -1,184 +0,0 @@ -From efbaf8bc61f4c0e29a3eaafb11ac0ddda8bd3dff Mon Sep 17 00:00:00 2001 -From: Ulrich Weigand -Date: Fri, 30 Jun 2023 16:02:56 +0200 -Subject: [PATCH] [SystemZ] Improve error messages for unsupported relocations - -In the SystemZMCObjectWriter, we currently just abort in case -some unsupported relocation in requested. However, as this -situation can be triggered by invalid (inline) assembler input, -we should really get a regular error message instead. ---- - .../MCTargetDesc/SystemZMCObjectWriter.cpp | 59 +++++++++++-------- - 1 file changed, 35 insertions(+), 24 deletions(-) - -diff --git a/llvm/lib/Target/SystemZ/MCTargetDesc/SystemZMCObjectWriter.cpp b/llvm/lib/Target/SystemZ/MCTargetDesc/SystemZMCObjectWriter.cpp -index c23463ab9bde..0b11468afc52 100644 ---- a/llvm/lib/Target/SystemZ/MCTargetDesc/SystemZMCObjectWriter.cpp -+++ b/llvm/lib/Target/SystemZ/MCTargetDesc/SystemZMCObjectWriter.cpp -@@ -9,6 +9,7 @@ - #include "MCTargetDesc/SystemZMCFixups.h" - #include "MCTargetDesc/SystemZMCTargetDesc.h" - #include "llvm/BinaryFormat/ELF.h" -+#include "llvm/MC/MCContext.h" - #include "llvm/MC/MCELFObjectWriter.h" - #include "llvm/MC/MCExpr.h" - #include "llvm/MC/MCFixup.h" -@@ -40,7 +41,7 @@ SystemZObjectWriter::SystemZObjectWriter(uint8_t OSABI) - /*HasRelocationAddend_=*/ true) {} - - // Return the relocation type for an absolute value of MCFixupKind Kind. --static unsigned getAbsoluteReloc(unsigned Kind) { -+static unsigned getAbsoluteReloc(MCContext &Ctx, SMLoc Loc, unsigned Kind) { - switch (Kind) { - case FK_Data_1: return ELF::R_390_8; - case FK_Data_2: return ELF::R_390_16; -@@ -49,11 +50,12 @@ static unsigned getAbsoluteReloc(unsigned Kind) { - case SystemZ::FK_390_12: return ELF::R_390_12; - case SystemZ::FK_390_20: return ELF::R_390_20; - } -- llvm_unreachable("Unsupported absolute address"); -+ Ctx.reportError(Loc, "Unsupported absolute address"); -+ return 0; - } - - // Return the relocation type for a PC-relative value of MCFixupKind Kind. --static unsigned getPCRelReloc(unsigned Kind) { -+static unsigned getPCRelReloc(MCContext &Ctx, SMLoc Loc, unsigned Kind) { - switch (Kind) { - case FK_Data_2: return ELF::R_390_PC16; - case FK_Data_4: return ELF::R_390_PC32; -@@ -63,62 +65,69 @@ static unsigned getPCRelReloc(unsigned Kind) { - case SystemZ::FK_390_PC24DBL: return ELF::R_390_PC24DBL; - case SystemZ::FK_390_PC32DBL: return ELF::R_390_PC32DBL; - } -- llvm_unreachable("Unsupported PC-relative address"); -+ Ctx.reportError(Loc, "Unsupported PC-relative address"); -+ return 0; - } - - // Return the R_390_TLS_LE* relocation type for MCFixupKind Kind. --static unsigned getTLSLEReloc(unsigned Kind) { -+static unsigned getTLSLEReloc(MCContext &Ctx, SMLoc Loc, unsigned Kind) { - switch (Kind) { - case FK_Data_4: return ELF::R_390_TLS_LE32; - case FK_Data_8: return ELF::R_390_TLS_LE64; - } -- llvm_unreachable("Unsupported absolute address"); -+ Ctx.reportError(Loc, "Unsupported thread-local address (local-exec)"); -+ return 0; - } - - // Return the R_390_TLS_LDO* relocation type for MCFixupKind Kind. --static unsigned getTLSLDOReloc(unsigned Kind) { -+static unsigned getTLSLDOReloc(MCContext &Ctx, SMLoc Loc, unsigned Kind) { - switch (Kind) { - case FK_Data_4: return ELF::R_390_TLS_LDO32; - case FK_Data_8: return ELF::R_390_TLS_LDO64; - } -- llvm_unreachable("Unsupported absolute address"); -+ Ctx.reportError(Loc, "Unsupported thread-local address (local-dynamic)"); -+ return 0; - } - - // Return the R_390_TLS_LDM* relocation type for MCFixupKind Kind. --static unsigned getTLSLDMReloc(unsigned Kind) { -+static unsigned getTLSLDMReloc(MCContext &Ctx, SMLoc Loc, unsigned Kind) { - switch (Kind) { - case FK_Data_4: return ELF::R_390_TLS_LDM32; - case FK_Data_8: return ELF::R_390_TLS_LDM64; - case SystemZ::FK_390_TLS_CALL: return ELF::R_390_TLS_LDCALL; - } -- llvm_unreachable("Unsupported absolute address"); -+ Ctx.reportError(Loc, "Unsupported thread-local address (local-dynamic)"); -+ return 0; - } - - // Return the R_390_TLS_GD* relocation type for MCFixupKind Kind. --static unsigned getTLSGDReloc(unsigned Kind) { -+static unsigned getTLSGDReloc(MCContext &Ctx, SMLoc Loc, unsigned Kind) { - switch (Kind) { - case FK_Data_4: return ELF::R_390_TLS_GD32; - case FK_Data_8: return ELF::R_390_TLS_GD64; - case SystemZ::FK_390_TLS_CALL: return ELF::R_390_TLS_GDCALL; - } -- llvm_unreachable("Unsupported absolute address"); -+ Ctx.reportError(Loc, "Unsupported thread-local address (general-dynamic)"); -+ return 0; - } - - // Return the PLT relocation counterpart of MCFixupKind Kind. --static unsigned getPLTReloc(unsigned Kind) { -+static unsigned getPLTReloc(MCContext &Ctx, SMLoc Loc, unsigned Kind) { - switch (Kind) { - case SystemZ::FK_390_PC12DBL: return ELF::R_390_PLT12DBL; - case SystemZ::FK_390_PC16DBL: return ELF::R_390_PLT16DBL; - case SystemZ::FK_390_PC24DBL: return ELF::R_390_PLT24DBL; - case SystemZ::FK_390_PC32DBL: return ELF::R_390_PLT32DBL; - } -- llvm_unreachable("Unsupported absolute address"); -+ Ctx.reportError(Loc, "Unsupported PC-relative PLT address"); -+ return 0; - } - - unsigned SystemZObjectWriter::getRelocType(MCContext &Ctx, - const MCValue &Target, - const MCFixup &Fixup, - bool IsPCRel) const { -+ SMLoc Loc = Fixup.getLoc(); - unsigned Kind = Fixup.getKind(); - if (Kind >= FirstLiteralRelocationKind) - return Kind - FirstLiteralRelocationKind; -@@ -126,38 +135,40 @@ unsigned SystemZObjectWriter::getRelocType(MCContext &Ctx, - switch (Modifier) { - case MCSymbolRefExpr::VK_None: - if (IsPCRel) -- return getPCRelReloc(Kind); -- return getAbsoluteReloc(Kind); -+ return getPCRelReloc(Ctx, Loc, Kind); -+ return getAbsoluteReloc(Ctx, Loc, Kind); - - case MCSymbolRefExpr::VK_NTPOFF: - assert(!IsPCRel && "NTPOFF shouldn't be PC-relative"); -- return getTLSLEReloc(Kind); -+ return getTLSLEReloc(Ctx, Loc, Kind); - - case MCSymbolRefExpr::VK_INDNTPOFF: - if (IsPCRel && Kind == SystemZ::FK_390_PC32DBL) - return ELF::R_390_TLS_IEENT; -- llvm_unreachable("Only PC-relative INDNTPOFF accesses are supported for now"); -+ Ctx.reportError(Loc, "Only PC-relative INDNTPOFF accesses are supported for now"); -+ return 0; - - case MCSymbolRefExpr::VK_DTPOFF: - assert(!IsPCRel && "DTPOFF shouldn't be PC-relative"); -- return getTLSLDOReloc(Kind); -+ return getTLSLDOReloc(Ctx, Loc, Kind); - - case MCSymbolRefExpr::VK_TLSLDM: - assert(!IsPCRel && "TLSLDM shouldn't be PC-relative"); -- return getTLSLDMReloc(Kind); -+ return getTLSLDMReloc(Ctx, Loc, Kind); - - case MCSymbolRefExpr::VK_TLSGD: - assert(!IsPCRel && "TLSGD shouldn't be PC-relative"); -- return getTLSGDReloc(Kind); -+ return getTLSGDReloc(Ctx, Loc, Kind); - - case MCSymbolRefExpr::VK_GOT: - if (IsPCRel && Kind == SystemZ::FK_390_PC32DBL) - return ELF::R_390_GOTENT; -- llvm_unreachable("Only PC-relative GOT accesses are supported for now"); -+ Ctx.reportError(Loc, "Only PC-relative GOT accesses are supported for now"); -+ return 0; - - case MCSymbolRefExpr::VK_PLT: -- assert(IsPCRel && "@PLT shouldt be PC-relative"); -- return getPLTReloc(Kind); -+ assert(IsPCRel && "@PLT shouldn't be PC-relative"); -+ return getPLTReloc(Ctx, Loc, Kind); - - default: - llvm_unreachable("Modifier not supported"); --- -2.41.0 - diff --git a/0001-cmake-Add-LLVM_UNITTEST_LINK_FLAGS-option.patch b/0001-cmake-Add-LLVM_UNITTEST_LINK_FLAGS-option.patch deleted file mode 100644 index 192ca92..0000000 --- a/0001-cmake-Add-LLVM_UNITTEST_LINK_FLAGS-option.patch +++ /dev/null @@ -1,39 +0,0 @@ -From cf35b4622d31701d0c79e0441931518726f997f2 Mon Sep 17 00:00:00 2001 -From: Nikita Popov -Date: Fri, 30 Jun 2023 12:25:09 +0200 -Subject: [PATCH] Add LLVM_UNITTEST_LINK_FLAGS option - -This allows specifying linker flags that should only be applied -to unit tests, e.g. to disable LTO optimization for them. ---- - llvm/cmake/modules/AddLLVM.cmake | 2 ++ - llvm/cmake/modules/HandleLLVMOptions.cmake | 3 +++ - 2 files changed, 5 insertions(+) - -diff --git a/llvm/cmake/modules/AddLLVM.cmake b/llvm/cmake/modules/AddLLVM.cmake -index 94fc83db9344..7cf75223ce38 100644 ---- a/llvm/cmake/modules/AddLLVM.cmake -+++ b/llvm/cmake/modules/AddLLVM.cmake -@@ -1592,6 +1592,8 @@ function(add_unittest test_suite test_name) - endif() - endif() - -+ target_link_options(${test_name} PRIVATE "${LLVM_UNITTEST_LINK_FLAGS}") -+ - set(outdir ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}) - set_output_directory(${test_name} BINARY_DIR ${outdir} LIBRARY_DIR ${outdir}) - # libpthreads overrides some standard library symbols, so main -diff --git a/llvm/cmake/modules/HandleLLVMOptions.cmake b/llvm/cmake/modules/HandleLLVMOptions.cmake -index 6119ecdce0f4..eec98162c2d7 100644 ---- a/llvm/cmake/modules/HandleLLVMOptions.cmake -+++ b/llvm/cmake/modules/HandleLLVMOptions.cmake -@@ -1274,3 +1274,6 @@ endif() - - set(LLVM_THIRD_PARTY_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../third-party CACHE STRING - "Directory containing third party software used by LLVM (e.g. googletest)") -+ -+set(LLVM_UNITTEST_LINK_FLAGS "" CACHE STRING -+ "Additional linker flags for unit tests") --- -2.40.1 - diff --git a/0001-llvm-Add-install-targets-for-gtest.patch b/0001-llvm-Add-install-targets-for-gtest.patch deleted file mode 100644 index e84c444..0000000 --- a/0001-llvm-Add-install-targets-for-gtest.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 8cc3870f09d728d9017c72eba9520117a4283fee Mon Sep 17 00:00:00 2001 -From: Tom Stellard -Date: Thu, 17 Nov 2022 09:01:10 +0000 -Subject: Add install targets for gtest - -Stand-alone builds need an installed version of gtest in order to run -the unittests. - -Differential Revision: https://reviews.llvm.org/D137890 ---- - llvm/CMakeLists.txt | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/llvm/CMakeLists.txt b/llvm/CMakeLists.txt -index 60e1f29620af..d91338532815 100644 ---- a/llvm/CMakeLists.txt -+++ b/llvm/CMakeLists.txt -@@ -693,6 +693,11 @@ option(LLVM_BUILD_TESTS - "Build LLVM unit tests. If OFF, just generate build targets." OFF) - option(LLVM_INCLUDE_TESTS "Generate build targets for the LLVM unit tests." ON) - -+option(LLVM_INSTALL_GTEST -+ "Install the llvm gtest library. This should be on if you want to do -+ stand-alone builds of the other projects and run their unit tests." OFF) -+ -+ - option(LLVM_BUILD_BENCHMARKS "Add LLVM benchmark targets to the list of default - targets. If OFF, benchmarks still could be built using Benchmarks target." OFF) - option(LLVM_INCLUDE_BENCHMARKS "Generate benchmark targets. If OFF, benchmarks can't be built." ON) --- -2.34.3 - diff --git a/0201-third-party-Add-install-targets-for-gtest.patch b/0201-third-party-Add-install-targets-for-gtest.patch deleted file mode 100644 index 5c86130..0000000 --- a/0201-third-party-Add-install-targets-for-gtest.patch +++ /dev/null @@ -1,47 +0,0 @@ -From 8cc3870f09d728d9017c72eba9520117a4283fee Mon Sep 17 00:00:00 2001 -From: Tom Stellard -Date: Thu, 17 Nov 2022 09:01:10 +0000 -Subject: Add install targets for gtest - -Stand-alone builds need an installed version of gtest in order to run -the unittests. - -Differential Revision: https://reviews.llvm.org/D137890 ---- - third-party/unittest/CMakeLists.txt | 15 ++++++++++++++- - 1 file changed, 14 insertions(+), 1 deletion(-) - -diff --git a/third-party/unittest/CMakeLists.txt b/third-party/unittest/CMakeLists.txt -index 0e54e0e57c35..1d2a52730d7d 100644 ---- a/third-party/unittest/CMakeLists.txt -+++ b/third-party/unittest/CMakeLists.txt -@@ -65,12 +65,25 @@ if (NOT LLVM_ENABLE_THREADS) - endif () - - target_include_directories(llvm_gtest -- PUBLIC googletest/include googlemock/include -+ PUBLIC $ -+ $ -+ $ -+ $ - PRIVATE googletest googlemock - ) - - add_subdirectory(UnitTestMain) - -+if (LLVM_INSTALL_GTEST) -+export(TARGETS llvm_gtest llvm_gtest_main LLVMTestingSupport FILE LLVMGTestConfig.cmake) -+install(TARGETS llvm_gtest llvm_gtest_main LLVMTestingSupport EXPORT LLVMGTestConfig -+ ARCHIVE DESTINATION "lib${LLVM_LIBDIR_SUFFIX}" COMPONENT llvm_gtest) -+ install(EXPORT LLVMGTestConfig DESTINATION ${LLVM_INSTALL_PACKAGE_DIR} COMPONENT llvm_gtest) -+ add_llvm_install_targets(install-llvm_gtest COMPONENT llvm_gtest DEPENDS llvm_gtest LLVMGTestConfig.cmake) -+ install(DIRECTORY googletest/include/gtest/ DESTINATION include/llvm-gtest/gtest/ COMPONENT llvm_gtest) -+ install(DIRECTORY googlemock/include/gmock/ DESTINATION include/llvm-gmock/gmock/ COMPONENT llvm_gtest) -+endif() -+ - # When LLVM_LINK_LLVM_DYLIB is enabled, libLLVM.so is added to the interface - # link libraries for gtest and gtest_main. This means that any target, like - # unittests for example, that links against gtest will be forced to link --- -2.34.3 - diff --git a/llvm.spec b/llvm.spec index c6ed0aa..e07e711 100644 --- a/llvm.spec +++ b/llvm.spec @@ -1,3 +1,10 @@ +%bcond_with snapshot_build + +%if %{with snapshot_build} +# Unlock LLVM Snapshot LUA functions +%{llvm_sb} +%endif + # We are building with clang for faster/lower memory LTO builds. # See https://docs.fedoraproject.org/en-US/packaging-guidelines/#_compiler_macros %global toolchain clang @@ -17,10 +24,18 @@ %bcond_with compat_build %bcond_without check -#global rc_ver 4 -%global maj_ver 16 +%global maj_ver 17 %global min_ver 0 -%global patch_ver 6 +%global patch_ver 0 +%global rc_ver 1 + +%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 llvm_srcdir llvm-%{maj_ver}.%{min_ver}.%{patch_ver}%{?rc_ver:rc%{rc_ver}}.src %global cmake_srcdir cmake-%{maj_ver}.%{min_ver}.%{patch_ver}%{?rc_ver:rc%{rc_ver}}.src %global third_party_srcdir third-party-%{maj_ver}.%{min_ver}.%{patch_ver}%{?rc_ver:rc%{rc_ver}}.src @@ -74,12 +89,18 @@ %undefine _py3_shebang_P Name: %{pkg_name} -Version: %{maj_ver}.%{min_ver}.%{patch_ver}%{?rc_ver:~rc%{rc_ver}} -Release: 6%{?dist} +Version: %{maj_ver}.%{min_ver}.%{patch_ver}%{?rc_ver:~rc%{rc_ver}}%{?llvm_snapshot_version_suffix:~%{llvm_snapshot_version_suffix}} +Release: 1%{?dist} Summary: The Low Level Virtual Machine License: Apache-2.0 WITH LLVM-exception OR NCSA URL: http://llvm.org +%if %{with snapshot_build} +Source0: %{llvm_snapshot_source_prefix}llvm-%{llvm_snapshot_yyyymmdd}.src.tar.xz +Source2: %{llvm_snapshot_source_prefix}cmake-%{llvm_snapshot_yyyymmdd}.src.tar.xz +Source4: %{llvm_snapshot_source_prefix}third-party-%{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}}/%{llvm_srcdir}.tar.xz Source1: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{maj_ver}.%{min_ver}.%{patch_ver}%{?rc_ver:-rc%{rc_ver}}/%{llvm_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 @@ -88,19 +109,9 @@ Source4: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{maj_ve Source5: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{maj_ver}.%{min_ver}.%{patch_ver}%{?rc_ver:-rc%{rc_ver}}/%{third_party_srcdir}.tar.xz.sig Source6: release-keys.asc -# Backported from LLVM 17 -Patch1: 0001-SystemZ-Improve-error-messages-for-unsupported-reloc.patch -# See https://reviews.llvm.org/D137890 for the next two patches -Patch2: 0001-llvm-Add-install-targets-for-gtest.patch -# Backport of https://reviews.llvm.org/D154212 from LLVM 17. -Patch3: 0001-cmake-Add-LLVM_UNITTEST_LINK_FLAGS-option.patch -# Backport of https://reviews.llvm.org/D156379 from LLVM 18. -Patch4: D156379.diff - # RHEL-specific patch to avoid unwanted recommonmark dep Patch101: 0101-Deactivate-markdown-doc.patch -# Patching third-party dir with a 200 offset in patch number -Patch201: 0201-third-party-Add-install-targets-for-gtest.patch +%endif BuildRequires: gcc BuildRequires: gcc-c++ @@ -151,14 +162,15 @@ Requires: %{name}-libs%{?_isa} = %{version}-%{release} # app that requires the libLLVMLineEditor, so we need to make sure # libedit-devel is available. Requires: libedit-devel -# The installed cmake files reference binaries from llvm-test and llvm-static. -# We tried in the past to split the cmake exports for these binaries out into -# separate files, so that llvm-devel would not need to Require these packages, +# The installed cmake files reference binaries from llvm-test, llvm-static, and +# llvm-gtest. We tried in the past to split the cmake exports for these binaries +# out into separate files, so that llvm-devel would not need to Require these packages, # but this caused bugs (rhbz#1773678) and forced us to carry two non-upstream # patches. Requires: %{name}-static%{?_isa} = %{version}-%{release} %if %{without compat_build} Requires: %{name}-test%{?_isa} = %{version}-%{release} +Requires: %{name}-googletest%{?_isa} = %{version}-%{release} %endif @@ -222,16 +234,17 @@ LLVM's modified googletest sources. %endif %prep +%if %{without snapshot_build} %{gpgverify} --keyring='%{SOURCE6}' --signature='%{SOURCE1}' --data='%{SOURCE0}' %{gpgverify} --keyring='%{SOURCE6}' --signature='%{SOURCE3}' --data='%{SOURCE2}' %{gpgverify} --keyring='%{SOURCE6}' --signature='%{SOURCE5}' --data='%{SOURCE4}' +%endif %setup -T -q -b 2 -n %{cmake_srcdir} # 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 %setup -T -q -b 4 -n %{third_party_srcdir} -%autopatch -m200 -p2 cd .. mv %{third_party_srcdir} third-party @@ -245,6 +258,11 @@ mv %{third_party_srcdir} third-party %build +# Disable LTO to speed up builds +%if %{with snapshot_build} +%global _lto_cflags %nil +%endif + %ifarch s390 s390x %{arm} %ix86 # Decrease debuginfo verbosity to reduce memory consumption during final library linking %global optflags %(echo %{optflags} | sed 's/-g /-g1 /') @@ -313,8 +331,12 @@ export ASMFLAGS="%{build_cflags}" -DLLVM_ENABLE_SPHINX:BOOL=ON \ -DLLVM_ENABLE_DOXYGEN:BOOL=OFF \ \ +%if %{with snapshot_build} + -DLLVM_VERSION_SUFFIX="%{llvm_snapshot_version_suffix}" \ +%else %if %{without compat_build} -DLLVM_VERSION_SUFFIX='' \ +%endif %endif -DLLVM_UNREACHABLE_OPTIMIZE:BOOL=OFF \ -DLLVM_BUILD_LLVM_DYLIB:BOOL=ON \ @@ -495,7 +517,7 @@ fi %files libs %license LICENSE.TXT -%{install_libdir}/libLLVM-%{maj_ver}.so +%{install_libdir}/libLLVM-%{maj_ver}%{?llvm_snapshot_version_suffix:%{llvm_snapshot_version_suffix}}.so %if %{without compat_build} %if %{with gold} %{_libdir}/LLVMgold.so @@ -575,6 +597,11 @@ fi %endif %changelog +%{?llvm_snapshot_changelog_entry} + +* Mon Jul 31 2023 Tulio Magno Quites Machado Filho - 17.0.0~rc1-1 +- Update to LLVM 17.0.0 RC1 + * Mon Jul 31 2023 Tulio Magno Quites Machado Filho - 16.0.6-6 - Fix rhbz #2224885 diff --git a/sources b/sources index 30ea4ea..b3a6c97 100644 --- a/sources +++ b/sources @@ -1,6 +1,6 @@ -SHA512 (llvm-16.0.6.src.tar.xz) = 8d4cdadc9a1ad249fbf9248c8e56f3bcafab73a473a0b0ca73499ed8825c62e27668aac4f1d03341631e5ad93701621e834e9e196ca32eac3ef805cf1c860083 -SHA512 (llvm-16.0.6.src.tar.xz.sig) = 9adda28085f4a2e2a64dab1d8e4ff23c5629bbb0bb6b34afc081e44f6f85ac4f3c6cd0c3488af98c0fad939c33f9d2a8a0cbef67a577cd7fe3013bc2200452b1 -SHA512 (cmake-16.0.6.src.tar.xz) = 52ecd941d2d85a5b668caa5d0d40480cb6a97b3bf1174e634c2a93e9ef6d03670ca7e96abb0a60cb33ba537b93d5788754dab1f2f45c1f623f788162717d088b -SHA512 (cmake-16.0.6.src.tar.xz.sig) = d20c5e51315aa476775e6ce886684b9f882ce283fc40aa6c1b8f03964c77a1e745e2e1fb00b3488dddfe1a04378e2bfd090350de28e58088525a5305ecb1bea6 -SHA512 (third-party-16.0.6.src.tar.xz) = 51683e92953eb57ed36ebc8a43cb688863edf4f24ba71965d57016cfdc17bad10f8f3942e9597a729329f89489597e79bb4653445ff1ec36ec03077adb1dd7b9 -SHA512 (third-party-16.0.6.src.tar.xz.sig) = aefb22ee35b2299e77669d72557079630fba5df2c0031c72a025082de3c4ca56ea0e1ec870c42d9056752195ad0e5b68258b548caf801ef4269e2ec1cd9da513 +SHA512 (cmake-17.0.0rc1.src.tar.xz) = 765113906032571abddefb4173606c80f88d564fec54e45ff76967783658cf98b2a5c40ab351dec85f91ebc346768ebcf3922afd0e25178a402a36096c8220fa +SHA512 (cmake-17.0.0rc1.src.tar.xz.sig) = 50c4600e4e686e752d65d60a75133b0058895ee6c9fa62187269f321f9f8feef207412f5e4099eb7da0ae9c90b3f13c81a01c59fd90b2bbca83174b787fd9b84 +SHA512 (llvm-17.0.0rc1.src.tar.xz) = cb1d10a4ccf00a9b1a9a19a6ff42cf4dad832abbf7ea4e2624018c4372d62cb0b851841be02f9abab308bcaefc1d07f0512956cd752bf91d4ac79b6d1d1d37ba +SHA512 (llvm-17.0.0rc1.src.tar.xz.sig) = 73e3a361685cb7b097a4191dc55839180db8c27f939cadd1b46fa7fb4762543867cfc170ad9042e49b4160c2a6660f0e06f8311151e45100906b28838a7ba8cc +SHA512 (third-party-17.0.0rc1.src.tar.xz) = 740923fd1691a2f210d632896f20db6904573ab383396edae22ac238a792a73f031989a71fbfe3f46930c4fbca023133833a7d04dcbba217d9983b239ea49705 +SHA512 (third-party-17.0.0rc1.src.tar.xz.sig) = d319cdbac76f069ae41400b0320144e7a4289ae843cd63252c18d14e35e1f7f9b23169d6a2f4fbb7fae81fd0dabd32370c61bfa07742cf90a6571da443feb3cf