Toshaan Bharvani
2 years ago
commit
e4ecee81f7
4 changed files with 353 additions and 0 deletions
@ -0,0 +1,22 @@ |
|||||||
|
From 09e96049995584c3489e4bd1467313e3e85af99c Mon Sep 17 00:00:00 2001 |
||||||
|
From: Bruno Pitrus <brunopitrus@hotmail.com> |
||||||
|
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() |
@ -0,0 +1,44 @@ |
|||||||
|
From d984ddf1a64ce9fae36395b423cf6e52afc9a07a Mon Sep 17 00:00:00 2001 |
||||||
|
From: "Benjamin A. Beasley" <code@musicinmybrain.net> |
||||||
|
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 |
||||||
|
|
@ -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<CordRep*> 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<CordRep*> 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<CordRep*> 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<CordRep*> 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; |
||||||
|
} |
@ -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 <code@musicinmybrain.net> - 20211102.0-3 |
||||||
|
- Do not leak -maes -msse4.1 into pkgconfig (fix RHBZ#2108658) |
||||||
|
|
||||||
|
* Tue Mar 15 2022 Benjamin A. Beasley <code@musicinmybrain.net> - 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 <code@musicinmybrain.net> - 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 <code@musicinmybrain.net> - 20210324.2-4 |
||||||
|
- Fix test failure (fix RHBZ#2045186) |
||||||
|
|
||||||
|
* Wed Jan 19 2022 Fedora Release Engineering <releng@fedoraproject.org> - 20210324.2-3 |
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild |
||||||
|
|
||||||
|
* Wed Jul 21 2021 Fedora Release Engineering <releng@fedoraproject.org> - 20210324.2-2 |
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild |
||||||
|
|
||||||
|
* Fri May 21 2021 Rich Mattes <richmattes@gmail.com> - 20210324.1-2 |
||||||
|
- Update to release 20210324.2 |
||||||
|
- Enable and run test suite |
||||||
|
|
||||||
|
* Mon Mar 08 2021 Rich Mattes <richmattes@gmail.com> - 20200923.3-1 |
||||||
|
- Update to release 20200923.3 |
||||||
|
|
||||||
|
* Mon Jan 25 2021 Fedora Release Engineering <releng@fedoraproject.org> - 20200923.2-2 |
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild |
||||||
|
|
||||||
|
* Sat Dec 19 2020 Rich Mattes <richmattes@gmail.com> - 20200923.2-1 |
||||||
|
- Update to release 20200923.2 |
||||||
|
- Rebuild to fix tagging in koji (rhbz#1885561) |
||||||
|
|
||||||
|
* Fri Jul 31 2020 Fedora Release Engineering <releng@fedoraproject.org> - 20200225.2-4 |
||||||
|
- Second attempt - Rebuilt for |
||||||
|
https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild |
||||||
|
|
||||||
|
* Mon Jul 27 2020 Fedora Release Engineering <releng@fedoraproject.org> - 20200225.2-3 |
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild |
||||||
|
|
||||||
|
* Wed May 27 2020 Rich Mattes <richmattes@gmail.com> - 20200225.2-2 |
||||||
|
- Don't remove buildroot in install |
||||||
|
|
||||||
|
* Sun May 24 2020 Rich Mattes <richmattes@gmail.com> - 20200225.2-1 |
||||||
|
- Initial package. |
Loading…
Reference in new issue