diff --git a/SPECS/abseil-cpp/0001-synchronization-accept-general-nullary-functors.patch b/SPECS/abseil-cpp/0001-synchronization-accept-general-nullary-functors.patch new file mode 100644 index 000000000..27aeaea4e --- /dev/null +++ b/SPECS/abseil-cpp/0001-synchronization-accept-general-nullary-functors.patch @@ -0,0 +1,84 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Abseil Team +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 + #include + #include ++#include + + #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 ++struct HasConstMemberCallOperator : std::false_type {}; ++ ++template ++struct HasConstMemberCallOperator< ++ T, std::void_t(&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 ( +- &T::operator()))> ++ template ::value, ++ int> = 0> + explicit Condition(const T* absl_nonnull obj) + : Condition(obj, static_cast(&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::value && ++ sizeof(static_cast(&T::operator())) != 0>> ++ explicit Condition(const T* absl_nonnull obj) ++ : Condition(&CallByRef, 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 + static bool CastAndCallMethod(const Condition* absl_nonnull c); + ++ template ++ static bool CallByRef(const T* absl_nonnull self) { ++ return (*self)(); ++ } ++ + // Helper methods for storing, validating, and reading callback arguments. + template + inline void StoreCallback(T callback) { +-- +2.49.0 diff --git a/SPECS/abseil-cpp/abseil-cpp.spec b/SPECS/abseil-cpp/abseil-cpp.spec index 1d24dd076..47c2188aa 100644 --- a/SPECS/abseil-cpp/abseil-cpp.spec +++ b/SPECS/abseil-cpp/abseil-cpp.spec @@ -3,6 +3,7 @@ # SPDX-FileContributor: Xuhai Chang # SPDX-FileContributor: Zheng Junjie # SPDX-FileContributor: misaka00251 +# SPDX-FileContributor: panglars # # SPDX-License-Identifier: MulanPSL-2.0 @@ -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++ diff --git a/SPECS/dnf5/dnf5.spec b/SPECS/dnf5/dnf5.spec index 3800b9947..85e215861 100644 --- a/SPECS/dnf5/dnf5.spec +++ b/SPECS/dnf5/dnf5.spec @@ -3,25 +3,23 @@ # SPDX-FileContributor: Zheng Junjie # SPDX-FileContributor: misaka00251 # SPDX-FileContributor: yyjeqhc +# SPDX-FileContributor: panglars # # 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 @@ -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 @@ -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. @@ -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 @@ -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 @@ -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 @@ -226,4 +231,4 @@ sed -i 's/enabled = host-only/enabled = false/g' %{buildroot}%{_sysconfdir}/dnf/ %{_libdir}/pkgconfig/libdnf5-cli.pc %changelog -%{?autochangelog} +%autochangelog diff --git a/SPECS/dnf5/libdnf5-cli-handle-C-or-POSIX-locale-gracefully.patch b/SPECS/dnf5/libdnf5-cli-handle-C-or-POSIX-locale-gracefully.patch deleted file mode 100644 index 80ebc4767..000000000 --- a/SPECS/dnf5/libdnf5-cli-handle-C-or-POSIX-locale-gracefully.patch +++ /dev/null @@ -1,17 +0,0 @@ -Adjust form https://github.com/rpm-software-management/dnf5/pull/2638 - -diff --git a/libdnf5-cli/progressbar/progress_bar.cpp b/libdnf5-cli/progressbar/progress_bar.cpp -index 6656769e8..54506d490 100644 ---- a/libdnf5-cli/progressbar/progress_bar.cpp -+++ b/libdnf5-cli/progressbar/progress_bar.cpp -@@ -98,7 +98,9 @@ const ProgressBar::Impl::MessageMetrics & ProgressBar::Impl::get_message_metrics - // calculate the display width of the character - wchar_t wc; - auto bytes_consumed = std::mbrtowc(&wc, message.data(), message.size(), &mbstate); -- if (bytes_consumed <= 0) { -+ // mbrtowc returns 0 if a null wide character was found. -+ // it returns (size_t)-1 or (size_t)-2 on invalid or incomplete wide character. -+ if (bytes_consumed == 0 || bytes_consumed >= SIZE_MAX-1) { - break; - } - auto char_width = static_cast(wcwidth(wc)); diff --git a/SPECS/gumbo-parser/gumbo-parser.spec b/SPECS/gumbo-parser/gumbo-parser.spec index 4d0275bb6..0a688895e 100644 --- a/SPECS/gumbo-parser/gumbo-parser.spec +++ b/SPECS/gumbo-parser/gumbo-parser.spec @@ -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 +# SPDX-FileContributor: panglars # # SPDX-License-Identifier: MulanPSL-2.0 @@ -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++ @@ -89,4 +91,4 @@ install -m 644 doc/*.md %{buildroot}%{_pkgdocdir} %{python3_sitelib}/gumbo-*.egg-info %changelog -%{?autochangelog} +%autochangelog diff --git a/SPECS/libqalculate/libqalculate.spec b/SPECS/libqalculate/libqalculate.spec index 24732ce4f..d6d07a34a 100644 --- a/SPECS/libqalculate/libqalculate.spec +++ b/SPECS/libqalculate/libqalculate.spec @@ -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 +# SPDX-FileContributor: panglars # # SPDX-License-Identifier: MulanPSL-2.0 @@ -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 @@ -62,4 +64,4 @@ autoreconf -fiv %{_includedir}/libqalculate/ %changelog -%{?autochangelog} +%autochangelog diff --git a/SPECS/libsolv/libsolv.spec b/SPECS/libsolv/libsolv.spec index e2ca73427..0e99d34e3 100644 --- a/SPECS/libsolv/libsolv.spec +++ b/SPECS/libsolv/libsolv.spec @@ -4,16 +4,17 @@ # SPDX-FileContributor: Zheng Junjie # SPDX-FileContributor: yyjeqhc # SPDX-FileContributor: misaka00251 +# SPDX-FileContributor: panglars # # 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 @@ -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 @@ -123,4 +124,4 @@ Python bindings for the %{name} library. %{python3_sitearch}/solv-%{version}.dist-info/ %changelog -%{?autochangelog} +%autochangelog