Modernize Qt dependency path
This commit is contained in:
+18
-22
@@ -21,14 +21,12 @@ Install the native daemon build dependencies:
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y \
|
||||
build-essential pkg-config autoconf automake libtool bsdmainutils \
|
||||
libboost-all-dev libevent-dev libgmp-dev libssl-dev \
|
||||
libdb5.3-dev libdb5.3++-dev
|
||||
cmake ninja-build python3 curl git
|
||||
|
||||
For the desktop wallet, also install Qt and protobuf tools:
|
||||
For a headless Qt wallet smoke test, also install:
|
||||
|
||||
sudo apt-get install -y \
|
||||
qtbase5-dev qttools5-dev-tools qtchooser \
|
||||
libqrencode-dev libprotobuf-dev protobuf-compiler
|
||||
xvfb
|
||||
|
||||
Daemon-only build
|
||||
-----------------
|
||||
@@ -57,42 +55,40 @@ For the desktop wallet, use:
|
||||
|
||||
JOBS=1 ./contrib/build-linux-wallet.sh
|
||||
|
||||
The wallet helper builds/restores the native depends prefix first, then creates
|
||||
a temporary config.site that keeps the depends libraries while allowing system
|
||||
Qt 5 tools and pkg-config files to be used.
|
||||
The wallet helper builds/restores the native depends prefix first, including
|
||||
Qt 6.8.3, OpenSSL 3.5.6, and Boost 1.91.0. It then configures the project with
|
||||
the generated depends `config.site` and builds the Ubuntu Qt wallet.
|
||||
|
||||
Defaults:
|
||||
|
||||
HOST=x86_64-pc-linux-gnu
|
||||
QT_BINDIR=/usr/lib/qt5/bin
|
||||
PROTOC_BINDIR=/usr/bin
|
||||
CONFIG_SITE_FILE=/tmp/agrarian-linux-wallet-config.site
|
||||
|
||||
Warnings
|
||||
--------
|
||||
|
||||
Qt 5.15 and protobuf 3.x emit compatibility/deprecation warnings in a few Qt
|
||||
translation units. Those warnings are expected while the Windows build remains
|
||||
pinned to Qt 5.9.7 and protobuf 2.6.1.
|
||||
The Qt6/OpenSSL3 path should build without Qt compatibility warnings. First-run
|
||||
runtime logs may report missing cache files such as `peers.dat`, `banlist.dat`,
|
||||
or masternode cache files; those are created during startup.
|
||||
|
||||
Functional smoke test
|
||||
---------------------
|
||||
|
||||
After building the daemon, run the isolated regtest smoke test:
|
||||
After building, run the isolated smoke tests:
|
||||
|
||||
./contrib/smoke-test-daemon.sh
|
||||
./contrib/smoke-test-wallet.sh
|
||||
./contrib/smoke-test-qt.sh
|
||||
|
||||
The script starts `agrariand` with a temporary regtest datadir, confirms RPC and
|
||||
wallet calls work, mines one block with `generate`, checks the block count, and
|
||||
stops the daemon.
|
||||
The daemon script confirms RPC and wallet calls work, mines one block, checks
|
||||
the block count, and stops the daemon. The wallet script checks address
|
||||
creation, mining, send/confirm, backup, and encryption shutdown. The Qt script
|
||||
starts `agrarian-qt` under Xvfb and confirms the GUI reaches `Done loading`
|
||||
without Qt6 TLS, signal, or stylesheet compatibility warnings.
|
||||
|
||||
OpenSSL 3
|
||||
---------
|
||||
|
||||
Ubuntu 24.04 ships OpenSSL 3. Agrarian no longer rejects this only because
|
||||
`RAND_egd` is unavailable. Some deprecated OpenSSL SHA calls still warn during
|
||||
compilation; those warnings are expected until the hashing helper code is
|
||||
modernized.
|
||||
The deterministic depends build currently uses OpenSSL 3.5.6.
|
||||
|
||||
Berkeley DB
|
||||
-----------
|
||||
|
||||
+8
-10
@@ -32,8 +32,7 @@ Ubuntu package baseline
|
||||
For the native Ubuntu wallet:
|
||||
|
||||
sudo apt-get install -y \
|
||||
qtbase5-dev qttools5-dev-tools qtchooser \
|
||||
libqrencode-dev libprotobuf-dev protobuf-compiler
|
||||
cmake ninja-build xvfb
|
||||
|
||||
For the Windows wallet:
|
||||
|
||||
@@ -51,11 +50,9 @@ Why the helpers exist
|
||||
|
||||
The wallet build is sensitive to tool version mismatches:
|
||||
|
||||
* Native Ubuntu uses current system Qt tools and protobuf while keeping the
|
||||
deterministic depends libraries.
|
||||
* Windows uses the Qt 5.9.7 and protobuf 2.6.1 libraries from depends. Its host
|
||||
tools must match those libraries closely enough for generated C++ output to
|
||||
compile.
|
||||
* Native Ubuntu uses the deterministic depends Qt6, OpenSSL, Boost, protobuf,
|
||||
and supporting libraries.
|
||||
* Cross-target wallets must use the matching Qt host tools staged by depends.
|
||||
|
||||
The helper scripts keep those rules in one place so the build is repeatable on a
|
||||
fresh server.
|
||||
@@ -80,10 +77,11 @@ After the Windows wallet build:
|
||||
Version checks
|
||||
--------------
|
||||
|
||||
On Ubuntu:
|
||||
On Ubuntu, use the smoke tests:
|
||||
|
||||
QT_QPA_PLATFORM=offscreen src/qt/agrarian-qt --version
|
||||
src/agrariand --version
|
||||
./contrib/smoke-test-daemon.sh
|
||||
./contrib/smoke-test-wallet.sh
|
||||
./contrib/smoke-test-qt.sh
|
||||
|
||||
For Windows binaries from the Linux build host:
|
||||
|
||||
|
||||
+5
-5
@@ -6,26 +6,26 @@ These are the dependencies currently used by Agrarian Core. You can find instruc
|
||||
| Dependency | Version used | Minimum required | CVEs | Shared | [Bundled Qt library](https://doc.qt.io/qt-5/configure-options.html#third-party-libraries) |
|
||||
| --- | --- | --- | --- | --- | --- |
|
||||
| Berkeley DB | [4.8.30](https://www.oracle.com/technetwork/database/database-technologies/berkeleydb/downloads/index.html) | 4.8.x | No | | |
|
||||
| Boost | [1.64.0](https://www.boost.org/users/download/) | [1.47.0](https://github.com/bitcoin/bitcoin/pull/8920) | No | | |
|
||||
| Clang | | [3.3+](https://llvm.org/releases/download.html) (C++11 support) | | | |
|
||||
| Boost | [1.91.0](https://www.boost.org/users/download/) | [1.47.0](https://github.com/bitcoin/bitcoin/pull/8920) | No | | |
|
||||
| Clang | | C++17 support | | | |
|
||||
| D-Bus | [1.10.18](https://cgit.freedesktop.org/dbus/dbus/tree/NEWS?h=dbus-1.10) | | No | Yes | |
|
||||
| Expat | [2.2.6](https://libexpat.github.io/) | | No | Yes | |
|
||||
| fontconfig | [2.12.1](https://www.freedesktop.org/software/fontconfig/release/) | | No | Yes | |
|
||||
| FreeType | [2.7.1](https://download.savannah.gnu.org/releases/freetype) | | No | | |
|
||||
| GCC | | [4.8+](https://gcc.gnu.org/) (C++11 support) | | | |
|
||||
| GCC | | C++17 support | | | |
|
||||
| HarfBuzz-NG | | | | | |
|
||||
| libevent | [2.1.8-stable](https://github.com/libevent/libevent/releases) | 2.0.22 | No | | |
|
||||
| libjpeg | | | | | [Yes](https://github.com/agrarian-project/agrarian/blob/master/depends/packages/qt.mk#L65) |
|
||||
| libpng | | | | | [Yes](https://github.com/agrarian-project/agrarian/blob/master/depends/packages/qt.mk#L64) |
|
||||
| librsvg | | | | | |
|
||||
| MiniUPnPc | [2.0.20180203](http://miniupnp.free.fr/files) | | No | | |
|
||||
| OpenSSL | [1.0.1k](https://www.openssl.org/source) | | Yes | | |
|
||||
| OpenSSL | [3.5.6](https://www.openssl.org/source) | | No | | |
|
||||
| GMP | [6.1.2](https://gmplib.org/) | | No | | |
|
||||
| PCRE | | | | | [Yes](https://github.com/agrarian-project/agrarian/blob/master/depends/packages/qt.mk#L66) |
|
||||
| protobuf | [2.6.1](https://github.com/google/protobuf/releases) | | No | | |
|
||||
| Python (tests) | | [3.5](https://www.python.org/downloads) | | | |
|
||||
| qrencode | [3.4.4](https://fukuchi.org/works/qrencode) | | No | | |
|
||||
| Qt | [5.9.7](https://download.qt.io/official_releases/qt/) | [5.5.1](https://github.com/bitcoin/bitcoin/issues/13478) | No | | |
|
||||
| Qt | [6.8.3](https://download.qt.io/official_releases/qt/) | 6.8 LTS | No | | |
|
||||
| XCB | | | | | [Yes](https://github.com/agrarian-project/agrarian/blob/master/depends/packages/qt.mk#L87) (Linux only) |
|
||||
| xkbcommon | | | | | [Yes](https://github.com/agrarian-project/agrarian/blob/master/depends/packages/qt.mk#L86) (Linux only) |
|
||||
| ZeroMQ | [4.3.1](https://github.com/zeromq/libzmq/releases) | 4.0.0 | No | | |
|
||||
|
||||
+3
-3
@@ -247,6 +247,7 @@ EVENT_PTHREADS_LIBS = @EVENT_PTHREADS_LIBS@
|
||||
EXEEXT = @EXEEXT@
|
||||
EXTENDED_FUNCTIONAL_TESTS = @EXTENDED_FUNCTIONAL_TESTS@
|
||||
FGREP = @FGREP@
|
||||
FILECMD = @FILECMD@
|
||||
GCOV = @GCOV@
|
||||
GENHTML = @GENHTML@
|
||||
GENISOIMAGE = @GENISOIMAGE@
|
||||
@@ -257,7 +258,7 @@ GREP = @GREP@
|
||||
HARDENED_CPPFLAGS = @HARDENED_CPPFLAGS@
|
||||
HARDENED_CXXFLAGS = @HARDENED_CXXFLAGS@
|
||||
HARDENED_LDFLAGS = @HARDENED_LDFLAGS@
|
||||
HAVE_CXX11 = @HAVE_CXX11@
|
||||
HAVE_CXX17 = @HAVE_CXX17@
|
||||
HEXDUMP = @HEXDUMP@
|
||||
IMAGEMAGICK_CONVERT = @IMAGEMAGICK_CONVERT@
|
||||
INSTALL = @INSTALL@
|
||||
@@ -328,8 +329,6 @@ PYTHON = @PYTHON@
|
||||
PYTHONPATH = @PYTHONPATH@
|
||||
QR_CFLAGS = @QR_CFLAGS@
|
||||
QR_LIBS = @QR_LIBS@
|
||||
QT5_CFLAGS = @QT5_CFLAGS@
|
||||
QT5_LIBS = @QT5_LIBS@
|
||||
QTACCESSIBILITY_CFLAGS = @QTACCESSIBILITY_CFLAGS@
|
||||
QTACCESSIBILITY_LIBS = @QTACCESSIBILITY_LIBS@
|
||||
QTCGL_CFLAGS = @QTCGL_CFLAGS@
|
||||
@@ -352,6 +351,7 @@ QTTHEME_CFLAGS = @QTTHEME_CFLAGS@
|
||||
QTTHEME_LIBS = @QTTHEME_LIBS@
|
||||
QTXCBQPA_CFLAGS = @QTXCBQPA_CFLAGS@
|
||||
QTXCBQPA_LIBS = @QTXCBQPA_LIBS@
|
||||
QT_CFLAGS = @QT_CFLAGS@
|
||||
QT_DBUS_CFLAGS = @QT_DBUS_CFLAGS@
|
||||
QT_DBUS_INCLUDES = @QT_DBUS_INCLUDES@
|
||||
QT_DBUS_LIBS = @QT_DBUS_LIBS@
|
||||
|
||||
Reference in New Issue
Block a user