From e4ecee81f70a15f19599f5cf06335c77cdccc5cd Mon Sep 17 00:00:00 2001 From: Toshaan Bharvani Date: Thu, 6 Oct 2022 12:11:31 +0200 Subject: [PATCH] initial package creation Signed-off-by: Toshaan Bharvani --- ...6049995584c3489e4bd1467313e3e85af99c.patch | 22 +++ ...211102.0-disable-nominalcpufrequency.patch | 44 +++++ ...20211102.0-gtest-unreleased-features.patch | 111 +++++++++++ SPECS/abseil-cpp.spec | 176 ++++++++++++++++++ 4 files changed, 353 insertions(+) create mode 100644 SOURCES/09e96049995584c3489e4bd1467313e3e85af99c.patch create mode 100644 SOURCES/abseil-cpp-20211102.0-disable-nominalcpufrequency.patch create mode 100644 SOURCES/abseil-cpp-20211102.0-gtest-unreleased-features.patch create mode 100644 SPECS/abseil-cpp.spec diff --git a/SOURCES/09e96049995584c3489e4bd1467313e3e85af99c.patch b/SOURCES/09e96049995584c3489e4bd1467313e3e85af99c.patch new file mode 100644 index 0000000..d6b1325 --- /dev/null +++ b/SOURCES/09e96049995584c3489e4bd1467313e3e85af99c.patch @@ -0,0 +1,22 @@ +From 09e96049995584c3489e4bd1467313e3e85af99c Mon Sep 17 00:00:00 2001 +From: Bruno Pitrus +Date: Mon, 11 Jul 2022 18:27:39 +0200 +Subject: [PATCH] Do not leak -maes -msse4.1 into pkgconfig + +--- + CMake/AbseilHelpers.cmake | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/CMake/AbseilHelpers.cmake b/CMake/AbseilHelpers.cmake +index ebe9ddc87..9cd87c513 100644 +--- a/CMake/AbseilHelpers.cmake ++++ b/CMake/AbseilHelpers.cmake +@@ -166,6 +166,8 @@ function(absl_cc_library) + set(PC_CFLAGS "${PC_CFLAGS} ${cflag}") + elseif(${cflag} MATCHES "^(-W|/w[1234eo])") + # Don't impose our warnings on others. ++ elseif(${cflag} MATCHES "^-m") ++ # Don't impose CPU instruction requirements on others, as the code performs feature detection on runtime. + else() + set(PC_CFLAGS "${PC_CFLAGS} ${cflag}") + endif() diff --git a/SOURCES/abseil-cpp-20211102.0-disable-nominalcpufrequency.patch b/SOURCES/abseil-cpp-20211102.0-disable-nominalcpufrequency.patch new file mode 100644 index 0000000..e1351d8 --- /dev/null +++ b/SOURCES/abseil-cpp-20211102.0-disable-nominalcpufrequency.patch @@ -0,0 +1,44 @@ +From d984ddf1a64ce9fae36395b423cf6e52afc9a07a Mon Sep 17 00:00:00 2001 +From: "Benjamin A. Beasley" +Date: Wed, 16 Mar 2022 14:33:41 -0400 +Subject: [PATCH] Disable SysinfoTest.NominalCPUFrequency + +SysinfoTest.NominalCPUFrequency in absl_sysinfo_test fails occasionally +on aarch64, but see: + +NominalCPUFrequency Test from SysInfoTest Suite Fails on M1 Mac +https://github.com/abseil/abseil-cpp/issues/1053#issuecomment-961432444 + +in which an upstream author opines: + + If the only problem you are trying to solve is a failing test, this is safe + to ignore since this code is never called. I should consider stripping this + test out of the open source release. NominalCPUFrequency is only called in + code private to Google and we do have tests on the platforms we use it on. + +We therefore disable it on all architectures, since any future failures +will also not be meaningful. + +Note also that this test is removed upstream in commit +732b5580f089101ce4b8cdff55bb6461c59a6720 (internal commit +7e8da4f14afd25d11713eee6b743ba31605332bf). +--- + absl/base/internal/sysinfo_test.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/absl/base/internal/sysinfo_test.cc b/absl/base/internal/sysinfo_test.cc +index 5f9e45f..1a944f0 100644 +--- a/absl/base/internal/sysinfo_test.cc ++++ b/absl/base/internal/sysinfo_test.cc +@@ -44,7 +44,7 @@ TEST(SysinfoTest, NumCPUs) { + // frequency, while others do not. Since we can't predict a priori what a given + // machine is going to do, just disable this test on POWER on Linux. + #if !(defined(__linux) && (defined(__ppc64__) || defined(__PPC64__))) +-TEST(SysinfoTest, NominalCPUFrequency) { ++TEST(SysinfoTest, DISABLED_NominalCPUFrequency) { + // Linux only exposes the CPU frequency on certain architectures, and + // Emscripten doesn't expose it at all. + #if defined(__linux__) && \ +-- +2.35.1 + diff --git a/SOURCES/abseil-cpp-20211102.0-gtest-unreleased-features.patch b/SOURCES/abseil-cpp-20211102.0-gtest-unreleased-features.patch new file mode 100644 index 0000000..a77bcc0 --- /dev/null +++ b/SOURCES/abseil-cpp-20211102.0-gtest-unreleased-features.patch @@ -0,0 +1,111 @@ +diff -Naur abseil-cpp-20211102.0-original/absl/strings/internal/cord_rep_btree_test.cc abseil-cpp-20211102.0/absl/strings/internal/cord_rep_btree_test.cc +--- abseil-cpp-20211102.0-original/absl/strings/internal/cord_rep_btree_test.cc 2021-11-03 11:26:14.000000000 -0400 ++++ abseil-cpp-20211102.0/absl/strings/internal/cord_rep_btree_test.cc 2021-12-17 08:44:54.254485697 -0500 +@@ -59,7 +59,6 @@ + using ::testing::_; + using ::testing::AllOf; + using ::testing::AnyOf; +-using ::testing::Conditional; + using ::testing::ElementsAre; + using ::testing::ElementsAreArray; + using ::testing::Eq; +@@ -381,7 +380,6 @@ + flats.push_back(MakeHexFlat(i)); + auto* result = CordRepBtree::Append(leaf, flats.back()); + EXPECT_THAT(result->height(), Eq(0)); +- EXPECT_THAT(result, Conditional(shared(), Ne(leaf), Eq(leaf))); + EXPECT_THAT(result->Edges(), ElementsAreArray(flats)); + leaf = result; + } +@@ -399,7 +397,6 @@ + flats.push_front(MakeHexFlat(i)); + auto* result = CordRepBtree::Prepend(leaf, flats.front()); + EXPECT_THAT(result->height(), Eq(0)); +- EXPECT_THAT(result, Conditional(shared(), Ne(leaf), Eq(leaf))); + EXPECT_THAT(result->Edges(), ElementsAreArray(flats)); + leaf = result; + } +@@ -426,7 +423,6 @@ + result = CordRepBtree::Append(leaf, flats.back()); + } + EXPECT_THAT(result->height(), Eq(0)); +- EXPECT_THAT(result, Conditional(shared(), Ne(leaf), Eq(leaf))); + EXPECT_THAT(result->Edges(), ElementsAreArray(flats)); + leaf = result; + } +@@ -483,7 +479,6 @@ + flats.push_back(MakeHexFlat(i)); + CordRepBtree* result = CordRepBtree::Append(tree, flats.back()); + ASSERT_THAT(result, IsNode(1)); +- ASSERT_THAT(result, Conditional(shared(), Ne(tree), Eq(tree))); + std::vector edges = GetLeafEdges(result); + ASSERT_THAT(edges, ElementsAreArray(flats)); + tree = result; +@@ -514,7 +509,6 @@ + flats.push_back(MakeHexFlat(i)); + CordRepBtree* result = CordRepBtree::Append(tree, flats.back()); + ASSERT_THAT(result, IsNode(2)); +- ASSERT_THAT(result, Conditional(shared(), Ne(tree), Eq(tree))); + std::vector edges = GetLeafEdges(result); + ASSERT_THAT(edges, ElementsAreArray(flats)); + tree = result; +@@ -544,7 +538,6 @@ + flats.push_front(MakeHexFlat(i)); + CordRepBtree* result = CordRepBtree::Prepend(tree, flats.front()); + ASSERT_THAT(result, IsNode(1)); +- ASSERT_THAT(result, Conditional(shared(), Ne(tree), Eq(tree))); + std::vector edges = GetLeafEdges(result); + ASSERT_THAT(edges, ElementsAreArray(flats)); + tree = result; +@@ -575,7 +568,6 @@ + flats.push_front(MakeHexFlat(i)); + CordRepBtree* result = CordRepBtree::Prepend(tree, flats.front()); + ASSERT_THAT(result, IsNode(2)); +- ASSERT_THAT(result, Conditional(shared(), Ne(tree), Eq(tree))); + std::vector edges = GetLeafEdges(result); + ASSERT_THAT(edges, ElementsAreArray(flats)); + tree = result; +@@ -889,7 +881,6 @@ + for (size_t i = 1; i < n; ++i) { + refs.RefIf(shared(), leaf); + CordRepBtree* result = BtreeAdd(leaf, append, consumer.Next(3)); +- EXPECT_THAT(result, Conditional(shared(), Ne(leaf), Eq(leaf))); + EXPECT_THAT(CordToString(result), Eq(consumer.Consumed())); + leaf = result; + } +@@ -905,9 +896,6 @@ + CordRepBtree* leaf0 = tree->Edges()[0]->btree(); + CordRepBtree* leaf1 = tree->Edges()[1]->btree(); + CordRepBtree* result = CordRepBtree::Append(tree, "123456789"); +- EXPECT_THAT(result, Conditional(shared(), Ne(tree), Eq(tree))); +- EXPECT_THAT(result->Edges(), +- ElementsAre(leaf0, Conditional(shared(), Ne(leaf1), Eq(leaf1)))); + EXPECT_THAT(CordToString(result), Eq(data + "123456789")); + CordRep::Unref(result); + } +@@ -920,9 +908,6 @@ + CordRepBtree* leaf0 = tree->Edges()[0]->btree(); + CordRepBtree* leaf1 = tree->Edges()[1]->btree(); + CordRepBtree* result = CordRepBtree::Prepend(tree, "123456789"); +- EXPECT_THAT(result, Conditional(shared(), Ne(tree), Eq(tree))); +- EXPECT_THAT(result->Edges(), +- ElementsAre(Conditional(shared(), Ne(leaf0), Eq(leaf0)), leaf1)); + EXPECT_THAT(CordToString(result), Eq("123456789" + data)); + CordRep::Unref(result); + } +@@ -954,7 +939,6 @@ + for (size_t i = max_cap + 1; i < max_cap * max_cap; ++i) { + refs.RefIf(shared(), tree); + result = BtreeAdd(tree, append, consumer.Next(3)); +- ASSERT_THAT(result, Conditional(shared(), Ne(tree), Eq(tree))); + ASSERT_THAT(CordToString(result), Eq(consumer.Consumed())); + tree = result; + } +@@ -970,7 +954,6 @@ + ++i) { + refs.RefIf(shared(), tree); + result = BtreeAdd(tree, append, consumer.Next(3)); +- ASSERT_THAT(result, Conditional(shared(), Ne(tree), Eq(tree))); + ASSERT_THAT(CordToString(result), Eq(consumer.Consumed())); + tree = result; + } diff --git a/SPECS/abseil-cpp.spec b/SPECS/abseil-cpp.spec new file mode 100644 index 0000000..158d1a9 --- /dev/null +++ b/SPECS/abseil-cpp.spec @@ -0,0 +1,176 @@ +# Installed library version +%global lib_version 2111.0.0 + +Name: abseil-cpp +Version: 20211102.0 +Release: 3%{?dist} +Summary: C++ Common Libraries + +License: ASL 2.0 +URL: https://abseil.io +Source0: https://github.com/abseil/abseil-cpp/archive/%{version}/%{name}-%{version}.tar.gz + +# Remove test assertions that use ::testing::Conditional, which is not in a +# released version of GTest. Not submitted upstream, as this is a workaround +# rather than a fix. https://github.com/abseil/abseil-cpp/issues/1063 +Patch: abseil-cpp-20211102.0-gtest-unreleased-features.patch +# SysinfoTest.NominalCPUFrequency in absl_sysinfo_test fails occasionally +# on aarch64, but see: +# +# NominalCPUFrequency Test from SysInfoTest Suite Fails on M1 Mac +# https://github.com/abseil/abseil-cpp/issues/1053#issuecomment-961432444 +# +# in which an upstream author opines: +# +# If the only problem you are trying to solve is a failing test, this is safe +# to ignore since this code is never called. I should consider stripping this +# test out of the open source release. NominalCPUFrequency is only called in +# code private to Google and we do have tests on the platforms we use it on. +# +# We therefore disable it on all architectures, since any future failures +# will also not be meaningful. +# +# Note also that this test is removed upstream in commit +# 732b5580f089101ce4b8cdff55bb6461c59a6720 (internal commit +# 7e8da4f14afd25d11713eee6b743ba31605332bf). +Patch: abseil-cpp-20211102.0-disable-nominalcpufrequency.patch +# Backport upstream commit 09e96049995584c3489e4bd1467313e3e85af99c, which +# corresponds to: +# +# Do not leak -maes -msse4.1 into pkgconfig +# https://github.com/abseil/abseil-cpp/pull/1216 +# +# Fixes RHBZ#2108658. +Patch: https://github.com/abseil/abseil-cpp/commit/09e96049995584c3489e4bd1467313e3e85af99c.patch + +BuildRequires: cmake +# The default make backend would work just as well; ninja is observably faster +BuildRequires: ninja-build +BuildRequires: gcc-c++ + +BuildRequires: gmock-devel +BuildRequires: gtest-devel + +%ifarch s390x +# Symbolize.SymbolizeWithMultipleMaps fails in absl_symbolize_test on s390x +# with LTO +# https://github.com/abseil/abseil-cpp/issues/1133 +%global _lto_cflags %{nil} +%endif + +%description +Abseil is an open-source collection of C++ library code designed to augment +the C++ standard library. The Abseil library code is collected from +Google's own C++ code base, has been extensively tested and used in +production, and is the same code we depend on in our daily coding lives. + +In some cases, Abseil provides pieces missing from the C++ standard; in +others, Abseil provides alternatives to the standard for special needs we've +found through usage in the Google code base. We denote those cases clearly +within the library code we provide you. + +Abseil is not meant to be a competitor to the standard library; we've just +found that many of these utilities serve a purpose within our code base, +and we now want to provide those resources to the C++ community as a whole. + +%package devel +Summary: Development files for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} + +%description devel +Development headers for %{name} + +%prep +%autosetup -p1 -S gendiff + +# Replace GTEST_FLAG_GET, which is not in a released version of GTest, with an +# appropriate default value. Not submitted upstream, as this is a workaround +# rather than a fix. https://github.com/abseil/abseil-cpp/issues/1063 +# +# The find-then-sed pattern means we only discard mtimes on files that actually +# needed to be modified. +find . -type f -name '*.cc' \ + -exec gawk '/GTEST_FLAG_GET/ { print FILENAME ; nextfile }' '{}' '+' | + xargs -r -t sed -r -i 's/GTEST_FLAG_GET/::testing::GTEST_FLAG/g' + + +%build +%cmake \ + -GNinja \ + -DABSL_USE_EXTERNAL_GOOGLETEST:BOOL=ON \ + -DABSL_FIND_GOOGLETEST:BOOL=ON \ + -DABSL_ENABLE_INSTALL:BOOL=ON \ + -DBUILD_TESTING:BOOL=ON \ + -DCMAKE_BUILD_TYPE:STRING=None \ + -DCMAKE_CXX_STANDARD:STRING=17 +%cmake_build + + +%install +%cmake_install + +%check +%ctest + +%files +%license LICENSE +%doc FAQ.md README.md UPGRADES.md +%{_libdir}/libabsl_*.so.%{lib_version} + +%files devel +%{_includedir}/absl +%{_libdir}/libabsl_*.so +%{_libdir}/cmake/absl +%{_libdir}/pkgconfig/*.pc + +%changelog +* Fri Jul 29 2022 Benjamin A. Beasley - 20211102.0-3 +- Do not leak -maes -msse4.1 into pkgconfig (fix RHBZ#2108658) + +* Tue Mar 15 2022 Benjamin A. Beasley - 20211102.0-2 +- Disable LTO on s390x to work around test failure +- Skip SysinfoTest.NominalCPUFrequency on all architectures; it fails + occasionally on aarch64, and upstream says we should not care + +* Fri Feb 18 2022 Benjamin A. Beasley - 20211102.0-1 +- Update to 20211102.0 (close RHBZ#2019691) +- Drop --output-on-failure, already in %%ctest expansion +- On s390x, instead of ignoring all tests, skip only the single failing test +- Use ninja backend for CMake: speeds up build with no downsides +- Drop patch for armv7hl + +* Mon Jan 31 2022 Benjamin A. Beasley - 20210324.2-4 +- Fix test failure (fix RHBZ#2045186) + +* Wed Jan 19 2022 Fedora Release Engineering - 20210324.2-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Wed Jul 21 2021 Fedora Release Engineering - 20210324.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Fri May 21 2021 Rich Mattes - 20210324.1-2 +- Update to release 20210324.2 +- Enable and run test suite + +* Mon Mar 08 2021 Rich Mattes - 20200923.3-1 +- Update to release 20200923.3 + +* Mon Jan 25 2021 Fedora Release Engineering - 20200923.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Sat Dec 19 2020 Rich Mattes - 20200923.2-1 +- Update to release 20200923.2 +- Rebuild to fix tagging in koji (rhbz#1885561) + +* Fri Jul 31 2020 Fedora Release Engineering - 20200225.2-4 +- Second attempt - Rebuilt for + https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Mon Jul 27 2020 Fedora Release Engineering - 20200225.2-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Wed May 27 2020 Rich Mattes - 20200225.2-2 +- Don't remove buildroot in install + +* Sun May 24 2020 Rich Mattes - 20200225.2-1 +- Initial package.