Agrarian
Agrarian is a C++ cryptocurrency-style codebase with a deterministic depends/ build system for reproducible native and cross-compilation builds.
Repository Structure
depends/– deterministic third-party dependency build systemsrc/– core source code (includes subprojects likesecp256k1/andunivalue/)contrib/– helper scripts, tooling, packaging, and CI utilitiesshare/– auxiliary build and metadata scripts
System Requirements (Ubuntu)
Install the baseline build tools:
sudo apt update
sudo apt install -y \
build-essential pkg-config autoconf automake libtool \
bsdmainutils cmake ninja-build python3 curl git
For Windows cross-compilation support:
sudo apt install -y mingw-w64
Building Dependencies (Deterministic Depends System)
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, 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/.
Native Linux
cd depends
make HOST=x86_64-pc-linux-gnu NO_QT=0 -j"$(nproc)"
Windows Cross-Compile (64-bit)
JOBS=1 ./contrib/build-win64-wallet.sh
Windows Cross-Compile (32-bit)
cd depends
make HOST=i686-w64-mingw32 -j"$(nproc)"
Artifacts are placed under:
depends/<host-triplet>/
Temporary build directories:
depends/work/
depends/built/
These directories should not be committed to version control.
Building Agrarian
Recommended native Ubuntu daemon build:
./autogen.sh
JOBS=1 ./contrib/build-linux.sh
Recommended native Ubuntu desktop wallet build:
JOBS=1 ./contrib/build-linux-wallet.sh
Use a larger JOBS value only when the host has enough RAM. On an 8-core,
16 GB host, JOBS=8 is reasonable.
Manual autotools workflow:
./autogen.sh
CONFIG_SITE="$PWD/depends/x86_64-pc-linux-gnu/share/config.site" ./configure
make -j"$(nproc)"
To see configuration options:
./configure --help
For current build notes, see:
doc/modernization.mdfor the current 2.0 dependency and build baseline.doc/build-menu.mdfor the interactive build menu.doc/build-ubuntu-24.mdfor native Ubuntu daemon and wallet builds.doc/build-windows.mdfor Windows cross-compilation.doc/build-wallets.mdfor the repeatable desktop wallet quick start.
Running Tests
If enabled:
make check
Current smoke tests:
./contrib/smoke-test-daemon.sh
./contrib/smoke-test-wallet.sh
./contrib/smoke-test-qt.sh
Development Guidelines
- Do not commit
depends/work/,depends/built/, or host prefix directories. - Ensure executable permissions (100755) are intentional for shell scripts.
- Keep diffs minimal in
depends/to maintain reproducibility.
License
See the COPYING file for license details.