Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package bitcoin for openSUSE:Factory checked in at 2026-05-31 18:29:21 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/bitcoin (Old) and /work/SRC/openSUSE:Factory/.bitcoin.new.1937 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "bitcoin" Sun May 31 18:29:21 2026 rev:60 rq:1356095 version:31.0 Changes: -------- --- /work/SRC/openSUSE:Factory/bitcoin/bitcoin.changes 2025-10-14 18:13:20.963513809 +0200 +++ /work/SRC/openSUSE:Factory/.bitcoin.new.1937/bitcoin.changes 2026-05-31 18:29:38.603437874 +0200 @@ -1,0 +2,32 @@ +Sat May 30 17:17:26 UTC 2026 - Martin Pluskal <[email protected]> + +- Update to version 31.0 (from 28.1; includes the 29.0 and 30.0 + major releases). Highlights across these releases: + * Build system migrated from Autotools to CMake + * Legacy BerkeleyDB wallet support removed; only descriptor + (SQLite) wallets remain + * Built-in UPnP port-mapping support removed + * New unified "bitcoin" command-line wrapper + * Numerous P2P, mempool policy, RPC and wallet improvements + * See the upstream release notes for the full details +- Port the package to the CMake build system +- Build the GUI against Qt6 (was Qt5); rename the GUI subpackage + from bitcoin-qt5 to bitcoin-qt6 (Obsoletes for a clean upgrade) +- Add fix-boost-1.91-multi_index.patch: fix the build against + Boost >= 1.91 (bitcoin/bitcoin#35175) +- Drop now-unneeded BuildRequires: + * libdb-4_8-devel (legacy BDB wallet removed) + * libminiupnpc-devel (UPnP removed) + * pkgconfig(protobuf), pkgconfig(openssl) (BIP70 long gone) + * autoconf, automake, libtool (Autotools replaced by CMake) + * java-devel, lcov, git +- Convert BuildRequires to pkgconfig() style and express the + upstream minimum versions (Boost 1.74, libevent 2.1.8, + SQLite 3.7.17, Qt 6.2) +- Stop using the deprecated %suse_update_desktop_file macro; + ship bitcoin-qt.desktop (Source2) and install it directly, + and drop the update-desktop-files BuildRequires +- Drop the incorrect update-desktop-files post/postun scriptlets + (the desktop database is refreshed by file triggers) + +------------------------------------------------------------------- Old: ---- bitcoin-28.1.obscpio New: ---- bitcoin-31.0.obscpio bitcoin-31.0.tar.gz bitcoin-qt.desktop fix-boost-1.91-multi_index.patch ----------(New B)---------- New: from bitcoin-qt5 to bitcoin-qt6 (Obsoletes for a clean upgrade) - Add fix-boost-1.91-multi_index.patch: fix the build against Boost >= 1.91 (bitcoin/bitcoin#35175) ----------(New E)---------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ bitcoin.spec ++++++ --- /var/tmp/diff_new_pack.GIJ5KR/_old 2026-05-31 18:29:44.771690684 +0200 +++ /var/tmp/diff_new_pack.GIJ5KR/_new 2026-05-31 18:29:44.775690848 +0200 @@ -1,7 +1,7 @@ # # spec file for package bitcoin # -# Copyright (c) 2025 SUSE LLC and contributors +# Copyright (c) 2026 SUSE LLC and contributors # Copyright (c) 2011-2014 P Rusnak <[email protected]> # # All modifications and additions to the file contributed by third parties @@ -24,43 +24,36 @@ %define consensus 0 %define is_base 1 Name: bitcoin -Version: 28.1 +Version: 31.0 Release: 0 Summary: P2P Digital Currency License: MIT URL: https://%{name}.org Source0: %{name}-%{version}.tar.gz Source1: %{base}d.service +Source2: %{base}-qt.desktop Source3: %{base}d.conf Source4: %{base}.conf Patch0: harden_bitcoind.service.patch -BuildRequires: autoconf -BuildRequires: automake +# PATCH-FIX-UPSTREAM fix-boost-1.91-multi_index.patch -- fix build with Boost >= 1.91 (bitcoin/bitcoin#35175) +Patch1: fix-boost-1.91-multi_index.patch +BuildRequires: cmake BuildRequires: gcc-c++ -BuildRequires: git -BuildRequires: java-devel -BuildRequires: lcov -BuildRequires: libboost_filesystem-devel >= 1.73.0 -BuildRequires: libboost_program_options-devel >= 1.73.0 -BuildRequires: libboost_test-devel >= 1.73.0 -BuildRequires: libboost_thread-devel >= 1.73.0 -BuildRequires: libdb-4_8-devel -BuildRequires: libminiupnpc-devel -BuildRequires: libqt5-qtbase-devel -BuildRequires: libtool +BuildRequires: libboost_headers-devel >= 1.74.0 +BuildRequires: ninja BuildRequires: pkgconfig +BuildRequires: qt6-linguist-devel BuildRequires: systemd-rpm-macros -BuildRequires: (libboost_system-devel >= 1.73.0 if libboost_filesystem-devel < 1.89) -BuildRequires: pkgconfig(Qt5Designer) -BuildRequires: pkgconfig(Qt5Help) -BuildRequires: pkgconfig(Qt5UiTools) -BuildRequires: pkgconfig(libevent) +BuildRequires: pkgconfig(Qt6Core) >= 6.2 +BuildRequires: pkgconfig(Qt6DBus) >= 6.2 +BuildRequires: pkgconfig(Qt6Gui) >= 6.2 +BuildRequires: pkgconfig(Qt6Network) >= 6.2 +BuildRequires: pkgconfig(Qt6Test) >= 6.2 +BuildRequires: pkgconfig(Qt6Widgets) >= 6.2 +BuildRequires: pkgconfig(libevent) >= 2.1.8 BuildRequires: pkgconfig(libqrencode) BuildRequires: pkgconfig(libzmq) -BuildRequires: pkgconfig(openssl) -BuildRequires: pkgconfig(protobuf) -BuildRequires: pkgconfig(python3) -BuildRequires: pkgconfig(sqlite3) +BuildRequires: pkgconfig(sqlite3) >= 3.7.17 %description %{name_pretty} is a peer-to-peer electronic cash system @@ -72,12 +65,11 @@ Full transaction history is stored locally at each client. This requires several GB of space, slowly growing. -%package qt5 -Summary: An end-user Qt5 GUI for the %{name_pretty} crypto-currency -Requires(post): update-desktop-files -Requires(postun): update-desktop-files +%package qt6 +Summary: An end-user Qt6 GUI for the %{name_pretty} crypto-currency +Obsoletes: %{name}-qt5 < %{version}-%{release} -%description qt5 +%description qt6 %{name_pretty} is a peer-to-peer electronic cash system that is completely decentralized, without the need for a central server or trusted parties. Users hold the crypto keys to their own money and @@ -158,36 +150,33 @@ Full transaction history is stored locally at each client. This requires several GB of space, slowly growing. -This package provides automated tests for %{name}-qt5 and %{name}d. +This package provides automated tests for %{name}-qt6 and %{name}d. %prep %autosetup -p1 %build -autoreconf -fiv -%configure \ - --with-asm=auto \ - --with-cli=yes \ - --with-daemon=yes \ - --with-gui=qt5 \ - --with-miniupnpc \ - --with-qrencode \ - --with-sqlite=yes \ - --enable-lto \ -%if %{consensus} == 0 - --without-libs \ -%endif - --disable-hardening -%make_build +# upstream switched from autotools to CMake in 29.0 +%define __builder ninja +%cmake \ + -DBUILD_GUI=ON \ + -DBUILD_BENCH=ON \ + -DBUILD_TESTS=ON \ + -DWITH_ZMQ=ON \ + -DWITH_QRENCODE=ON \ + -DWITH_DBUS=ON \ + -DENABLE_WALLET=ON \ + -DENABLE_EXTERNAL_SIGNER=ON \ + -DINSTALL_MAN=ON \ + -DENABLE_IPC=OFF \ + -DWITH_CCACHE=OFF +%cmake_build %check -%make_build LC_ALL=C.UTF-8 check +%ctest %install -%make_install - -install -Dpm 0644 doc/man/%{name}d.1 %{buildroot}%{_mandir}/man1/%{name}d.1 -install -Dpm 0644 doc/man/%{name}-qt.1 %{buildroot}%{_mandir}/man1/%{name}-qt.1 +%cmake_install install -Dpm 0644 %{SOURCE4} %{buildroot}%{_sysconfdir}/%{name}/%{name}.conf @@ -208,9 +197,9 @@ install -Dpm 0644 %{SOURCE1} %{buildroot}/%{_unitdir}/%{name}d.service install -Dpm 0644 %{SOURCE3} %{buildroot}/%{_tmpfilesdir}/%{name}d.conf -# install desktop file +# install icon and desktop file install -Dm 0644 share/pixmaps/bitcoin256.png %{buildroot}%{_datadir}/pixmaps/%{name}.png -%suse_update_desktop_file -c %{name}-qt %{name_pretty} "%{name_pretty} Wallet" %{name}-qt %{name} Office Finance +install -Dm 0644 %{SOURCE2} %{buildroot}%{_datadir}/applications/%{name}-qt.desktop %if %{consensus} == 1 # do not ship these @@ -218,12 +207,6 @@ rm -f %{buildroot}%{_libdir}/lib%{name}consensus.la %endif -%post qt5 -%desktop_database_post - -%postun qt5 -%desktop_database_postun - %if %{consensus} == 1 %post -n lib%{name}consensus0 -p /sbin/ldconfig %postun -n lib%{name}consensus0 -p /sbin/ldconfig @@ -248,7 +231,7 @@ %postun -n %{name}d %service_del_postun %{name}d.service -%files qt5 +%files qt6 %license COPYING %doc doc/README.md doc/release-notes.md %{_bindir}/%{name}-qt @@ -259,10 +242,12 @@ %files utils %license COPYING %doc doc/README.md doc/release-notes.md +%{_bindir}/%{name} %{_bindir}/%{name}-cli %{_bindir}/%{name}-tx %{_bindir}/%{name}-wallet %{_bindir}/%{name}-util +%{_mandir}/man1/%{name}.1%{?ext_man} %{_mandir}/man1/%{name}-cli.1%{?ext_man} %{_mandir}/man1/%{name}-tx.1%{?ext_man} %{_mandir}/man1/%{name}-wallet.1%{?ext_man} @@ -297,7 +282,8 @@ %files test %license COPYING %doc doc/README.md doc/release-notes.md -%{_bindir}/test_%{name} -%{_bindir}/test_%{name}-qt -%{_bindir}/bench_%{name} +# upstream installs internal (test/bench) binaries to libexec, not bindir +%{_libexecdir}/test_%{name} +%{_libexecdir}/test_%{name}-qt +%{_libexecdir}/bench_%{name} ++++++ _service ++++++ --- /var/tmp/diff_new_pack.GIJ5KR/_old 2026-05-31 18:29:44.859694291 +0200 +++ /var/tmp/diff_new_pack.GIJ5KR/_new 2026-05-31 18:29:44.863694455 +0200 @@ -6,7 +6,7 @@ <param name="changesgenerate">enable</param> <param name="exclude">.*</param> <param name="versionrewrite-pattern">v(.*)</param> - <param name="revision">refs/tags/v28.1</param> + <param name="revision">refs/tags/v31.0</param> </service> <service name="tar" mode="buildtime"/> <service name="recompress" mode="buildtime"> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.GIJ5KR/_old 2026-05-31 18:29:44.883695275 +0200 +++ /var/tmp/diff_new_pack.GIJ5KR/_new 2026-05-31 18:29:44.903696094 +0200 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/bitcoin/bitcoin.git</param> - <param name="changesrevision">32efe850438ef22e2de39e562af557872a402c31</param></service></servicedata> + <param name="changesrevision">6574cb40869b96b9ffc79c19dc8f4e467d60f321</param></service></servicedata> (No newline at EOF) ++++++ bitcoin-28.1.obscpio -> bitcoin-31.0.obscpio ++++++ ++++ 478470 lines of diff (skipped) ++++++ bitcoin-qt.desktop ++++++ [Desktop Entry] Type=Application Name=Bitcoin GenericName=Bitcoin Wallet Comment=Bitcoin Wallet Exec=bitcoin-qt Icon=bitcoin Terminal=false Categories=Office;Finance; ++++++ bitcoin.obsinfo ++++++ --- /var/tmp/diff_new_pack.GIJ5KR/_old 2026-05-31 18:29:48.127828239 +0200 +++ /var/tmp/diff_new_pack.GIJ5KR/_new 2026-05-31 18:29:48.135828566 +0200 @@ -1,5 +1,5 @@ name: bitcoin -version: 28.1 -mtime: 1736274776 -commit: 32efe850438ef22e2de39e562af557872a402c31 +version: 31.0 +mtime: 1776286524 +commit: 6574cb40869b96b9ffc79c19dc8f4e467d60f321 ++++++ fix-boost-1.91-multi_index.patch ++++++ >From 0bc9d354dfd8074d1c36a891a69b6585a8775c65 Mon Sep 17 00:00:00 2001 From: Cory Fields <[email protected]> Date: Tue, 28 Apr 2026 18:00:36 +0000 Subject: [PATCH] multi_index: fix compilation failure with boost >= 1.91 This effectively reverts a3cb309e7c31853f272bffaa65fb6ab0a7cc4083 from PR #30194. That PR reduced the multi_index type signatures as recommended upstream, but this is no longer supported as of boost 1.91 because it is no longer necessary. 1.91 drops support for the pre-c++11 work-arounds that bloated the type signatures to begin with. The upstream `BOOST_MULTI_INDEX_ENABLE_MPL_SUPPORT` define is meant to provide compatibility with removed features, but it does not work for this case. Using `indexed_by` directly when defining the `multi_index` (as opposed to inheriting from it) works with all versions, and avoids the use of the back-compat define. This is a slight regression when building against boost < 1.91 because the bloated type signatures are reintroduced in that case, but it's not significant enough to go to the trouble of introducing version detection and ifdefs. --- src/node/txorphanage.cpp | 13 +++++++------ src/txmempool.h | 10 ++++------ src/txrequest.cpp | 12 +++++------- 3 files changed, 16 insertions(+), 19 deletions(-) diff --git a/src/node/txorphanage.cpp b/src/node/txorphanage.cpp index ca7eb20470a7..4b25ab4d2458 100644 --- a/src/node/txorphanage.cpp +++ b/src/node/txorphanage.cpp @@ -91,12 +91,13 @@ class TxOrphanageImpl final : public TxOrphanage { } }; - struct OrphanIndices final : boost::multi_index::indexed_by< - boost::multi_index::ordered_unique<boost::multi_index::tag<ByWtxid>, WtxidExtractor>, - boost::multi_index::ordered_unique<boost::multi_index::tag<ByPeer>, ByPeerViewExtractor> - >{}; - - using AnnouncementMap = boost::multi_index::multi_index_container<Announcement, OrphanIndices>; + using AnnouncementMap = boost::multi_index::multi_index_container< + Announcement, + boost::multi_index::indexed_by< + boost::multi_index::ordered_unique<boost::multi_index::tag<ByWtxid>, WtxidExtractor>, + boost::multi_index::ordered_unique<boost::multi_index::tag<ByPeer>, ByPeerViewExtractor> + > + >; template<typename Tag> using Iter = typename AnnouncementMap::index<Tag>::type::iterator; AnnouncementMap m_orphans; diff --git a/src/txmempool.h b/src/txmempool.h index c4723f891557..ae59057ca62b 100644 --- a/src/txmempool.h +++ b/src/txmempool.h @@ -211,7 +211,9 @@ class CTxMemPool static const int ROLLING_FEE_HALFLIFE = 60 * 60 * 12; // public only for testing - struct CTxMemPoolEntry_Indices final : boost::multi_index::indexed_by< + using indexed_transaction_set = boost::multi_index_container< + CTxMemPoolEntry, + boost::multi_index::indexed_by< // sorted by txid boost::multi_index::hashed_unique<mempoolentry_txid, SaltedTxidHasher>, // sorted by wtxid @@ -227,11 +229,7 @@ class CTxMemPool CompareTxMemPoolEntryByEntryTime > > - {}; - typedef boost::multi_index_container< - CTxMemPoolEntry, - CTxMemPoolEntry_Indices - > indexed_transaction_set; + >; /** * This mutex needs to be locked when accessing `mapTx` or other members diff --git a/src/txrequest.cpp b/src/txrequest.cpp index 4d7240bee0d9..53136a8e7104 100644 --- a/src/txrequest.cpp +++ b/src/txrequest.cpp @@ -208,17 +208,15 @@ struct ByTimeViewExtractor } }; -struct Announcement_Indices final : boost::multi_index::indexed_by< - boost::multi_index::ordered_unique<boost::multi_index::tag<ByPeer>, ByPeerViewExtractor>, - boost::multi_index::ordered_non_unique<boost::multi_index::tag<ByTxHash>, ByTxHashViewExtractor>, - boost::multi_index::ordered_non_unique<boost::multi_index::tag<ByTime>, ByTimeViewExtractor> -> -{}; /** Data type for the main data structure (Announcement objects with ByPeer/ByTxHash/ByTime indexes). */ using Index = boost::multi_index_container< Announcement, - Announcement_Indices + boost::multi_index::indexed_by< + boost::multi_index::ordered_unique<boost::multi_index::tag<ByPeer>, ByPeerViewExtractor>, + boost::multi_index::ordered_non_unique<boost::multi_index::tag<ByTxHash>, ByTxHashViewExtractor>, + boost::multi_index::ordered_non_unique<boost::multi_index::tag<ByTime>, ByTimeViewExtractor> + > >; /** Helper type to simplify syntax of iterator types. */
