Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Abseil Team <absl-team@google.com>
Date: Wed, 29 Apr 2026 16:00:00 +0800
Subject: [PATCH] synchronization: accept non-traditional call operators

Backport the upstream master implementation for absl::Condition functors whose
call operators do not match the traditional bool operator()() const member
function pointer form. GCC 16's libstdc++ exposes std::bind results this way,
which otherwise breaks the absl_mutex_test build.
---
absl/synchronization/mutex.h | 34 ++++++++++++++++++++++++++++++++--
1 file changed, 32 insertions(+), 2 deletions(-)

diff --git a/absl/synchronization/mutex.h b/absl/synchronization/mutex.h
index c3765a0..89b3833 100644
--- a/absl/synchronization/mutex.h
+++ b/absl/synchronization/mutex.h
@@ -61,6 +61,7 @@
#include <atomic>
#include <cstdint>
#include <cstring>
+#include <type_traits>

#include "absl/base/attributes.h"
#include "absl/base/config.h"
@@ -81,6 +82,18 @@ ABSL_NAMESPACE_BEGIN
class Condition;
struct SynchWaitParams;

+namespace synchronization_internal {
+
+template <typename T, typename = void>
+struct HasConstMemberCallOperator : std::false_type {};
+
+template <typename T>
+struct HasConstMemberCallOperator<
+ T, std::void_t<decltype(static_cast<bool (T::*)() const>(&T::operator()))>>
+ : std::true_type {};
+
+} // namespace synchronization_internal
+
// -----------------------------------------------------------------------------
// Mutex
// -----------------------------------------------------------------------------
@@ -866,11 +879,23 @@ class Condition {
// Implementation note: The second template parameter ensures that this
// constructor doesn't participate in overload resolution if T doesn't have
// `bool operator() const`.
- template <typename T, typename E = decltype(static_cast<bool (T::*)() const>(
- &T::operator()))>
+ template <typename T,
+ std::enable_if_t<
+ synchronization_internal::HasConstMemberCallOperator<T>::value,
+ int> = 0>
explicit Condition(const T* absl_nonnull obj)
: Condition(obj, static_cast<bool (T::*)() const>(&T::operator())) {}

+ // Constructor for functors that do not match the `bool operator()() const`
+ // signature, such as those using C++23 "deducing this" or static operator().
+ template <
+ typename T,
+ typename = std::enable_if_t<
+ !synchronization_internal::HasConstMemberCallOperator<T>::value &&
+ sizeof(static_cast<bool (*)(const T&)>(&T::operator())) != 0>>
+ explicit Condition(const T* absl_nonnull obj)
+ : Condition(&CallByRef<T>, obj) {}
+
// A Condition that always returns `true`.
// kTrue is only useful in a narrow set of circumstances, mostly when
// it's passed conditionally. For example:
@@ -932,6 +957,11 @@ class Condition {
template <typename T, typename ConditionMethodPtr>
static bool CastAndCallMethod(const Condition* absl_nonnull c);

+ template <typename T>
+ static bool CallByRef(const T* absl_nonnull self) {
+ return (*self)();
+ }
+
// Helper methods for storing, validating, and reading callback arguments.
template <typename T>
inline void StoreCallback(T callback) {
--
2.49.0
4 changes: 4 additions & 0 deletions SPECS/abseil-cpp/abseil-cpp.spec
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
# SPDX-FileContributor: Xuhai Chang <xuhai.oerv@isrc.iscas.ac.cn>
# SPDX-FileContributor: Zheng Junjie <zhengjunjie@iscas.ac.cn>
# SPDX-FileContributor: misaka00251 <liuxin@iscas.ac.cn>
# SPDX-FileContributor: panglars <panghao.riscv@isrc.iscas.ac.cn>
#
# SPDX-License-Identifier: MulanPSL-2.0

Expand All @@ -17,6 +18,9 @@ VCS: git:https://github.com/abseil/abseil-cpp
Source: https://github.com/abseil/abseil-cpp/archive/%{version}/abseil-cpp-%{version}.tar.gz
BuildSystem: cmake

# Fix std::bind-backed absl::Condition with GCC 16's libstdc++.
Patch0: 0001-synchronization-accept-general-nullary-functors.patch

BuildRequires: cmake
BuildRequires: ninja
BuildRequires: gcc-c++
Expand Down
31 changes: 18 additions & 13 deletions SPECS/dnf5/dnf5.spec
Original file line number Diff line number Diff line change
Expand Up @@ -3,25 +3,23 @@
# SPDX-FileContributor: Zheng Junjie <zhengjunjie@iscas.ac.cn>
# SPDX-FileContributor: misaka00251 <liuxin@iscas.ac.cn>
# SPDX-FileContributor: yyjeqhc <jialin.oerv@isrc.iscas.ac.cn>
# SPDX-FileContributor: panglars <panghao.riscv@isrc.iscas.ac.cn>
#
# SPDX-License-Identifier: MulanPSL-2.0

Name: dnf5
Version: 5.3.0.0
Version: 5.4.2.0
Release: %autorelease
Summary: Command-line package manager
License: GPL-2.0-or-later
URL: https://github.com/rpm-software-management/dnf5
#!RemoteAsset: sha256:c7e744773dd300e539cd5285344810a9aee4c934f716722c42cafc383945b0e8
#!RemoteAsset: sha256:fd37bad6c772bd0cc784a7a8808d530dfc06782f8dc7b225752eb296fcd1b7ad
Source0: https://github.com/rpm-software-management/dnf5/archive/%{version}/dnf5-%{version}.tar.gz
BuildSystem: cmake

# Adjust from https://github.com/rpm-software-management/dnf5/pull/2638
Patch0: libdnf5-cli-handle-C-or-POSIX-locale-gracefully.patch

BuildOption(conf): -DVERSION_PRIME:STRING=5
BuildOption(conf): -DVERSION_MAJOR:STRING=3
BuildOption(conf): -DVERSION_MINOR:STRING=0
BuildOption(conf): -DVERSION_MAJOR:STRING=4
BuildOption(conf): -DVERSION_MINOR:STRING=2
BuildOption(conf): -DVERSION_MICRO:STRING=0
BuildOption(conf): -DPACKAGE_VERSION:STRING=%{version}
BuildOption(conf): -DWITH_LIBDNF5_CLI:BOOL=ON
Expand All @@ -47,18 +45,19 @@ BuildRequires: pkgconfig(json-c)
BuildRequires: pkgconfig(libcrypto)
BuildRequires: pkgconfig(sdbus-c++)
BuildRequires: pkgconfig(librepo) >= 1.20.0
BuildRequires: pkgconfig(libsolv) >= 0.7.25
BuildRequires: pkgconfig(libsolv) >= 0.7.36
BuildRequires: pkgconfig(libsolvext) >= 0.7.25
BuildRequires: pkgconfig(rpm) >= 4.17.0
BuildRequires: pkgconfig(rpm) >= 4.19.0
BuildRequires: pkgconfig(sqlite3) >= 3.35.0
BuildRequires: pkgconfig(libpkgmanifest)
BuildRequires: pkgconfig(systemd)
BuildRequires: toml11
BuildRequires: zlib-devel
BuildRequires: pkgconfig(zlib)
BuildRequires: pkgconfig(smartcols)
BuildRequires: pkgconfig(libcurl)
BuildRequires: pkgconfig(libacl)
BuildRequires: swig
BuildRequires: python3-devel
BuildRequires: pkgconfig(python3)

Provides: dnf

Expand Down Expand Up @@ -127,7 +126,7 @@ Summary: Development files for dnf5, libdnf5 and libdnf5-cli
Requires: %{name}%{?_isa} = %{version}-%{release}
Requires: libdnf5%{?_isa} = %{version}-%{release}
Requires: libdnf5-cli%{?_isa} = %{version}-%{release}
Requires: pkgconfig(libsolv)
Requires: pkgconfig(libsolv) >= 0.7.36

%description devel
Development files for dnf5.
Expand All @@ -153,6 +152,7 @@ sed -i 's/enabled = host-only/enabled = false/g' %{buildroot}%{_sysconfdir}/dnf/
%dir %{_sysconfdir}/dnf/dnf5-plugins
%dir %{_libdir}/libdnf5/plugins
%{_sysconfdir}/bash_completion.d/dnf5
%{_datadir}/zsh/site-functions/_dnf5
%{_bindir}/dnf-automatic
%{_unitdir}/dnf-automatic.service
%{_unitdir}/dnf-automatic.timer
Expand All @@ -170,7 +170,10 @@ sed -i 's/enabled = host-only/enabled = false/g' %{buildroot}%{_sysconfdir}/dnf/
%dir %{_sysconfdir}/dnf/protected.d
%ghost %attr(0644, root, root) %{_sysconfdir}/dnf/versionlock.toml
%dir %{_datadir}/dnf5/libdnf.conf.d
%dir %{_datadir}/dnf5/libdnf.plugins.conf.d
%dir %{_datadir}/dnf5/vendors.d
%dir %{_sysconfdir}/dnf/libdnf5.conf.d
%dir %{_sysconfdir}/dnf/vendors.d
%dir %{_datadir}/dnf5/repos.override.d
%dir %{_sysconfdir}/dnf/repos.override.d
%dir %{_datadir}/dnf5/repos.d
Expand All @@ -185,6 +188,8 @@ sed -i 's/enabled = host-only/enabled = false/g' %{buildroot}%{_sysconfdir}/dnf/

%files plugins
%dir %{_sysconfdir}/dnf/libdnf5-plugins
%dir %{_sysconfdir}/dnf/libdnf5-plugins/actions.d
%dir %{_sysconfdir}/dnf/libdnf5-plugins/python_plugins_loader.d
%config(noreplace) %{_sysconfdir}/dnf/libdnf5-plugins/actions.conf
%config(noreplace) %{_sysconfdir}/dnf/libdnf5-plugins/expired-pgp-keys.conf
%config(noreplace) %{_sysconfdir}/dnf/libdnf5-plugins/local.conf
Expand Down Expand Up @@ -226,4 +231,4 @@ sed -i 's/enabled = host-only/enabled = false/g' %{buildroot}%{_sysconfdir}/dnf/
%{_libdir}/pkgconfig/libdnf5-cli.pc

%changelog
%{?autochangelog}
%autochangelog
17 changes: 0 additions & 17 deletions SPECS/dnf5/libdnf5-cli-handle-C-or-POSIX-locale-gracefully.patch

This file was deleted.

4 changes: 3 additions & 1 deletion SPECS/gumbo-parser/gumbo-parser.spec
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# SPDX-FileCopyrightText: (C) 2026 Institute of Software, Chinese Academy of Sciences (ISCAS)
# SPDX-FileCopyrightText: (C) 2026 openRuyi Project Contributors
# SPDX-FileContributor: yyjeqhc <jialin.oerv@isrc.iscas.ac.cn>
# SPDX-FileContributor: panglars <panghao.riscv@isrc.iscas.ac.cn>
#
# SPDX-License-Identifier: MulanPSL-2.0

Expand All @@ -17,6 +18,7 @@ BuildSystem: autotools
BuildOption(conf): --disable-static
BuildOption(conf): --disable-silent-rules
BuildOption(conf): --docdir=%{_pkgdocdir}
BuildOption(check): CXXFLAGS="%{build_cxxflags} -std=gnu++17"

BuildRequires: make
BuildRequires: gcc-c++
Expand Down Expand Up @@ -89,4 +91,4 @@ install -m 644 doc/*.md %{buildroot}%{_pkgdocdir}
%{python3_sitelib}/gumbo-*.egg-info

%changelog
%{?autochangelog}
%autochangelog
4 changes: 3 additions & 1 deletion SPECS/libqalculate/libqalculate.spec
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# SPDX-FileCopyrightText: (C) 2026 Institute of Software, Chinese Academy of Sciences (ISCAS)
# SPDX-FileCopyrightText: (C) 2026 openRuyi Project Contributors
# SPDX-FileContributor: yyjeqhc <jialin.oerv@isrc.iscas.ac.cn>
# SPDX-FileContributor: panglars <panghao.riscv@isrc.iscas.ac.cn>
#
# SPDX-License-Identifier: MulanPSL-2.0

Expand All @@ -15,6 +16,7 @@ Source0: https://github.com/Qalculate/libqalculate/archive/refs/tags/v%{v
BuildSystem: autotools

BuildOption(conf): --disable-static
BuildOption(build): CXXFLAGS="%{optflags} -std=gnu++17"

BuildRequires: autoconf
BuildRequires: automake
Expand Down Expand Up @@ -62,4 +64,4 @@ autoreconf -fiv
%{_includedir}/libqalculate/

%changelog
%{?autochangelog}
%autochangelog
9 changes: 5 additions & 4 deletions SPECS/libsolv/libsolv.spec
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,17 @@
# SPDX-FileContributor: Zheng Junjie <zhengjunjie@iscas.ac.cn>
# SPDX-FileContributor: yyjeqhc <jialin.oerv@isrc.iscas.ac.cn>
# SPDX-FileContributor: misaka00251 <liuxin@iscas.ac.cn>
# SPDX-FileContributor: panglars <panghao.riscv@isrc.iscas.ac.cn>
#
# SPDX-License-Identifier: MulanPSL-2.0

Name: libsolv
Version: 0.7.35
Version: 0.7.37
Release: %autorelease
Summary: A free package dependency solver using a satisfiability algorithm
License: BSD-3-Clause
URL: https://github.com/openSUSE/libsolv
#!RemoteAsset
#!RemoteAsset: sha256:ad6a38624dde26fc59c41427608536c443b76f90dcb6bb96c2e70b8e3ee20419
Source: https://github.com/openSUSE/libsolv/archive/refs/tags/%{version}.tar.gz#/%{name}-%{version}.tar.gz
BuildSystem: cmake

Expand Down Expand Up @@ -53,7 +54,7 @@ BuildRequires: gcc-c++
BuildRequires: ninja
BuildRequires: pkgconfig(rpm)
BuildRequires: pkgconfig(zlib)
BuildRequires: libxml2-devel
BuildRequires: pkgconfig(libxml-2.0)
BuildRequires: pkgconfig(liblzma)
BuildRequires: pkgconfig(bzip2)
BuildRequires: swig
Expand Down Expand Up @@ -123,4 +124,4 @@ Python bindings for the %{name} library.
%{python3_sitearch}/solv-%{version}.dist-info/

%changelog
%{?autochangelog}
%autochangelog
Loading