Update build docs for current depends baseline

This commit is contained in:
root
2026-05-02 04:37:05 +00:00
parent 4b5743df75
commit 83e0085a60
11 changed files with 118 additions and 26 deletions
+5 -4
View File
@@ -52,10 +52,11 @@ instead of being required as Ubuntu system development packages.
The Linux Qt wallet option also installs Ubuntu desktop development headers
needed by Qt's xcb platform plugin, including fontconfig, freetype, xcb, and
xkbcommon packages. The wallet helper uses the matching `protoc` built by
`depends/`, so a system protobuf compiler is not required. It also clears stale
Qt work directories before rebuilding, because failed CMake feature checks can
otherwise be cached between attempts.
xkbcommon packages. Expat 2.8.0 and FreeType 2.13.3 are built through
`depends/` for the Linux Qt/font stack. The wallet helper uses the matching
`protoc` built by `depends/`, so a system protobuf compiler is not required. It
also clears stale Qt work directories before rebuilding, because failed CMake
feature checks can otherwise be cached between attempts.
Defaults
--------
+22 -5
View File
@@ -23,12 +23,21 @@ Install the native daemon build dependencies:
sudo apt-get update
sudo apt-get install -y \
build-essential pkg-config autoconf automake libtool bsdmainutils \
cmake ninja-build python3 curl git
cmake ninja-build python3 curl git make tar patch bzip2 xz-utils
For a headless Qt wallet smoke test, also install:
For a native Qt wallet build and headless Qt smoke test, also install:
sudo apt-get install -y \
xvfb
xvfb libfontconfig1-dev libfreetype-dev libharfbuzz-dev \
libbrotli-dev libbz2-dev libexpat1-dev libglib2.0-dev \
libgraphite2-dev libpng-dev zlib1g-dev libx11-xcb-dev \
libxcb1-dev libxcb-cursor-dev libxcb-icccm4-dev \
libxcb-image0-dev libxcb-keysyms1-dev libxcb-randr0-dev \
libxcb-render0-dev libxcb-render-util0-dev libxcb-shape0-dev \
libxcb-shm0-dev libxcb-sync-dev libxcb-util-dev \
libxcb-xfixes0-dev libxcb-xinerama0-dev libxcb-xkb-dev \
libxau-dev libxdmcp-dev libxext-dev libxi-dev libxrender-dev \
libxkbcommon-dev libxkbcommon-x11-dev
Daemon build
------------
@@ -49,8 +58,9 @@ For the desktop wallet, use:
JOBS=1 ./contrib/build-linux-wallet.sh
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.
Qt 6.8.3, OpenSSL 3.5.6, Boost 1.91.0, Expat 2.8.0, FreeType 2.13.3, and the
Linux Qt font/xcb support libraries. It then configures the project with the
generated depends `config.site` and builds the Ubuntu Qt wallet.
Defaults:
@@ -83,6 +93,13 @@ OpenSSL 3
The deterministic depends build currently uses OpenSSL 3.5.6.
Expat and FreeType
------------------
The native Ubuntu Qt wallet path uses Expat 2.8.0 through fontconfig and
FreeType 2.13.3 for Qt 6 static font support. Keep those in the deterministic
depends graph; do not satisfy them with ad hoc system-library fallbacks.
Berkeley DB
-----------
+2 -1
View File
@@ -27,7 +27,8 @@ STANDARD BUILD WITH DEPENDS
make install (optional)
The native depends wallet path currently builds Qt 6.8.3, OpenSSL 3.5.6,
Boost 1.91.0, protobuf, Berkeley DB, and supporting libraries.
Boost 1.91.0, Expat 2.8.0, FreeType 2.13.3, protobuf, Berkeley DB, and
supporting libraries.
For a daemon-only build:
+12 -3
View File
@@ -33,7 +33,16 @@ Ubuntu package baseline
For the native Ubuntu wallet:
sudo apt-get install -y \
cmake ninja-build xvfb
cmake ninja-build xvfb libfontconfig1-dev libfreetype-dev \
libharfbuzz-dev libbrotli-dev libbz2-dev libexpat1-dev \
libglib2.0-dev libgraphite2-dev libpng-dev zlib1g-dev \
libx11-xcb-dev libxcb1-dev libxcb-cursor-dev libxcb-icccm4-dev \
libxcb-image0-dev libxcb-keysyms1-dev libxcb-randr0-dev \
libxcb-render0-dev libxcb-render-util0-dev libxcb-shape0-dev \
libxcb-shm0-dev libxcb-sync-dev libxcb-util-dev \
libxcb-xfixes0-dev libxcb-xinerama0-dev libxcb-xkb-dev \
libxau-dev libxdmcp-dev libxext-dev libxi-dev libxrender-dev \
libxkbcommon-dev libxkbcommon-x11-dev
For the Windows wallet:
@@ -50,8 +59,8 @@ Why the helpers exist
The wallet build is sensitive to tool version mismatches:
* Native Ubuntu uses the deterministic depends Qt6, OpenSSL, Boost, protobuf,
and supporting libraries.
* Native Ubuntu uses the deterministic depends Qt6, OpenSSL, Boost, Expat,
FreeType, protobuf, and supporting libraries.
* Windows cross-target wallets use the deterministic depends Qt6 path and
matching Qt host tools staged by depends.
+16 -1
View File
@@ -153,13 +153,18 @@ Manual equivalent:
--with-qt-libdir=$PWD/depends/x86_64-w64-mingw32/lib \
--with-qt-plugindir=$PWD/depends/x86_64-w64-mingw32/plugins \
--with-qt-translationdir=$PWD/depends/x86_64-w64-mingw32/translations \
--with-qt-bindir=$PWD/depends/x86_64-w64-mingw32/native/bin
--with-qt-bindir=$PWD/depends/build/x86_64-pc-linux-gnu/bin \
--with-protoc-bindir=$PWD/depends/build/x86_64-pc-linux-gnu/bin
make
============================================================
BUILDING FOR 32-BIT WINDOWS
============================================================
The current verified 2.0 Windows path is x86_64. The 32-bit instructions below
are retained as a legacy cross-build reference and should be revalidated before
release use.
Install toolchain:
sudo apt install g++-mingw-w64-i686 mingw-w64-i686-dev
@@ -234,6 +239,16 @@ The Windows cross-build helper targets the Qt 6.8 LTS depends path. Keep the
helper's Qt host tools (`moc`, `uic`, `rcc`) staged from the matching depends
build to avoid mixing host Qt tools with target Qt libraries.
============================================================
DEPENDS BASELINE NOTE
============================================================
The 2.0 branch currently verifies Windows x86_64 builds against the same
modernized core dependency baseline as Linux: OpenSSL 3.5.6, Boost 1.91.0,
Qt 6.8.3, Berkeley DB 4.8.30, protobuf 2.6.1, libevent 2.1.8-stable, and GMP
6.1.2. Expat 2.8.0 and FreeType 2.13.3 are part of the Linux Qt/font depends
path and are documented in `doc/dependencies.md`.
============================================================
END OF DOCUMENT
============================================================
+14 -3
View File
@@ -1,6 +1,17 @@
Installer (Ubuntu)
==================
Status
---------------------
The preferred fresh-host workflow for the 2.0 branch is currently
`contrib/agrarian-build-menu.sh`, with the direct helper scripts
`contrib/build-linux.sh`, `contrib/build-linux-wallet.sh`, and
`contrib/build-win64-wallet.sh` used for repeatable scripted builds. This
installer document is retained for the older `installer/agrarian-installer.sh`
CLI and should be treated as secondary until that installer is revalidated
against the current Qt 6.8.3/OpenSSL 3.5.6/Boost 1.91.0/Expat 2.8.0/FreeType
2.13.3 depends baseline.
Overview
---------------------
The Agrarian installer is `installer/agrarian-installer.sh`. It automates the Ubuntu build steps by:
@@ -110,14 +121,14 @@ Troubleshooting
---------------------
Boost library naming/layout (the `-mt` suffix)
- Depends builds may produce Boost libs with suffixes like `libboost_thread-gcc-mt-1_64.a`.
- Depends builds may produce Boost libs with suffixes like `libboost_thread-gcc-mt-1_91.a`.
- The installer checks for `libboost_thread*.a` and `libboost_system*.a`, so it tolerates `-mt` and versioned names.
- If you are configuring manually, keep `--with-boost=<depends-prefix>` (the installer sets this for you) to avoid system Boost fallback.
`config.site` and PATH pitfalls
- The installer configures with `CONFIG_SITE=depends/<host>/share/config.site`.
- That `config.site` prepends `depends/<host>/native/bin` to `PATH`. Do not overwrite `PATH` with a minimal value; ensure `/usr/bin` and other system paths remain available.
- Current helper builds use native host tools from `depends/build/<build-host>/bin`. Do not overwrite `PATH` with a minimal value; ensure `/usr/bin` and other system paths remain available.
- If `config.site` is missing, rebuild depends:
```bash
@@ -153,7 +164,7 @@ Qt Cross-Compilation Packages (Ubuntu/Debian)
Install the common Linux build tools (from `depends/README.md`):
```bash
sudo apt-get install make automake cmake curl g++-multilib libtool binutils-gold bsdmainutils pkg-config python3 patch
sudo apt-get install make automake cmake curl git g++-multilib libtool binutils-gold bsdmainutils pkg-config python3 patch bzip2 xz-utils
```
Then install toolchains per target:
+2
View File
@@ -14,6 +14,8 @@ The current deterministic `depends/` baseline is:
- Qt 6.8.3 LTS
- OpenSSL 3.5.6 LTS
- Boost 1.91.0
- Expat 2.8.0 for the Linux Qt/font stack
- FreeType 2.13.3 for Qt 6 static font support
- Berkeley DB 4.8.30 for portable legacy wallet compatibility
- protobuf 2.6.1 for the existing Qt payment request sources
- libevent 2.1.8-stable