Update build docs for current depends baseline
This commit is contained in:
@@ -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,
|
||||||
|
|||||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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:
|
||||||
|
|||||||
@@ -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
@@ -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.
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user