mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-01-26 19:23:26 -03:00
c9ed9927bb
956f7322f6
build: Bump minimum Qt version to 5.11.3 (Hennadii Stepanov)e22d10b936
ci: Switch from bionic to buster (Hennadii Stepanov) Pull request description: The current minimum Qt version is 5.9.5 which has been set in bitcoin/bitcoin#21286. Distro support: - centos 7 -- unsupported since bitcoin/bitcoin#23511 - centos 8 -- [5.15.2](http://mirror.centos.org/centos/8/AppStream/x86_64/os/Packages/qt5-qtbase-5.15.2-3.el8.x86_64.rpm) - buster -- [5.11.3](https://packages.debian.org/buster/libqt5core5a) - bullseye -- [5.15.2](https://packages.debian.org/bullseye/libqt5core5a) - _bionic_ -- [5.9.5](https://packages.ubuntu.com/bionic/libqt5core5a) - focal -- [5.12.8](https://packages.ubuntu.com/focal/libqt5core5a) As another Ubuntu LTS is coming soon, it seems unreasonable to stick to Qt 5.9 which support [ended](https://www.qt.io/blog/2017/06/07/renewed-qt-support-services) on 2020-05-31. Anyway, it's still possible to build Bitcoin Core GUI with depends on bionic system. Bumping the minimum Qt version allows to make code safer and more reliable, e.g.: - functor-parameter overload of [`QMetaObject::invokeMethod`](https://doc.qt.io/qt-5/qmetaobject.html#invokeMethod-4) - fixed https://bugreports.qt.io/browse/QTBUG-10907 An example of the patch using the functor-overload of `QMetaObject::invokeMethod`: ```diff --- a/src/qt/walletmodel.cpp +++ b/src/qt/walletmodel.cpp @@ -349,7 +349,7 @@ bool WalletModel::changePassphrase(const SecureString &oldPass, const SecureStri static void NotifyUnload(WalletModel* walletModel) { qDebug() << "NotifyUnload"; - bool invoked = QMetaObject::invokeMethod(walletModel, "unload"); + bool invoked = QMetaObject::invokeMethod(walletModel, &WalletModel::unload); assert(invoked); } ``` It uses the same new syntax as signal-slot connection with compile-time check. Also see bitcoin/bitcoin#16348. This PR is intended to be merged early [after](https://github.com/bitcoin/bitcoin/issues/22969) branching `23.x` off. ACKs for top commit: MarcoFalke: cr ACK956f7322f6
fanquake: ACK956f7322f6
Tree-SHA512: 3d652bcdcd990ce785ad412ed70234d4f27743895e535a53ed44b35d4afc3052e066c4c84f417e30bc53d0a3dd9ebed62444c57b7c765cb1e9aa687fbf866877
3.7 KiB
3.7 KiB
Dependencies
These are the dependencies currently used by Bitcoin Core. You can find instructions for installing them in the build-*.md
file for your platform.
Dependency | Version used | Minimum required | CVEs | Shared | Bundled Qt library |
---|---|---|---|---|---|
Berkeley DB | 4.8.30 | 4.8.x | No | ||
Boost | 1.77.0 | 1.64.0 | No | ||
Clang * | 7.0 (C++17 & std::filesystem support) | ||||
Fontconfig | 2.12.6 | No | Yes | ||
FreeType | 2.11.0 | No | Yes (Android only) | ||
GCC | 8.1 (C++17 & std::filesystem support) | ||||
glibc | 2.18 | ||||
HarfBuzz-NG | Yes | ||||
libevent | 2.1.12-stable | 2.0.21 | No | ||
libnatpmp | git commit 4536032... | No | |||
libpng | Yes | ||||
MiniUPnPc | 2.2.2 | No | |||
PCRE | Yes | ||||
Python (tests) | 3.6 | ||||
qrencode | 3.4.4 | No | |||
Qt | 5.15.2 | 5.11.3 | No | ||
SQLite | 3.32.1 | 3.7.17 | |||
XCB | Yes (Linux only) | ||||
systemtap (tracing) | 4.5 | ||||
xkbcommon | Yes (Linux only) | ||||
ZeroMQ | 4.3.1 | 4.0.0 | No | ||
zlib | Yes |
Note * : When compiling with -stdlib=libc++
, the minimum supported libc++ version is 7.0.
Controlling dependencies
Some dependencies are not needed in all configurations. The following are some factors that affect the dependency list.
Options passed to ./configure
- MiniUPnPc is not needed with
--without-miniupnpc
. - libnatpmp is not needed with
--without-natpmp
. - Berkeley DB is not needed with
--disable-wallet
or--without-bdb
. - SQLite is not needed with
--disable-wallet
or--without-sqlite
. - Qt is not needed with
--without-gui
. - If the qrencode dependency is absent, QR support won't be added. To force an error when that happens, pass
--with-qrencode
. - If the systemtap dependency is absent, USDT support won't compiled in.
- ZeroMQ is needed only with the
--with-zmq
option.
Other
- Not-Qt-bundled zlib is required to build the DMG tool from the libdmg-hfsplus project.