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 CONFIG_SITE=$PWD/depends/x86_64-pc-linux-gnu/share/config.site ./configure
make 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. Always verify source checksums and release signatures when building a release.
See doc/build-*.md for instructions on building agrariand, 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 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, 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 OpenSSL 3.5.6, Boost 1.91.0, Expat 2.8.0, FreeType 2.13.3, protobuf,
inside `depends/<host-triplet>/`. Berkeley DB, and supporting libraries inside `depends/<host-triplet>/`.
All dependency builds are executed from within the `depends/` directory or via All dependency builds are executed from within the `depends/` directory or via
the helper scripts in `contrib/`. the helper scripts in `contrib/`.
@@ -46,14 +46,13 @@ the helper scripts in `contrib/`.
```bash ```bash
cd depends cd depends
make -j"$(nproc)" make HOST=x86_64-pc-linux-gnu NO_QT=0 -j"$(nproc)"
``` ```
### Windows Cross-Compile (64-bit) ### Windows Cross-Compile (64-bit)
```bash ```bash
cd depends JOBS=1 ./contrib/build-win64-wallet.sh
make HOST=x86_64-w64-mingw32 -j"$(nproc)"
``` ```
### Windows Cross-Compile (32-bit) ### Windows Cross-Compile (32-bit)
+28 -3
View File
@@ -2,7 +2,7 @@
To build dependencies for the current arch+OS: 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: To build for another arch/OS:
@@ -10,7 +10,7 @@ To build for another arch/OS:
For example: 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 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 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. 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 ### Install the required dependencies: Ubuntu & Debian
#### For macOS cross compilation #### For macOS cross compilation
@@ -44,7 +55,21 @@ No other options are needed, the paths are automatically configured.
Common linux dependencies: 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: 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 The Linux Qt wallet option also installs Ubuntu desktop development headers
needed by Qt's xcb platform plugin, including fontconfig, freetype, xcb, and needed by Qt's xcb platform plugin, including fontconfig, freetype, xcb, and
xkbcommon packages. The wallet helper uses the matching `protoc` built by xkbcommon packages. Expat 2.8.0 and FreeType 2.13.3 are built through
`depends/`, so a system protobuf compiler is not required. It also clears stale `depends/` for the Linux Qt/font stack. The wallet helper uses the matching
Qt work directories before rebuilding, because failed CMake feature checks can `protoc` built by `depends/`, so a system protobuf compiler is not required. It
otherwise be cached between attempts. also clears stale Qt work directories before rebuilding, because failed CMake
feature checks can otherwise be cached between attempts.
Defaults Defaults
-------- --------
+22 -5
View File
@@ -23,12 +23,21 @@ Install the native daemon build dependencies:
sudo apt-get update sudo apt-get update
sudo apt-get install -y \ sudo apt-get install -y \
build-essential pkg-config autoconf automake libtool bsdmainutils \ 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 \ 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 Daemon build
------------ ------------
@@ -49,8 +58,9 @@ For the desktop wallet, use:
JOBS=1 ./contrib/build-linux-wallet.sh JOBS=1 ./contrib/build-linux-wallet.sh
The wallet helper builds/restores the native depends prefix first, including 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 Qt 6.8.3, OpenSSL 3.5.6, Boost 1.91.0, Expat 2.8.0, FreeType 2.13.3, and the
the generated depends `config.site` and builds the Ubuntu Qt wallet. Linux Qt font/xcb support libraries. It then configures the project with the
generated depends `config.site` and builds the Ubuntu Qt wallet.
Defaults: Defaults:
@@ -83,6 +93,13 @@ OpenSSL 3
The deterministic depends build currently uses OpenSSL 3.5.6. 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 Berkeley DB
----------- -----------
+2 -1
View File
@@ -27,7 +27,8 @@ STANDARD BUILD WITH DEPENDS
make install (optional) make install (optional)
The native depends wallet path currently builds Qt 6.8.3, OpenSSL 3.5.6, 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: For a daemon-only build:
+12 -3
View File
@@ -33,7 +33,16 @@ Ubuntu package baseline
For the native Ubuntu wallet: For the native Ubuntu wallet:
sudo apt-get install -y \ 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: For the Windows wallet:
@@ -50,8 +59,8 @@ Why the helpers exist
The wallet build is sensitive to tool version mismatches: The wallet build is sensitive to tool version mismatches:
* Native Ubuntu uses the deterministic depends Qt6, OpenSSL, Boost, protobuf, * Native Ubuntu uses the deterministic depends Qt6, OpenSSL, Boost, Expat,
and supporting libraries. FreeType, protobuf, and supporting libraries.
* Windows cross-target wallets use the deterministic depends Qt6 path and * Windows cross-target wallets use the deterministic depends Qt6 path and
matching Qt host tools staged by depends. 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-libdir=$PWD/depends/x86_64-w64-mingw32/lib \
--with-qt-plugindir=$PWD/depends/x86_64-w64-mingw32/plugins \ --with-qt-plugindir=$PWD/depends/x86_64-w64-mingw32/plugins \
--with-qt-translationdir=$PWD/depends/x86_64-w64-mingw32/translations \ --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 make
============================================================ ============================================================
BUILDING FOR 32-BIT WINDOWS 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: Install toolchain:
sudo apt install g++-mingw-w64-i686 mingw-w64-i686-dev 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 helper's Qt host tools (`moc`, `uic`, `rcc`) staged from the matching depends
build to avoid mixing host Qt tools with target Qt libraries. 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 END OF DOCUMENT
============================================================ ============================================================
+14 -3
View File
@@ -1,6 +1,17 @@
Installer (Ubuntu) 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 Overview
--------------------- ---------------------
The Agrarian installer is `installer/agrarian-installer.sh`. It automates the Ubuntu build steps by: 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) 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. - 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. - 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 `config.site` and PATH pitfalls
- The installer configures with `CONFIG_SITE=depends/<host>/share/config.site`. - 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: - If `config.site` is missing, rebuild depends:
```bash ```bash
@@ -153,7 +164,7 @@ Qt Cross-Compilation Packages (Ubuntu/Debian)
Install the common Linux build tools (from `depends/README.md`): Install the common Linux build tools (from `depends/README.md`):
```bash ```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: Then install toolchains per target:
+2
View File
@@ -14,6 +14,8 @@ The current deterministic `depends/` baseline is:
- Qt 6.8.3 LTS - Qt 6.8.3 LTS
- OpenSSL 3.5.6 LTS - OpenSSL 3.5.6 LTS
- Boost 1.91.0 - 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 - Berkeley DB 4.8.30 for portable legacy wallet compatibility
- protobuf 2.6.1 for the existing Qt payment request sources - protobuf 2.6.1 for the existing Qt payment request sources
- libevent 2.1.8-stable - libevent 2.1.8-stable
+8 -1
View File
@@ -4,6 +4,11 @@
actions. The current modernization baseline is Ubuntu 24.04 with deterministic actions. The current modernization baseline is Ubuntu 24.04 with deterministic
`depends/`; see `doc/modernization.md` for the verified dependency set. `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 ## Usage
```bash ```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 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 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. When missing, the installer exits early and prints the exact missing path(s) plus the `make -C depends ...` command to fix them.