# # spec file for package abseil-cpp # # Copyright (c) 2025 SUSE LLC # Copyright (c) 2025 Andreas Stieger # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed # upon. The license for this file, and modifications and additions to the # file, is the same license as for the pristine package itself (unless the # license for the pristine package is not an Open Source License, in which # case the license is the MIT License). An "Open Source License" is a # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. # Please submit bugfixes or comments via https://bugs.opensuse.org/ # %global soversion so.2501.0.0 %global lname_suffix 2501_0_0 %if 0%{?gcc_version} < 7 %global with_gcc 7 %endif Name: abseil-cpp Version: 20250127.1 Release: 1.1 Summary: C++11 libraries which augment the C++ stdlib License: Apache-2.0 URL: https://abseil.io/ Source0: https://github.com/abseil/abseil-cpp/releases/download/%{version}/%{name}-%{version}.tar.gz Source1: baselibs.conf BuildRequires: cmake BuildRequires: fdupes BuildRequires: gcc%{?with_gcc} BuildRequires: gcc%{?with_gcc}-c++ BuildRequires: pkgconfig # PATCH-FIX-OPENSUSE options-{old,cxx17}.patch Ensure ABI stability regardless of compiler options %if 0%{?suse_version} && 0%{?suse_version} < 1550 Patch0: options-old.patch Patch1: cmake.patch %else Patch0: options-cxx17.patch %endif %description Abseil is a collection of C++11 libraries which augment the C++ standard library. It also provides features incorporated into C++14 and C++17 standards. %package -n libabsl_lite_%{lname_suffix} Summary: C++11 libraries which augment the C++ stdlib - lite Obsoletes: abseil-cpp < %{version}-%{release} Provides: abseil-cpp = %{version}-%{release} %description -n libabsl_lite_%{lname_suffix} Abseil is a collection of C++11 libraries which augment the C++ standard library. It also provides features incorporated into C++14 and C++17 standards. This package provides the subset needed by protobuf-lite. %package -n libabsl_%{lname_suffix} Summary: C++11 libraries which augment the C++ stdlib - others Obsoletes: abseil-cpp < %{version}-%{release} Provides: abseil-cpp = %{version}-%{release} %description -n libabsl_%{lname_suffix} Abseil is a collection of C++11 libraries which augment the C++ standard library. It also provides features incorporated into C++14 and C++17 standards. %package devel Summary: Header files for Abseil Requires: libabsl_%{lname_suffix} Requires: libabsl_lite_%{lname_suffix} %description devel Abseil is a collection of C++11 libraries which augment the C++ standard library. This package contains headers and build system files for it. %prep %autosetup -p1 %build %if 0%{?with_gcc} export CC="gcc-%{with_gcc}" export CXX="g++-%{with_gcc}" %endif %cmake %cmake_build %install %cmake_install %fdupes %{buildroot}/%{_prefix} %check %ctest # SLE12 doed not define this macro %if %{undefined ldconfig_scriptlets} %post -n libabsl_lite_%{lname_suffix} -p /sbin/ldconfig %postun -n libabsl_lite_%{lname_suffix} -p /sbin/ldconfig %post -n libabsl_%{lname_suffix} -p /sbin/ldconfig %postun -n libabsl_%{lname_suffix} -p /sbin/ldconfig %else %ldconfig_scriptlets -n libabsl_lite_%{lname_suffix} %ldconfig_scriptlets -n libabsl_%{lname_suffix} %endif %files -n libabsl_lite_%{lname_suffix} %license LICENSE %{_libdir}/libabsl_base.%{soversion} %{_libdir}/libabsl_city.%{soversion} %{_libdir}/libabsl_cord.%{soversion} %{_libdir}/libabsl_cord_internal.%{soversion} %{_libdir}/libabsl_cordz_functions.%{soversion} %{_libdir}/libabsl_cordz_handle.%{soversion} %{_libdir}/libabsl_cordz_info.%{soversion} %{_libdir}/libabsl_crc32c.%{soversion} %{_libdir}/libabsl_crc_cord_state.%{soversion} %{_libdir}/libabsl_crc_internal.%{soversion} %{_libdir}/libabsl_debugging_internal.%{soversion} %{_libdir}/libabsl_demangle_internal.%{soversion} %{_libdir}/libabsl_examine_stack.%{soversion} %{_libdir}/libabsl_exponential_biased.%{soversion} %{_libdir}/libabsl_hash.%{soversion} %{_libdir}/libabsl_int128.%{soversion} %{_libdir}/libabsl_kernel_timeout_internal.%{soversion} %{_libdir}/libabsl_log_globals.%{soversion} %{_libdir}/libabsl_log_internal_check_op.%{soversion} %{_libdir}/libabsl_log_internal_format.%{soversion} %{_libdir}/libabsl_log_internal_globals.%{soversion} %{_libdir}/libabsl_log_internal_log_sink_set.%{soversion} %{_libdir}/libabsl_log_internal_message.%{soversion} %{_libdir}/libabsl_log_internal_nullguard.%{soversion} %{_libdir}/libabsl_log_internal_proto.%{soversion} %{_libdir}/libabsl_log_sink.%{soversion} %{_libdir}/libabsl_low_level_hash.%{soversion} %{_libdir}/libabsl_malloc_internal.%{soversion} %{_libdir}/libabsl_raw_hash_set.%{soversion} %{_libdir}/libabsl_raw_logging_internal.%{soversion} %{_libdir}/libabsl_spinlock_wait.%{soversion} %{_libdir}/libabsl_stacktrace.%{soversion} %{_libdir}/libabsl_str_format_internal.%{soversion} %{_libdir}/libabsl_strerror.%{soversion} %{_libdir}/libabsl_string_view.%{soversion} %{_libdir}/libabsl_strings.%{soversion} %{_libdir}/libabsl_strings_internal.%{soversion} %{_libdir}/libabsl_symbolize.%{soversion} %{_libdir}/libabsl_synchronization.%{soversion} %{_libdir}/libabsl_throw_delegate.%{soversion} %{_libdir}/libabsl_time.%{soversion} %{_libdir}/libabsl_time_zone.%{soversion} %files -n libabsl_%{lname_suffix} %license LICENSE %{_libdir}/libabsl_bad_any_cast_impl.%{soversion} %{_libdir}/libabsl_bad_optional_access.%{soversion} %{_libdir}/libabsl_bad_variant_access.%{soversion} %{_libdir}/libabsl_civil_time.%{soversion} %{_libdir}/libabsl_cordz_sample_token.%{soversion} %{_libdir}/libabsl_crc_cpu_detect.%{soversion} %{_libdir}/libabsl_decode_rust_punycode.%{soversion} %{_libdir}/libabsl_demangle_rust.%{soversion} %{_libdir}/libabsl_die_if_null.%{soversion} %{_libdir}/libabsl_failure_signal_handler.%{soversion} %{_libdir}/libabsl_flags_commandlineflag_internal.%{soversion} %{_libdir}/libabsl_flags_commandlineflag.%{soversion} %{_libdir}/libabsl_flags_config.%{soversion} %{_libdir}/libabsl_flags_internal.%{soversion} %{_libdir}/libabsl_flags_marshalling.%{soversion} %{_libdir}/libabsl_flags_parse.%{soversion} %{_libdir}/libabsl_flags_private_handle_accessor.%{soversion} %{_libdir}/libabsl_flags_program_name.%{soversion} %{_libdir}/libabsl_flags_reflection.%{soversion} %{_libdir}/libabsl_flags_usage_internal.%{soversion} %{_libdir}/libabsl_flags_usage.%{soversion} %{_libdir}/libabsl_graphcycles_internal.%{soversion} %{_libdir}/libabsl_hashtablez_sampler.%{soversion} %{_libdir}/libabsl_leak_check.%{soversion} %{_libdir}/libabsl_log_entry.%{soversion} %{_libdir}/libabsl_log_flags.%{soversion} %{_libdir}/libabsl_log_initialize.%{soversion} %{_libdir}/libabsl_log_internal_conditions.%{soversion} %{_libdir}/libabsl_log_internal_fnmatch.%{soversion} %{_libdir}/libabsl_log_internal_structured_proto.%{soversion} %{_libdir}/libabsl_log_severity.%{soversion} %{_libdir}/libabsl_periodic_sampler.%{soversion} %{_libdir}/libabsl_poison.%{soversion} %{_libdir}/libabsl_random_distributions.%{soversion} %{_libdir}/libabsl_random_internal_distribution_test_util.%{soversion} %{_libdir}/libabsl_random_internal_platform.%{soversion} %{_libdir}/libabsl_random_internal_pool_urbg.%{soversion} %{_libdir}/libabsl_random_internal_randen_hwaes_impl.%{soversion} %{_libdir}/libabsl_random_internal_randen_hwaes.%{soversion} %{_libdir}/libabsl_random_internal_randen_slow.%{soversion} %{_libdir}/libabsl_random_internal_randen.%{soversion} %{_libdir}/libabsl_random_internal_seed_material.%{soversion} %{_libdir}/libabsl_random_seed_gen_exception.%{soversion} %{_libdir}/libabsl_random_seed_sequences.%{soversion} %{_libdir}/libabsl_scoped_set_env.%{soversion} %{_libdir}/libabsl_statusor.%{soversion} %{_libdir}/libabsl_status.%{soversion} %{_libdir}/libabsl_tracing_internal.%{soversion} %{_libdir}/libabsl_utf8_for_code_point.%{soversion} %{_libdir}/libabsl_vlog_config_internal.%{soversion} %files devel %license LICENSE %doc README.md %{_includedir}/absl %{_libdir}/cmake/absl %{_libdir}/libabsl_*.so %{_libdir}/pkgconfig/absl_*.pc %changelog * Sat Mar 22 2025 Andreas Stieger - Update to 20250127.1: * Improved Bazel support * Added ABSL_ATTRIBUTE_VIEW and ABSL_ATTRIBUTE_OWNER for diagnosing certain lifetime issues * Many performance improvements * potential integer overflow in hash container create/resize fixed again - boo#1236438 * Mon Feb 17 2025 Marcus Rueckert - do not obsolete the shared libary package * Sat Feb 8 2025 Andreas Stieger - update to 20250127.0 * Added support for Bazel 8.0 * Added support for Bazel Platforms for better portability * Added ABSL_ATTRIBUTE_VIEW and ABSL_ATTRIBUTE_OWNER for diagnosing certain lifetime issues * Many performance improvements * Sun Jan 26 2025 Andreas Stieger - update to 20240722.1 (boo#1236438) * potential integer overflow in hash container create/resize * Wed Jan 15 2025 Bernhard Wiedemann - Extend options-cxx17.patch and options-old.patch to avoid race-condition (boo#1235867) * Sat Nov 16 2024 Andreas Stieger - update to 20240722.0: * Add GoogleTest matchers for absl::Status. These matchers make it easier to write unit tests for code that uses absl::Status. * absl::AlphaNum no longer allows brace-initialization * The deprecated symbol absl::kuint128max has been removed and should be replaced with absl::Uint128Max(). * absl::aligned_storage_t, which was a polyfill consistent with std::aligned_storage_t, has been removed. std::aligned_storage_t is deprecated in C++23 * absl::StrJoin now has a absl::string_view overload. This allows for passing a collection of string-like objects without having to convert everything to the same type first. However, this may be a breaking change for users passing an explicit template argument to absl::StrJoin. In this case, simply remove the explicit template parameter. * vlog_is_on.h is now a public header and is no longer included from log.h. To use VLOG_IS_ON(), absl/log/vlog_is_on.h must be included. - drop abseil-cmake-gtest-testonly.patch * Fri Jul 5 2024 Christoph G - Add upstream patch abseil-cmake-gtest-testonly.patch to fix issue with GTest and CMake 3.30 * Thu Apr 11 2024 Andreas Stieger - update to 20240116.2 * Added absl::NoDestructor to simplify defining static types that do not need to be destructed upon program exit. * Added configurable verbose logging (also known as VLOG). * Added absl::Overload(), which returns a functor that provides overloads based on the functors passed to it. (from C++17) * Breaking change: AbslHashValue() no longer accepts C-style arrays as a parameter. * Breaking change: absl::weak_equality and absl::strong_equality have been removed * Tue Apr 2 2024 Dirk Müller - split abseil libraries so that libzypp / protobuf doesn't require all to be installed (jsc#PED-8153) * Mon Mar 4 2024 Fridrich Strba - Fix broken link to sources - Fix build for distributions that lack the ldconfig_scriptlets macro - Make the gcc version condition a bit more generic * Sun Mar 3 2024 Andreas Stieger - update to 20240116.1: * Add absl::NoDestructor to simplify defining static types that do not need to be destructed upon program exit. * Add configurable verbose logging (also known as VLOG). * Added absl::Overload(), which returns a functor that provides overloads based on the functors passed to it. Note that this functionality requires C++17 or newer. * Breaking Change: AbslHashValue() no longer accepts C-style arrays as a parameter, caller need to wrap C-string literals in absl::string_view. * Breaking Change: absl::weak_equality and absl::strong_equality have been removed. The corresponding std types were removed before C++20 was finalized * Fri Jan 19 2024 Dirk Müller - fix build for non-SUSE distributions * Fri Oct 6 2023 Andreas Stieger - update to 20230802.1: * Add StdcppWaiter to the end of the list of waiter implementations * Thu Sep 7 2023 Adrian Schröter - update to 20230802.0 What's New: * Added the nullability library for designating the expected nullability of pointers. Currently these serve as annotations only, but it is expected that compilers will one day be able to use these annotations for diagnostic purposes. * Added the prefetch library as a portable layer for moving data into caches before it is read. * Abseil's hash tables now detect many more programming errors in debug and sanitizer builds. * Abseil's synchronization objects now differentiate absolute waits (when passed an absl::Time) from relative waits (when passed an absl::Duration) when the underlying platform supports differentiating these cases. This only makes a difference when system clocks are adjusted. * Abseil's flag parsing library includes additional methods that make it easier to use when another library also expects to be able to parse flags. * absl::string_view is now available as a smaller target, @com_google_absl//absl/strings:string_view, so that users may use this library without depending on the much larger @com_google_absl//absl/strings target. * Wed Aug 9 2023 Fridrich Strba - Fix build on older systems by requiring C++17 compliant compiler - Added patch: * cmake.patch + lower the cmake requirement to 3.5 in order to be able to build on SLE12SP5 * Thu Jun 29 2023 Fabian Vogt - Add baselibs.conf to make protobuf happy. Hopefully temporary. * Thu May 25 2023 Adrian Schröter - update to 20230125.3 Details can be found on: https://github.com/abseil/abseil-cpp/releases/tag/20230125.3 * Mon Apr 24 2023 Adrian Schröter - update to 20230125.2 What's New: The Abseil logging library has been released. This library provides facilities for writing short text messages about the status of a program to stderr, disk files, or other sinks (via an extension API). See the logging library documentation for more information. An extension point, AbslStringify(), allows user-defined types to seamlessly work with Abseil's string formatting functions like absl::StrCat() and absl::StrFormat(). A library for computing CRC32C checksums has been added. Floating-point parsing now uses the Eisel-Lemire algorithm, which provides a significant speed improvement. The flags library now provides suggestions for the closest flag(s) in the case of misspelled flags. Using CMake to install Abseil now makes the installed artifacts (in particular absl/base/options.h) reflect the compiled ABI. Breaking Changes: Abseil now requires at least C++14 and follows Google's Foundational C++ Support Policy. See this table for a list of currently supported versions compilers, platforms, and build tools. The legacy spellings of the thread annotation macros/functions (e.g. GUARDED_BY()) have been removed by default in favor of the ABSL_ prefixed versions (e.g. ABSL_GUARDED_BY()) due to clashes with other libraries. The compatibility macro ABSL_LEGACY_THREAD_ANNOTATIONS can be defined on the compile command-line to temporarily restore these spellings, but this compatibility macro will be removed in the future. Known Issues The Abseil logging library in this release is not a feature-complete replacement for glog yet. VLOG and DFATAL are examples of features that have not yet been released. - obsolete Fix-maes-msse41-leaking-into-pkgconfig.patch * Sat Sep 24 2022 Dirk Müller - update to 20220623.1: * minor warning fix * Mon Jul 11 2022 Bruno Pitrus - Add Fix-maes-msse41-leaking-into-pkgconfig.patch * Do not make programs compiled with abseil require new-ish CPUs (boo#1203379) * Sun Jul 3 2022 Matthias Eliasson - Update to version 20220623.0 What's New: * Added absl::AnyInvocable, a move-only function type. * Added absl::CordBuffer, a type for buffering data for eventual inclusion an absl::Cord, which is useful for writing zero-copy code. * Added support for command-line flags of type absl::optional. Breaking Changes: * CMake builds now use the flag ABSL_BUILD_TESTING (default: OFF) to control whether or not unit tests are built. * The ABSL_DEPRECATED macro now works with the GCC compiler. GCC users that are experiencing new warnings can use -Wno-deprecated-declatations silence the warnings or use -Wno-error=deprecated-declarations to see warnings but not fail the build. * ABSL_CONST_INIT uses the C++20 keyword constinit when available. Some compilers are more strict about where this keyword must appear compared to the pre-C++20 implementation. * Bazel builds now depend on the bazelbuild/bazel-skylib repository. See Abseil's WORKSPACE file for an example of how to add this dependency. Other: * This will be the last release to support C++11. Future releases will require at least C++14. - run spec-cleaner * Wed Jun 29 2022 Fabian Vogt - Remove obsolete 0%%{suse_version} < 1500 conditions * Wed Jun 29 2022 Bruno Pitrus - Add options-old.patch, options-cxx17.patch (boo#1203378) * Ensure ABI stability regardless of compiler settings per instruction in the header. * Mon Apr 4 2022 Jan Engelhardt - Implement shlib packaging policy * Fri Mar 4 2022 Danilo Spinella - Fix build on SLE-12-SP5 * Tue Jan 4 2022 Dirk Müller - update to 20211102.0: * absl::Cord is now implemented as a b-tree. The new implementation offers improved performance in most workloads. * absl::SimpleHexAtoi() has been added to strings library for parsing hexadecimal strings * Wed Jun 30 2021 Ferdinand Thiessen - Update to version 20210324.2 (LTS): * No user visible changes, only build system related * Sun Apr 25 2021 Ferdinand Thiessen - Update to LTS version 20210324.1 * Fixed missing absl::Cleanup * Fixed pkgconfig install path - Dropped upstream merged Correctly-install-pkgconfig.patch * Tue Apr 13 2021 Ferdinand Thiessen - Update to LTS version 20210324.0 * Breaking: The empty absl::container target has been removed from the CMake build. This target had no effect and references to this target in user code can safely be removed. * New: The cleanup library has been released. This library contains the control-flow-construct-like type absl::Cleanup which is used for executing a callback on scope exit. * New: The numeric library now includes bits.h, a polyfill header containing implementations of C++20's bitwise math functions. * New: Abseil now installs pkg-config files to make it easier to use Abseil with some other build systems. * New: Abseil now respects the default CMake installation paths. Standard CMake variables like CMAKE_INSTALL_PREFIX can be used to change the installation path. - Added Correctly-install-pkgconfig.patch from upstream to fix installation of pkgconfig files - Call ldconfig on post and postun * Tue Dec 29 2020 Matthias Eliasson - Update to version 20200923.2 What's New: * absl::StatusOr has been released. See our blog post for more information. * Abseil Flags reflection interfaces have been released. * Abseil Flags memory usage has been significantly optimized. * Abseil now supports a "hardened" build mode. This build mode enables runtime checks that guard against programming errors that may lead to security vulnerabilities. Notable Fixes: * Sanitizer dynamic annotations like AnnotateRWLockCreate that are also defined by the compiler sanitizer implementation are no longer also defined by Abseil. * Sanitizer macros are now prefixed with ABSL_ to avoid naming collisions. * Sanitizer usage is now automatically detected and no longer requires macros like ADDRESS_SANITIZER to be defined on the command line. Breaking Changes: * Abseil no longer contains a dynamic_annotations library. Users using a supported build system (Bazel or CMake) are unaffected by this, but users manually specifying link libraries may get an error about a missing linker input. * Fri Nov 6 2020 Fabian Vogt - Drop source package, was only used by grpc which was switched over to use the shared library * Tue Oct 27 2020 Jan Engelhardt - Build shared libraries of abseil for use by grpc (related to https://github.com/grpc/grpc/issues/24476) * Sat Sep 5 2020 Jan Engelhardt - Switch the package to noarch. * Fri Jul 24 2020 Matthias Eliasson - Update to version 20200225.2 * This release fixes the list of dependencies of absl::Cord in the CMake build. * bug fix for absl::Status::ErasePayload * Thu Jan 16 2020 Michał Rostecki - Remove all packages except source. * Tue Jan 14 2020 Dominique Leuenberger - Set ExcludeArch: %%ix86: bazel is required to build which in turn is not supported on ix86. * Wed Dec 18 2019 Swaminathan Vasudevan - Update to version 20190808 * Sat Nov 23 2019 Bernhard Wiedemann - Sort find output to make build reproducible (boo#1041090) * Thu Oct 17 2019 Richard Brown - Remove obsolete Groups tag (fate#326485) * Mon Sep 23 2019 mrostecki@opensuse.org - Update to version 20190605: * avoid use of undefined ABSL_HAVE_ELF_MEM_IMAGE * Avoid undefined behavior when nullptr is passed to memcpy with size 0 * CMake: Set correct flags for clang-cl * Adding linking of CoreFoundation to CMakeLists in absl/time as time_zone_lookup.cc includes CoreFoundation * Implement Span::first and Span::last from C++20 * Changed HTTP URLs to HTTPS where possible * Fix GCC8 warnings * Fix library order for Conan package * _umul128 is not available on Windows ARM64 * Add note at top that this is supported best-effort * Update Conan author * Add Conan topics * Remove cctz as external dependency * Add Conan recipe * Thu Sep 19 2019 Michał Rostecki - Add source package. * Wed Jul 24 2019 Michał Rostecki - Use bazel0.19 as build fails with the latest bazel (0.26) * Thu Mar 7 2019 Michal Rostecki - Add soname to all *.so* files. * Thu Feb 28 2019 Michał Rostecki - Fix build with Bazel 0.22.0. - Add optflags. * Fri Jan 18 2019 Guillaume GARDET - Fix aarch64 and ppc64 builds * Wed Dec 12 2018 Jan Engelhardt - Trim redundancies from description. * Thu Nov 29 2018 Michał Rostecki - Update to version 20181127: * Export of internal Abseil changes. -- 15d7bcf28220750db46930f4d8c090b54e3ae5fe by Jon Cohen : * Export of internal Abseil changes. -- 5278e56bd7d322ecf161eaf29fd7fa3941d7431b by Greg Falcon : - Switch from CMake to Bazel * Mon Nov 19 2018 Michał Rostecki - Update to version 20181116: * Export of internal Abseil changes. -- da04b8cd21f6225d71397471474d34a77df0efd6 by Jon Cohen : * Export of internal Abseil changes. -- 5f1ab09522226336830d9ea6ef7276d37f536ac5 by Abseil Team : * Export of internal Abseil changes. -- 07575526242a8e1275ac4223a3d2822795f46569 by CJ Johnson : * Export of internal Abseil changes. -- 178e7a9a76fc8fcd6df6335b59139cbe644a16b9 by Jon Cohen : * Export of internal Abseil changes. -- ee19e203eca970ff88e8f25ce4e19c32e143b988 by Jon Cohen : * Export of internal Abseil changes. -- 4e224c85c3730398919fc5195cb1fc7a752e6e4f by Mark Barolak : * Export of internal Abseil changes. -- 9e8aa654630015ea8221703b0ea10dd1a47a848f by Abseil Team : * Export of internal Abseil changes. -- ba4dd47492748bd630462eb68b7959037fc6a11a by Abseil Team : * Fix compilation of generic byteswap routines * Fix absl::container on VS2017 v15.8 (#192)