Update documentation for Agrarian 2.0 modernization

This commit is contained in:
root
2026-04-30 14:51:14 +00:00
parent c90370640c
commit 1fc1048a51
14 changed files with 141 additions and 29 deletions
+3 -1
View File
@@ -1,8 +1,10 @@
## travis build scripts ## travis build scripts
Status: legacy documentation. The current Agrarian 2.0 modernization work is
validated with local build helpers and smoke tests, not Travis CI.
The `.travis` directory contains scripts for each build step in each build stage. The `.travis` directory contains scripts for each build step in each build stage.
Currently the travis build defines two stages `lint` and `test`. Each stage has Currently the travis build defines two stages `lint` and `test`. Each stage has
it's own [lifecycle](https://docs.travis-ci.com/user/customizing-the-build/#the-build-lifecycle). it's own [lifecycle](https://docs.travis-ci.com/user/customizing-the-build/#the-build-lifecycle).
Every script in here is named and numbered according to which stage and lifecycle Every script in here is named and numbered according to which stage and lifecycle
step it belongs to. step it belongs to.
+1
View File
@@ -114,6 +114,7 @@ To see configuration options:
For current build notes, see: For current build notes, see:
- `doc/modernization.md` for the current 2.0 dependency and build baseline.
- `doc/build-ubuntu-24.md` for native Ubuntu daemon and wallet builds. - `doc/build-ubuntu-24.md` for native Ubuntu daemon and wallet builds.
- `doc/build-windows.md` for Windows cross-compilation. - `doc/build-windows.md` for Windows cross-compilation.
- `doc/build-wallets.md` for the repeatable desktop wallet quick start. - `doc/build-wallets.md` for the repeatable desktop wallet quick start.
+7 -4
View File
@@ -1,6 +1,10 @@
RPM Spec File Notes RPM Spec File Notes
------------------- -------------------
Status: this RPM packaging guide is historical. It has not been revalidated for
the Agrarian 2.0 Qt6/OpenSSL3/Boost modernization path. Prefer the Ubuntu 24.04
depends-based build docs until RPM packaging is refreshed.
The RPM spec file provided here is for Bitcoin-Core 0.12.0 and builds on CentOS The RPM spec file provided here is for Bitcoin-Core 0.12.0 and builds on CentOS
7 with either the CentOS provided OpenSSL library or with LibreSSL as packaged 7 with either the CentOS provided OpenSSL library or with LibreSSL as packaged
at [LibreLAMP.com](https://librelamp.com/). It should hopefully not be too at [LibreLAMP.com](https://librelamp.com/). It should hopefully not be too
@@ -72,10 +76,9 @@ difficult for a user to recover from backup in the event of a system failure.
## Graphical User Interface and Qt Version ## Graphical User Interface and Qt Version
The RPM spec file will by default build the GUI client linked against the Qt5 The historical RPM spec targeted older Qt libraries. For Agrarian 2.0, new RPM
libraries. If you wish instead to link against the Qt4 libraries you need to work should target Qt 6.8 LTS and the dependency baseline in
pass the switch `-D '_use_qt4 1'` at build time to the `rpmbuild` or `mock` `doc/modernization.md`.
command used to build the packages.
If you would prefer not to build the GUI at all, you can pass the switch If you would prefer not to build the GUI at all, you can pass the switch
`-D '_no_gui 1'` to the `rpmbuild` or `mock` build command. `-D '_no_gui 1'` to the `rpmbuild` or `mock` build command.
+5
View File
@@ -36,6 +36,7 @@ Building
The following are developer notes on how to build Agrarian Core on your native platform. They are not complete guides, but include notes on the necessary libraries, compile flags, etc. The following are developer notes on how to build Agrarian Core on your native platform. They are not complete guides, but include notes on the necessary libraries, compile flags, etc.
- [Dependencies](dependencies.md) - [Dependencies](dependencies.md)
- [Agrarian 2.0 Modernization Status](modernization.md)
- [Ubuntu 24.04 Build Notes](build-ubuntu-24.md) - [Ubuntu 24.04 Build Notes](build-ubuntu-24.md)
- [Desktop Wallet Build Quick Start](build-wallets.md) - [Desktop Wallet Build Quick Start](build-wallets.md)
- [macOS Build Notes](build-osx.md) - [macOS Build Notes](build-osx.md)
@@ -43,6 +44,10 @@ The following are developer notes on how to build Agrarian Core on your native p
- [Windows Build Notes](build-windows.md) - [Windows Build Notes](build-windows.md)
- [Gitian Building Guide](gitian-building.md) - [Gitian Building Guide](gitian-building.md)
The verified 2.0 build path is Ubuntu 24.04 with deterministic `depends/`.
macOS, RPM, Gitian, and Travis documentation is retained as historical
reference unless the individual document says it has been revalidated.
Development Development
--------------------- ---------------------
The Agrarian repo's [root README](/README.md) contains relevant information on the development process and automated testing. The Agrarian repo's [root README](/README.md) contains relevant information on the development process and automated testing.
+9 -5
View File
@@ -13,17 +13,21 @@ When the popup appears, click `Install`.
Then install [Homebrew](https://brew.sh). Then install [Homebrew](https://brew.sh).
Status
------
This macOS guide is legacy documentation. It has not been revalidated for the
Agrarian 2.0 Qt6/OpenSSL3/Boost modernization path. The currently verified
desktop wallet paths are Ubuntu 24.04 native and Windows x86_64 cross-compiled
from Ubuntu. See `doc/modernization.md`.
Dependencies Dependencies
---------------------- ----------------------
brew install autoconf automake berkeley-db4 libtool boost miniupnpc openssl pkg-config protobuf python3 qt5 zmq libevent qrencode gmp brew install autoconf automake berkeley-db4 libtool boost miniupnpc openssl pkg-config protobuf python3 qt6 zmq libevent qrencode gmp
See [dependencies.md](dependencies.md) for a complete overview. See [dependencies.md](dependencies.md) for a complete overview.
Status note: this macOS system-library path is legacy and has not been part of
the current Qt6/OpenSSL3/Boost modernization smoke-test pass. The verified
modern desktop wallet path is native Ubuntu via `contrib/build-linux-wallet.sh`.
If you want to build the disk image with `make deploy` (.dmg / optional), you need RSVG: If you want to build the disk image with `make deploy` (.dmg / optional), you need RSVG:
brew install librsvg brew install librsvg
+1 -1
View File
@@ -97,7 +97,7 @@ FEDORA
Build tools: Build tools:
sudo dnf install which gcc-c++ libtool make autoconf automake compat-openssl10-devel libevent-devel boost-devel libdb4-devel libdb4-cxx-devel gmp-devel python3 sudo dnf install which gcc-c++ libtool make autoconf automake openssl-devel libevent-devel boost-devel libdb4-devel libdb4-cxx-devel gmp-devel python3
Optional: Optional:
+1 -2
View File
@@ -38,8 +38,7 @@ For the native Ubuntu wallet:
For the Windows wallet: For the Windows wallet:
sudo apt-get install -y \ sudo apt-get install -y \
mingw-w64 g++-mingw-w64-x86-64 g++-mingw-w64-x86-64-posix \ mingw-w64 g++-mingw-w64-x86-64 g++-mingw-w64-x86-64-posix
qttools5-dev-tools
Then select POSIX Mingw-w64 threading: Then select POSIX Mingw-w64 threading:
+10 -7
View File
@@ -77,7 +77,7 @@ GENERAL DEPENDENCIES
sudo apt update sudo apt update
sudo apt install -y build-essential libtool autotools-dev \ sudo apt install -y build-essential libtool autotools-dev \
automake pkg-config bsdmainutils curl git make tar patch \ automake pkg-config bsdmainutils curl git make tar patch \
qttools5-dev-tools cmake ninja-build python3
A host toolchain (build-essential) is required because some dependencies A host toolchain (build-essential) is required because some dependencies
(e.g., protobuf) build host utilities during the process. (e.g., protobuf) build host utilities during the process.
@@ -148,9 +148,12 @@ Manual equivalent:
--disable-maintainer-mode \ --disable-maintainer-mode \
--disable-tests \ --disable-tests \
--disable-bench \ --disable-bench \
--with-gui=qt5 \ --with-gui=qt6 \
--with-qt-incdir=$PWD/depends/x86_64-w64-mingw32/include \ --with-qt-incdir=$PWD/depends/x86_64-w64-mingw32/include \
--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-translationdir=$PWD/depends/x86_64-w64-mingw32/translations \
--with-qt-bindir=$PWD/depends/x86_64-w64-mingw32/native/bin
make make
============================================================ ============================================================
@@ -161,7 +164,7 @@ Install toolchain:
sudo apt install g++-mingw-w64-i686 mingw-w64-i686-dev sudo apt install g++-mingw-w64-i686 mingw-w64-i686-dev
Ubuntu 18.04: If multiple MinGW thread models are installed:
sudo update-alternatives --config i686-w64-mingw32-g++ sudo update-alternatives --config i686-w64-mingw32-g++
@@ -227,9 +230,9 @@ builds and stages a matching native `protoc` when needed.
QT NOTE QT NOTE
============================================================ ============================================================
The Windows cross-build helper targets the Qt6 depends path. Keep the helper's The Windows cross-build helper targets the Qt 6.8 LTS depends path. Keep the
Qt host tools (`moc`, `uic`, `rcc`) staged from the matching depends build to helper's Qt host tools (`moc`, `uic`, `rcc`) staged from the matching depends
avoid mixing host Qt tools with target Qt libraries. build to avoid mixing host Qt tools with target Qt libraries.
============================================================ ============================================================
END OF DOCUMENT END OF DOCUMENT
+14 -2
View File
@@ -1,9 +1,12 @@
Dependencies Dependencies
============ ============
These are the dependencies currently used by Agrarian Core. You can find instructions for installing them in the `build-*.md` file for your platform. These are the dependencies currently used by the Agrarian 2.0 modernization
branch. You can find instructions for installing or building them in the
`build-*.md` file for your platform. The preferred path is the deterministic
`depends/` tree, not mixed system libraries.
| Dependency | Version used | Minimum required | CVEs | Shared | [Bundled Qt library](https://doc.qt.io/qt-5/configure-options.html#third-party-libraries) | | Dependency | Version used | Minimum required | CVEs | Shared | Bundled Qt library |
| --- | --- | --- | --- | --- | --- | | --- | --- | --- | --- | --- | --- |
| Berkeley DB | [4.8.30](https://www.oracle.com/technetwork/database/database-technologies/berkeleydb/downloads/index.html) | 4.8.x | No | | | | Berkeley DB | [4.8.30](https://www.oracle.com/technetwork/database/database-technologies/berkeleydb/downloads/index.html) | 4.8.x | No | | |
| Boost | [1.91.0](https://www.boost.org/users/download/) | [1.47.0](https://github.com/bitcoin/bitcoin/pull/8920) | No | | | | Boost | [1.91.0](https://www.boost.org/users/download/) | [1.47.0](https://github.com/bitcoin/bitcoin/pull/8920) | No | | |
@@ -31,6 +34,15 @@ These are the dependencies currently used by Agrarian Core. You can find instruc
| ZeroMQ | [4.3.1](https://github.com/zeromq/libzmq/releases) | 4.0.0 | No | | | | ZeroMQ | [4.3.1](https://github.com/zeromq/libzmq/releases) | 4.0.0 | No | | |
| zlib | [1.2.11](https://zlib.net/) | | | | No | | zlib | [1.2.11](https://zlib.net/) | | | | No |
Modernization notes
-------------------
* Qt builds target Qt 6.8 LTS through the deterministic depends path.
* OpenSSL builds target OpenSSL 3.5 LTS through the deterministic depends path.
* Boost builds target Boost 1.91.0 through the deterministic depends path.
* Berkeley DB remains 4.8.30 in depends for legacy wallet portability. Wallets
built against other BDB major versions may not be portable.
Controlling dependencies Controlling dependencies
------------------------ ------------------------
Some dependencies are not needed in all configurations. The following are some factors that affect the dependency list. Some dependencies are not needed in all configurations. The following are some factors that affect the dependency list.
+73
View File
@@ -0,0 +1,73 @@
Agrarian 2.0 Modernization Status
=================================
This branch is the modernization line for Agrarian. The goal is to preserve
network behavior while making the codebase build repeatably on current systems.
Verified Build Baseline
-----------------------
Use Ubuntu 24.04 as the primary build host.
The current deterministic `depends/` baseline is:
- Qt 6.8.3 LTS
- OpenSSL 3.5.6 LTS
- Boost 1.91.0
- 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
- GMP 6.1.2
- ZeroMQ 4.3.1 when enabled
The currently verified binaries are:
- Ubuntu daemon and command-line tools
- Ubuntu Qt desktop wallet
- Windows x86_64 Qt desktop wallet and command-line tools cross-compiled from
Ubuntu
Recommended Commands
--------------------
Native Ubuntu daemon:
JOBS=1 ./contrib/build-linux.sh
Native Ubuntu desktop wallet:
JOBS=1 ./contrib/build-linux-wallet.sh
Windows x86_64 desktop wallet:
JOBS=1 ./contrib/build-win64-wallet.sh
Use higher `JOBS` values only on hosts with enough memory. On an 8-core, 16 GB
host, `JOBS=8` is reasonable.
Verification
------------
After a native Ubuntu build, run:
./contrib/smoke-test-daemon.sh
./contrib/smoke-test-wallet.sh
./contrib/smoke-test-qt.sh
After a Windows cross build, confirm the expected PE binaries:
file src/qt/agrarian-qt.exe src/agrariand.exe src/agrarian-cli.exe src/agrarian-tx.exe
Documentation Status
--------------------
The preferred docs are:
- `doc/build-ubuntu-24.md`
- `doc/build-wallets.md`
- `doc/build-windows.md`
- `doc/dependencies.md`
Older macOS, RPM, Gitian, and Travis documents remain in the tree as historical
reference. They are not part of the verified 2.0 modernization path unless a
document explicitly says otherwise.
+7 -3
View File
@@ -1,3 +1,7 @@
Status: historical release notes. This file documents the older Agrarian Core
3.3.0 release and is not the current Agrarian 2.0 modernization release plan.
For the current build and dependency baseline, see `doc/modernization.md`.
Agrarian Core version *3.3.0* is now available from: <https://github.com/agrarian-project/agrarian/releases> Agrarian Core version *3.3.0* is now available from: <https://github.com/agrarian-project/agrarian/releases>
This is a new major version release, including various bug fixes and performance improvements, as well as updated translations. This is a new major version release, including various bug fixes and performance improvements, as well as updated translations.
@@ -21,9 +25,9 @@ If you are running an older version, shut it down. Wait until it has completely
Compatibility Compatibility
============== ==============
Agrarian Core is extensively tested on multiple operating systems using the Linux kernel, macOS 10.10+, and Windows 7 and later. For the current 2.0 modernization branch, the verified build targets are Ubuntu
24.04 and Windows x86_64 cross-compiled from Ubuntu. Older platform statements
Microsoft ended support for Windows XP on [April 8th, 2014](https://www.microsoft.com/en-us/WindowsForBusiness/end-of-xp-support), No attempt is made to prevent installing or running the software on Windows XP, you can still do so at your own risk but be aware that there are known instabilities and issues. Please do not report issues about Windows XP to the issue tracker. below belong to the historical 3.3.0 release context.
Apple released it's last Mountain Lion update August 13, 2015, and officially ended support on [December 14, 2015](http://news.fnal.gov/2015/10/mac-os-x-mountain-lion-10-8-end-of-life-december-14/). Agrarian Core software starting with v3.2.0 will no longer run on MacOS versions prior to Yosemite (10.10). Please do not report issues about MacOS versions prior to Yosemite to the issue tracker. Apple released it's last Mountain Lion update August 13, 2015, and officially ended support on [December 14, 2015](http://news.fnal.gov/2015/10/mac-os-x-mountain-lion-10-8-end-of-life-december-14/). Agrarian Core software starting with v3.2.0 will no longer run on MacOS versions prior to Yosemite (10.10). Please do not report issues about MacOS versions prior to Yosemite to the issue tracker.
+4
View File
@@ -1,6 +1,10 @@
Travis CI Travis CI
========= =========
Status: legacy documentation. Travis CI is not part of the verified Agrarian
2.0 modernization path. Keep this file only as historical context until a
current CI workflow is added.
Support for using travis-ci has been added in order to automate pull-testing. Support for using travis-ci has been added in order to automate pull-testing.
See [travis-ci.org](https://travis-ci.org/) for more info See [travis-ci.org](https://travis-ci.org/) for more info
+3 -1
View File
@@ -1,6 +1,8 @@
# Ubuntu Installer # Ubuntu Installer
`installer/agrarian-installer.sh` provides a Ubuntu-only CLI for common build actions. `installer/agrarian-installer.sh` provides a Ubuntu-only CLI for common build
actions. The current modernization baseline is Ubuntu 24.04 with deterministic
`depends/`; see `doc/modernization.md` for the verified dependency set.
## Usage ## Usage
+3 -3
View File
@@ -11,9 +11,9 @@ interfaces.
- [util](/test/util) which tests the agrarian utilities, currently only - [util](/test/util) which tests the agrarian utilities, currently only
agrarian-tx. agrarian-tx.
The util tests are run as part of `make check` target. The functional The util tests are run as part of the `make check` target. Functional tests can
tests are run by the travis continuous build process whenever a pull be run locally with the test runner. Travis CI references in this tree are
request is opened. Both sets of tests can also be run locally. legacy and are not part of the current Agrarian 2.0 verification path.
# Running tests locally # Running tests locally