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
View File
@@ -16,6 +16,11 @@ For a manual build, build depends first and configure against its config.site:
CONFIG_SITE=$PWD/depends/x86_64-pc-linux-gnu/share/config.site ./configure
make
The current native Qt wallet depends baseline includes Qt 6.8.3, OpenSSL 3.5.6,
Boost 1.91.0, Expat 2.8.0, FreeType 2.13.3, protobuf, Berkeley DB, libevent,
and GMP. Prefer the helper scripts in `contrib/` for repeatable fresh-host
builds.
Always verify source checksums and release signatures when building a release.
See doc/build-*.md for instructions on building agrariand,
+4 -5
View File
@@ -36,8 +36,8 @@ sudo apt install -y mingw-w64
The preferred build path uses the deterministic `depends/` system instead of
mixing system libraries. The current native Ubuntu wallet path builds Qt 6.8.3,
OpenSSL 3.5.6, Boost 1.91.0, protobuf, Berkeley DB, and supporting libraries
inside `depends/<host-triplet>/`.
OpenSSL 3.5.6, Boost 1.91.0, Expat 2.8.0, FreeType 2.13.3, protobuf,
Berkeley DB, and supporting libraries inside `depends/<host-triplet>/`.
All dependency builds are executed from within the `depends/` directory or via
the helper scripts in `contrib/`.
@@ -46,14 +46,13 @@ the helper scripts in `contrib/`.
```bash
cd depends
make -j"$(nproc)"
make HOST=x86_64-pc-linux-gnu NO_QT=0 -j"$(nproc)"
```
### Windows Cross-Compile (64-bit)
```bash
cd depends
make HOST=x86_64-w64-mingw32 -j"$(nproc)"
JOBS=1 ./contrib/build-win64-wallet.sh
```
### Windows Cross-Compile (32-bit)
+28 -3
View File
@@ -2,7 +2,7 @@
To build dependencies for the current arch+OS:
make
make HOST=x86_64-pc-linux-gnu NO_QT=0
To build for another arch/OS:
@@ -10,7 +10,7 @@ To build for another arch/OS:
For example:
make HOST=x86_64-w64-mingw32 -j4
make HOST=x86_64-w64-mingw32 NO_QT=0 -j1
A prefix will be generated that's suitable for plugging into Agrarian's
configure. In the above example, a dir named x86_64-w64-mingw32 will be
@@ -30,6 +30,17 @@ Common `host-platform-triplets` for cross compilation are:
No other options are needed, the paths are automatically configured.
For the current Agrarian 2.0 branch, the preferred user-facing build entry
points are the helpers in `contrib/`:
- `contrib/build-linux.sh`
- `contrib/build-linux-wallet.sh`
- `contrib/build-win64-wallet.sh`
- `contrib/agrarian-build-menu.sh`
Those helpers set the correct Qt, host-tool, and protobuf paths around the
depends prefix.
### Install the required dependencies: Ubuntu & Debian
#### For macOS cross compilation
@@ -44,7 +55,21 @@ No other options are needed, the paths are automatically configured.
Common linux dependencies:
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
Native Linux Qt wallet builds also need the desktop development headers used by
Qt's xcb/font stack:
sudo apt-get install 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 linux ARM cross compilation:
+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
+8 -1
View File
@@ -4,6 +4,11 @@
actions. The current modernization baseline is Ubuntu 24.04 with deterministic
`depends/`; see `doc/modernization.md` for the verified dependency set.
For fresh Ubuntu hosts, prefer `contrib/agrarian-build-menu.sh` first. The menu
script installs target-specific packages, updates the selected branch, builds
the deterministic depends tree, and can install/start the daemon for the current
user. This installer CLI is retained as a lower-level build tool.
## Usage
```bash
@@ -36,7 +41,9 @@ If wallet is enabled (default), installer preflight checks require:
For the current native Ubuntu Qt wallet path, depends should also provide Qt6
pkg-config files such as `Qt6Core.pc`, `Qt6Gui.pc`, `Qt6Network.pc`, and
`Qt6Widgets.pc`. The Windows cross-build path also uses the Qt6 depends target.
`Qt6Widgets.pc`. The Linux Qt/font path also builds Expat 2.8.0 and FreeType
2.13.3 through depends. The Windows cross-build path also uses the Qt6 depends
target.
When missing, the installer exits early and prints the exact missing path(s) plus the `make -C depends ...` command to fix them.